diff --git a/.github/proverCiScripts/deployToProver.sh b/.github/proverCiScripts/deployToProver.sh deleted file mode 100755 index 4bb4a52572..0000000000 --- a/.github/proverCiScripts/deployToProver.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -#set -e -#set -x - -prnumber=$1 -base_dir="/home/ubuntu/CI_Prover_Benches/" -target_dir="$base_dir"PR"$1" - -source_dir=$2 - -cd $source_dir && scp -r * prover:$target_dir - diff --git a/.github/proverCiScripts/execBench.sh b/.github/proverCiScripts/execBench.sh deleted file mode 100755 index 1753991a49..0000000000 --- a/.github/proverCiScripts/execBench.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash -set -e -#set -x - -prnumber=$1 -base_dir="/home/ubuntu/CI_Prover_Benches/" -target_dir="$base_dir"PR"$1" -k=$2 -circuit=$(echo $3 | awk '{ print $2 }' | tr '[:upper:]' '[:lower:]') -printf -v _date '%(%Y-%m-%d_%H:%M:%S)T' -1 - -case $circuit in - "all") - echo "To be implemented" - exit 1 - ;; - "evm") - run_suffix="evm_circuit_prover" - ;; - "keccak") - run_suffix="keccak_round" - ;; - "state") - run_suffix="state_circuit_prover" - ;; - "tx") - run_suffix="tx_circuit_prover" - ;; - "super") - run_suffix="super_circuit_prover" - ;; - "bytecode") - run_suffix="bytecode_circuit_prover" - ;; - "pi") - run_suffix="pi_circuit_prover" - ;; - "exp") - run_suffix="exp_circuit_prover" - ;; - "copy") - run_suffix="copy_circuit_prover" - ;; - *) - echo "No proper value" - exit 1 - ;; -esac - -cd $target_dir; -logfile=$_date--${circuit}_bench-$k.proverlog - -export RUST_BACKTRACE=1 -DEGREE=$k ~/.cargo/bin/cargo test --profile bench bench_${run_suffix} -p circuit-benchmarks --features benches -- --nocapture > "$target_dir/$logfile" 2>&1 - -exit 0 diff --git a/.github/proverCiScripts/getSysstat.sh b/.github/proverCiScripts/getSysstat.sh deleted file mode 100755 index 565a2525b8..0000000000 --- a/.github/proverCiScripts/getSysstat.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -set -e -#set -x - -prnumber=$1 -base_dir="/home/ubuntu/CI_Prover_Benches/" -target_dir="$base_dir"PR"$prnumber" - -logfile=$(ls $target_dir | grep proverlog | xargs -n 1 basename) -tail -12 $target_dir/$logfile diff --git a/.github/proverCiScripts/injectHalo2Revision.sh b/.github/proverCiScripts/injectHalo2Revision.sh deleted file mode 100755 index dd2f313e47..0000000000 --- a/.github/proverCiScripts/injectHalo2Revision.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -#set -e -#set -x - -prnumber=$1 -base_dir="/home/ubuntu/CI_Prover_Benches/" -target_dir="$base_dir"PR"$1" - -_revision=$2 - -oldrev=$(egrep halo2.*rev $target_dir/Cargo.toml | awk -F\" '{ print $4 }') - -for i in `find $target_dir -type f -name 'Cargo.toml'` -do - sed -i "s/$oldrev/$_revision/g" $i -done diff --git a/.github/proverCiScripts/prepareProver.sh b/.github/proverCiScripts/prepareProver.sh deleted file mode 100755 index df6ed66f07..0000000000 --- a/.github/proverCiScripts/prepareProver.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -#set -e -#set -x - -prnumber=$1 -base_dir="/home/ubuntu/CI_Prover_Benches/" -target_dir="$base_dir"PR"$1" -source_dir=$2 - -mkdir -p $target_dir - diff --git a/.github/proverCiScripts/rsSysstat.sh b/.github/proverCiScripts/rsSysstat.sh deleted file mode 100755 index 4bb9f6b1cc..0000000000 --- a/.github/proverCiScripts/rsSysstat.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -set -e -#set -x - -sudo systemctl stop sysstat.service -sudo rm -rf /var/log/sysstat/* -sudo rm -f sar.stats -sudo rm -rf cpu.stats -sudo rm -rf mem.stats - -sleep 10 - -sudo systemctl start sysstat.service - diff --git a/.github/testoolScripts/build.sh b/.github/testoolScripts/build.sh new file mode 100755 index 0000000000..ce66b95566 --- /dev/null +++ b/.github/testoolScripts/build.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set -x + +export PATH=/home/ubuntu/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/snap/bin:/usr/local/go/bin/ + +error() { + sudo poweroff +} + +trap 'error' ERR + +cd zkevm-circuits/testool +git submodule update --init --recursive ; git submodule update --checkout ; cargo build --release + +exit 0 diff --git a/.github/testoolScripts/cleanup.sh b/.github/testoolScripts/cleanup.sh new file mode 100755 index 0000000000..a503363652 --- /dev/null +++ b/.github/testoolScripts/cleanup.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +profile="cirunner" +runner_vpc_id="vpc-05dedcb650bd24f8d" + +# Get runner status +runner=$(aws ec2 describe-instances --profile $profile --filters Name=tag:Name,Values=[testool] Name=network-interface.vpc-id,Values=[$runner_vpc_id] --query "Reservations[*].Instances[*][InstanceId]" --output text | xargs) + +echo "Reports: http://testool-public.s3-website.eu-central-1.amazonaws.com" +echo "Shuting down instance..." +aws ec2 stop-instances --profile $profile --instance-ids $runner + +exit 0 diff --git a/.github/testoolScripts/prepare.sh b/.github/testoolScripts/prepare.sh new file mode 100755 index 0000000000..1a42bed3bb --- /dev/null +++ b/.github/testoolScripts/prepare.sh @@ -0,0 +1,18 @@ +#!/bin/bash +set -x + +error() { + sudo poweroff +} + +trap 'error' ERR + +branch=$1 + +rm -rf zkevm-circuits +git clone https://github.com/privacy-scaling-explorations/zkevm-circuits.git +cd zkevm-circuits/testool +git checkout $branch +ln -s /home/ubuntu/report report + +exit 0 diff --git a/.github/testoolScripts/run.sh b/.github/testoolScripts/run.sh new file mode 100755 index 0000000000..7145ed689f --- /dev/null +++ b/.github/testoolScripts/run.sh @@ -0,0 +1,17 @@ +#!/bin/bash +set -x + +export PATH=/home/ubuntu/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/snap/bin:/usr/local/go/bin/ + +error() { + sudo poweroff +} + +trap 'error' ERR + +suite=$1 + +cd zkevm-circuits/testool +../target/release/testool --suite $suite --report + +exit 0 diff --git a/.github/testoolScripts/sync.sh b/.github/testoolScripts/sync.sh new file mode 100755 index 0000000000..3289c55429 --- /dev/null +++ b/.github/testoolScripts/sync.sh @@ -0,0 +1,16 @@ +#!/bin/bash +set -x + +error() { + sudo poweroff +} + +trap 'error' ERR + +cd report +rm index.html +for i in `ls -t *.html`; do echo "<a href=\"$i\">$i</a> <br>" >> index.html; done + +aws s3 sync . s3://testool-public/ + +exit 0 diff --git a/.github/testoolScripts/wakeUpRunner.sh b/.github/testoolScripts/wakeUpRunner.sh new file mode 100755 index 0000000000..bfee5ac480 --- /dev/null +++ b/.github/testoolScripts/wakeUpRunner.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +profile="cirunner" +runner_vpc_id="vpc-05dedcb650bd24f8d" + +# Get runner status +runner=$(aws ec2 describe-instances --profile $profile --filters Name=tag:Name,Values=[testool] Name=network-interface.vpc-id,Values=[$runner_vpc_id] --query "Reservations[*].Instances[*][InstanceId]" --output text | xargs) + +while true; do + runner_status=$(aws ec2 describe-instances --profile $profile --instance-ids $runner --query "Reservations[*].Instances[*].State.[Name]" --output text) + if [ $runner_status = "stopped" ]; then + aws ec2 start-instances --profile $profile --instance-ids $runner + exit 0 + elif [ $runner_status = "running" ]; then + sleep 120 + runner_status=$(aws ec2 describe-instances --profile $profile --instance-ids $runner --query "Reservations[*].Instances[*].State.[Name]" --output text) + if [ $runner_status = "running" ]; then + exit 0 + fi + else + sleep 30 + fi +done diff --git a/.github/workflows/ProverBenchFromHalo2.yml b/.github/workflows/ProverBenchFromHalo2.yml deleted file mode 100644 index 4f5d2691de..0000000000 --- a/.github/workflows/ProverBenchFromHalo2.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: Prover Bench on halo2 PR -on: - workflow_dispatch: - inputs: - event-type: - required: true - type: string - ghuser: - required: true - type: string - revision: - required: true - type: string - halo2pr: - required: true - type: string -jobs: - Exec-ProverBench-on-halo2-PR: - runs-on: pse-runner - env: - GH_USER: ${{ github.event.inputs.ghuser }} - HALO2PR: ${{ github.event.inputs.halo2pr }} - steps: - - run: echo "halo2 PR ${{ env.HALO2PR }} submitted by ${{ env.GH_USER }}" - - run: echo "Running prover benchmarking due to ${{ github.event.inputs.event-type }}." - - uses: actions/checkout@v2 - with: - ref: 'halo2benchmarking' - - run: .github/proverCiScripts/wakeUpProver.sh - shell: bash - - run: | - ssh prover "bash -s" -- < .github/proverCiScripts/rsSysstat.sh - - run: | - ssh prover "bash -s" -- < .github/proverCiScripts/prepareProver.sh "${{ github.event.inputs.halo2pr }}[halo2]" "${{ github.workspace }}" - - run: .github/proverCiScripts/deployToProver.sh "${{ github.event.inputs.halo2pr }}[halo2]" "${{ github.workspace }}" - shell: bash - - run: | - ssh prover "bash -s" -- < .github/proverCiScripts/injectHalo2Revision.sh "${{ github.event.inputs.halo2pr }}[halo2]" "${{ github.event.inputs.revision }}" - - run: | - ssh prover "bash -s" -- < .github/proverCiScripts/execBench.sh "${{ github.event.inputs.halo2pr }}[halo2]" 19 - shell: bash - - run: | - ssh prover "bash -s" -- < .github/proverCiScripts/getSysstat.sh "${{ github.event.inputs.halo2pr }}[halo2]" - - run: .github/proverCiScripts/shutdownProver.sh - shell: bash diff --git a/.github/workflows/github-pages.yml b/.github/workflows/github-pages.yml new file mode 100644 index 0000000000..437f303b99 --- /dev/null +++ b/.github/workflows/github-pages.yml @@ -0,0 +1,68 @@ +# Simple workflow for deploying static content to GitHub Pages +name: Deploy static content to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ['main'] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: 'pages' + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - uses: actions-rs/toolchain@v1 + - name: Setup Pages + uses: actions/configure-pages@v3 + # Create a index.html outside of the subdirectories for requirement of GitHub pages + - name: Generate Docs + run: | + cargo doc --no-deps + echo "<meta http-equiv=\"refresh\" content=\"0; url=zkevm_circuits\">" > target/doc/index.html + # Archive the artifact with the correct permissions + # https://github.com/actions/deploy-pages/issues/188 + - name: Archive artifact + shell: sh + run: | + chmod -c -R +rX "target/doc" | + while read line; do + echo "::warning title=Invalid file permissions automatically fixed::$line" + done + tar \ + --dereference --hard-dereference \ + --directory "target/doc" \ + -cvf "$RUNNER_TEMP/artifact.tar" \ + --exclude=.git \ + --exclude=.github \ + . + - name: Upload artifact + uses: actions/upload-pages-artifact@v2 + with: + path: 'target/doc' + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + needs: build + runs-on: ubuntu-latest + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index e2183badad..2ae9f72139 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -28,7 +28,10 @@ concurrency: jobs: set-outputs: - if: github.event.pull_request.draft == false + if: github.event_name == 'schedule' || + github.event_name == 'push' || + github.event_name == 'workflow_dispatch' || + contains(github.event.pull_request.labels.*.name, 'trigger-integration-tests') runs-on: ubuntu-latest outputs: diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index 27719aa160..9d4e45a268 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -1,11 +1,14 @@ -name: "Pull Request Labeler" +name: Pull Request Labeler on: - pull_request_target jobs: triage: + name: Triage runs-on: ubuntu-latest steps: - - uses: actions/labeler@v3 + - uses: actions/checkout@v2 + - name: Labeler + uses: actions/labeler@v4 with: repo-token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/lints.yml b/.github/workflows/lints.yml index 7f59474bb8..78d8c137aa 100644 --- a/.github/workflows/lints.yml +++ b/.github/workflows/lints.yml @@ -20,15 +20,15 @@ jobs: with: cancel_others: 'true' concurrent_skipping: 'same_content_newer' - paths_ignore: '["**/README.md"]' + paths_ignore: '["**/README.md", "mpt-witness-generator/**"]' - clippy: + lints: needs: [skip_check] if: | github.event.pull_request.draft == false && (github.event.action == 'ready_for_review' || needs.skip_check.outputs.should_skip != 'true') - name: Clippy + name: Various lints timeout-minutes: 30 runs-on: ubuntu-latest @@ -36,7 +36,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: - components: clippy + components: rustfmt, clippy override: false # Go cache for building geth-utils - name: Go cache @@ -45,7 +45,7 @@ jobs: path: | ~/.cache/go-build ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + key: lint-${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go- - name: Cargo cache @@ -57,10 +57,24 @@ jobs: ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + key: lint-${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + + - name: Check code format + uses: actions-rs/cargo@v1 + with: + command: fmt + args: --all -- --check + - name: Run clippy - uses: actions-rs/clippy-check@v1 + uses: actions-rs/cargo@v1 with: - name: Clippy - token: ${{ secrets.GITHUB_TOKEN }} + command: clippy args: --all-features --all-targets -- -D warnings + + # Ensure intra-documentation links all resolve correctly + # Requires #![deny(intra_doc_link_resolution_failure)] in crates. + - name: Check intra-doc links + uses: actions-rs/cargo@v1 + with: + command: doc + args: --no-deps --all --document-private-items diff --git a/.github/workflows/ci.yml b/.github/workflows/main-tests.yml similarity index 56% rename from .github/workflows/ci.yml rename to .github/workflows/main-tests.yml index 0887779a97..9d58eb2794 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/main-tests.yml @@ -1,4 +1,4 @@ -name: CI checks +name: Main tests on: merge_group: @@ -28,13 +28,13 @@ jobs: concurrent_skipping: 'same_content_newer' paths_ignore: '["**/README.md"]' - test: + lighttest: needs: [skip_check] if: | github.event.pull_request.draft == false && (github.event.action == 'ready_for_review' || needs.skip_check.outputs.should_skip != 'true') - name: Test + name: Light unit tests runs-on: ["${{github.run_id}}", self-hosted, c5.9xlarge] steps: @@ -71,79 +71,30 @@ jobs: with: command: test args: --verbose --release --all --all-features --exclude integration-tests --exclude circuit-benchmarks - - name: Run heavy tests # heavy tests are run serially to avoid OOM + - name: Run testool internal tests uses: actions-rs/cargo@v1 with: command: test - args: --verbose --release --all --all-features --exclude integration-tests --exclude circuit-benchmarks serial_ -- --ignored --test-threads 1 + args: --release --manifest-path testool/Cargo.toml - build: + heavytests: needs: [skip_check] if: | github.event.pull_request.draft == false && (github.event.action == 'ready_for_review' || needs.skip_check.outputs.should_skip != 'true') - name: Build target ${{ matrix.target }} - runs-on: ubuntu-latest - strategy: - matrix: - target: - - wasm32-unknown-unknown - - wasm32-wasi + name: Heavy unit tests + runs-on: ["${{github.run_id}}", self-hosted, c5.9xlarge] steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: override: false - - name: Add target - run: rustup target add ${{ matrix.target }} - # Go cache for building geth-utils - - name: Go cache - uses: actions/cache@v3 - with: - path: | - ~/.cache/go-build - ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - name: Cargo cache - uses: actions/cache@v3 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - target/ - key: ${{ runner.os }}-${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }} - - name: cargo build - uses: actions-rs/cargo@v1 - with: - command: build - args: --all-features - # Make sure benchmarks compile. - - name: cargo build benchmarks no-run - uses: actions-rs/cargo@v1 - with: - command: test - args: --verbose --release --all-features -p circuit-benchmarks --no-run - - bitrot: - needs: [skip_check] - if: | - github.event.pull_request.draft == false && - (github.event.action == 'ready_for_review' || needs.skip_check.outputs.should_skip != 'true') - - name: Bitrot check - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 + - name: Setup golang + uses: actions/setup-go@v3 with: - override: false + go-version: ~1.19 # Go cache for building geth-utils - name: Go cache uses: actions/cache@v3 @@ -164,20 +115,19 @@ jobs: ~/.cargo/git/db/ target/ key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - # Build benchmarks to prevent bitrot - - name: Build benchmarks + - name: Run heavy tests # heavy tests are run serially to avoid OOM uses: actions-rs/cargo@v1 with: - command: build - args: --benches --examples --all-features + command: test + args: --verbose --release --all --all-features --exclude integration-tests --exclude circuit-benchmarks serial_ -- --ignored --test-threads 1 - doc-links: + build: needs: [skip_check] if: | github.event.pull_request.draft == false && (github.event.action == 'ready_for_review' || needs.skip_check.outputs.should_skip != 'true') - name: Intra-doc links + name: Linux Build runs-on: ubuntu-latest steps: @@ -185,6 +135,8 @@ jobs: - uses: actions-rs/toolchain@v1 with: override: false + - name: Add target + run: rustup target add x86_64-unknown-linux-gnu # Go cache for building geth-utils - name: Go cache uses: actions/cache@v3 @@ -204,61 +156,9 @@ jobs: ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - - name: cargo fetch - uses: actions-rs/cargo@v1 - with: - command: fetch - - # Ensure intra-documentation links all resolve correctly - # Requires #![deny(intra_doc_link_resolution_failure)] in crates. - - name: Check intra-doc links - uses: actions-rs/cargo@v1 - with: - command: doc - args: --no-deps --all --document-private-items - - fmt: - needs: [skip_check] - if: | - github.event.pull_request.draft == false && - (github.event.action == 'ready_for_review' || needs.skip_check.outputs.should_skip != 'true') - - name: Rustfmt - timeout-minutes: 30 - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - override: false - # Go cache for building geth-utils - - name: Go cache - uses: actions/cache@v3 - with: - path: | - ~/.cache/go-build - ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - name: Cargo cache - uses: actions/cache@v3 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - target/ - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - - name: cargo check + key: build-${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + - name: cargo build uses: actions-rs/cargo@v1 with: - command: check + command: build args: --all-features - - run: rustup component add rustfmt - - uses: actions-rs/cargo@v1 - with: - command: fmt - args: --all -- --check diff --git a/.github/workflows/mpt-witness-generator.yml b/.github/workflows/mpt-witness-generator.yml new file mode 100644 index 0000000000..77da2fa9c8 --- /dev/null +++ b/.github/workflows/mpt-witness-generator.yml @@ -0,0 +1,49 @@ +name: MPT Witness Generator Checks + +on: + merge_group: + pull_request: + types: [synchronize, opened, reopened, ready_for_review] + push: + branches: + - main + +jobs: + skip_check: + runs-on: ubuntu-latest + outputs: + should_skip: ${{ steps.skip_check.outputs.should_skip }} + steps: + - id: skip_check + uses: fkirc/skip-duplicate-actions@v5 + with: + cancel_others: 'true' + concurrent_skipping: 'same_content_newer' + paths: '["mpt-witness-generator/**"]' + + + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: '1.20' + + - name: Format + uses: Jerome1337/gofmt-action@v1.0.5 + with: + gofmt-path: './mpt-witness-generator' + gofmt-flags: '-l -d' + + - name: Build + working-directory: ./mpt-witness-generator + run: go build -v ./... + + - name: Test + working-directory: ./mpt-witness-generator + env: + NO_GETH: true + run: go test -v ./... diff --git a/.github/workflows/test-features.yml b/.github/workflows/test-features.yml index eb43f61c97..8e98681661 100644 --- a/.github/workflows/test-features.yml +++ b/.github/workflows/test-features.yml @@ -1,4 +1,4 @@ -name: Test feature flags +name: Feature flags on: merge_group: @@ -26,18 +26,11 @@ jobs: if: | github.event.pull_request.draft == false && (github.event.action == 'ready_for_review' || needs.skip_check.outputs.should_skip != 'true') + name: Validate features exist timeout-minutes: 30 runs-on: ubuntu-latest strategy: fail-fast: false - matrix: - crate: - - zkevm-circuits - feature: - - default - - test - - test-circuits - - warn-unimplemented steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 @@ -51,7 +44,7 @@ jobs: path: | ~/.cache/go-build ~/go/pkg/mod - key: ${{ github.workflow }}-${{ matrix.crate }}-${{ matrix.feature }}-${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + key: ${{ github.workflow }}-${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - name: Cargo cache uses: actions/cache@v3 @@ -62,21 +55,19 @@ jobs: ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ - key: ${{ github.workflow }}-${{ matrix.crate }}-${{ matrix.feature }}-${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + key: ${{ github.workflow }}-${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - - name: '${{ matrix.crate }}: ${{ matrix.feature }}' + - name: Import with features run: | GIT_ROOT=$(pwd) cd /tmp - cargo new foobar - cd foobar - cp "${GIT_ROOT}/rust-toolchain" . || true - cargo add --path "${GIT_ROOT}/${{ matrix.crate }}" --features '${{ matrix.feature }}' - cd ../ - rm -rf foobar - - test_features_complete: - needs: [test_features] - runs-on: ubuntu-latest - steps: - - run: echo dummy + for crate in zkevm-circuits; do + for feature in default test-circuits test-util warn-unimplemented; do + cargo new foobar + cd foobar + cp "${GIT_ROOT}/rust-toolchain" . || true + cargo add --path "${GIT_ROOT}/${crate}" --features "${feature}" + cd ../ + rm -rf foobar + done + done diff --git a/.github/workflows/testool.yml b/.github/workflows/testool.yml new file mode 100644 index 0000000000..bab404b080 --- /dev/null +++ b/.github/workflows/testool.yml @@ -0,0 +1,53 @@ +name: Testool + +on: + schedule: + - cron: '30 23 * * *' + workflow_dispatch: + inputs: + suites: + description: "Suites" + required: true + default: "light" + type: choice + options: + - light + - nightly + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + testool: + if: github.event.pull_request.draft == false + + name: Testool + runs-on: [pse-runner] + env: + DATA: ${{ github.event.inputs.suites || 'nightly' }} + + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + persist-credentials: false + + - name: Wakeup testool + run: .github/testoolScripts/wakeUpRunner.sh + + - name: Prepare repo + run: ssh testool "bash -s" -- < .github/testoolScripts/prepare.sh "$GITHUB_REF_NAME" + + - name: Cargo build + run: ssh testool "bash -s" -- < .github/testoolScripts/build.sh + + - name: Run tests + run: ssh testool "bash -s" -- < .github/testoolScripts/run.sh ${{ env.DATA }} + + - name: Sync reports + run: ssh testool "bash -s" -- < .github/testoolScripts/sync.sh + + - name: Cleanup + run: .github/testoolScripts/cleanup.sh + diff --git a/Cargo.lock b/Cargo.lock index fa16a58db7..6e1c845508 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3,26 +3,39 @@ version = 3 [[package]] -name = "aes" -version = "0.7.5" +name = "Inflector" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", - "opaque-debug 0.3.0", + "lazy_static", + "regex", ] [[package]] -name = "ahash" -version = "0.7.6" +name = "addr2line" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" dependencies = [ - "getrandom", - "once_cell", - "version_check", + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aes" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", ] [[package]] @@ -38,18 +51,24 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.20" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" dependencies = [ "memchr", ] +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + [[package]] name = "anyhow" -version = "1.0.69" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224afbd727c3d6e4b90103ece64b8d1b67fbb1973b1046c2281eed3f3803f800" +checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" [[package]] name = "ark-std" @@ -70,15 +89,15 @@ checksum = "3d62b7694a562cdf5a74227903507c56ab2cc8bdd1f781ed5cb4cf9c9f810bfc" [[package]] name = "arrayref" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] name = "arrayvec" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "ascii-canvas" @@ -91,13 +110,13 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.64" +version = "0.1.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd7fce9ba8c3c042128ce72d8b2ddbf3a05747efb67ea0313c635e10bda47a2" +checksum = "79fa67157abdfd688a259b6648808757db9347af834624f27ec646da976aee5d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.23", ] [[package]] @@ -124,14 +143,14 @@ dependencies = [ [[package]] name = "auto_impl" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a8c1df849285fbacd587de7818cc7d13be6cd2cbcd47a04fb1801b0e2706e33" +checksum = "fee3da8ef1276b0bee5dd1c7258010d8fffd31801447323115a25560e1327b89" dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -141,10 +160,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] -name = "base16ct" -version = "0.1.1" +name = "backtrace" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" +checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] [[package]] name = "base16ct" @@ -152,28 +180,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" -[[package]] -name = "base58" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" - -[[package]] -name = "base58check" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ee2fe4c9a0c84515f136aaae2466744a721af6d63339c18689d9e995d74d99b" -dependencies = [ - "base58", - "sha2 0.8.2", -] - -[[package]] -name = "base64" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" - [[package]] name = "base64" version = "0.13.1" @@ -182,15 +188,15 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.0" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" +checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" [[package]] name = "base64ct" -version = "1.0.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a32fd6af2b5827bce66c29053ba0e7c42b9dcab01835835058558c10851a46b" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bech32" @@ -228,6 +234,12 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" + [[package]] name = "bitvec" version = "0.17.4" @@ -250,24 +262,15 @@ dependencies = [ "wyz", ] -[[package]] -name = "blake2" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" -dependencies = [ - "digest 0.10.6", -] - [[package]] name = "blake2b_simd" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72936ee4afc7f8f736d1c38383b56480b5497b4617b4a77bdbf1d2ababc76127" +checksum = "3c2f0dc9a68c6317d884f97cc36cf5a3d20ba14ce404227df55e1af708ab04bc" dependencies = [ "arrayref", "arrayvec", - "constant_time_eq", + "constant_time_eq 0.2.6", ] [[package]] @@ -277,19 +280,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a076c298b9ecdb530ed9d967e74a6027d6a7478924520acddcddc24c1c8ab3ab" dependencies = [ "arrayref", - "byte-tools 0.2.0", -] - -[[package]] -name = "block-buffer" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -dependencies = [ - "block-padding 0.1.5", - "byte-tools 0.3.1", - "byteorder", - "generic-array 0.12.4", + "byte-tools", ] [[package]] @@ -298,26 +289,17 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ - "block-padding 0.2.1", - "generic-array 0.14.6", + "block-padding", + "generic-array 0.14.7", ] [[package]] name = "block-buffer" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" -dependencies = [ - "generic-array 0.14.6", -] - -[[package]] -name = "block-padding" -version = "0.1.5" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "byte-tools 0.3.1", + "generic-array 0.14.7", ] [[package]] @@ -326,74 +308,20 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" -[[package]] -name = "borsh" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "822462c1e7b17b31961798a6874b36daea6818e99e0cb7d3b7b0fa3c477751c3" -dependencies = [ - "borsh-derive", - "hashbrown 0.13.2", -] - -[[package]] -name = "borsh-derive" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37626c9e941a687ee9abef6065b44c379478ae563b7483c613dd705ef1dff59e" -dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", - "proc-macro-crate 0.1.5", - "proc-macro2", - "syn", -] - -[[package]] -name = "borsh-derive-internal" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61820b4c5693eafb998b1e67485423c923db4a75f72585c247bdee32bad81e7b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "borsh-schema-derive-internal" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76cdbfa13def20d1f8af3ae7b3c6771f06352a74221d8851262ac384c122b8e" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "bs58" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" - -[[package]] -name = "bstr" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" dependencies = [ - "lazy_static", - "memchr", - "regex-automata", - "serde", + "sha2 0.9.9", ] [[package]] name = "bumpalo" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" [[package]] name = "bus-mapping" @@ -432,45 +360,71 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40" [[package]] -name = "byte-tools" -version = "0.3.1" +name = "byteorder" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] -name = "bytecheck" -version = "0.6.9" +name = "bytes" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d11cac2c12b5adc6570dad2ee1b87eff4955dac476fe12d81e5fdd352e52406f" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" dependencies = [ - "bytecheck_derive", - "ptr_meta", + "serde", ] [[package]] -name = "bytecheck_derive" -version = "0.6.9" +name = "bzip2" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e576ebe98e605500b3c8041bb888e966653577172df6dd97398714eb30b9bf" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" dependencies = [ - "proc-macro2", - "quote", - "syn", + "bzip2-sys", + "libc", ] [[package]] -name = "byteorder" -version = "1.4.3" +name = "bzip2-sys" +version = "0.1.11+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] [[package]] -name = "bytes" -version = "1.4.0" +name = "camino" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "c530edf18f37068ac2d977409ed5cd50d53d73bc653c7647b48eb78976ac9ae2" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" dependencies = [ + "camino", + "cargo-platform", + "semver", "serde", + "serde_json", + "thiserror", ] [[package]] @@ -478,6 +432,9 @@ name = "cc" version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +dependencies = [ + "jobserver", +] [[package]] name = "cfg-if" @@ -487,21 +444,22 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.23" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f" +checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" dependencies = [ - "num-integer", + "android-tzdata", "num-traits", ] [[package]] name = "cipher" -version = "0.3.0" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "generic-array 0.14.6", + "crypto-common", + "inout", ] [[package]] @@ -519,20 +477,22 @@ dependencies = [ "rand", "rand_chacha", "rand_xorshift", + "serde", + "serde_json", "zkevm-circuits", ] [[package]] name = "clap" -version = "3.2.23" +version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" dependencies = [ "atty", - "bitflags", + "bitflags 1.3.2", "clap_derive", "clap_lex", - "indexmap", + "indexmap 1.9.3", "once_cell", "strsim", "termcolor", @@ -541,15 +501,15 @@ dependencies = [ [[package]] name = "clap_derive" -version = "3.2.18" +version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65" +checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" dependencies = [ "heck", "proc-macro-error", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -581,82 +541,81 @@ checksum = "2af3bfb9da627b0a6c467624fb7963921433774ed435493b5c08a3053e829ad4" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "coins-bip32" -version = "0.7.0" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634c509653de24b439672164bbf56f5f582a2ab0e313d3b0f6af0b7345cf2560" +checksum = "b30a84aab436fcb256a2ab3c80663d8aec686e6bae12827bb05fef3e1e439c9f" dependencies = [ "bincode", "bs58", "coins-core", - "digest 0.10.6", + "digest 0.10.7", "getrandom", "hmac 0.12.1", - "k256 0.11.6", + "k256", "lazy_static", "serde", - "sha2 0.10.6", + "sha2 0.10.7", "thiserror", ] [[package]] name = "coins-bip39" -version = "0.7.0" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a11892bcac83b4c6e95ab84b5b06c76d9d70ad73548dd07418269c5c7977171" +checksum = "84f4d04ee18e58356accd644896aeb2094ddeafb6a713e056cef0c0a8e468c15" dependencies = [ "bitvec 0.17.4", "coins-bip32", "getrandom", - "hex", "hmac 0.12.1", - "pbkdf2 0.11.0", + "once_cell", + "pbkdf2 0.12.1", "rand", - "sha2 0.10.6", + "sha2 0.10.7", "thiserror", ] [[package]] name = "coins-core" -version = "0.7.0" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c94090a6663f224feae66ab01e41a2555a8296ee07b5f20dab8888bdefc9f617" +checksum = "9b949a1c63fb7eb591eb7ba438746326aedf0ae843e51ec92ba6bec5bb382c4f" dependencies = [ - "base58check", - "base64 0.12.3", + "base64 0.21.2", "bech32", - "blake2", - "digest 0.10.6", - "generic-array 0.14.6", + "bs58", + "digest 0.10.7", + "generic-array 0.14.7", "hex", "ripemd", "serde", "serde_derive", - "sha2 0.10.6", - "sha3 0.10.7", + "sha2 0.10.7", + "sha3 0.10.8", "thiserror", ] [[package]] name = "colored" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd" +checksum = "2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6" dependencies = [ - "atty", + "is-terminal", "lazy_static", - "winapi", + "windows-sys", ] [[package]] name = "const-oid" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520fbf3c07483f94e3e3ca9d0cfd913d7718ef2483d2cfd91c0d9e91474ab913" +checksum = "6340df57935414636969091153f35f68d9f00bbc8fb4a9c6054706c213e6c6bc" [[package]] name = "constant_time_eq" @@ -665,31 +624,40 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] -name = "convert_case" -version = "0.4.0" +name = "constant_time_eq" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +checksum = "21a53c0a4d288377e7415b53dcfc3c04da5cdc2cc95c8d5ac178b58f0b861ad6" [[package]] name = "convert_case" -version = "0.5.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb4a24b1aaf0fd0ce8b45161144d6f42cd91677fd5940fd431183eb023b3a2b8" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" [[package]] name = "cpufeatures" -version = "0.2.5" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" dependencies = [ "libc", ] +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + [[package]] name = "crossbeam-channel" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ "cfg-if", "crossbeam-utils", @@ -697,9 +665,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" dependencies = [ "cfg-if", "crossbeam-epoch", @@ -708,9 +676,9 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.13" +version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" dependencies = [ "autocfg", "cfg-if", @@ -721,9 +689,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.14" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if", ] @@ -736,23 +704,11 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-bigint" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" -dependencies = [ - "generic-array 0.14.6", - "rand_core", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto-bigint" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c2538c4e68e52548bacb3e83ac549f903d44f011ac9d5abb5e132e67d0808f7" +checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", "rand_core", "subtle", "zeroize", @@ -764,7 +720,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", "typenum", ] @@ -774,19 +730,18 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", "subtle", ] [[package]] name = "csv" -version = "1.1.6" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" +checksum = "626ae34994d3d8d668f4269922248239db4ae42d538b14c398b74a52208e8086" dependencies = [ - "bstr", "csv-core", - "itoa 0.4.8", + "itoa", "ryu", "serde", ] @@ -807,14 +762,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" dependencies = [ "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "ctr" -version = "0.8.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" dependencies = [ "cipher", ] @@ -840,7 +795,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn", + "syn 1.0.109", ] [[package]] @@ -851,24 +806,20 @@ checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" dependencies = [ "darling_core", "quote", - "syn", + "syn 1.0.109", ] [[package]] -name = "der" -version = "0.6.1" +name = "data-encoding" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" -dependencies = [ - "const-oid", - "zeroize", -] +checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" [[package]] name = "der" -version = "0.7.5" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05e58dffcdcc8ee7b22f0c1f71a69243d7c2d9ad87b5a14361f2424a1565c219" +checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946" dependencies = [ "const-oid", "zeroize", @@ -880,11 +831,11 @@ version = "0.99.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ - "convert_case 0.4.0", + "convert_case", "proc-macro2", "quote", "rustc_version", - "syn", + "syn 1.0.109", ] [[package]] @@ -902,31 +853,22 @@ dependencies = [ "generic-array 0.9.1", ] -[[package]] -name = "digest" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -dependencies = [ - "generic-array 0.12.4", -] - [[package]] name = "digest" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] name = "digest" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer 0.10.3", + "block-buffer 0.10.4", "const-oid", "crypto-common", "subtle", @@ -955,9 +897,9 @@ dependencies = [ [[package]] name = "dunce" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd4b30a6560bbd9b4620f4de34c3f14f60848e58a9b7216801afcb4c7b31c3c" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" [[package]] name = "ecc" @@ -987,27 +929,16 @@ dependencies = [ [[package]] name = "ecdsa" -version = "0.14.8" +version = "0.16.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" +checksum = "0997c976637b606099b9985693efa3581e84e41f5c11ba5255f88711058ad428" dependencies = [ - "der 0.6.1", - "elliptic-curve 0.12.3", - "rfc6979 0.3.1", - "signature 1.6.4", -] - -[[package]] -name = "ecdsa" -version = "0.16.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a48e5d537b8a30c0b023116d981b16334be1485af7ca68db3a2b7024cbc957fd" -dependencies = [ - "der 0.7.5", - "digest 0.10.6", - "elliptic-curve 0.13.4", - "rfc6979 0.4.0", - "signature 2.1.0", + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature", + "spki", ] [[package]] @@ -1018,47 +949,28 @@ checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" [[package]] name = "elliptic-curve" -version = "0.12.3" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" +checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b" dependencies = [ - "base16ct 0.1.1", - "crypto-bigint 0.4.9", - "der 0.6.1", - "digest 0.10.6", - "ff 0.12.1", - "generic-array 0.14.6", - "group 0.12.1", + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array 0.14.7", + "group", "pkcs8", "rand_core", - "sec1 0.3.0", - "subtle", - "zeroize", -] - -[[package]] -name = "elliptic-curve" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75c71eaa367f2e5d556414a8eea812bc62985c879748d6403edabd9cb03f16e7" -dependencies = [ - "base16ct 0.2.0", - "crypto-bigint 0.5.1", - "digest 0.10.6", - "ff 0.13.0", - "generic-array 0.14.6", - "group 0.13.0", - "rand_core", - "sec1 0.7.1", + "sec1", "subtle", "zeroize", ] [[package]] name = "ena" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7402b94a93c24e742487327a7cd839dc9d36fec9de9fb25b09f2dae459f36c3" +checksum = "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1" dependencies = [ "log", ] @@ -1078,15 +990,33 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "enr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf56acd72bb22d2824e66ae8e9e5ada4d0de17a69c7fd35569dde2ada8ec9116" +dependencies = [ + "base64 0.13.1", + "bytes", + "hex", + "k256", + "log", + "rand", + "rlp", + "serde", + "sha3 0.10.8", + "zeroize", +] + [[package]] name = "enumn" -version = "0.1.7" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1940ea32e14d489b401074558be4567f35ca9507c4628b4b3fd6fe6eb2ca7b88" +checksum = "c9838a970f5de399d3070ae1739e131986b2f5dcc223c7423ca0927e3a878522" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.23", ] [[package]] @@ -1102,15 +1032,21 @@ dependencies = [ "termcolor", ] +[[package]] +name = "equivalent" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1" + [[package]] name = "errno" -version = "0.2.8" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" dependencies = [ "errno-dragonfly", "libc", - "winapi", + "windows-sys", ] [[package]] @@ -1125,13 +1061,13 @@ dependencies = [ [[package]] name = "eth-keystore" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f65b750ac950f2f825b36d08bef4cda4112e19a7b1a68f6e2bb499413e12440" +checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" dependencies = [ "aes", "ctr", - "digest 0.10.6", + "digest 0.10.7", "hex", "hmac 0.12.1", "pbkdf2 0.11.0", @@ -1139,8 +1075,8 @@ dependencies = [ "scrypt", "serde", "serde_json", - "sha2 0.10.6", - "sha3 0.10.7", + "sha2 0.10.7", + "sha3 0.10.8", "thiserror", "uuid", ] @@ -1170,9 +1106,9 @@ dependencies = [ [[package]] name = "ethabi" -version = "17.2.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4966fba78396ff92db3b817ee71143eccd98acf0f876b8d600e585a670c5d1b" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" dependencies = [ "ethereum-types", "hex", @@ -1180,43 +1116,47 @@ dependencies = [ "regex", "serde", "serde_json", - "sha3 0.10.7", + "sha3 0.10.8", "thiserror", "uint", ] [[package]] name = "ethbloom" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11da94e443c60508eb62cf256243a64da87304c2802ac2528847f79d750007ef" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" dependencies = [ "crunchy", - "fixed-hash 0.7.0", + "fixed-hash", + "impl-codec", "impl-rlp", "impl-serde", + "scale-info", "tiny-keccak", ] [[package]] name = "ethereum-types" -version = "0.13.1" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2827b94c556145446fcce834ca86b7abf0c39a805883fe20e72c5bfdb5a0dc6" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" dependencies = [ "ethbloom", - "fixed-hash 0.7.0", + "fixed-hash", + "impl-codec", "impl-rlp", "impl-serde", - "primitive-types 0.11.1", + "primitive-types", + "scale-info", "uint", ] [[package]] name = "ethers" -version = "0.17.0" +version = "2.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16142eeb3155cfa5aec6be3f828a28513a28bd995534f945fa70e7d608f16c10" +checksum = "2a58ce802c65cf3d0756dee5a61094a92cde53c1583b246e9ee5b37226c7fc15" dependencies = [ "ethers-addressbook", "ethers-contract", @@ -1230,9 +1170,9 @@ dependencies = [ [[package]] name = "ethers-addressbook" -version = "0.17.0" +version = "2.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e23f8992ecf45ea9dd2983696aabc566c108723585f07f5dc8c9efb24e52d3db" +checksum = "7b856b7b8ff5c961093cb8efe151fbcce724b451941ce20781de11a531ccd578" dependencies = [ "ethers-core", "once_cell", @@ -1242,10 +1182,12 @@ dependencies = [ [[package]] name = "ethers-contract" -version = "0.17.0" +version = "2.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e0010fffc97c5abcf75a30fd75676b1ed917b2b82beb8270391333618e2847d" +checksum = "e066a0d9cfc70c454672bf16bb433b0243427420076dc5b2f49c448fb5a10628" dependencies = [ + "ethers-contract-abigen", + "ethers-contract-derive", "ethers-core", "ethers-providers", "futures-util", @@ -1257,31 +1199,71 @@ dependencies = [ "thiserror", ] +[[package]] +name = "ethers-contract-abigen" +version = "2.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c113e3e86b6bc16d98484b2c3bb2d01d6fed9f489fe2e592e5cc87c3024d616b" +dependencies = [ + "Inflector", + "dunce", + "ethers-core", + "ethers-etherscan", + "eyre", + "hex", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "reqwest", + "serde", + "serde_json", + "syn 2.0.23", + "toml 0.7.5", + "walkdir", +] + +[[package]] +name = "ethers-contract-derive" +version = "2.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3fb5adee25701c79ec58fcf2c63594cd8829bc9ad6037ff862d5a111101ed2" +dependencies = [ + "Inflector", + "ethers-contract-abigen", + "ethers-core", + "hex", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.23", +] + [[package]] name = "ethers-core" -version = "0.17.0" +version = "2.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ebdd63c828f58aa067f40f9adcbea5e114fb1f90144b3a1e2858e0c9b1ff4e8" +checksum = "6da5fa198af0d3be20c19192df2bd9590b92ce09a8421e793bec8851270f1b05" dependencies = [ "arrayvec", "bytes", + "cargo_metadata", "chrono", - "convert_case 0.5.0", - "elliptic-curve 0.12.3", + "elliptic-curve", "ethabi", - "fastrlp", - "generic-array 0.14.6", + "generic-array 0.14.7", "hex", - "k256 0.11.6", - "proc-macro2", + "k256", + "num_enum 0.6.1", + "once_cell", + "open-fastrlp", "rand", "rlp", - "rlp-derive", - "rust_decimal", "serde", "serde_json", "strum", - "syn", + "syn 2.0.23", + "tempfile", "thiserror", "tiny-keccak", "unicode-xid", @@ -1289,16 +1271,15 @@ dependencies = [ [[package]] name = "ethers-etherscan" -version = "0.17.0" +version = "2.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b279a3d00bd219caa2f9a34451b4accbfa9a1eaafc26dcda9d572591528435f0" +checksum = "84ebb401ba97c6f5af278c2c9936c4546cad75dec464b439ae6df249906f4caa" dependencies = [ "ethers-core", - "getrandom", + "ethers-solc", "reqwest", "semver", "serde", - "serde-aux", "serde_json", "thiserror", "tracing", @@ -1306,16 +1287,18 @@ dependencies = [ [[package]] name = "ethers-middleware" -version = "0.17.0" +version = "2.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e7e8632d28175352b9454bbcb604643b6ca1de4d36dc99b3f86860d75c132b" +checksum = "740f4a773c19dd6d6a68c8c2e0996c096488d38997d524e21dc612c55da3bd24" dependencies = [ "async-trait", + "auto_impl", "ethers-contract", "ethers-core", "ethers-etherscan", "ethers-providers", "ethers-signers", + "futures-channel", "futures-locks", "futures-util", "instant", @@ -1331,24 +1314,25 @@ dependencies = [ [[package]] name = "ethers-providers" -version = "0.17.0" +version = "2.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e46482e4d1e79b20c338fd9db9e166184eb387f0a4e7c05c5b5c0aa2e8c8900c" +checksum = "56b498fd2a6c019d023e43e83488cd1fb0721f299055975aa6bac8dbf1e95f2c" dependencies = [ "async-trait", "auto_impl", - "base64 0.13.1", + "base64 0.21.2", + "bytes", + "enr", "ethers-core", "futures-channel", "futures-core", "futures-timer", "futures-util", - "getrandom", "hashers", "hex", "http", + "instant", "once_cell", - "parking_lot 0.11.2", "pin-project", "reqwest", "serde", @@ -1361,40 +1345,38 @@ dependencies = [ "url", "wasm-bindgen", "wasm-bindgen-futures", - "wasm-timer", "web-sys", "ws_stream_wasm", ] [[package]] name = "ethers-signers" -version = "0.17.0" +version = "2.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73a72ecad124e8ccd18d6a43624208cab0199e59621b1f0fa6b776b2e0529107" +checksum = "02c4b7e15f212fa7cc2e1251868320221d4ff77a3d48068e69f47ce1c491df2d" dependencies = [ "async-trait", "coins-bip32", "coins-bip39", - "elliptic-curve 0.12.3", + "elliptic-curve", "eth-keystore", "ethers-core", "hex", "rand", - "sha2 0.10.6", + "sha2 0.10.7", "thiserror", + "tracing", ] [[package]] name = "ethers-solc" -version = "0.17.0" +version = "2.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebe5db405d0e584aa8dae154ffebb90f2305cae588fd11d9f6b857ebe3a79294" +checksum = "a81c89f121595cf8959e746045bb8b25a6a38d72588561e1a3b7992fc213f674" dependencies = [ "cfg-if", - "colored", "dunce", "ethers-core", - "getrandom", "glob", "hex", "home", @@ -1408,11 +1390,13 @@ dependencies = [ "serde", "serde_json", "solang-parser", + "svm-rs", "thiserror", "tiny-keccak", "tokio", "tracing", "walkdir", + "yansi", ] [[package]] @@ -1426,44 +1410,22 @@ dependencies = [ ] [[package]] -name = "fake-simd" -version = "0.1.2" +name = "eyre" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" - -[[package]] -name = "fastrlp" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "089263294bb1c38ac73649a6ad563dd9a5142c8dc0482be15b8b9acb22a1611e" +checksum = "4c2b6b5a29c02cdc822728b7d7b8ae1bab3e3b05d44522770ddd49722eeac7eb" dependencies = [ - "arrayvec", - "auto_impl", - "bytes", - "ethereum-types", - "fastrlp-derive", -] - -[[package]] -name = "fastrlp-derive" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0f9d074ab623d1b388c12544bfeed759c7df36dc5c300cda053df9ba1232075" -dependencies = [ - "bytes", - "proc-macro2", - "quote", - "syn", + "indenter", + "once_cell", ] [[package]] -name = "ff" -version = "0.12.1" +name = "fastrand" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" dependencies = [ - "rand_core", - "subtle", + "instant", ] [[package]] @@ -1477,18 +1439,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "fixed-hash" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" -dependencies = [ - "byteorder", - "rand", - "rustc-hex", - "static_assertions", -] - [[package]] name = "fixed-hash" version = "0.8.0" @@ -1507,6 +1457,16 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +[[package]] +name = "flate2" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + [[package]] name = "fnv" version = "1.0.7" @@ -1515,13 +1475,23 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "form_urlencoded" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ "percent-encoding", ] +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "funty" version = "2.0.0" @@ -1530,9 +1500,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.26" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e2792b0ff0340399d58445b88fd9770e3489eff258a4cbc1523418f12abf84" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" dependencies = [ "futures-channel", "futures-core", @@ -1545,9 +1515,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.26" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e5317663a9089767a1ec00a487df42e0ca174b61b4483213ac24448e4664df5" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" dependencies = [ "futures-core", "futures-sink", @@ -1555,15 +1525,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.26" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec90ff4d0fe1f57d600049061dc6bb68ed03c7d2fbd697274c41805dcb3f8608" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" [[package]] name = "futures-executor" -version = "0.3.26" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8de0a35a6ab97ec8869e32a2473f4b1324459e14c29275d14b10cb1fd19b50e" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" dependencies = [ "futures-core", "futures-task", @@ -1572,9 +1542,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.26" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfb8371b6fb2aeb2d280374607aeabfc99d95c72edfe51692e42d3d7f0d08531" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" [[package]] name = "futures-locks" @@ -1584,43 +1554,46 @@ checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" dependencies = [ "futures-channel", "futures-task", - "tokio", ] [[package]] name = "futures-macro" -version = "0.3.26" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a73af87da33b5acf53acfebdc339fe592ecf5357ac7c0a7734ab9d8c876a70" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.23", ] [[package]] name = "futures-sink" -version = "0.3.26" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f310820bb3e8cfd46c80db4d7fb8353e15dfff853a127158425f31e0be6c8364" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" [[package]] name = "futures-task" -version = "0.3.26" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf79a1bf610b10f42aea489289c5a2c478a786509693b80cd39c44ccd936366" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" [[package]] name = "futures-timer" version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" +dependencies = [ + "gloo-timers", + "send_wrapper 0.4.0", +] [[package]] name = "futures-util" -version = "0.3.26" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c1d6de3acfef38d2be4b1f543f553131788603495be83da675e180c8d6b7bd1" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" dependencies = [ "futures-channel", "futures-core", @@ -1667,18 +1640,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" -dependencies = [ - "typenum", -] - -[[package]] -name = "generic-array" -version = "0.14.6" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", @@ -1696,9 +1660,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "js-sys", @@ -1707,6 +1671,12 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "gimli" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" + [[package]] name = "glob" version = "0.3.1" @@ -1714,23 +1684,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] -name = "gobuild" -version = "0.1.0-alpha.2" +name = "gloo-timers" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e156a4ddbf3deb5e8116946c111413bd9a5679bdc1536c78a60618a7a9ac9e" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" dependencies = [ - "cc", + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", ] [[package]] -name = "group" -version = "0.12.1" +name = "gobuild" +version = "0.1.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +checksum = "71e156a4ddbf3deb5e8116946c111413bd9a5679bdc1536c78a60618a7a9ac9e" dependencies = [ - "ff 0.12.1", - "rand_core", - "subtle", + "cc", ] [[package]] @@ -1739,16 +1710,16 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ - "ff 0.13.0", + "ff", "rand_core", "subtle", ] [[package]] name = "h2" -version = "0.3.15" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" +checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" dependencies = [ "bytes", "fnv", @@ -1756,7 +1727,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap", + "indexmap 1.9.3", "slab", "tokio", "tokio-util", @@ -1769,8 +1740,8 @@ version = "0.2.0" source = "git+https://github.com/privacy-scaling-explorations/halo2.git?tag=v2023_04_20#be955686f86eb618f55d2320c0e042485b313d22" dependencies = [ "blake2b_simd", - "ff 0.13.0", - "group 0.13.0", + "ff", + "group", "halo2curves", "rand_chacha", "rand_core", @@ -1784,8 +1755,8 @@ name = "halo2curves" version = "0.3.2" source = "git+https://github.com/privacy-scaling-explorations/halo2curves?tag=0.3.2#9f5c50810bbefe779ee5cf1d852b2fe85dc35d5e" dependencies = [ - "ff 0.13.0", - "group 0.13.0", + "ff", + "group", "lazy_static", "num-bigint", "num-traits", @@ -1810,9 +1781,9 @@ dependencies = [ [[package]] name = "handlebars" -version = "4.3.6" +version = "4.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "035ef95d03713f2c347a72547b7cd38cbc9af7cd51e6099fb62d586d4a6dee3a" +checksum = "83c3372087601b532857d332f5957cbae686da52bb7810bf038c3e3c3cc2fa0d" dependencies = [ "log", "pest", @@ -1827,9 +1798,6 @@ name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -dependencies = [ - "ahash 0.7.6", -] [[package]] name = "hashbrown" @@ -1837,9 +1805,15 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "ahash 0.8.3", + "ahash", ] +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" + [[package]] name = "hashers" version = "1.0.1" @@ -1866,18 +1840,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" [[package]] name = "hex" @@ -1907,7 +1872,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -1917,28 +1882,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" dependencies = [ "digest 0.9.0", - "generic-array 0.14.6", + "generic-array 0.14.7", "hmac 0.8.1", ] [[package]] name = "home" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "747309b4b440c06d57b0b25f2aee03ee9b5e5397d288c60e21fc709bb98a7408" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" dependencies = [ - "winapi", + "windows-sys", ] [[package]] name = "http" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ "bytes", "fnv", - "itoa 1.0.5", + "itoa", ] [[package]] @@ -1972,9 +1937,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.24" +version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e011372fa0b68db8350aa7a248930ecc7839bf46d8485577d69f117a75f164c" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ "bytes", "futures-channel", @@ -1985,7 +1950,7 @@ dependencies = [ "http-body", "httparse", "httpdate", - "itoa 1.0.5", + "itoa", "pin-project-lite", "socket2", "tokio", @@ -1996,10 +1961,11 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.23.2" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c" +checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" dependencies = [ + "futures-util", "http", "hyper", "rustls", @@ -2015,9 +1981,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -2043,32 +2009,57 @@ dependencies = [ [[package]] name = "impl-serde" -version = "0.3.2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + +[[package]] +name = "indexmap" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5c" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ - "serde", + "autocfg", + "hashbrown 0.12.3", ] [[package]] -name = "impl-trait-for-tuples" -version = "0.2.2" +name = "indexmap" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" dependencies = [ - "proc-macro2", - "quote", - "syn", + "equivalent", + "hashbrown 0.14.0", ] [[package]] -name = "indexmap" -version = "1.9.2" +name = "inout" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" dependencies = [ - "autocfg", - "hashbrown 0.12.3", + "generic-array 0.14.7", ] [[package]] @@ -2078,9 +2069,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", ] [[package]] @@ -2122,30 +2110,30 @@ dependencies = [ [[package]] name = "io-lifetimes" -version = "1.0.5" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1abeb7a0dd0f8181267ff8adc397075586500b81b28a73e8a0208b00fc170fb3" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ + "hermit-abi 0.3.2", "libc", - "windows-sys 0.45.0", + "windows-sys", ] [[package]] name = "ipnet" -version = "2.7.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" [[package]] name = "is-terminal" -version = "0.4.3" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e18b0a45d56fe973d6db23972bf5bc46f988a4a2385deac9cc29572f09daef" +checksum = "24fddda5af7e54bf7da53067d6e802dbcc381d0a8eef629df528e3ebf68755cb" dependencies = [ - "hermit-abi 0.3.1", - "io-lifetimes", - "rustix", - "windows-sys 0.45.0", + "hermit-abi 0.3.2", + "rustix 0.38.3", + "windows-sys", ] [[package]] @@ -2159,36 +2147,26 @@ dependencies = [ [[package]] name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - -[[package]] -name = "itoa" -version = "1.0.5" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" +checksum = "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a" [[package]] -name = "js-sys" -version = "0.3.61" +name = "jobserver" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" dependencies = [ - "wasm-bindgen", + "libc", ] [[package]] -name = "k256" -version = "0.11.6" +name = "js-sys" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8b" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ - "cfg-if", - "ecdsa 0.14.8", - "elliptic-curve 0.12.3", - "sha2 0.10.6", - "sha3 0.10.7", + "wasm-bindgen", ] [[package]] @@ -2198,25 +2176,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" dependencies = [ "cfg-if", - "ecdsa 0.16.6", - "elliptic-curve 0.13.4", - "sha2 0.10.6", + "ecdsa 0.16.7", + "elliptic-curve", + "once_cell", + "sha2 0.10.7", + "signature", ] [[package]] name = "keccak" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3afef3b6eff9ce9d8ff9b3601125eec7f0c8cbac7abd14f355d053fa56c98768" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" dependencies = [ "cpufeatures", ] [[package]] name = "lalrpop" -version = "0.19.9" +version = "0.19.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f34313ec00c2eb5c3c87ca6732ea02dcf3af99c3ff7a8fb622ffb99c9d860a87" +checksum = "0a1cbf952127589f2851ab2046af368fd20645491bb4b376f04b7f94d7a9837b" dependencies = [ "ascii-canvas", "bit-set", @@ -2226,9 +2206,8 @@ dependencies = [ "itertools", "lalrpop-util", "petgraph", - "pico-args", "regex", - "regex-syntax", + "regex-syntax 0.6.29", "string_cache", "term", "tiny-keccak", @@ -2237,12 +2216,9 @@ dependencies = [ [[package]] name = "lalrpop-util" -version = "0.19.10" +version = "0.19.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3b45d694c8074f77bc24fc26e47633c862a9cd3b48dd51209c02ba4c434d68" -dependencies = [ - "regex", -] +checksum = "d3c48237b9604c5a4702de6b824e02006c3214327564636aef27c1028a8fa0ed" [[package]] name = "lazy_static" @@ -2255,9 +2231,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.139" +version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "libsecp256k1" @@ -2315,15 +2291,21 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.1.4" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" + +[[package]] +name = "linux-raw-sys" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" +checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" [[package]] name = "lock_api" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ "autocfg", "scopeguard", @@ -2331,12 +2313,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.17" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] +checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" [[package]] name = "maingate" @@ -2357,7 +2336,7 @@ version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -2368,29 +2347,37 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memoffset" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "mime" -version = "0.3.16" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] [[package]] name = "mio" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ "libc", - "log", "wasi", - "windows-sys 0.42.0", + "windows-sys", ] [[package]] @@ -2413,15 +2400,6 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" -[[package]] -name = "nom8" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae01545c9c7fc4486ab7debaf2aad7003ac19431791868fb2e8066df97fad2f8" -dependencies = [ - "memchr", -] - [[package]] name = "num" version = "0.4.0" @@ -2501,11 +2479,11 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi 0.3.2", "libc", ] @@ -2515,7 +2493,16 @@ version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" dependencies = [ - "num_enum_derive", + "num_enum_derive 0.5.11", +] + +[[package]] +name = "num_enum" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" +dependencies = [ + "num_enum_derive 0.6.1", ] [[package]] @@ -2524,23 +2511,38 @@ version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ - "proc-macro-crate 1.3.0", + "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] -name = "once_cell" -version = "1.17.0" +name = "num_enum_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.23", +] + +[[package]] +name = "object" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" +checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +dependencies = [ + "memchr", +] [[package]] -name = "opaque-debug" -version = "0.2.3" +name = "once_cell" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "opaque-debug" @@ -2548,11 +2550,36 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +[[package]] +name = "open-fastrlp" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", + "ethereum-types", + "open-fastrlp-derive", +] + +[[package]] +name = "open-fastrlp-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" +dependencies = [ + "bytes", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "os_str_bytes" -version = "6.4.1" +version = "6.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" +checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" [[package]] name = "output_vt100" @@ -2565,9 +2592,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.3.0" +version = "3.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3840933452adf7b3b9145e27086a5a3376c619dca1a21b1e5a5af0d54979bed" +checksum = "756d439303e94fae44f288ba881ad29670c65b0c4b0e05674ca81061bb65f2c5" dependencies = [ "arrayvec", "bitvec 1.0.1", @@ -2579,25 +2606,14 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.1.4" +version = "3.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b26a931f824dd4eca30b3e43bb4f31cd5f0d3a403c5f5ff27106b805bfde7b" +checksum = "9d884d78fcf214d70b1e239fcd1c6e5e95aa3be1881918da2e488cc946c7a476" dependencies = [ - "proc-macro-crate 1.3.0", + "proc-macro-crate", "proc-macro2", "quote", - "syn", -] - -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.6", + "syn 1.0.109", ] [[package]] @@ -2607,45 +2623,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.7", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall", - "smallvec", - "winapi", + "parking_lot_core", ] [[package]] name = "parking_lot_core" -version = "0.9.7" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.3.5", "smallvec", - "windows-sys 0.45.0", -] - -[[package]] -name = "password-hash" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d791538a6dcc1e7cb7fe6f6b58aca40e7f79403c45b2bc274008b5e647af1d8" -dependencies = [ - "base64ct", - "rand_core", - "subtle", + "windows-targets", ] [[package]] @@ -2666,8 +2657,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3e57598f73cc7e1b2ac63c79c517b31a0877cd7c402cdcaa311b5208de7a095" dependencies = [ "blake2b_simd", - "ff 0.13.0", - "group 0.13.0", + "ff", + "group", "lazy_static", "rand", "static_assertions", @@ -2676,9 +2667,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deeba" +checksum = "b4b27ab7be369122c218afc2079489cdcb4b517c0a3fc386ff11e1fedfcc2b35" [[package]] name = "path-slash" @@ -2688,36 +2679,37 @@ checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" [[package]] name = "pbkdf2" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271779f35b581956db91a3e55737327a03aa051e90b1c47aeb189508533adfd7" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", + "hmac 0.12.1", + "password-hash", + "sha2 0.10.7", ] [[package]] name = "pbkdf2" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +checksum = "f0ca0b5a68607598bf3bad68f32227a8164f6254833f84eafaac409cd6746c31" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", "hmac 0.12.1", - "password-hash 0.4.2", - "sha2 0.10.6", ] [[package]] name = "percent-encoding" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "pest" -version = "2.5.5" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "028accff104c4e513bad663bbcd2ad7cfd5304144404c31ed0a77ac103d00660" +checksum = "f73935e4d55e2abf7f130186537b19e7a4abc886a0252380b59248af473a3fc9" dependencies = [ "thiserror", "ucd-trie", @@ -2725,9 +2717,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.5.5" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ac3922aac69a40733080f53c1ce7f91dcf57e1a5f6c52f421fadec7fbdc4b69" +checksum = "aef623c9bbfa0eedf5a0efba11a5ee83209c326653ca31ff019bec3a95bfff2b" dependencies = [ "pest", "pest_generator", @@ -2735,26 +2727,26 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.5.5" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d06646e185566b5961b4058dd107e0a7f56e77c3f484549fb119867773c0f202" +checksum = "b3e8cba4ec22bada7fc55ffe51e2deb6a0e0db2d0b7ab0b103acc80d2510c190" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn", + "syn 2.0.23", ] [[package]] name = "pest_meta" -version = "2.5.5" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6f60b2ba541577e2a0c307c8f39d1439108120eb7903adeb6497fa880c59616" +checksum = "a01f71cb40bd8bb94232df14b946909e14660e33fc05db3e50ae2a82d7ea0ca0" dependencies = [ "once_cell", "pest", - "sha2 0.10.6", + "sha2 0.10.7", ] [[package]] @@ -2764,7 +2756,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" dependencies = [ "fixedbitset", - "indexmap", + "indexmap 1.9.3", ] [[package]] @@ -2779,37 +2771,35 @@ dependencies = [ [[package]] name = "phf" -version = "0.10.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" dependencies = [ "phf_macros", - "phf_shared", - "proc-macro-hack", + "phf_shared 0.11.2", ] [[package]] name = "phf_generator" -version = "0.10.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" dependencies = [ - "phf_shared", + "phf_shared 0.11.2", "rand", ] [[package]] name = "phf_macros" -version = "0.10.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" +checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" dependencies = [ "phf_generator", - "phf_shared", - "proc-macro-hack", + "phf_shared 0.11.2", "proc-macro2", "quote", - "syn", + "syn 2.0.23", ] [[package]] @@ -2822,36 +2812,39 @@ dependencies = [ ] [[package]] -name = "pico-args" -version = "0.4.2" +name = "phf_shared" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db8bcd96cb740d03149cbad5518db9fd87126a10ab519c011893b1754134c468" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +dependencies = [ + "siphasher", +] [[package]] name = "pin-project" -version = "1.0.12" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +checksum = "030ad2bc4db10a8944cb0d837f158bdfec4d4a4873ab701a95046770d11f8842" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.12" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.23", ] [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" [[package]] name = "pin-utils" @@ -2861,14 +2854,20 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkcs8" -version = "0.9.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ - "der 0.6.1", + "der", "spki", ] +[[package]] +name = "pkg-config" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + [[package]] name = "poseidon" version = "0.2.0" @@ -2902,6 +2901,16 @@ dependencies = [ "yansi", ] +[[package]] +name = "prettyplease" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92139198957b410250d43fad93e630d956499a625c527eda65175c8680f83387" +dependencies = [ + "proc-macro2", + "syn 2.0.23", +] + [[package]] name = "prettytable-rs" version = "0.10.0" @@ -2916,45 +2925,25 @@ dependencies = [ "unicode-width", ] -[[package]] -name = "primitive-types" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28720988bff275df1f51b171e1b2a18c30d194c4d2b61defdacecd625a5d94a" -dependencies = [ - "fixed-hash 0.7.0", - "impl-codec", - "impl-rlp", - "impl-serde", - "uint", -] - [[package]] name = "primitive-types" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66" dependencies = [ - "fixed-hash 0.8.0", + "fixed-hash", "impl-codec", "impl-rlp", + "impl-serde", + "scale-info", "uint", ] [[package]] name = "proc-macro-crate" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" -dependencies = [ - "toml", -] - -[[package]] -name = "proc-macro-crate" -version = "1.3.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66618389e4ec1c7afe67d51a9bf34ff9236480f8d51e7489b7d5ab0303c13f34" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", "toml_edit", @@ -2969,7 +2958,7 @@ dependencies = [ "proc-macro-error-attr", "proc-macro2", "quote", - "syn", + "syn 1.0.109", "version_check", ] @@ -2984,46 +2973,20 @@ dependencies = [ "version_check", ] -[[package]] -name = "proc-macro-hack" -version = "0.5.20+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" - [[package]] name = "proc-macro2" -version = "1.0.51" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6" +checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" dependencies = [ "unicode-ident", ] -[[package]] -name = "ptr_meta" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" -dependencies = [ - "ptr_meta_derive", -] - -[[package]] -name = "ptr_meta_derive" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "quote" -version = "1.0.23" +version = "1.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" +checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" dependencies = [ "proc-macro2", ] @@ -3081,9 +3044,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" dependencies = [ "either", "rayon-core", @@ -3091,9 +3054,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.10.2" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "356a0625f1954f730c0201cdab48611198dc6ce21f4acff55089b5a78e6e835b" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -3107,7 +3070,16 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ - "bitflags", + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", ] [[package]] @@ -3117,49 +3089,52 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ "getrandom", - "redox_syscall", + "redox_syscall 0.2.16", "thiserror", ] [[package]] name = "regex" -version = "1.7.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" +checksum = "89089e897c013b3deb627116ae56a6955a72b8bed395c9526af31c9fe528b484" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-automata", + "regex-syntax 0.7.3", ] [[package]] name = "regex-automata" -version = "0.1.10" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +checksum = "fa250384981ea14565685dea16a9ccc4d1c541a13f82b9c168572264d1df8c56" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.7.3", +] [[package]] name = "regex-syntax" -version = "0.6.28" +version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] -name = "rend" -version = "0.3.6" +name = "regex-syntax" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79af64b4b6362ffba04eef3a4e10829718a4896dac19daa741851c86781edf95" -dependencies = [ - "bytecheck", -] +checksum = "2ab07dc67230e4a4718e70fd5c20055a4334b121f1f9db8fe63ef39ce9b8c846" [[package]] name = "reqwest" -version = "0.11.14" +version = "0.11.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21eed90ec8570952d53b772ecf8f206aa1ec9a3d76b2521c56c42973f2d91ee9" +checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" dependencies = [ - "base64 0.21.0", + "base64 0.21.2", "bytes", "encoding_rs", "futures-core", @@ -3188,7 +3163,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots", + "webpki-roots 0.22.6", "winreg", ] @@ -3202,49 +3177,49 @@ dependencies = [ "auto_impl", "bytes", "hashbrown 0.13.2", - "num_enum", - "primitive-types 0.12.1", + "num_enum 0.5.11", + "primitive-types", "revm_precompiles", "rlp", - "sha3 0.10.7", + "sha3 0.10.8", ] [[package]] name = "revm-precompile" -version = "2.0.2" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10a3eabf08ea9e4063f5531b8735e29344d9d6eaebaa314c58253f6c17fcdf2d" +checksum = "41320af3bd6a65153d38eb1d3638ba89104cc9513c7feedb2d8510e8307dab29" dependencies = [ - "k256 0.13.1", + "k256", "num", "once_cell", "revm-primitives", "ripemd", "secp256k1 0.27.0", - "sha2 0.10.6", - "sha3 0.10.7", + "sha2 0.10.7", + "sha3 0.10.8", "substrate-bn", ] [[package]] name = "revm-primitives" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180427e1169b860ab63eaa5bcff158010073646abf3312aed11a1d7aa1aa8291" +checksum = "304d998f466ffef72d76c7f20b05bf08a96801736a6fb1fdef47d49a292618df" dependencies = [ "auto_impl", "bitvec 1.0.1", "bytes", "derive_more", "enumn", - "fixed-hash 0.8.0", + "fixed-hash", "hashbrown 0.13.2", "hex", "hex-literal", - "primitive-types 0.12.1", + "primitive-types", "rlp", "ruint", - "sha3 0.10.7", + "sha3 0.10.8", ] [[package]] @@ -3257,25 +3232,14 @@ dependencies = [ "hashbrown 0.13.2", "num", "once_cell", - "primitive-types 0.12.1", + "primitive-types", "ripemd", "secp256k1 0.24.3", - "sha2 0.10.6", - "sha3 0.10.7", + "sha2 0.10.7", + "sha3 0.10.8", "substrate-bn", ] -[[package]] -name = "rfc6979" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" -dependencies = [ - "crypto-bigint 0.4.9", - "hmac 0.12.1", - "zeroize", -] - [[package]] name = "rfc6979" version = "0.4.0" @@ -3296,43 +3260,18 @@ dependencies = [ "libc", "once_cell", "spin", - "untrusted", - "web-sys", - "winapi", -] - -[[package]] -name = "ripemd" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" -dependencies = [ - "digest 0.10.6", -] - -[[package]] -name = "rkyv" -version = "0.7.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cec2b3485b07d96ddfd3134767b8a447b45ea4eb91448d0a35180ec0ffd5ed15" -dependencies = [ - "bytecheck", - "hashbrown 0.12.3", - "ptr_meta", - "rend", - "rkyv_derive", - "seahash", + "untrusted", + "web-sys", + "winapi", ] [[package]] -name = "rkyv_derive" -version = "0.7.39" +name = "ripemd" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eaedadc88b53e36dd32d940ed21ae4d850d5916f2581526921f553a72ac34c4" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" dependencies = [ - "proc-macro2", - "quote", - "syn", + "digest 0.10.7", ] [[package]] @@ -3342,6 +3281,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" dependencies = [ "bytes", + "rlp-derive", "rustc-hex", ] @@ -3353,7 +3293,7 @@ checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -3363,7 +3303,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d470e29e933dac4101180fd6574971892315c414cf2961a192729089687cc9b" dependencies = [ "derive_more", - "primitive-types 0.11.1", + "primitive-types", "rlp", "ruint-macro", "rustc_version", @@ -3377,22 +3317,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62cc5760263ea229d367e7dff3c0cbf09e4797a125bd87059a6c095804f3b2d1" [[package]] -name = "rust_decimal" -version = "1.28.1" +name = "rustc-demangle" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13cf35f7140155d02ba4ec3294373d513a3c7baa8364c162b030e33c61520a8" -dependencies = [ - "arrayvec", - "borsh", - "bytecheck", - "byteorder", - "bytes", - "num-traits", - "rand", - "rkyv", - "serde", - "serde_json", -] +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustc-hex" @@ -3411,56 +3339,79 @@ dependencies = [ [[package]] name = "rustix" -version = "0.36.8" +version = "0.37.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43abb88211988493c1abb44a70efa56ff0ce98f233b7b276146f1f3f7ba9644" +checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" dependencies = [ - "bitflags", + "bitflags 1.3.2", "errno", "io-lifetimes", "libc", - "linux-raw-sys", - "windows-sys 0.45.0", + "linux-raw-sys 0.3.8", + "windows-sys", +] + +[[package]] +name = "rustix" +version = "0.38.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac5ffa1efe7548069688cd7028f32591853cd7b5b756d41bcffd2353e4fc75b4" +dependencies = [ + "bitflags 2.3.3", + "errno", + "libc", + "linux-raw-sys 0.4.3", + "windows-sys", ] [[package]] name = "rustls" -version = "0.20.8" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +checksum = "e32ca28af694bc1bbf399c33a516dbdf1c90090b8ab23c2bc24f834aa2247f5f" dependencies = [ "log", "ring", + "rustls-webpki", "sct", - "webpki", ] [[package]] name = "rustls-pemfile" -version = "1.0.2" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +dependencies = [ + "base64 0.21.2", +] + +[[package]] +name = "rustls-webpki" +version = "0.100.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" +checksum = "d6207cd5ed3d8dca7816f8f3725513a34609c0c765bf652b8c3cb4cfd87db46b" dependencies = [ - "base64 0.21.0", + "ring", + "untrusted", ] [[package]] name = "rustversion" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70" +checksum = "dc31bd9b61a32c31f9650d18add92aa83a49ba979c143eefd27fe7177b05bd5f" [[package]] name = "ryu" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" +checksum = "fe232bdf6be8c8de797b22184ee71118d63780ea42ac85b61d1baa6d3b782ae9" [[package]] name = "salsa20" -version = "0.9.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0fbb5f676da676c260ba276a8f43a8dc67cf02d1438423aeb1c677a7212686" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" dependencies = [ "cipher", ] @@ -3474,6 +3425,30 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "scale-info" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35c0a159d0c45c12b20c5a844feb1fe4bea86e28f17b92a5f0c42193634d3782" +dependencies = [ + "cfg-if", + "derive_more", + "parity-scale-codec", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "912e55f6d20e0e80d63733872b40e1227c0bce1e1ab81ba67d696339bfd7fd29" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "scopeguard" version = "1.1.0" @@ -3482,15 +3457,14 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "scrypt" -version = "0.8.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e73d6d7c6311ebdbd9184ad6c4447b2f36337e327bda107d3ba9e3c374f9d325" +checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" dependencies = [ "hmac 0.12.1", - "password-hash 0.3.2", - "pbkdf2 0.10.1", + "pbkdf2 0.11.0", "salsa20", - "sha2 0.10.6", + "sha2 0.10.7", ] [[package]] @@ -3503,39 +3477,20 @@ dependencies = [ "untrusted", ] -[[package]] -name = "seahash" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" - [[package]] name = "sec1" -version = "0.3.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" +checksum = "f0aec48e813d6b90b15f0b8948af3c63483992dee44c03e9930b3eebdabe046e" dependencies = [ - "base16ct 0.1.1", - "der 0.6.1", - "generic-array 0.14.6", + "base16ct", + "der", + "generic-array 0.14.7", "pkcs8", "subtle", "zeroize", ] -[[package]] -name = "sec1" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48518a2b5775ba8ca5b46596aae011caa431e6ce7e4a67ead66d92f08884220e" -dependencies = [ - "base16ct 0.2.0", - "der 0.7.5", - "generic-array 0.14.6", - "subtle", - "zeroize", -] - [[package]] name = "secp256k1" version = "0.24.3" @@ -3574,13 +3529,19 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.16" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a" +checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" dependencies = [ "serde", ] +[[package]] +name = "send_wrapper" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" + [[package]] name = "send_wrapper" version = "0.6.0" @@ -3589,45 +3550,44 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.152" +version = "1.0.166" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" +checksum = "d01b7404f9d441d3ad40e6a636a7782c377d2abdbe4fa2440e2edcc2f4f10db8" dependencies = [ "serde_derive", ] -[[package]] -name = "serde-aux" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a77223b653fa95f3f9864f3eb25b93e4ed170687eb42d85b6b98af21d5e1de" -dependencies = [ - "serde", - "serde_json", -] - [[package]] name = "serde_derive" -version = "1.0.152" +version = "1.0.166" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" +checksum = "5dd83d6dde2b6b2d466e14d9d1acce8816dedee94f735eac6395808b3483c6d6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.23", ] [[package]] name = "serde_json" -version = "1.0.92" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7434af0dc1cbd59268aa98b4c22c131c0584d2232f6fb166efb993e2832e896a" +checksum = "0f1e14e89be7aa4c4b78bdbdc9eb5bf8517829a600ae8eaa39a6e1d960b5185c" dependencies = [ - "itoa 1.0.5", + "itoa", "ryu", "serde", ] +[[package]] +name = "serde_spanned" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +dependencies = [ + "serde", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -3635,7 +3595,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 1.0.5", + "itoa", "ryu", "serde", ] @@ -3659,30 +3619,18 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] -name = "sha-1" -version = "0.10.1" +name = "sha1" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.6", -] - -[[package]] -name = "sha2" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" -dependencies = [ - "block-buffer 0.7.3", - "digest 0.8.1", - "fake-simd", - "opaque-debug 0.2.3", + "digest 0.10.7", ] [[package]] @@ -3695,18 +3643,18 @@ dependencies = [ "cfg-if", "cpufeatures", "digest 0.9.0", - "opaque-debug 0.3.0", + "opaque-debug", ] [[package]] name = "sha2" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -3716,7 +3664,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b64dcef59ed4290b9fb562b53df07f564690d6539e8ecdd4728cf392477530bc" dependencies = [ "block-buffer 0.3.3", - "byte-tools 0.2.0", + "byte-tools", "digest 0.7.6", "keccak", ] @@ -3730,36 +3678,26 @@ dependencies = [ "block-buffer 0.9.0", "digest 0.9.0", "keccak", - "opaque-debug 0.3.0", + "opaque-debug", ] [[package]] name = "sha3" -version = "0.10.7" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54c2bb1a323307527314a36bfb73f24febb08ce2b8a554bf4ffd6f51ad15198c" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", "keccak", ] -[[package]] -name = "signature" -version = "1.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" -dependencies = [ - "digest 0.10.6", - "rand_core", -] - [[package]] name = "signature" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", "rand_core", ] @@ -3771,9 +3709,9 @@ checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" [[package]] name = "slab" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" dependencies = [ "autocfg", ] @@ -3800,18 +3738,18 @@ dependencies = [ "num-integer", "num-traits", "poseidon", - "primitive-types 0.12.1", + "primitive-types", "rand", "revm", "rlp", - "sha3 0.10.7", + "sha3 0.10.8", ] [[package]] name = "socket2" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" dependencies = [ "libc", "winapi", @@ -3819,14 +3757,15 @@ dependencies = [ [[package]] name = "solang-parser" -version = "0.1.16" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f68b8280e3f354d5646218319bcee4febe42833cef5ebf653cfc49d0a94409" +checksum = "4a94494913728908efa7a25a2dd2e4f037e714897985c24273c40596638ed909" dependencies = [ "itertools", "lalrpop", "lalrpop-util", "phf", + "thiserror", "unicode-xid", ] @@ -3838,12 +3777,12 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "spki" -version = "0.6.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" +checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" dependencies = [ "base64ct", - "der 0.6.1", + "der", ] [[package]] @@ -3854,14 +3793,14 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "string_cache" -version = "0.8.4" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213494b7a2b503146286049378ce02b482200519accc31872ee8be91fa820a08" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" dependencies = [ "new_debug_unreachable", "once_cell", - "parking_lot 0.12.1", - "phf_shared", + "parking_lot", + "phf_shared 0.10.0", "precomputed-hash", ] @@ -3890,7 +3829,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn", + "syn 1.0.109", ] [[package]] @@ -3908,15 +3847,46 @@ dependencies = [ [[package]] name = "subtle" -version = "2.4.1" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + +[[package]] +name = "svm-rs" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a04fc4f5cd35c700153b233f5575ccb3237e0f941fa5049d9e98254d10bf2fe" +dependencies = [ + "fs2", + "hex", + "home", + "once_cell", + "reqwest", + "semver", + "serde", + "serde_json", + "sha2 0.10.7", + "thiserror", + "url", + "zip", +] + +[[package]] +name = "syn" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] [[package]] name = "syn" -version = "1.0.107" +version = "2.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" +checksum = "59fb7d6d8281a51045d62b8eb3a7d1ce347b76f312af50cd3dc0af39c87c1737" dependencies = [ "proc-macro2", "quote", @@ -3929,6 +3899,20 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" +[[package]] +name = "tempfile" +version = "3.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" +dependencies = [ + "autocfg", + "cfg-if", + "fastrand", + "redox_syscall 0.3.5", + "rustix 0.37.23", + "windows-sys", +] + [[package]] name = "term" version = "0.7.0" @@ -3978,7 +3962,7 @@ dependencies = [ "strum", "strum_macros", "thiserror", - "toml", + "toml 0.5.11", "urlencoding", "yaml-rust", "zkevm-circuits", @@ -3992,24 +3976,40 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.38" +version = "1.0.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" +checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.38" +version = "1.0.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" +checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.23", +] + +[[package]] +name = "time" +version = "0.3.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd" +dependencies = [ + "serde", + "time-core", ] +[[package]] +name = "time-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" + [[package]] name = "tiny-keccak" version = "2.0.2" @@ -4036,49 +4036,48 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.25.0" +version = "1.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e00990ebabbe4c14c08aca901caed183ecd5c09562a12c824bb53d3c3fd3af" +checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da" dependencies = [ "autocfg", + "backtrace", "bytes", "libc", - "memchr", "mio", "num_cpus", "pin-project-lite", "socket2", "tokio-macros", - "windows-sys 0.42.0", + "windows-sys", ] [[package]] name = "tokio-macros" -version = "1.8.2" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.23", ] [[package]] name = "tokio-rustls" -version = "0.23.4" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ "rustls", "tokio", - "webpki", ] [[package]] name = "tokio-tungstenite" -version = "0.17.2" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f714dd15bead90401d77e04243611caec13726c2408afd5b31901dfcdcb3b181" +checksum = "ec509ac96e9a0c43427c74f003127d953a265737636129424288d27cb5c4b12c" dependencies = [ "futures-util", "log", @@ -4086,15 +4085,14 @@ dependencies = [ "tokio", "tokio-rustls", "tungstenite", - "webpki", - "webpki-roots", + "webpki-roots 0.23.1", ] [[package]] name = "tokio-util" -version = "0.7.4" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" +checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" dependencies = [ "bytes", "futures-core", @@ -4113,21 +4111,38 @@ dependencies = [ "serde", ] +[[package]] +name = "toml" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebafdf5ad1220cb59e7d17cf4d2c72015297b75b19a10472f99b89225089240" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + [[package]] name = "toml_datetime" -version = "0.5.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4553f467ac8e3d374bc9a177a26801e5d0f9b211aa1673fb137a403afd1c9cf5" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] [[package]] name = "toml_edit" -version = "0.18.1" +version = "0.19.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c59d8dd7d0dcbc6428bf7aa2f0e823e26e43b3c9aca15bbc9475d23e5fa12b" +checksum = "266f016b7f039eec8a1a80dfe6156b633d208b9fccca5e4db1d6775b0c4e34a7" dependencies = [ - "indexmap", - "nom8", + "indexmap 2.0.0", + "serde", + "serde_spanned", "toml_datetime", + "winnow", ] [[package]] @@ -4150,20 +4165,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.23" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.23", ] [[package]] name = "tracing-core" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" dependencies = [ "once_cell", ] @@ -4186,19 +4201,19 @@ checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "tungstenite" -version = "0.17.3" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e27992fd6a8c29ee7eef28fc78349aa244134e10ad447ce3b9f0ac0ed0fa4ce0" +checksum = "15fba1a6d6bb030745759a9a2a588bfe8490fc8b4751a277db3a0be1c9ebbf67" dependencies = [ - "base64 0.13.1", "byteorder", "bytes", + "data-encoding", "http", "httparse", "log", "rand", "rustls", - "sha-1", + "sha1", "thiserror", "url", "utf-8", @@ -4231,15 +4246,15 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.10" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.6" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" +checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73" [[package]] name = "unicode-normalization" @@ -4270,9 +4285,9 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "url" -version = "2.3.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" dependencies = [ "form_urlencoded", "idna", @@ -4309,22 +4324,20 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "walkdir" -version = "2.3.2" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" dependencies = [ "same-file", - "winapi", "winapi-util", ] [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] @@ -4336,9 +4349,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -4346,24 +4359,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn", + "syn 2.0.23", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.34" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" dependencies = [ "cfg-if", "js-sys", @@ -4373,9 +4386,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4383,43 +4396,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.23", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.84" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" - -[[package]] -name = "wasm-timer" -version = "0.2.5" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" -dependencies = [ - "futures", - "js-sys", - "parking_lot 0.11.2", - "pin-utils", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "web-sys" -version = "0.3.61" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", @@ -4444,6 +4442,15 @@ dependencies = [ "webpki", ] +[[package]] +name = "webpki-roots" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" +dependencies = [ + "rustls-webpki", +] + [[package]] name = "winapi" version = "0.3.9" @@ -4477,33 +4484,18 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-sys" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ "windows-targets", ] [[package]] name = "windows-targets" -version = "0.42.1" +version = "0.48.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7" +checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -4516,45 +4508,54 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.1" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" [[package]] name = "windows_aarch64_msvc" -version = "0.42.1" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" [[package]] name = "windows_i686_gnu" -version = "0.42.1" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" [[package]] name = "windows_i686_msvc" -version = "0.42.1" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" [[package]] name = "windows_x86_64_gnu" -version = "0.42.1" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.1" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" [[package]] name = "windows_x86_64_msvc" -version = "0.42.1" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "winnow" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" +checksum = "ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448" +dependencies = [ + "memchr", +] [[package]] name = "winreg" @@ -4577,7 +4578,7 @@ dependencies = [ "log", "pharos", "rustc_version", - "send_wrapper", + "send_wrapper 0.6.0", "thiserror", "wasm-bindgen", "wasm-bindgen-futures", @@ -4610,9 +4611,29 @@ checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" [[package]] name = "zeroize" -version = "1.5.7" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f" +checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "aes", + "byteorder", + "bzip2", + "constant_time_eq 0.1.5", + "crc32fast", + "crossbeam-utils", + "flate2", + "hmac 0.12.1", + "pbkdf2 0.11.0", + "sha1", + "time", + "zstd", +] [[package]] name = "zkevm-circuits" @@ -4640,14 +4661,45 @@ dependencies = [ "mock", "num", "num-bigint", + "num_enum 0.5.11", "pretty_assertions", "rand", "rand_chacha", "rand_xorshift", "serde", "serde_json", - "sha3 0.10.7", + "sha3 0.10.8", "snark-verifier", "strum", "strum_macros", ] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.8+zstd.1.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c" +dependencies = [ + "cc", + "libc", + "pkg-config", +] diff --git a/Makefile b/Makefile index 6dcf6e8420..01c55001e6 100644 --- a/Makefile +++ b/Makefile @@ -45,6 +45,9 @@ evm_bench: ## Run Evm Circuit benchmarks state_bench: ## Run State Circuit benchmarks @cargo test --profile bench bench_state_circuit_prover -p circuit-benchmarks --features benches -- --nocapture +mpt_bench: ## Run MPT Circuit benchmarks + @cargo test --profile bench bench_mpt_circuit_prover -p circuit-benchmarks --features benches -- --nocapture + packed_multi_keccak_bench: ## Run Packed Multi Keccak Circuit benchmarks @cargo test --profile bench bench_packed_multi_keccak_circuit_prover -p circuit-benchmarks --features benches -- --nocapture diff --git a/README.md b/README.md index 260eec36b5..239776be26 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ to use for your circuit in the bench process. - Keccak Circuit prover benches. -> `DEGREE=16 make packed_multi_keccak_bench` - EVM Circuit prover benches. -> `DEGREE=18 make evm_bench`. - State Circuit prover benches. -> `DEGREE=18 make state_bench` +- MPT Circuit prover benches. -> `DEGREE=14 make mpt_bench` You can also run all benchmarks by running: `make circuit_benches DEGREE=18`. diff --git a/bus-mapping/Cargo.toml b/bus-mapping/Cargo.toml index a05855fda0..1e1860b592 100644 --- a/bus-mapping/Cargo.toml +++ b/bus-mapping/Cargo.toml @@ -10,8 +10,8 @@ eth-types = { path = "../eth-types" } gadgets = { path = "../gadgets" } mock = { path = "../mock", optional = true } -ethers-core = "0.17.0" -ethers-providers = "0.17.0" +ethers-core = "2.0.7" +ethers-providers = "2.0.7" halo2_proofs = { git = "https://github.com/privacy-scaling-explorations/halo2.git", tag = "v2023_04_20" } itertools = "0.10" lazy_static = "1.4" diff --git a/bus-mapping/src/circuit_input_builder.rs b/bus-mapping/src/circuit_input_builder.rs index 5d3c1b582f..1e47fa56f6 100644 --- a/bus-mapping/src/circuit_input_builder.rs +++ b/bus-mapping/src/circuit_input_builder.rs @@ -34,7 +34,7 @@ pub use execution::{ pub use input_state_ref::CircuitInputStateRef; use itertools::Itertools; use log::warn; -use std::collections::HashMap; +use std::{collections::HashMap, ops::Deref}; pub use transaction::{Transaction, TransactionContext}; /// Circuit Setup Parameters @@ -164,6 +164,7 @@ impl<'a, C: CircuitsParams> CircuitInputBuilder<C> { /// Create a new Transaction from a [`eth_types::Transaction`]. pub fn new_tx( &mut self, + id: u64, eth_tx: ð_types::Transaction, is_success: bool, ) -> Result<Transaction, Error> { @@ -180,7 +181,14 @@ impl<'a, C: CircuitsParams> CircuitInputBuilder<C> { ), ); - Transaction::new(call_id, &self.sdb, &mut self.code_db, eth_tx, is_success) + Transaction::new( + id, + call_id, + &self.sdb, + &mut self.code_db, + eth_tx, + is_success, + ) } /// Iterate over all generated CallContext RwCounterEndOfReversion @@ -214,8 +222,9 @@ impl<'a, C: CircuitsParams> CircuitInputBuilder<C> { eth_tx: ð_types::Transaction, geth_trace: &GethExecTrace, is_last_tx: bool, + tx_index: u64, ) -> Result<(), Error> { - let mut tx = self.new_tx(eth_tx, !geth_trace.failed)?; + let mut tx = self.new_tx(tx_index, eth_tx, !geth_trace.failed)?; let mut tx_ctx = TransactionContext::new(eth_tx, geth_trace, is_last_tx)?; // Generate BeginTx step @@ -286,6 +295,7 @@ impl CircuitInputBuilder<FixedCParams> { step.bus_mapping_instance.push(op_ref); }; + // rwc index start from 1 let total_rws = state.block_ctx.rwc.0 - 1; // We need at least 1 extra Start row #[allow(clippy::int_plus_one)] @@ -297,13 +307,21 @@ impl CircuitInputBuilder<FixedCParams> { max_rws ); } - push_op(&mut end_block_last, RWCounter(1), RW::READ, StartOp {}); + let (padding_start, padding_end) = (1, max_rws - total_rws); // rw counter start from 1 push_op( &mut end_block_last, - RWCounter(max_rws - total_rws), + RWCounter(padding_start), RW::READ, StartOp {}, ); + if padding_end != padding_start { + push_op( + &mut end_block_last, + RWCounter(padding_end), + RW::READ, + StartOp {}, + ); + } self.block.block_steps.end_block_not_last = end_block_not_last; self.block.block_steps.end_block_last = end_block_last; @@ -318,10 +336,19 @@ impl<C: CircuitsParams> CircuitInputBuilder<C> { geth_traces: &[eth_types::GethExecTrace], ) -> Result<(), Error> { // accumulates gas across all txs in the block - for (tx_index, tx) in eth_block.transactions.iter().enumerate() { - let geth_trace = &geth_traces[tx_index]; - self.handle_tx(tx, geth_trace, tx_index + 1 == eth_block.transactions.len())?; + for (idx, tx) in eth_block.transactions.iter().enumerate() { + let geth_trace = &geth_traces[idx]; + // Transaction index starts from 1 + let tx_id = idx + 1; + self.handle_tx( + tx, + geth_trace, + tx_id == eth_block.transactions.len(), + tx_id as u64, + )?; } + // set eth_block + self.block.eth_block = eth_block.clone(); self.set_value_ops_call_context_rwc_eor(); Ok(()) } @@ -340,7 +367,7 @@ impl CircuitInputBuilder<DynamicCParams> { // Compute subcircuits parameters let c_params = { let max_txs = eth_block.transactions.len(); - let max_bytecode = self.code_db.0.values().fold(0, |acc, a| acc + a.len() + 1); + let max_bytecode = self.code_db.num_rows_required_for_bytecode_table(); let max_calldata = eth_block .transactions @@ -361,8 +388,13 @@ impl CircuitInputBuilder<DynamicCParams> { .iter() .fold(0, |acc, c| acc + c.bytes.len()) * 2 - + 2; - let max_rws: usize = self.block_ctx.rwc.into(); + + 4; // disabled and unused rows. + + let total_rws_before_padding: usize = + <RWCounter as Into<usize>>::into(self.block_ctx.rwc) - 1; // -1 since rwc start from index `1` + let max_rws_after_padding = total_rws_before_padding + + 1 // fill 1 to have exactly one StartOp padding in below `set_end_block` + + if total_rws_before_padding > 0 { 1 /*end_block -> CallContextFieldTag::TxId lookup*/ } else { 0 }; // Computing the number of rows for the EVM circuit requires the size of ExecStep, // which is determined in the code of zkevm-circuits and cannot be imported here. // When the evm circuit receives a 0 value it dynamically computes the minimum @@ -374,7 +406,7 @@ impl CircuitInputBuilder<DynamicCParams> { // needed. let max_keccak_rows = 0; FixedCParams { - max_rws: max_rws + 1, + max_rws: max_rws_after_padding, max_txs, max_calldata, max_copy_rows, @@ -402,11 +434,11 @@ impl CircuitInputBuilder<DynamicCParams> { pub fn keccak_inputs(block: &Block, code_db: &CodeDB) -> Result<Vec<Vec<u8>>, Error> { let mut keccak_inputs = Vec::new(); // Tx Circuit - let txs: Vec<geth_types::Transaction> = block.txs.iter().map(|tx| tx.tx.clone()).collect(); + let txs: Vec<geth_types::Transaction> = block.txs.iter().map(|tx| tx.deref().clone()).collect(); keccak_inputs.extend_from_slice(&keccak_inputs_tx_circuit(&txs, block.chain_id.as_u64())?); // Bytecode Circuit - for bytecode in code_db.0.values() { - keccak_inputs.push(bytecode.clone()); + for bytecode in code_db.clone().into_iter() { + keccak_inputs.push(bytecode.code()); } // EVM Circuit keccak_inputs.extend_from_slice(&block.sha3_inputs); @@ -543,7 +575,7 @@ pub fn build_state_code_db( ) } - let mut code_db = CodeDB::new(); + let mut code_db = CodeDB::default(); for (_address, code) in codes { code_db.insert(code.clone()); } diff --git a/bus-mapping/src/circuit_input_builder/input_state_ref.rs b/bus-mapping/src/circuit_input_builder/input_state_ref.rs index f930b8d128..43ff543398 100644 --- a/bus-mapping/src/circuit_input_builder/input_state_ref.rs +++ b/bus-mapping/src/circuit_input_builder/input_state_ref.rs @@ -611,12 +611,48 @@ impl<'a> CircuitInputStateRef<'a> { ) } + /// Transfer to an address irreversibly. + pub fn transfer_to_irreversible( + &mut self, + step: &mut ExecStep, + receiver: Address, + receiver_exists: bool, + must_create: bool, + value: Word, + ) -> Result<(), Error> { + // If receiver doesn't exist, create it + if (!receiver_exists && !value.is_zero()) || must_create { + self.account_write( + step, + receiver, + AccountField::CodeHash, + CodeDB::empty_code_hash().to_word(), + Word::zero(), + )?; + } + if value.is_zero() { + // Skip transfer if value == 0 + return Ok(()); + } + let (_found, receiver_account) = self.sdb.get_account(&receiver); + let receiver_balance_prev = receiver_account.balance; + let receiver_balance = receiver_account.balance + value; + self.account_write( + step, + receiver, + AccountField::Balance, + receiver_balance, + receiver_balance_prev, + )?; + + Ok(()) + } + /// Fetch and return code for the given code hash from the code DB. pub fn code(&self, code_hash: H256) -> Result<Vec<u8>, Error> { self.code_db - .0 - .get(&code_hash) - .cloned() + .get_from_h256(&code_hash) + .map(|bytecode| bytecode.code()) .ok_or(Error::CodeNotFound(code_hash)) } @@ -716,7 +752,7 @@ impl<'a> CircuitInputStateRef<'a> { let init_code = get_create_init_code(call_ctx, step)?.to_vec(); Ok(get_create2_address( self.call()?.address, - salt.to_be_bytes().to_vec(), + salt.to_be_bytes(), init_code, )) } @@ -978,8 +1014,17 @@ impl<'a> CircuitInputStateRef<'a> { if !self.call()?.is_root { let (offset, length) = match step.op { OpcodeId::RETURN | OpcodeId::REVERT => { - let offset = step.stack.nth_last(0)?.as_usize(); - let length = step.stack.nth_last(1)?.as_usize(); + let (offset, length) = if step.error.is_some() + || (self.call()?.is_create() && self.call()?.is_success) + { + (0, 0) + } else { + ( + step.stack.nth_last(0)?.as_usize(), + step.stack.nth_last(1)?.as_usize(), + ) + }; + // At the moment it conflicts with `call_ctx` and `caller_ctx`. let callee_memory = self.call_ctx()?.memory.clone(); let caller_ctx = self.caller_ctx_mut()?; @@ -1064,9 +1109,11 @@ impl<'a> CircuitInputStateRef<'a> { let geth_step = steps .get(0) .ok_or(Error::InternalError("invalid index 0"))?; - let is_return_revert = geth_step.op == OpcodeId::REVERT || geth_step.op == OpcodeId::RETURN; + let is_revert_or_return_call_success = (geth_step.op == OpcodeId::REVERT + || geth_step.op == OpcodeId::RETURN) + && exec_step.error.is_none(); - if !is_return_revert && !call.is_success { + if !is_revert_or_return_call_success && !call.is_success { // add call failure ops for exception cases self.call_context_read( exec_step, @@ -1118,27 +1165,31 @@ impl<'a> CircuitInputStateRef<'a> { _ => [Word::zero(), Word::zero()], }; - let curr_memory_word_size = (exec_step.memory_size as u64) / 32; - let next_memory_word_size = if !last_callee_return_data_length.is_zero() { - std::cmp::max( - (last_callee_return_data_offset + last_callee_return_data_length + 31).as_u64() - / 32, - curr_memory_word_size, - ) + let gas_refund = if exec_step.error.is_some() { + 0 } else { - curr_memory_word_size - }; + let curr_memory_word_size = (exec_step.memory_size as u64) / 32; + let next_memory_word_size = if !last_callee_return_data_length.is_zero() { + std::cmp::max( + (last_callee_return_data_offset + last_callee_return_data_length + 31).as_u64() + / 32, + curr_memory_word_size, + ) + } else { + curr_memory_word_size + }; - let memory_expansion_gas_cost = - memory_expansion_gas_cost(curr_memory_word_size, next_memory_word_size); - let code_deposit_cost = if call.is_create() && call.is_success { - GasCost::CODE_DEPOSIT_BYTE_COST * last_callee_return_data_length.as_u64() - } else { - 0 + let memory_expansion_gas_cost = + memory_expansion_gas_cost(curr_memory_word_size, next_memory_word_size); + let code_deposit_cost = if call.is_create() && call.is_success { + GasCost::CODE_DEPOSIT_BYTE_COST * last_callee_return_data_length.as_u64() + } else { + 0 + }; + geth_step.gas - memory_expansion_gas_cost - code_deposit_cost }; - let gas_refund = geth_step.gas - memory_expansion_gas_cost - code_deposit_cost; - let caller_gas_left = if is_return_revert || call.is_success { + let caller_gas_left = if is_revert_or_return_call_success || call.is_success { geth_step_next.gas - gas_refund } else { geth_step_next.gas @@ -1170,11 +1221,13 @@ impl<'a> CircuitInputStateRef<'a> { } // EIP-211: CREATE/CREATE2 call successful case should set RETURNDATASIZE = 0 + let discard_return_data = + call.is_create() && geth_step.op == OpcodeId::RETURN || exec_step.error.is_some(); for (field, value) in [ (CallContextField::LastCalleeId, call.call_id.into()), ( CallContextField::LastCalleeReturnDataOffset, - if call.is_create() && call.is_success { + if discard_return_data { U256::zero() } else { last_callee_return_data_offset @@ -1182,7 +1235,7 @@ impl<'a> CircuitInputStateRef<'a> { ), ( CallContextField::LastCalleeReturnDataLength, - if call.is_create() && call.is_success { + if discard_return_data { U256::zero() } else { last_callee_return_data_length @@ -1447,12 +1500,7 @@ impl<'a> CircuitInputStateRef<'a> { let mut copy_steps = Vec::with_capacity(bytes_left as usize); for idx in 0..bytes_left { let addr = src_addr.checked_add(idx).unwrap_or(src_addr_end); - let step = if addr < src_addr_end { - let code = bytecode.code.get(addr as usize).unwrap(); - (code.value, code.is_code) - } else { - (0, false) - }; + let step = bytecode.get(addr as usize).unwrap_or_default(); copy_steps.push(step); self.memory_write(exec_step, (dst_addr + idx).into(), step.0)?; } diff --git a/bus-mapping/src/circuit_input_builder/tracer_tests.rs b/bus-mapping/src/circuit_input_builder/tracer_tests.rs index b64a15a4f8..6012b0e3c4 100644 --- a/bus-mapping/src/circuit_input_builder/tracer_tests.rs +++ b/bus-mapping/src/circuit_input_builder/tracer_tests.rs @@ -10,7 +10,7 @@ use crate::{ }; use eth_types::{ address, bytecode, - evm_types::{stack::Stack, OpcodeId}, + evm_types::{stack::Stack, OpcodeId, INVALID_INIT_CODE_FIRST_BYTE}, geth_types::GethData, word, Bytecode, Hash, ToAddress, ToWord, Word, }; @@ -37,7 +37,7 @@ impl CircuitInputBuilderTx { let block = crate::mock::BlockData::new_from_geth_data(geth_data.clone()); let mut builder = block.new_circuit_input_builder(); let tx = builder - .new_tx(&block.eth_block.transactions[0], true) + .new_tx(0, &block.eth_block.transactions[0], true) .unwrap(); let tx_ctx = TransactionContext::new( &block.eth_block.transactions[0], @@ -364,17 +364,8 @@ fn tracer_err_address_collision() { }; let mut code_b = Bytecode::default(); - // pad code_creator to multiple of 32 bytes - let len = code_creator.to_vec().len(); - let code_creator: Vec<u8> = code_creator - .to_vec() - .iter() - .cloned() - .chain(0u8..((32 - len % 32) as u8)) - .collect(); - for (index, word) in code_creator.chunks(32).enumerate() { - code_b.op_mstore(index * 32, Word::from_big_endian(word)); - } + code_b.store_code_to_mem(&code_creator); + let len = code_creator.codesize(); let code_b_end = bytecode! { PUSH3(0x123456) // salt PUSH1(len) // length @@ -486,17 +477,8 @@ fn tracer_create_collision_free() { }; let mut code_b = Bytecode::default(); - // pad code_creator to multiple of 32 bytes - let len = code_creator.to_vec().len(); - let code_creator: Vec<u8> = code_creator - .to_vec() - .iter() - .cloned() - .chain(0u8..((32 - len % 32) as u8)) - .collect(); - for (index, word) in code_creator.chunks(32).enumerate() { - code_b.op_mstore(index * 32, Word::from_big_endian(word)); - } + code_b.store_code_to_mem(&code_creator); + let len = code_creator.codesize(); let code_b_end = bytecode! { PUSH1(len) // length PUSH1(0x00) // offset @@ -621,19 +603,9 @@ fn tracer_err_code_store_out_of_gas() { }; let mut code_b = Bytecode::default(); - // pad code_creator to multiple of 32 bytes - let len = code_creator.to_vec().len(); - let code_creator: Vec<u8> = code_creator - .to_vec() - .iter() - .cloned() - .chain(0..(32 - len % 32) as u8) - .collect(); - for (index, word) in code_creator.chunks(32).enumerate() { - code_b.op_mstore(index * 32, Word::from_big_endian(word)); - } + code_b.store_code_to_mem(&code_creator); let code_b_end = bytecode! { - PUSH32(len) // length + PUSH32(code_creator.codesize()) // length PUSH1(0x00) // offset PUSH1(0x00) // value CREATE @@ -742,11 +714,11 @@ fn check_err_invalid_code(step: &GethExecStep, next_step: Option<&GethExecStep>) && result(next_step).is_zero() && length > Word::zero() && !step.memory.is_empty() - && step.memory.0.get(offset.low_u64() as usize) == Some(&0xef) + && step.memory.0.get(offset.low_u64() as usize) == Some(&INVALID_INIT_CODE_FIRST_BYTE) } #[test] -fn tracer_err_invalid_code() { +fn tracer_err_invalid_code_for_create_opcode() { // code_creator outputs byte array that starts with 0xef, which is // invalid code. let code_creator = bytecode! { @@ -769,17 +741,8 @@ fn tracer_err_invalid_code() { }; let mut code_b = Bytecode::default(); - // pad code_creator to multiple of 32 bytes - let len = code_creator.to_vec().len(); - let code_creator: Vec<u8> = code_creator - .to_vec() - .iter() - .cloned() - .chain(0u8..((32 - len % 32) as u8)) - .collect(); - for (index, word) in code_creator.chunks(32).enumerate() { - code_b.op_mstore(index * 32, Word::from_big_endian(word)); - } + code_b.store_code_to_mem(&code_creator); + let len = code_creator.codesize(); let code_b_end = bytecode! { PUSH1(len) // length PUSH1(0x00) // offset @@ -833,6 +796,61 @@ fn tracer_err_invalid_code() { ); } +// Test ErrInvalidCode in transaction deployment (`tx.to == null`). +#[test] +fn tracer_err_invalid_code_for_tx_deployment() { + // Code creator outputs a byte array that starts with 0xef, which is the + // invalid code. + let code_creator = bytecode! { + PUSH32(word!("0xef00000000000000000000000000000000000000000000000000000000000000")) // value + PUSH1(0x00) // offset + MSTORE + PUSH1(0x01) // length + PUSH1(0x00) // offset + RETURN + }; + + // Get the execution steps from external tracer. + let block: GethData = TestContext::<2, 1>::new_with_logger_config( + None, + |accs| { + accs[0].address(address!("0x0000000000000000000000000000000000000000")); + accs[1].address(*ADDR_B).balance(Word::from(1u64 << 30)); + }, + |mut txs, accs| { + txs[0] + .from(accs[1].address) + .gas(60000u64.into()) + .input(code_creator.into()); + }, + |block, _tx| block.number(0x0264), + LoggerConfig::enable_memory(), + ) + .unwrap() + .into(); + + // Get last RETURN. + let (index, step) = block.geth_traces[0] + .struct_logs + .iter() + .enumerate() + .rev() + .find(|(_, s)| s.op == OpcodeId::RETURN) + .unwrap(); + let next_step = block.geth_traces[0].struct_logs.get(index + 1); + assert!(check_err_invalid_code(step, next_step)); + + // Setup call context at RETURN. + let mut builder = CircuitInputBuilderTx::new(&block, step); + builder.tx_ctx.call_is_success.push(false); + builder.state_ref().push_call(mock_root_create()); + builder.state_ref().call_ctx_mut().unwrap().memory = step.memory.clone(); + assert_eq!( + builder.state_ref().get_step_err(step, next_step).unwrap(), + Some(ExecError::InvalidCreationCode) + ); +} + fn check_err_max_code_size_exceeded(step: &GethExecStep, next_step: Option<&GethExecStep>) -> bool { let length = step.stack.nth_last(1).unwrap(); step.op == OpcodeId::RETURN @@ -866,19 +884,9 @@ fn tracer_err_max_code_size_exceeded() { }; let mut code_b = Bytecode::default(); - // pad code_creator to multiple of 32 bytes - let len = code_creator.to_vec().len(); - let code_creator: Vec<u8> = code_creator - .to_vec() - .iter() - .cloned() - .chain(0u8..((32 - len % 32) as u8)) - .collect(); - for (index, word) in code_creator.chunks(32).enumerate() { - code_b.op_mstore(index * 32, Word::from_big_endian(word)); - } + code_b.store_code_to_mem(&code_creator); let code_b_end = bytecode! { - PUSH32(len) // length + PUSH32(code_creator.codesize()) // length PUSH1(0x00) // offset PUSH1(0x00) // value CREATE @@ -1004,19 +1012,9 @@ fn tracer_create_stop() { }; let mut code_b = Bytecode::default(); - // pad code_creator to multiple of 32 bytes - let len = code_creator.to_vec().len(); - let code_creator: Vec<u8> = code_creator - .to_vec() - .iter() - .cloned() - .chain(0u8..((32 - len % 32) as u8)) - .collect(); - for (index, word) in code_creator.chunks(32).enumerate() { - code_b.op_mstore(index * 32, Word::from_big_endian(word)); - } + code_b.store_code_to_mem(&code_creator); let code_b_end = bytecode! { - PUSH1(len) // length + PUSH1(code_creator.codesize()) // length PUSH1(0x00) // offset PUSH1(0x00) // value CREATE @@ -1705,20 +1703,10 @@ fn create2_address() { }; let mut code_b = Bytecode::default(); - // pad code_creator to multiple of 32 bytes - let len = code_creator.to_vec().len(); - let code_creator: Vec<u8> = code_creator - .to_vec() - .iter() - .cloned() - .chain(0u8..((32 - len % 32) as u8)) - .collect(); - for (index, word) in code_creator.chunks(32).enumerate() { - code_b.op_mstore(index * 32, Word::from_big_endian(word)); - } + code_b.store_code_to_mem(&code_creator); let code_b_end = bytecode! { PUSH3(0x123456) // salt - PUSH1(len) // length + PUSH1(code_creator.codesize()) // length PUSH1(0x00) // offset PUSH1(0x00) // value CREATE2 @@ -1798,17 +1786,8 @@ fn create_address() { }; let mut code_b = Bytecode::default(); - // pad code_creator to multiple of 32 bytes - let len = code_creator.to_vec().len(); - let code_creator: Vec<u8> = code_creator - .to_vec() - .iter() - .cloned() - .chain(0u8..((32 - len % 32) as u8)) - .collect(); - for (index, word) in code_creator.chunks(32).enumerate() { - code_b.op_mstore(index * 32, Word::from_big_endian(word)); - } + code_b.store_code_to_mem(&code_creator); + let len = code_creator.codesize(); // We do CREATE 2 times to use a nonce != 0 in the second one. let code_b_end = bytecode! { PUSH1(len) // length @@ -2113,19 +2092,10 @@ fn test_gen_access_trace_create_push_call_stack() { }; let mut code_b = Bytecode::default(); - // pad code_creator to multiple of 32 bytes - let len = code_creator.to_vec().len(); - let code_creator: Vec<u8> = code_creator - .to_vec() - .iter() - .cloned() - .chain(0u8..((32 - len % 32) as u8)) - .collect(); - for (index, word) in code_creator.chunks(32).enumerate() { - code_b.op_mstore(index * 32, Word::from_big_endian(word)); - } + code_b.store_code_to_mem(&code_creator); + let code_b_end = bytecode! { - PUSH1(len) // length + PUSH1(code_creator.codesize()) // length PUSH1(0x00) // offset PUSH1(0x00) // value CREATE diff --git a/bus-mapping/src/circuit_input_builder/transaction.rs b/bus-mapping/src/circuit_input_builder/transaction.rs index dae4f1db35..9b86e197e1 100644 --- a/bus-mapping/src/circuit_input_builder/transaction.rs +++ b/bus-mapping/src/circuit_input_builder/transaction.rs @@ -179,8 +179,10 @@ impl TransactionContext { #[derive(Debug, Clone, Default)] /// Result of the parsing of an Ethereum Transaction. pub struct Transaction { + /// The transaction id + pub id: u64, /// The raw transaction fields - pub tx: geth_types::Transaction, + tx: geth_types::Transaction, /// Calls made in the transaction pub(crate) calls: Vec<Call>, /// Execution steps @@ -190,6 +192,7 @@ pub struct Transaction { impl Transaction { /// Create a new Self. pub fn new( + id: u64, call_id: usize, sdb: &StateDB, code_db: &mut CodeDB, @@ -238,23 +241,19 @@ impl Transaction { code_hash, depth: 1, value: eth_tx.value, - call_data_length: eth_tx.input.len().try_into().unwrap(), + call_data_length: 0, ..Default::default() } }; Ok(Self { + id, tx: eth_tx.into(), calls: vec![call], steps: Vec::new(), }) } - /// Whether this [`Transaction`] is a create one - pub fn is_create(&self) -> bool { - self.calls[0].is_create() - } - /// Return the list of execution steps of this transaction. pub fn steps(&self) -> &[ExecStep] { &self.steps @@ -295,8 +294,19 @@ impl Transaction { self.steps.is_empty() } - /// Convinient method for gas limit - pub fn gas(&self) -> u64 { - self.tx.gas_limit.as_u64() + /// Constructor for padding tx in tx circuit + pub fn padding_tx(id: usize) -> Self { + Self { + id: id as u64, + ..Default::default() + } + } +} + +impl std::ops::Deref for Transaction { + type Target = geth_types::Transaction; + + fn deref(&self) -> &Self::Target { + &self.tx } } diff --git a/bus-mapping/src/error.rs b/bus-mapping/src/error.rs index 8eb668b2fb..4bec3d713b 100644 --- a/bus-mapping/src/error.rs +++ b/bus-mapping/src/error.rs @@ -92,8 +92,8 @@ pub enum OogError { SloadSstore, /// Out of Gas for CALL, CALLCODE, DELEGATECALL and STATICCALL Call, - /// Out of Gas for CREATE2 - Create2, + /// Out of Gas for CREATE and CREATE2 + Create, /// Out of Gas for SELFDESTRUCT SelfDestruct, } @@ -105,9 +105,7 @@ impl From<&OpcodeId> for OogError { OpcodeId::MLOAD | OpcodeId::MSTORE | OpcodeId::MSTORE8 => { OogError::StaticMemoryExpansion } - OpcodeId::CREATE | OpcodeId::RETURN | OpcodeId::REVERT => { - OogError::DynamicMemoryExpansion - } + OpcodeId::RETURN | OpcodeId::REVERT => OogError::DynamicMemoryExpansion, OpcodeId::CALLDATACOPY | OpcodeId::CODECOPY | OpcodeId::EXTCODECOPY @@ -124,7 +122,7 @@ impl From<&OpcodeId> for OogError { OogError::Call } OpcodeId::SLOAD | OpcodeId::SSTORE => OogError::SloadSstore, - OpcodeId::CREATE2 => OogError::Create2, + OpcodeId::CREATE | OpcodeId::CREATE2 => OogError::Create, OpcodeId::SELFDESTRUCT => OogError::SelfDestruct, _ => OogError::Constant, } diff --git a/bus-mapping/src/evm/opcodes.rs b/bus-mapping/src/evm/opcodes.rs index c163d4016f..3e0a49941c 100644 --- a/bus-mapping/src/evm/opcodes.rs +++ b/bus-mapping/src/evm/opcodes.rs @@ -44,7 +44,10 @@ mod stackonlyop; mod stop; mod swap; +mod error_code_store; +mod error_invalid_creation_code; mod error_invalid_jump; +mod error_oog_account_access; mod error_oog_call; mod error_oog_exp; mod error_oog_log; @@ -71,7 +74,10 @@ use codecopy::Codecopy; use codesize::Codesize; use create::Create; use dup::Dup; +use error_code_store::ErrorCodeStore; +use error_invalid_creation_code::ErrorCreationCode; use error_invalid_jump::InvalidJump; +use error_oog_account_access::ErrorOOGAccountAccess; use error_oog_call::OOGCall; use error_oog_exp::OOGExp; use error_oog_log::ErrorOOGLog; @@ -141,12 +147,13 @@ type FnGenAssociatedOps = fn( ) -> Result<Vec<ExecStep>, Error>; fn fn_gen_associated_ops(opcode_id: &OpcodeId) -> FnGenAssociatedOps { - if opcode_id.is_push() { + if opcode_id.is_push_with_data() { return StackOnlyOpcode::<0, 1>::gen_associated_ops; } match opcode_id { OpcodeId::STOP => Stop::gen_associated_ops, + OpcodeId::PUSH0 => StackOnlyOpcode::<0, 1>::gen_associated_ops, OpcodeId::ADD => StackOnlyOpcode::<2, 1>::gen_associated_ops, OpcodeId::MUL => StackOnlyOpcode::<2, 1>::gen_associated_ops, OpcodeId::SUB => StackOnlyOpcode::<2, 1>::gen_associated_ops, @@ -263,16 +270,36 @@ fn fn_gen_associated_ops(opcode_id: &OpcodeId) -> FnGenAssociatedOps { } } -fn fn_gen_error_state_associated_ops(error: &ExecError) -> Option<FnGenAssociatedOps> { +fn fn_gen_error_state_associated_ops( + geth_step: &GethExecStep, + error: &ExecError, +) -> Option<FnGenAssociatedOps> { match error { ExecError::InvalidJump => Some(InvalidJump::gen_associated_ops), ExecError::InvalidOpcode => Some(ErrorSimple::gen_associated_ops), ExecError::OutOfGas(OogError::Call) => Some(OOGCall::gen_associated_ops), ExecError::OutOfGas(OogError::Constant) => Some(ErrorSimple::gen_associated_ops), + ExecError::OutOfGas(OogError::Create) => match geth_step.op { + OpcodeId::CREATE => Some(StackOnlyOpcode::<3, 0, true>::gen_associated_ops), + OpcodeId::CREATE2 => Some(StackOnlyOpcode::<4, 0, true>::gen_associated_ops), + op => unreachable!("OOG Create cannot occur in {op}"), + }, ExecError::OutOfGas(OogError::Exp) => Some(OOGExp::gen_associated_ops), ExecError::OutOfGas(OogError::Log) => Some(ErrorOOGLog::gen_associated_ops), ExecError::OutOfGas(OogError::MemoryCopy) => Some(OOGMemoryCopy::gen_associated_ops), + ExecError::OutOfGas(OogError::DynamicMemoryExpansion) => { + Some(StackOnlyOpcode::<2, 0, true>::gen_associated_ops) + } + ExecError::OutOfGas(OogError::StaticMemoryExpansion) => { + Some(StackOnlyOpcode::<1, 0, true>::gen_associated_ops) + } ExecError::OutOfGas(OogError::SloadSstore) => Some(OOGSloadSstore::gen_associated_ops), + ExecError::OutOfGas(OogError::AccountAccess) => { + Some(ErrorOOGAccountAccess::gen_associated_ops) + } + ExecError::OutOfGas(OogError::Sha3) => { + Some(StackOnlyOpcode::<2, 0, true>::gen_associated_ops) + } ExecError::StackOverflow => Some(ErrorSimple::gen_associated_ops), ExecError::StackUnderflow => Some(ErrorSimple::gen_associated_ops), // call & callcode can encounter InsufficientBalance error, Use pop-7 generic CallOpcode @@ -297,10 +324,15 @@ fn fn_gen_error_state_associated_ops(error: &ExecError) -> Option<FnGenAssociate } ExecError::WriteProtection => Some(ErrorWriteProtection::gen_associated_ops), ExecError::ReturnDataOutOfBounds => Some(ErrorReturnDataOutOfBound::gen_associated_ops), + ExecError::InvalidCreationCode => Some(ErrorCreationCode::gen_associated_ops), // call, callcode, create & create2 can encounter DepthError error, ExecError::Depth(DepthError::Call) => Some(CallOpcode::<7>::gen_associated_ops), ExecError::Depth(DepthError::Create) => Some(Create::<false>::gen_associated_ops), ExecError::Depth(DepthError::Create2) => Some(Create::<true>::gen_associated_ops), + ExecError::CodeStoreOutOfGas | ExecError::MaxCodeSizeExceeded => { + Some(ErrorCodeStore::gen_associated_ops) + } + // more future errors place here _ => { evm_unimplemented!("TODO: error state {:?} not implemented", error); @@ -346,7 +378,7 @@ pub fn gen_associated_ops( // TODO: after more error state handled, refactor all error handling in // fn_gen_error_state_associated_ops method // For exceptions that have been implemented - if let Some(fn_gen_error_ops) = fn_gen_error_state_associated_ops(&exec_error) { + if let Some(fn_gen_error_ops) = fn_gen_error_state_associated_ops(geth_step, &exec_error) { return fn_gen_error_ops(state, geth_steps); } else { // For exceptions that fail to enter next call context, we need diff --git a/bus-mapping/src/evm/opcodes/begin_end_tx.rs b/bus-mapping/src/evm/opcodes/begin_end_tx.rs index e8baf7f88f..ec26998080 100644 --- a/bus-mapping/src/evm/opcodes/begin_end_tx.rs +++ b/bus-mapping/src/evm/opcodes/begin_end_tx.rs @@ -73,7 +73,7 @@ fn gen_begin_tx_steps(state: &mut CircuitInputStateRef) -> Result<ExecStep, Erro let init_code_gas_cost = if state.tx.is_create() { // Calculate gas cost of init code for EIP-3860. - (state.tx.tx.call_data.len() as u64 + 31) / 32 * eth_types::evm_types::INIT_CODE_WORD_GAS + (state.tx.call_data.len() as u64 + 31) / 32 * eth_types::evm_types::INIT_CODE_WORD_GAS } else { 0 }; @@ -82,7 +82,7 @@ fn gen_begin_tx_steps(state: &mut CircuitInputStateRef) -> Result<ExecStep, Erro GasCost::CREATION_TX } else { GasCost::TX - } + state.tx.tx.call_data_gas_cost() + } + state.tx.call_data_gas_cost() + init_code_gas_cost; exec_step.gas_cost = intrinsic_gas_cost; @@ -114,7 +114,7 @@ fn gen_begin_tx_steps(state: &mut CircuitInputStateRef) -> Result<ExecStep, Erro callee_exists, call.is_create(), call.value, - Some(state.tx.tx.gas_price * state.tx.gas()), + Some(state.tx.gas_price * state.tx.gas()), )?; // In case of contract creation we wish to verify the correctness of the @@ -168,7 +168,7 @@ fn gen_begin_tx_steps(state: &mut CircuitInputStateRef) -> Result<ExecStep, Erro ), ( CallContextField::CallDataLength, - state.tx.tx.call_data.len().into(), + state.tx.call_data.len().into(), ), (CallContextField::Value, call.value), (CallContextField::IsStatic, (call.is_static as usize).into()), @@ -263,7 +263,7 @@ fn gen_end_tx_steps(state: &mut CircuitInputStateRef) -> Result<ExecStep, Error> } let caller_balance_prev = caller_account.balance; let caller_balance = - caller_balance_prev + state.tx.tx.gas_price * (exec_step.gas_left + effective_refund); + caller_balance_prev + state.tx.gas_price * (exec_step.gas_left + effective_refund); state.account_write( &mut exec_step, call.caller_address, @@ -272,20 +272,29 @@ fn gen_end_tx_steps(state: &mut CircuitInputStateRef) -> Result<ExecStep, Error> caller_balance_prev, )?; - let effective_tip = state.tx.tx.gas_price - state.block.base_fee; + let effective_tip = state.tx.gas_price - state.block.base_fee; let (found, coinbase_account) = state.sdb.get_account(&state.block.coinbase); if !found { return Err(Error::AccountNotFound(state.block.coinbase)); } - let coinbase_balance_prev = coinbase_account.balance; - let coinbase_balance = - coinbase_balance_prev + effective_tip * (state.tx.gas() - exec_step.gas_left); - state.account_write( + let coinbase_exist = !coinbase_account.is_empty(); + let coinbase_transfer_value = effective_tip * (state.tx.gas() - exec_step.gas_left); + state.account_read( &mut exec_step, state.block.coinbase, - AccountField::Balance, - coinbase_balance, - coinbase_balance_prev, + AccountField::CodeHash, + if coinbase_account.is_empty() { + Word::zero() + } else { + coinbase_account.code_hash.to_word() + }, + ); + state.transfer_to_irreversible( + &mut exec_step, + state.block.coinbase, + coinbase_exist, + false, + coinbase_transfer_value, )?; // handle tx receipt tag diff --git a/bus-mapping/src/evm/opcodes/callop.rs b/bus-mapping/src/evm/opcodes/callop.rs index 74318b419f..2db9fbc31d 100644 --- a/bus-mapping/src/evm/opcodes/callop.rs +++ b/bus-mapping/src/evm/opcodes/callop.rs @@ -100,7 +100,8 @@ impl<const N_ARGS: usize> Opcode for CallOpcode<N_ARGS> { )?; let callee_code_hash = call.code_hash; - let callee_exists = !state.sdb.get_account(&callee_address).1.is_empty(); + let callee = state.sdb.get_account(&callee_address).1.clone(); + let callee_exists = !callee.is_empty(); let (callee_code_hash_word, is_empty_code_hash) = if callee_exists { ( @@ -145,11 +146,13 @@ impl<const N_ARGS: usize> Opcode for CallOpcode<N_ARGS> { debug_assert!(found); let caller_balance = sender_account.balance; + let is_call_or_callcode = call.kind == CallKind::Call || call.kind == CallKind::CallCode; + let is_sufficient = caller_balance >= call.value; + let is_valid_depth = geth_step.depth < 1025; // Precheck is OK when depth is in range and caller balance is sufficient - let is_precheck_ok = - geth_step.depth < 1025 && (!is_call_or_callcode || caller_balance >= call.value); + let is_precheck_ok = is_valid_depth && (is_sufficient || !is_call_or_callcode); log::debug!( "is_precheck_ok: {}, call type: {:?}, sender_account: {:?} ", @@ -173,14 +176,17 @@ impl<const N_ARGS: usize> Opcode for CallOpcode<N_ARGS> { let is_precompile = code_address .map(|ref addr| is_precompiled(addr)) .unwrap_or(false); - // TODO: What about transfer for CALLCODE? - // Transfer value only for CALL opcode, is_precheck_ok = true. - if call.kind == CallKind::Call && is_precheck_ok { + // CALLCODE does not need to do real transfer + // Transfer value only when all these conditions met: + // - The opcode is CALL + // - The precheck passed + // - The value to send is not zero + if call.kind == CallKind::Call && is_precheck_ok && !call.value.is_zero() { state.transfer( &mut exec_step, call.caller_address, call.address, - callee_exists || is_precompile, + callee_exists, false, call.value, )?; @@ -221,10 +227,9 @@ impl<const N_ARGS: usize> Opcode for CallOpcode<N_ARGS> { // There are 4 branches from here. // add failure case for insufficient balance or error depth in the future. - match (!is_precheck_ok, is_precompile, is_empty_code_hash) { + match (is_precheck_ok, is_precompile, is_empty_code_hash) { // 1. Call to precompiled. - (false, true, _) => { - assert!(call.is_success, "call to precompile should not fail"); + (true, true, _) => { let caller_ctx = state.caller_ctx_mut()?; let code_address = code_address.unwrap(); let (result, contract_gas_cost) = execute_precompiled( @@ -275,9 +280,9 @@ impl<const N_ARGS: usize> Opcode for CallOpcode<N_ARGS> { Ok(vec![exec_step]) } // 2. Call to account with empty code. - (false, _, true) => { + (true, _, true) => { for (field, value) in [ - (CallContextField::LastCalleeId, 0.into()), + (CallContextField::LastCalleeId, call.call_id.into()), (CallContextField::LastCalleeReturnDataOffset, 0.into()), (CallContextField::LastCalleeReturnDataLength, 0.into()), ] { @@ -287,7 +292,7 @@ impl<const N_ARGS: usize> Opcode for CallOpcode<N_ARGS> { Ok(vec![exec_step]) } // 3. Call to account with non-empty code. - (false, _, false) => { + (true, _, false) => { for (field, value) in [ (CallContextField::ProgramCounter, (geth_step.pc + 1).into()), ( @@ -349,9 +354,9 @@ impl<const N_ARGS: usize> Opcode for CallOpcode<N_ARGS> { } // 4. insufficient balance or error depth cases. - (true, _, _) => { + (false, _, _) => { for (field, value) in [ - (CallContextField::LastCalleeId, 0.into()), + (CallContextField::LastCalleeId, call.call_id.into()), (CallContextField::LastCalleeReturnDataOffset, 0.into()), (CallContextField::LastCalleeReturnDataLength, 0.into()), ] { diff --git a/bus-mapping/src/evm/opcodes/codecopy.rs b/bus-mapping/src/evm/opcodes/codecopy.rs index 937f06c04f..5a6e844f6e 100644 --- a/bus-mapping/src/evm/opcodes/codecopy.rs +++ b/bus-mapping/src/evm/opcodes/codecopy.rs @@ -77,7 +77,7 @@ fn gen_copy_event( let code_hash = state.call()?.code_hash; let bytecode: Bytecode = state.code(code_hash)?.into(); - let code_size = bytecode.code.len() as u64; + let code_size = bytecode.codesize() as u64; // Get low Uint64 of offset to generate copy steps. Since offset could be // Uint64 overflow if length is zero. @@ -129,7 +129,6 @@ mod codecopy_tests { circuit_input_builder::{CopyDataType, ExecState, NumberOrHash}, mock::BlockData, operation::{MemoryOp, StackOp, RW}, - state_db::CodeDB, }; #[test] @@ -202,11 +201,7 @@ mod codecopy_tests { MemoryOp::new( 1, MemoryAddress::from(dst_offset + idx), - if code_offset + idx < code.to_vec().len() { - code.to_vec()[code_offset + idx] - } else { - 0 - }, + code.get_byte(code_offset + idx).unwrap_or(0), ), ) }) @@ -216,12 +211,9 @@ mod codecopy_tests { let copy_events = builder.block.copy_events.clone(); assert_eq!(copy_events.len(), 1); assert_eq!(copy_events[0].bytes.len(), size); - assert_eq!( - copy_events[0].src_id, - NumberOrHash::Hash(CodeDB::hash(&code.to_vec())) - ); + assert_eq!(copy_events[0].src_id, NumberOrHash::Hash(code.hash_h256())); assert_eq!(copy_events[0].src_addr as usize, code_offset); - assert_eq!(copy_events[0].src_addr_end as usize, code.to_vec().len()); + assert_eq!(copy_events[0].src_addr_end as usize, code.codesize()); assert_eq!(copy_events[0].src_type, CopyDataType::Bytecode); assert_eq!( copy_events[0].dst_id, @@ -231,10 +223,10 @@ mod codecopy_tests { assert_eq!(copy_events[0].dst_type, CopyDataType::Memory); assert!(copy_events[0].log_id.is_none()); - for (idx, (value, is_code)) in copy_events[0].bytes.iter().enumerate() { - let bytecode_element = code.get(code_offset + idx).unwrap_or_default(); - assert_eq!(*value, bytecode_element.value); - assert_eq!(*is_code, bytecode_element.is_code); + for (idx, &(value, is_code)) in copy_events[0].bytes.iter().enumerate() { + let (true_value, true_is_code) = code.get(code_offset + idx).unwrap_or_default(); + assert_eq!(value, true_value); + assert_eq!(is_code, true_is_code); } } } diff --git a/bus-mapping/src/evm/opcodes/codesize.rs b/bus-mapping/src/evm/opcodes/codesize.rs index 2c5dd5e8d0..a190254623 100644 --- a/bus-mapping/src/evm/opcodes/codesize.rs +++ b/bus-mapping/src/evm/opcodes/codesize.rs @@ -67,7 +67,7 @@ mod codesize_tests { STOP }; code.append(&tail); - let codesize = code.to_vec().len(); + let codesize = code.codesize(); let block: GethData = TestContext::<2, 1>::new( None, diff --git a/bus-mapping/src/evm/opcodes/create.rs b/bus-mapping/src/evm/opcodes/create.rs index eb89b8af4f..3c085cfddc 100644 --- a/bus-mapping/src/evm/opcodes/create.rs +++ b/bus-mapping/src/evm/opcodes/create.rs @@ -183,7 +183,7 @@ impl<const IS_CREATE2: bool> Opcode for Create<IS_CREATE2> { address, get_create2_address( caller.address, - salt.to_be_bytes().to_vec(), + salt.to_be_bytes(), initialization_code.clone(), ) ); @@ -291,12 +291,10 @@ fn handle_copy( length: usize, ) -> Result<(Vec<u8>, H256), Error> { let initialization_bytes = state.caller_ctx()?.memory.0[offset..(offset + length)].to_vec(); - let code_hash = CodeDB::hash(&initialization_bytes); - let bytes: Vec<_> = Bytecode::from(initialization_bytes.clone()) - .code - .iter() - .map(|element| (element.value, element.is_code)) - .collect(); + + let initialization = Bytecode::from(initialization_bytes.clone()); + let code_hash = initialization.hash_h256(); + let bytes = initialization.code_vec(); let rw_counter_start = state.block_ctx.rwc; for (i, (byte, _)) in bytes.iter().enumerate() { diff --git a/bus-mapping/src/evm/opcodes/error_code_store.rs b/bus-mapping/src/evm/opcodes/error_code_store.rs new file mode 100644 index 0000000000..f9d083d151 --- /dev/null +++ b/bus-mapping/src/evm/opcodes/error_code_store.rs @@ -0,0 +1,119 @@ +use crate::{ + circuit_input_builder::{CircuitInputStateRef, ExecStep}, + error::ExecError, + evm::Opcode, + operation::CallContextField, + Error, +}; +use eth_types::{GethExecStep, Word}; + +#[derive(Debug, Copy, Clone)] +pub struct ErrorCodeStore; + +/// handle CodeStoreOutOfGas and MaxCodeSizeExceeded two errors +impl Opcode for ErrorCodeStore { + fn gen_associated_ops( + state: &mut CircuitInputStateRef, + geth_steps: &[GethExecStep], + ) -> Result<Vec<ExecStep>, Error> { + let geth_step = &geth_steps[0]; + let mut exec_step = state.new_step(geth_step)?; + let next_step = geth_steps.get(1); + + exec_step.error = state.get_step_err(geth_step, next_step)?; + + assert!( + exec_step.error == Some(ExecError::CodeStoreOutOfGas) + || exec_step.error == Some(ExecError::MaxCodeSizeExceeded) + ); + + let offset = geth_step.stack.nth_last(0)?; + let length = geth_step.stack.nth_last(1)?; + state.stack_read(&mut exec_step, geth_step.stack.nth_last_filled(0), offset)?; + state.stack_read(&mut exec_step, geth_step.stack.nth_last_filled(1), length)?; + + // read static call property + state.call_context_read( + &mut exec_step, + state.call()?.call_id, + CallContextField::IsStatic, + Word::from(state.call()?.is_static as u8), + ); + // create context check + assert!(state.call()?.is_create()); + + state.handle_return(&mut exec_step, geth_steps, true)?; + Ok(vec![exec_step]) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::{circuit_input_builder::ExecState, mock::BlockData, operation::RW}; + use eth_types::{bytecode, evm_types::OpcodeId, geth_types::GethData}; + use mock::{ + test_ctx::helpers::{account_0_code_account_1_no_code, tx_from_1_to_0}, + TestContext, + }; + + #[test] + fn test_max_code_size_exceed() { + // code_creator outputs an empty array of length 0x6000 + 1, which will + // trigger the max code size limit. + let code_len = 0x6000 + 1; + let code_creator = bytecode! { + .op_mstore(code_len, 0x00) + .op_return(0x00, code_len) + }; + let mut code = bytecode! {}; + code.store_code_to_mem(&code_creator); + + code.append(&bytecode! { + PUSH1 (code_creator.codesize()) + PUSH1 (0x0) + PUSH1 (0) + CREATE + + PUSH1 (0x20) + PUSH1 (0x20) + PUSH1 (0x20) + PUSH1 (0) + PUSH1 (0) + DUP6 + PUSH2 (0xFFFF) + CALL + STOP + }); + + // Get the execution steps from the external tracer + let block: GethData = TestContext::<2, 1>::new( + None, + account_0_code_account_1_no_code(code), + tx_from_1_to_0, + |block, _tx| block.number(0xcafeu64), + ) + .unwrap() + .into(); + + let builder = BlockData::new_from_geth_data(block.clone()).new_circuit_input_builder(); + let builder = builder + .handle_block(&block.eth_block, &block.geth_traces) + .unwrap(); + + let tx_id = 1; + let transaction = &builder.block.txs()[tx_id - 1]; + let step = transaction + .steps() + .iter() + .filter(|step| step.exec_state == ExecState::Op(OpcodeId::RETURN)) + .last() + .unwrap(); + + assert_eq!(step.error, Some(ExecError::MaxCodeSizeExceeded)); + + let container = builder.block.container.clone(); + let operation = &container.stack[step.bus_mapping_instance[0].as_usize()]; + assert_eq!(operation.rw(), RW::READ); + } +} diff --git a/bus-mapping/src/evm/opcodes/error_invalid_creation_code.rs b/bus-mapping/src/evm/opcodes/error_invalid_creation_code.rs new file mode 100644 index 0000000000..0bcb5f474d --- /dev/null +++ b/bus-mapping/src/evm/opcodes/error_invalid_creation_code.rs @@ -0,0 +1,37 @@ +use crate::{ + circuit_input_builder::{CircuitInputStateRef, ExecStep}, + error::ExecError, + evm::Opcode, + Error, +}; +use eth_types::{evm_types::INVALID_INIT_CODE_FIRST_BYTE, GethExecStep}; + +#[derive(Clone, Copy, Debug)] +pub struct ErrorCreationCode; + +impl Opcode for ErrorCreationCode { + fn gen_associated_ops( + state: &mut CircuitInputStateRef, + geth_steps: &[GethExecStep], + ) -> Result<Vec<ExecStep>, Error> { + let geth_step = &geth_steps[0]; + let mut exec_step = state.new_step(geth_step)?; + exec_step.error = Some(ExecError::InvalidCreationCode); + + let offset = geth_step.stack.nth_last(0)?; + let length = geth_step.stack.nth_last(1)?; + state.stack_read(&mut exec_step, geth_step.stack.nth_last_filled(0), offset)?; + state.stack_read(&mut exec_step, geth_step.stack.nth_last_filled(1), length)?; + + let call = state.call()?; + assert!(call.is_create() && !length.is_zero()); + + // Read the first byte of init code and check it must be 0xef for this error. + let init_code_first_byte = state.call_ctx()?.memory.0[offset.as_usize()]; + state.memory_read(&mut exec_step, offset.try_into()?, init_code_first_byte)?; + assert_eq!(init_code_first_byte, INVALID_INIT_CODE_FIRST_BYTE); + + state.handle_return(&mut exec_step, geth_steps, true)?; + Ok(vec![exec_step]) + } +} diff --git a/bus-mapping/src/evm/opcodes/error_oog_account_access.rs b/bus-mapping/src/evm/opcodes/error_oog_account_access.rs new file mode 100644 index 0000000000..b893e1efd3 --- /dev/null +++ b/bus-mapping/src/evm/opcodes/error_oog_account_access.rs @@ -0,0 +1,175 @@ +use crate::{ + circuit_input_builder::{CircuitInputStateRef, ExecStep}, + error::{ExecError, OogError}, + evm::{Opcode, OpcodeId}, + operation::{CallContextField, TxAccessListAccountOp, RW}, + Error, +}; +use eth_types::{GethExecStep, ToAddress, U256}; + +#[derive(Debug, Copy, Clone)] +pub struct ErrorOOGAccountAccess; + +impl Opcode for ErrorOOGAccountAccess { + fn gen_associated_ops( + state: &mut CircuitInputStateRef, + geth_steps: &[GethExecStep], + ) -> Result<Vec<ExecStep>, Error> { + let geth_step = &geth_steps[0]; + let mut exec_step = state.new_step(geth_step)?; + exec_step.error = Some(ExecError::OutOfGas(OogError::AccountAccess)); + + // assert op code is BALANCE | EXTCODESIZE | EXTCODEHASH + assert!([ + OpcodeId::BALANCE, + OpcodeId::EXTCODESIZE, + OpcodeId::EXTCODEHASH + ] + .contains(&geth_step.op)); + // Read account address from stack. + let address_word = geth_step.stack.last()?; + let address = address_word.to_address(); + state.stack_read(&mut exec_step, geth_step.stack.last_filled(), address_word)?; + + // Read transaction ID from call context. + state.call_context_read( + &mut exec_step, + state.call()?.call_id, + CallContextField::TxId, + U256::from(state.tx_ctx.id()), + ); + + // transaction access list for account address. + let is_warm = state.sdb.check_account_in_access_list(&address); + // read `is_warm` state + state.push_op( + &mut exec_step, + RW::READ, + TxAccessListAccountOp { + tx_id: state.tx_ctx.id(), + address, + is_warm, + is_warm_prev: is_warm, + }, + ); + + // common error handling + state.handle_return(&mut exec_step, geth_steps, true)?; + Ok(vec![exec_step]) + } +} + +#[cfg(test)] +mod tests { + use crate::{ + circuit_input_builder::ExecState, + error::{ExecError, OogError}, + mock::BlockData, + operation::{StackOp, RW}, + }; + use eth_types::{ + address, bytecode, evm_types::OpcodeId, geth_types::GethData, Bytecode, ToWord, Word, + }; + use mock::TestContext; + use pretty_assertions::assert_eq; + + #[test] + fn test_balance_of_warm_address() { + test_ok(true, false); + test_ok(false, false); + test_ok(true, true); + } + + // test balance opcode as an example + fn test_ok(exists: bool, is_warm: bool) { + let address = address!("0xaabbccddee000000000000000000000000000000"); + + // Pop balance first for warm account. + let mut code = Bytecode::default(); + if is_warm { + code.append(&bytecode! { + PUSH20(address.to_word()) + BALANCE + POP + }); + } + code.append(&bytecode! { + PUSH20(address.to_word()) + BALANCE + STOP + }); + + let balance = if exists { + Word::from(800u64) + } else { + Word::zero() + }; + + // Get the execution steps from the external tracer. + let block: GethData = TestContext::<3, 1>::new( + None, + |accs| { + accs[0] + .address(address!("0x0000000000000000000000000000000000000010")) + .balance(Word::from(1u64 << 20)) + .code(code.clone()); + if exists { + accs[1].address(address).balance(balance); + } else { + accs[1] + .address(address!("0x0000000000000000000000000000000000000020")) + .balance(Word::from(1u64 << 20)); + } + accs[2] + .address(address!("0x0000000000000000000000000000000000cafe01")) + .balance(Word::from(1u64 << 20)); + }, + |mut txs, accs| { + txs[0] + .to(accs[0].address) + .from(accs[2].address) + .gas(21005.into()); + }, + |block, _tx| block.number(0xcafeu64), + ) + .unwrap() + .into(); + + let builder = BlockData::new_from_geth_data(block.clone()).new_circuit_input_builder(); + let builder = builder + .handle_block(&block.eth_block, &block.geth_traces) + .unwrap(); + + // Check if account address is in access list as a result of bus mapping. + assert!(builder.sdb.clone().add_account_to_access_list(address)); + + let tx_id = 1; + let transaction = &builder.block.txs()[tx_id - 1]; + let call_id = transaction.calls()[0].call_id; + + let step = transaction + .steps() + .iter() + .filter(|step| step.exec_state == ExecState::Op(OpcodeId::BALANCE)) + .last() + .unwrap(); + + // check expected error occurs + assert_eq!( + step.error, + Some(ExecError::OutOfGas(OogError::AccountAccess)) + ); + + let container = builder.block.container.clone(); + let operation = &container.stack[step.bus_mapping_instance[0].as_usize()]; + assert_eq!(operation.rw(), RW::READ); + assert_eq!( + operation.op(), + &StackOp { + call_id, + address: 1023.into(), + value: address.to_word(), + } + ); + } +} diff --git a/bus-mapping/src/evm/opcodes/extcodecopy.rs b/bus-mapping/src/evm/opcodes/extcodecopy.rs index ed1b109127..3e70cad6c3 100644 --- a/bus-mapping/src/evm/opcodes/extcodecopy.rs +++ b/bus-mapping/src/evm/opcodes/extcodecopy.rs @@ -133,7 +133,7 @@ fn gen_copy_event( } else { Bytecode::default() }; - let code_size = bytecode.code.len() as u64; + let code_size = bytecode.codesize() as u64; // Get low Uint64 of offset to generate copy steps. Since offset could be // Uint64 overflow if length is zero. @@ -410,11 +410,7 @@ mod extcodecopy_tests { MemoryOp::new( expected_call_id, MemoryAddress::from(memory_offset + idx), - if data_offset + idx < bytecode_ext.to_vec().len() { - bytecode_ext.to_vec()[data_offset + idx] - } else { - 0 - }, + bytecode_ext.get_byte(data_offset + idx).unwrap_or(0), ), ) }) @@ -436,10 +432,9 @@ mod extcodecopy_tests { assert_eq!(copy_events[0].dst_type, CopyDataType::Memory); assert!(copy_events[0].log_id.is_none()); - for (idx, (value, is_code)) in copy_events[0].bytes.iter().enumerate() { + for (idx, &(value, is_code)) in copy_events[0].bytes.iter().enumerate() { let bytecode_element = bytecode_ext.get(idx).unwrap_or_default(); - assert_eq!(*value, bytecode_element.value); - assert_eq!(*is_code, bytecode_element.is_code); + assert_eq!((value, is_code), bytecode_element); } } diff --git a/bus-mapping/src/evm/opcodes/logs.rs b/bus-mapping/src/evm/opcodes/logs.rs index 59591da8a3..c00e677fa1 100644 --- a/bus-mapping/src/evm/opcodes/logs.rs +++ b/bus-mapping/src/evm/opcodes/logs.rs @@ -291,7 +291,7 @@ mod log_tests { .unwrap(); let is_persistent = builder.block.txs()[0].calls()[0].is_persistent; - let callee_address = builder.block.txs()[0].tx.to_or_contract_addr(); + let callee_address = builder.block.txs()[0].to_or_contract_addr(); let step = builder.block.txs()[0] .steps() diff --git a/bus-mapping/src/evm/opcodes/return_revert.rs b/bus-mapping/src/evm/opcodes/return_revert.rs index b66af429b0..fdd405a96c 100644 --- a/bus-mapping/src/evm/opcodes/return_revert.rs +++ b/bus-mapping/src/evm/opcodes/return_revert.rs @@ -6,12 +6,11 @@ use crate::{ state_db::CodeDB, Error, }; -use eth_types::{Bytecode, GethExecStep, ToWord, H256}; +use eth_types::{evm_types::INVALID_INIT_CODE_FIRST_BYTE, Bytecode, GethExecStep, ToWord, H256}; #[derive(Debug, Copy, Clone)] pub(crate) struct ReturnRevert; -// TODO: rename to indicate this handles REVERT (and maybe STOP)? impl Opcode for ReturnRevert { fn gen_associated_ops( state: &mut CircuitInputStateRef, @@ -47,6 +46,11 @@ impl Opcode for ReturnRevert { // Case A in the spec. if call.is_create() && call.is_success && length > 0 { + // Read the first byte of init code and check it must not be 0xef (EIP-3541). + let init_code_first_byte = state.call_ctx()?.memory.0[offset]; + state.memory_read(&mut exec_step, offset.into(), init_code_first_byte)?; + assert_ne!(init_code_first_byte, INVALID_INIT_CODE_FIRST_BYTE); + // Note: handle_return updates state.code_db. All we need to do here is push the // copy event. let code_hash = handle_create( @@ -202,14 +206,10 @@ fn handle_create( source: Source, ) -> Result<H256, Error> { let values = state.call_ctx()?.memory.0[source.offset..source.offset + source.length].to_vec(); - let code_hash = CodeDB::hash(&values); + let bytecode = Bytecode::from(values); + let code_hash = bytecode.hash_h256(); + let bytes = bytecode.code_vec(); let dst_id = NumberOrHash::Hash(code_hash); - let bytes: Vec<_> = Bytecode::from(values) - .code - .iter() - .map(|element| (element.value, element.is_code)) - .collect(); - let rw_counter_start = state.block_ctx.rwc; for (i, (byte, _)) in bytes.iter().enumerate() { state.push_op( diff --git a/bus-mapping/src/evm/opcodes/selfbalance.rs b/bus-mapping/src/evm/opcodes/selfbalance.rs index 41ab37386f..70c0c10f4d 100644 --- a/bus-mapping/src/evm/opcodes/selfbalance.rs +++ b/bus-mapping/src/evm/opcodes/selfbalance.rs @@ -91,7 +91,7 @@ mod selfbalance_tests { .unwrap(); let call_id = builder.block.txs()[0].calls()[0].call_id; - let callee_address = builder.block.txs()[0].tx.to_or_contract_addr(); + let callee_address = builder.block.txs()[0].to_or_contract_addr(); let self_balance = builder.sdb.get_account(&callee_address).1.balance; assert_eq!( diff --git a/bus-mapping/src/evm/opcodes/sload.rs b/bus-mapping/src/evm/opcodes/sload.rs index 8f891d50e0..9bd164db46 100644 --- a/bus-mapping/src/evm/opcodes/sload.rs +++ b/bus-mapping/src/evm/opcodes/sload.rs @@ -82,6 +82,17 @@ impl Opcode for Sload { // First stack write state.stack_write(&mut exec_step, stack_position, value)?; + state.push_op( + &mut exec_step, + RW::READ, + TxAccessListAccountStorageOp { + tx_id: state.tx_ctx.id(), + address: contract_addr, + key, + is_warm, + is_warm_prev: is_warm, + }, + ); state.push_op_reversible( &mut exec_step, TxAccessListAccountStorageOp { @@ -189,7 +200,7 @@ mod sload_tests { ); let access_list_op = &builder.block.container.tx_access_list_account_storage - [step.bus_mapping_instance[7].as_usize()]; + [step.bus_mapping_instance[8].as_usize()]; assert_eq!( (access_list_op.rw(), access_list_op.op()), ( diff --git a/bus-mapping/src/evm/opcodes/sstore.rs b/bus-mapping/src/evm/opcodes/sstore.rs index a5527aa72d..0b1eadeca5 100644 --- a/bus-mapping/src/evm/opcodes/sstore.rs +++ b/bus-mapping/src/evm/opcodes/sstore.rs @@ -1,10 +1,9 @@ use super::Opcode; use crate::{ circuit_input_builder::{CircuitInputStateRef, ExecStep}, - operation::{CallContextField, StorageOp, TxAccessListAccountStorageOp, TxRefundOp}, + operation::{CallContextField, StorageOp, TxAccessListAccountStorageOp, TxRefundOp, RW}, Error, }; - use eth_types::{GethExecStep, ToWord, Word}; /// Placeholder structure used to implement [`Opcode`] trait over it @@ -86,6 +85,17 @@ impl Opcode for Sstore { ), )?; + state.push_op( + &mut exec_step, + RW::READ, + TxAccessListAccountStorageOp { + tx_id: state.tx_ctx.id(), + address: contract_addr, + key, + is_warm, + is_warm_prev: is_warm, + }, + ); state.push_op_reversible( &mut exec_step, TxAccessListAccountStorageOp { @@ -250,7 +260,8 @@ mod sstore_tests { ) ) ); - let refund_op = &builder.block.container.tx_refund[step.bus_mapping_instance[9].as_usize()]; + let refund_op = + &builder.block.container.tx_refund[step.bus_mapping_instance[10].as_usize()]; assert_eq!( (refund_op.rw(), refund_op.op()), ( diff --git a/bus-mapping/src/evm/opcodes/stackonlyop.rs b/bus-mapping/src/evm/opcodes/stackonlyop.rs index 26fd8ac6a0..a23c80f75a 100644 --- a/bus-mapping/src/evm/opcodes/stackonlyop.rs +++ b/bus-mapping/src/evm/opcodes/stackonlyop.rs @@ -12,9 +12,15 @@ use eth_types::GethExecStep; /// - N = 2: BinaryOpcode /// - N = 3: TernaryOpcode #[derive(Debug, Copy, Clone)] -pub(crate) struct StackOnlyOpcode<const N_POP: usize, const N_PUSH: usize>; +pub(crate) struct StackOnlyOpcode< + const N_POP: usize, + const N_PUSH: usize, + const IS_ERR: bool = { false }, +>; -impl<const N_POP: usize, const N_PUSH: usize> Opcode for StackOnlyOpcode<N_POP, N_PUSH> { +impl<const N_POP: usize, const N_PUSH: usize, const IS_ERR: bool> Opcode + for StackOnlyOpcode<N_POP, N_PUSH, IS_ERR> +{ fn gen_associated_ops( state: &mut CircuitInputStateRef, geth_steps: &[GethExecStep], @@ -39,6 +45,13 @@ impl<const N_POP: usize, const N_PUSH: usize> Opcode for StackOnlyOpcode<N_POP, )?; } + if IS_ERR { + let next_step = geth_steps.get(1); + exec_step.error = state.get_step_err(geth_step, next_step).unwrap(); + + state.handle_return(&mut exec_step, geth_steps, true)?; + } + Ok(vec![exec_step]) } } @@ -404,4 +417,17 @@ mod stackonlyop_tests { vec![StackOp::new(1, StackAddress(1023), *MOCK_BASEFEE)], ); } + + #[test] + fn push0_opcode_impl() { + stack_only_opcode_impl::<0, 1>( + OpcodeId::PUSH0, + bytecode! { + PUSH0 + STOP + }, + vec![], + vec![StackOp::new(1, StackAddress(1023), Word::zero())], + ); + } } diff --git a/bus-mapping/src/mock.rs b/bus-mapping/src/mock.rs index d6621ebe33..4e06367dbe 100644 --- a/bus-mapping/src/mock.rs +++ b/bus-mapping/src/mock.rs @@ -50,7 +50,7 @@ impl<C: CircuitsParams> BlockData<C> { fn init_dbs(geth_data: &GethData) -> (StateDB, CodeDB) { let mut sdb = StateDB::new(); - let mut code_db = CodeDB::new(); + let mut code_db = CodeDB::default(); let access_set = get_state_accesses(&geth_data.eth_block, &geth_data.geth_traces) .expect("state accesses"); diff --git a/bus-mapping/src/state_db.rs b/bus-mapping/src/state_db.rs index 84bf451109..eb47ba787d 100644 --- a/bus-mapping/src/state_db.rs +++ b/bus-mapping/src/state_db.rs @@ -1,8 +1,9 @@ //! Implementation of an in-memory key-value database to represent the //! Ethereum State Trie. -use eth_types::{geth_types, Address, Hash, Word, H256, U256}; +use eth_types::{geth_types, Address, BigEndianHash, Bytecode, Hash, Word, H256, U256}; use ethers_core::utils::keccak256; +use itertools::Itertools; use lazy_static::lazy_static; use std::collections::{HashMap, HashSet}; @@ -21,20 +22,10 @@ lazy_static! { const VALUE_ZERO: Word = Word::zero(); /// Memory storage for contract code by code hash. -#[derive(Debug, Clone)] -pub struct CodeDB(pub HashMap<Hash, Vec<u8>>); - -impl Default for CodeDB { - fn default() -> Self { - Self::new() - } -} +#[derive(Debug, Clone, Default)] +pub struct CodeDB(HashMap<Hash, Vec<u8>>); impl CodeDB { - /// Create a new empty Self. - pub fn new() -> Self { - Self(HashMap::new()) - } /// Insert code indexed by code hash, and return the code hash. pub fn insert(&mut self, code: Vec<u8>) -> Hash { let hash = Self::hash(&code); @@ -51,6 +42,46 @@ impl CodeDB { pub fn empty_code_hash() -> Hash { *EMPTY_CODE_HASH } + + /// Compute number of rows required for bytecode table. + pub fn num_rows_required_for_bytecode_table(&self) -> usize { + self.0.values().map(|bytecode| bytecode.len() + 1).sum() + } + + /// Query Bytecode by H256 + pub fn get_from_h256(&self, codehash: &H256) -> Option<Bytecode> { + self.0.get(codehash).cloned().map(|code| code.into()) + } + + /// Query Bytecode by U256 + pub fn get_from_u256(&self, codehash: &Word) -> Option<Bytecode> { + self.get_from_h256(&H256::from_uint(codehash)) + } +} + +impl From<Vec<Vec<u8>>> for CodeDB { + fn from(bytecodes: Vec<Vec<u8>>) -> Self { + Self(HashMap::from_iter( + bytecodes + .iter() + .cloned() + .map(|bytecode| (Self::hash(&bytecode), bytecode)), + )) + } +} + +impl IntoIterator for CodeDB { + type Item = Bytecode; + type IntoIter = std::vec::IntoIter<Self::Item>; + + fn into_iter(self) -> Self::IntoIter { + self.0 + .values() + .cloned() + .map(Bytecode::from) + .collect_vec() + .into_iter() + } } /// Account of the Ethereum State Trie, which contains an in-memory key-value @@ -73,7 +104,7 @@ impl From<geth_types::Account> for Account { nonce: account.nonce.as_u64(), balance: account.balance, storage: account.storage.clone(), - code_hash: CodeDB::hash(&account.code.to_vec()), + code_hash: CodeDB::hash(&account.code), } } } diff --git a/circuit-benchmarks/Cargo.toml b/circuit-benchmarks/Cargo.toml index 8f813e749b..02427f2e29 100644 --- a/circuit-benchmarks/Cargo.toml +++ b/circuit-benchmarks/Cargo.toml @@ -9,16 +9,18 @@ license = "MIT OR Apache-2.0" [dependencies] halo2_proofs = { git = "https://github.com/privacy-scaling-explorations/halo2.git", tag = "v2023_04_20" } ark-std = { version = "0.3", features = ["print-trace"] } -zkevm-circuits = { path = "../zkevm-circuits", features = ["test"]} +zkevm-circuits = { path = "../zkevm-circuits", features = ["test-circuits"] } bus-mapping = { path = "../bus-mapping", features = ["test"] } rand_xorshift = "0.3" rand = "0.8" itertools = "0.10" eth-types = { path = "../eth-types" } env_logger = "0.9" -ethers-signers = "0.17.0" +ethers-signers = "2.0.7" mock = { path="../mock" } rand_chacha = "0.3" +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" [features] default = [] diff --git a/circuit-benchmarks/src/bytecode_circuit.rs b/circuit-benchmarks/src/bytecode_circuit.rs index 42ca583f35..b145bbb834 100644 --- a/circuit-benchmarks/src/bytecode_circuit.rs +++ b/circuit-benchmarks/src/bytecode_circuit.rs @@ -3,8 +3,7 @@ #[cfg(test)] mod tests { use ark_std::{end_timer, start_timer}; - use bus_mapping::evm::OpcodeId; - use eth_types::Field; + use bus_mapping::{evm::OpcodeId, state_db::CodeDB}; use halo2_proofs::{ halo2curves::bn256::{Bn256, Fr, G1Affine}, plonk::{create_proof, keygen_pk, keygen_vk, verify_proof}, @@ -22,14 +21,8 @@ mod tests { }; use rand::SeedableRng; use rand_xorshift::XorShiftRng; - use std::env::var; - use zkevm_circuits::{ - bytecode_circuit::{ - bytecode_unroller::{unroll, UnrolledBytecode}, - TestBytecodeCircuit, - }, - util::SubCircuit, - }; + use std::{env::var, iter}; + use zkevm_circuits::{bytecode_circuit::TestBytecodeCircuit, util::SubCircuit}; #[cfg_attr(not(feature = "benches"), ignore)] #[test] @@ -127,10 +120,7 @@ mod tests { } /// fill bytecodes_num * bytecode_len bytes to the witness table - fn fillup_codebytes<F: Field>( - bytecodes_num: usize, - bytecode_len: usize, - ) -> Vec<UnrolledBytecode<F>> { + fn fillup_codebytes(bytecodes_num: usize, bytecode_len: usize) -> CodeDB { fn valid_or(base: OpcodeId, or: OpcodeId) -> OpcodeId { match base { OpcodeId::INVALID(_) => or, @@ -138,14 +128,13 @@ mod tests { } } - let mut codebytes = vec![]; - (0..bytecodes_num).for_each(|_| { - let bytecodes = (0..bytecode_len) + let codebytes = iter::repeat( + (0..bytecode_len) .map(|v| valid_or(OpcodeId::from(v as u8), OpcodeId::STOP).as_u8()) - .collect::<Vec<u8>>(); - let unrolled_bytes = unroll::<F>(bytecodes); - codebytes.push(unrolled_bytes); - }); - codebytes + .collect::<Vec<u8>>(), + ) + .take(bytecodes_num) + .collect::<Vec<Vec<u8>>>(); + CodeDB::from(codebytes) } } diff --git a/circuit-benchmarks/src/lib.rs b/circuit-benchmarks/src/lib.rs index 877343cd9e..78adf5b3dd 100644 --- a/circuit-benchmarks/src/lib.rs +++ b/circuit-benchmarks/src/lib.rs @@ -35,3 +35,7 @@ pub mod exp_circuit; #[cfg(test)] #[cfg(feature = "benches")] pub mod constants; + +#[cfg(test)] +#[cfg(feature = "benches")] +pub mod mpt_circuit; diff --git a/circuit-benchmarks/src/mpt_circuit.rs b/circuit-benchmarks/src/mpt_circuit.rs new file mode 100644 index 0000000000..ffebe24ddf --- /dev/null +++ b/circuit-benchmarks/src/mpt_circuit.rs @@ -0,0 +1,125 @@ +//! MPT circuit benchmarks + +#[cfg(test)] +mod tests { + use ark_std::{end_timer, start_timer}; + use core::marker::PhantomData; + use halo2_proofs::{ + halo2curves::bn256::{Bn256, Fr, G1Affine}, + plonk::{create_proof, keygen_pk, keygen_vk, verify_proof}, + poly::{ + commitment::ParamsProver, + kzg::{ + commitment::{KZGCommitmentScheme, ParamsKZG, ParamsVerifierKZG}, + multiopen::{ProverSHPLONK, VerifierSHPLONK}, + strategy::SingleStrategy, + }, + }, + transcript::{ + Blake2bRead, Blake2bWrite, Challenge255, TranscriptReadBuffer, TranscriptWriterBuffer, + }, + }; + use rand::SeedableRng; + use rand_xorshift::XorShiftRng; + use std::env::var; + use zkevm_circuits::mpt_circuit::{load_proof, witness_row::Node, MPTCircuit}; + + #[cfg_attr(not(feature = "benches"), ignore)] + #[test] + fn bench_mpt_circuit_prover() { + let setup_prfx = crate::constants::SETUP_PREFIX; + let proof_gen_prfx = crate::constants::PROOFGEN_PREFIX; + let proof_ver_prfx = crate::constants::PROOFVER_PREFIX; + // Unique string used by bench results module for parsing the result + const BENCHMARK_ID: &str = "MPT Circuit"; + + let degree: u32 = var("DEGREE") + .expect("No DEGREE env var was provided") + .parse() + .expect("Cannot parse DEGREE env var as u32"); + + let path = "../zkevm-circuits/src/mpt_circuit/tests/UpdateOneLevel.json"; + let nodes: Vec<Node> = load_proof(path); + + let mut keccak_data = vec![]; + for node in nodes.iter() { + for k in node.keccak_data.iter() { + keccak_data.push(k.clone()); + } + } + + let circuit = MPTCircuit::<Fr> { + nodes, + keccak_data, + degree: degree as usize, + disable_preimage_check: false, + _marker: PhantomData, + }; + + // Initialize the polynomial commitment parameters + let mut rng = XorShiftRng::from_seed([ + 0x59, 0x62, 0xbe, 0x5d, 0x76, 0x3d, 0x31, 0x8d, 0x17, 0xdb, 0x37, 0x32, 0x54, 0x06, + 0xbc, 0xe5, + ]); + + // Bench setup generation + let setup_message = format!("{} {} with degree = {}", BENCHMARK_ID, setup_prfx, degree); + let start1 = start_timer!(|| setup_message); + let general_params = ParamsKZG::<Bn256>::setup(degree, &mut rng); + let verifier_params: ParamsVerifierKZG<Bn256> = general_params.verifier_params().clone(); + end_timer!(start1); + + // Initialize the proving key + let vk = keygen_vk(&general_params, &circuit).expect("keygen_vk should not fail"); + let pk = keygen_pk(&general_params, vk, &circuit).expect("keygen_pk should not fail"); + // Create a proof + let mut transcript = Blake2bWrite::<_, G1Affine, Challenge255<_>>::init(vec![]); + + // Bench proof generation time + let proof_message = format!( + "{} {} with degree = {}", + BENCHMARK_ID, proof_gen_prfx, degree + ); + let start2 = start_timer!(|| proof_message); + + create_proof::< + KZGCommitmentScheme<Bn256>, + ProverSHPLONK<'_, Bn256>, + Challenge255<G1Affine>, + XorShiftRng, + Blake2bWrite<Vec<u8>, G1Affine, Challenge255<G1Affine>>, + MPTCircuit<Fr>, + >( + &general_params, + &pk, + &[circuit], + &[&[]], + rng, + &mut transcript, + ) + .expect("proof generation should not fail"); + let proof = transcript.finalize(); + end_timer!(start2); + + // Bench verification time + let start3 = start_timer!(|| format!("{} {}", BENCHMARK_ID, proof_ver_prfx)); + let mut verifier_transcript = Blake2bRead::<_, G1Affine, Challenge255<_>>::init(&proof[..]); + let strategy = SingleStrategy::new(&general_params); + + verify_proof::< + KZGCommitmentScheme<Bn256>, + VerifierSHPLONK<'_, Bn256>, + Challenge255<G1Affine>, + Blake2bRead<&[u8], G1Affine, Challenge255<G1Affine>>, + SingleStrategy<'_, Bn256>, + >( + &verifier_params, + pk.get_vk(), + strategy, + &[&[]], + &mut verifier_transcript, + ) + .expect("failed to verify bench circuit"); + end_timer!(start3); + } +} diff --git a/circuit-benchmarks/src/pi_circuit.rs b/circuit-benchmarks/src/pi_circuit.rs index eb1295e129..294c0ba752 100644 --- a/circuit-benchmarks/src/pi_circuit.rs +++ b/circuit-benchmarks/src/pi_circuit.rs @@ -4,7 +4,6 @@ mod tests { use ark_std::{end_timer, start_timer}; use eth_types::Word; use halo2_proofs::{ - arithmetic::Field, halo2curves::bn256::{Bn256, Fr, G1Affine}, plonk::{create_proof, keygen_pk, keygen_vk, verify_proof}, poly::{ @@ -19,14 +18,11 @@ mod tests { Blake2bRead, Blake2bWrite, Challenge255, TranscriptReadBuffer, TranscriptWriterBuffer, }, }; + use itertools::Itertools; use rand::SeedableRng; - use rand_chacha::ChaCha20Rng; use rand_xorshift::XorShiftRng; use std::env::var; - use zkevm_circuits::{ - pi_circuit::{PiCircuit, PublicData}, - util::SubCircuit, - }; + use zkevm_circuits::{instance::PublicData, pi_circuit::PiCircuit, util::SubCircuit}; #[cfg_attr(not(feature = "benches"), ignore)] #[test] @@ -45,12 +41,8 @@ mod tests { .parse() .expect("Cannot parse DEGREE env var as u32"); - let mut rng = ChaCha20Rng::seed_from_u64(2); - let randomness = Fr::random(&mut rng); - let rand_rpi = Fr::random(&mut rng); let public_data = generate_publicdata(MAX_TXS); - let circuit = - PiCircuit::<Fr>::new(MAX_TXS, MAX_CALLDATA, randomness, rand_rpi, public_data); + let circuit = PiCircuit::<Fr>::new(MAX_TXS, MAX_CALLDATA, public_data); let public_inputs = circuit.instance(); let instance: Vec<&[Fr]> = public_inputs.iter().map(|input| &input[..]).collect(); let instances = &[&instance[..]]; @@ -121,15 +113,16 @@ mod tests { } fn generate_publicdata(max_txs: usize) -> PublicData { - let mut public_data = PublicData::default(); - let chain_id = 1337u64; - public_data.chain_id = Word::from(chain_id); + let transactions = std::iter::repeat(eth_types::geth_types::Transaction::from( + mock::CORRECT_MOCK_TXS[0].clone(), + )) + .take(max_txs) + .collect_vec(); - let n_tx = max_txs; - for _ in 0..n_tx { - let eth_tx = eth_types::Transaction::from(mock::CORRECT_MOCK_TXS[0].clone()); - public_data.transactions.push(eth_tx); + PublicData { + chain_id: Word::from(1337), + transactions, + ..Default::default() } - public_data } } diff --git a/eth-types/Cargo.toml b/eth-types/Cargo.toml index 1050f3efe8..7cc02edd4b 100644 --- a/eth-types/Cargo.toml +++ b/eth-types/Cargo.toml @@ -6,8 +6,8 @@ authors = ["The appliedzkp team"] license = "MIT OR Apache-2.0" [dependencies] -ethers-core = "0.17.0" -ethers-signers = "0.17.0" +ethers-core = "2.0.7" +ethers-signers = "2.0.7" hex = "0.4" lazy_static = "1.4" halo2_proofs = { git = "https://github.com/privacy-scaling-explorations/halo2.git", tag = "v2023_04_20" } diff --git a/eth-types/src/bytecode.rs b/eth-types/src/bytecode.rs index a72b30c682..627ff10eae 100644 --- a/eth-types/src/bytecode.rs +++ b/eth-types/src/bytecode.rs @@ -1,7 +1,6 @@ //! EVM byte code generator - -use crate::{evm_types::OpcodeId, Bytes, ToWord, Word}; -use std::{collections::HashMap, str::FromStr}; +use crate::{evm_types::OpcodeId, keccak256, Bytes, Hash, ToBigEndian, ToWord, Word}; +use std::{collections::HashMap, iter, str::FromStr}; /// Error type for Bytecode related failures #[derive(Debug)] @@ -12,29 +11,25 @@ pub enum Error { /// Helper struct that represents a single element in a bytecode. #[derive(Copy, Clone, Debug, Default, PartialEq, Eq)] -pub struct BytecodeElement { +struct BytecodeElement { /// The byte value of the element. - pub value: u8, + value: u8, /// Whether the element is an opcode or push data byte. - pub is_code: bool, + is_code: bool, } /// EVM Bytecode #[derive(Debug, Default, Clone, PartialEq, Eq)] pub struct Bytecode { /// Vector for bytecode elements. - pub code: Vec<BytecodeElement>, + code: Vec<BytecodeElement>, num_opcodes: usize, markers: HashMap<String, usize>, } impl From<Bytecode> for Bytes { fn from(code: Bytecode) -> Self { - code.code - .iter() - .map(|e| e.value) - .collect::<Vec<u8>>() - .into() + code.code().into() } } @@ -59,14 +54,34 @@ impl Bytecode { self.code.iter().map(|b| b.value).collect() } + /// Get the code and is_code + pub fn code_vec(&self) -> Vec<(u8, bool)> { + self.code.iter().map(|b| (b.value, b.is_code)).collect() + } + + /// Geth the code size + pub fn codesize(&self) -> usize { + self.code.len() + } + + /// Get the code hash + pub fn hash(&self) -> Word { + Word::from_big_endian(&keccak256(&self.code())) + } + + /// Get the code hash + pub fn hash_h256(&self) -> Hash { + Hash::from_slice(&self.hash().to_be_bytes()) + } + /// Get the bytecode element at an index. - pub fn get(&self, index: usize) -> Option<BytecodeElement> { - self.code.get(index).cloned() + pub fn get(&self, index: usize) -> Option<(u8, bool)> { + self.code.get(index).map(|elem| (elem.value, elem.is_code)) } - /// Get the generated code - pub fn to_vec(&self) -> Vec<u8> { - self.code.iter().map(|e| e.value).collect() + /// Get the bytecode element at an index. + pub fn get_byte(&self, index: usize) -> Option<u8> { + self.code.get(index).map(|elem| elem.value) } /// Append @@ -94,9 +109,9 @@ impl Bytecode { self } - /// Push + /// Push, value is useless for `PUSH0` pub fn push<T: ToWord>(&mut self, n: u8, value: T) -> &mut Self { - debug_assert!((1..=32).contains(&n), "invalid push"); + debug_assert!((..=32).contains(&n), "invalid push"); let value = value.to_word(); // Write the op code @@ -149,32 +164,13 @@ impl Bytecode { self } - /// Generate the diassembly - pub fn disasm(&self) -> String { - let mut asm = String::new(); - for op in self.iter() { - asm.push_str(&op.to_string()); - asm.push('\n'); - } - asm - } - - /// Append asm - pub fn append_asm(&mut self, op: &str) -> Result<(), Error> { - match OpcodeWithData::from_str(op)? { - OpcodeWithData::Opcode(op) => self.write_op(op), - OpcodeWithData::Push(n, value) => self.push(n, value), - }; - Ok(()) - } - /// Append an opcode pub fn append_op(&mut self, op: OpcodeWithData) -> &mut Self { match op { OpcodeWithData::Opcode(opcode) => { self.write_op(opcode); } - OpcodeWithData::Push(n, word) => { + OpcodeWithData::PushWithData(n, word) => { self.push(n, word); } } @@ -191,15 +187,31 @@ impl Bytecode { self.write_op(OpcodeId::JUMPDEST); self.code.len() } + + /// Append the instructions to store another code to memory + pub fn store_code_to_mem(&mut self, code: &Self) { + let len = code.codesize(); + // pad to multiple of 32 bytes + let code: Vec<u8> = code + .code() + .iter() + .cloned() + .chain(iter::repeat(0).take(32 - len % 32)) + .collect(); + + for (index, word) in code.chunks(32).enumerate() { + self.op_mstore(index * 32, Word::from_big_endian(word)); + } + } } /// An ASM entry #[derive(Clone, PartialEq, Eq)] pub enum OpcodeWithData { - /// A non-push opcode + /// A `PUSH0` or non-push opcode Opcode(OpcodeId), - /// A push opcode - Push(u8, Word), + /// A `PUSH1` .. `PUSH32` opcode + PushWithData(u8, Word), } impl OpcodeWithData { @@ -207,7 +219,7 @@ impl OpcodeWithData { pub fn opcode(&self) -> OpcodeId { match self { OpcodeWithData::Opcode(op) => *op, - OpcodeWithData::Push(n, _) => OpcodeId::push_n(*n).expect("valid push size"), + OpcodeWithData::PushWithData(n, _) => OpcodeId::push_n(*n).expect("valid push size"), } } } @@ -221,20 +233,24 @@ impl FromStr for OpcodeWithData { if let Some(push) = op.strip_prefix("PUSH") { let n_value: Vec<_> = push.splitn(3, ['(', ')']).collect(); let n = n_value[0].parse::<u8>().map_err(|_| err())?; - if n < 1 || n > 32 { + if n > 32 { return Err(err()); } - let value = if n_value[1].starts_with("0x") { - Word::from_str_radix(&n_value[1][2..], 16) - } else { - Word::from_str_radix(n_value[1], 10) + + if n > 0 { + let value = if n_value[1].starts_with("0x") { + Word::from_str_radix(&n_value[1][2..], 16) + } else { + Word::from_str_radix(n_value[1], 10) + } + .map_err(|_| err())?; + + return Ok(OpcodeWithData::PushWithData(n, value)); } - .map_err(|_| err())?; - Ok(OpcodeWithData::Push(n, value)) - } else { - let opcode = OpcodeId::from_str(op).map_err(|_| err())?; - Ok(OpcodeWithData::Opcode(opcode)) } + + let opcode = OpcodeId::from_str(op).map_err(|_| err())?; + Ok(OpcodeWithData::Opcode(opcode)) } } @@ -242,7 +258,7 @@ impl ToString for OpcodeWithData { fn to_string(&self) -> String { match self { OpcodeWithData::Opcode(opcode) => format!("{:?}", opcode), - OpcodeWithData::Push(n, word) => format!("PUSH{}({})", n, word), + OpcodeWithData::PushWithData(n, word) => format!("PUSH{}({})", n, word), } } } @@ -255,13 +271,16 @@ impl<'a> Iterator for BytecodeIterator<'a> { fn next(&mut self) -> Option<Self::Item> { self.0.next().map(|byte| { let op = OpcodeId::from(byte.value); - if op.is_push() { - let n = op.data_len(); + let n = op.data_len(); + if n > 0 { + assert!(op.is_push_with_data()); + let mut value = vec![0u8; n]; for value_byte in value.iter_mut() { *value_byte = self.0.next().unwrap().value; } - OpcodeWithData::Push(n as u8, Word::from(value.as_slice())) + + OpcodeWithData::PushWithData(n as u8, Word::from(value.as_slice())) } else { OpcodeWithData::Opcode(op) } @@ -277,7 +296,7 @@ impl From<Vec<u8>> for Bytecode { while let Some(byte) = input_iter.next() { let op = OpcodeId::from(*byte); code.write_op(op); - if op.is_push() { + if op.is_push_with_data() { let n = op.postfix().expect("opcode with postfix"); for _ in 0..n { match input_iter.next() { @@ -315,14 +334,14 @@ macro_rules! bytecode_internal { ($code:ident, ) => {}; // PUSHX op codes ($code:ident, $x:ident ($v:expr) $($rest:tt)*) => {{ - debug_assert!($crate::evm_types::OpcodeId::$x.is_push(), "invalid push"); + debug_assert!($crate::evm_types::OpcodeId::$x.is_push_with_data(), "invalid push"); let n = $crate::evm_types::OpcodeId::$x.postfix().expect("opcode with postfix"); $code.push(n, $v); $crate::bytecode_internal!($code, $($rest)*); }}; // Default opcode without any inputs ($code:ident, $x:ident $($rest:tt)*) => {{ - debug_assert!(!$crate::evm_types::OpcodeId::$x.is_push(), "invalid push"); + debug_assert!(!$crate::evm_types::OpcodeId::$x.is_push_with_data(), "invalid push"); $code.write_op($crate::evm_types::OpcodeId::$x); $crate::bytecode_internal!($code, $($rest)*); }}; @@ -338,6 +357,13 @@ macro_rules! bytecode_internal { }}; } +impl Bytecode { + /// Helper function for `PUSH0` + pub fn op_push0(&mut self) -> &mut Self { + self.push(0, Word::zero()) + } +} + macro_rules! impl_push_n { ($($push_n:ident, $n:expr)*) => { #[allow(missing_docs)] @@ -531,13 +557,13 @@ impl_other_opcodes! { #[cfg(test)] mod tests { - use super::*; use crate::Bytecode; - use std::str::FromStr; #[test] fn test_bytecode_roundtrip() { let code = bytecode! { + PUSH0 + POP PUSH8(0x123) POP PUSH24(0x321) @@ -550,25 +576,6 @@ mod tests { POP STOP }; - assert_eq!(Bytecode::try_from(code.to_vec()).unwrap(), code); - } - - #[test] - fn test_asm_disasm() { - let code = bytecode! { - PUSH1(5) - PUSH2(0xa) - MUL - STOP - }; - let mut code2 = Bytecode::default(); - code.iter() - .map(|op| op.to_string()) - .map(|op| OpcodeWithData::from_str(&op).unwrap()) - .for_each(|op| { - code2.append_op(op); - }); - - assert_eq!(code.code, code2.code); + assert_eq!(Bytecode::try_from(code.code()).unwrap(), code); } } diff --git a/eth-types/src/evm_types.rs b/eth-types/src/evm_types.rs index ba1c694967..44b1befedf 100644 --- a/eth-types/src/evm_types.rs +++ b/eth-types/src/evm_types.rs @@ -14,6 +14,8 @@ pub use opcode_ids::OpcodeId; pub use stack::{Stack, StackAddress}; pub use storage::Storage; +/// According to EIP-3541, disallow new code starting with 0xEF to be deployed. +pub const INVALID_INIT_CODE_FIRST_BYTE: u8 = 0xef; /// Once per word of the init code when creating a contract. pub const INIT_CODE_WORD_GAS: u64 = 2; /// Quotient for max refund of gas used @@ -21,6 +23,44 @@ pub const MAX_REFUND_QUOTIENT_OF_GAS_USED: usize = 5; /// Gas stipend when CALL or CALLCODE is attached with value. pub const GAS_STIPEND_CALL_WITH_VALUE: u64 = 2300; +/// This constant ((2^32 - 1) * 32) is the highest number that can be used without overflowing the +/// square operation of gas calculation. +/// <https://github.com/ethereum/go-ethereum/blob/e6b6a8b738069ad0579f6798ee59fde93ed13b43/core/vm/gas_table.go#L38> +pub const MAX_EXPANDED_MEMORY_ADDRESS: u64 = 0x1FFFFFFFE0; + +#[cfg(feature = "shanghai")] +mod gas_create { + // For EIP-3860, there are 2 special gas cost constraints in geth + // [gasCreate2Eip3860](https://github.com/ethereum/go-ethereum/blob/eb83e7c54021573eaceb14236af3a7a8c64f6027/core/vm/gas_table.go#L321) + // (similar for CREATE). + // 1. size <= 49152 (MaxInitCodeSize) + // 2. gasCost = memoryGasCost + (2 + 6) * ((size + 31) / 32) should not + // overflow for Uint64. + // No need to constrain the second condition, since the maximum gas cost + // cannot overflow for Uint64 (36028809887100925 calculated by + // `memorySize = 0x1FFFFFFFE0` and `size = 49152`) if the first condition is + // satisfied. + + /// Maximum init code size to permit in a creation transaction and create instructions. + pub const MAX_INIT_CODE_SIZE: u64 = 2 * super::MAX_CODE_SIZE; + /// Once per word of the init code when creating a contract. + pub const INIT_CODE_WORD_GAS: u64 = 2; + /// Gas per code word for CREATE. + pub const CREATE_GAS_PER_CODE_WORD: u64 = INIT_CODE_WORD_GAS; + /// Gas per code word for CREATE2. + pub const CREATE2_GAS_PER_CODE_WORD: u64 = INIT_CODE_WORD_GAS + super::GasCost::COPY_SHA3.0; +} +#[cfg(not(feature = "shanghai"))] +mod gas_create { + /// Maximum init code size (0x1FFFFFFFE0) if not EIP-3860. + pub use super::MAX_EXPANDED_MEMORY_ADDRESS as MAX_INIT_CODE_SIZE; + /// Gas per code word for CREATE if not EIP-3860. + pub const CREATE_GAS_PER_CODE_WORD: u64 = 0; + /// Gas per code word for CREATE2 if not EIP-3860. + pub const CREATE2_GAS_PER_CODE_WORD: u64 = super::GasCost::COPY_SHA3; +} +pub use gas_create::*; + /// Defines the gas consumption. pub struct GasCost; diff --git a/eth-types/src/evm_types/opcode_ids.rs b/eth-types/src/evm_types/opcode_ids.rs index dfd60db4ca..538c8906f6 100644 --- a/eth-types/src/evm_types/opcode_ids.rs +++ b/eth-types/src/evm_types/opcode_ids.rs @@ -95,6 +95,8 @@ pub enum OpcodeId { JUMPDEST, // PUSHn + /// `PUSH0` + PUSH0, /// `PUSH1` PUSH1, /// `PUSH2` @@ -315,8 +317,13 @@ pub enum OpcodeId { } impl OpcodeId { - /// Returns `true` if the `OpcodeId` is a `PUSHn`. + /// Returns `true` if the `OpcodeId` is a `PUSHn` (including `PUSH0`). pub fn is_push(&self) -> bool { + self.as_u8() >= Self::PUSH0.as_u8() && self.as_u8() <= Self::PUSH32.as_u8() + } + + /// Returns `true` if the `OpcodeId` is a `PUSH1` .. `PUSH32` (excluding `PUSH0`). + pub fn is_push_with_data(&self) -> bool { self.as_u8() >= Self::PUSH1.as_u8() && self.as_u8() <= Self::PUSH32.as_u8() } @@ -402,6 +409,7 @@ impl OpcodeId { OpcodeId::PC => 0x58u8, OpcodeId::MSIZE => 0x59u8, OpcodeId::JUMPDEST => 0x5bu8, + OpcodeId::PUSH0 => 0x5fu8, OpcodeId::PUSH1 => 0x60u8, OpcodeId::PUSH2 => 0x61u8, OpcodeId::PUSH3 => 0x62u8, @@ -580,6 +588,7 @@ impl OpcodeId { OpcodeId::MSIZE => GasCost::QUICK, OpcodeId::GAS => GasCost::QUICK, OpcodeId::JUMPDEST => GasCost::ONE, + OpcodeId::PUSH0 => GasCost::QUICK, OpcodeId::PUSH1 => GasCost::FASTEST, OpcodeId::PUSH2 => GasCost::FASTEST, OpcodeId::PUSH3 => GasCost::FASTEST, @@ -734,6 +743,7 @@ impl OpcodeId { OpcodeId::MSIZE => (1, 1024), OpcodeId::GAS => (1, 1024), OpcodeId::JUMPDEST => (0, 1024), + OpcodeId::PUSH0 => (1, 1024), OpcodeId::PUSH1 => (1, 1024), OpcodeId::PUSH2 => (1, 1024), OpcodeId::PUSH3 => (1, 1024), @@ -840,8 +850,10 @@ impl OpcodeId { /// Returns PUSHn opcode from parameter n. pub fn push_n(n: u8) -> Result<Self, Error> { - if (1..=32).contains(&n) { - Ok(OpcodeId::from(OpcodeId::PUSH1.as_u8() + n - 1)) + let op = OpcodeId::from(OpcodeId::PUSH0.as_u8().checked_add(n).unwrap_or_default()); + + if op.is_push() { + Ok(op) } else { Err(Error::InvalidOpConversion) } @@ -850,7 +862,7 @@ impl OpcodeId { /// If operation has postfix returns it, otherwise None. pub fn postfix(&self) -> Option<u8> { if self.is_push() { - Some(self.as_u8() - OpcodeId::PUSH1.as_u8() + 1) + Some(self.as_u8() - OpcodeId::PUSH0.as_u8()) } else if self.is_dup() { Some(self.as_u8() - OpcodeId::DUP1.as_u8() + 1) } else if self.is_swap() { @@ -863,10 +875,10 @@ impl OpcodeId { } /// Returns number of bytes used by immediate data. This is > 0 only for - /// push opcodes. + /// `PUSH1` .. `PUSH32` opcodes. pub fn data_len(&self) -> usize { - if self.is_push() { - (self.as_u8() - OpcodeId::PUSH1.as_u8() + 1) as usize + if self.is_push_with_data() { + (self.as_u8() - OpcodeId::PUSH0.as_u8()) as usize } else { 0 } @@ -936,6 +948,7 @@ impl From<u8> for OpcodeId { 0x58u8 => OpcodeId::PC, 0x59u8 => OpcodeId::MSIZE, 0x5bu8 => OpcodeId::JUMPDEST, + 0x5fu8 => OpcodeId::PUSH0, 0x60u8 => OpcodeId::PUSH1, 0x61u8 => OpcodeId::PUSH2, 0x62u8 => OpcodeId::PUSH3, @@ -1089,6 +1102,7 @@ impl FromStr for OpcodeId { "PC" => OpcodeId::PC, "MSIZE" => OpcodeId::MSIZE, "JUMPDEST" => OpcodeId::JUMPDEST, + "PUSH0" => OpcodeId::PUSH0, "PUSH1" => OpcodeId::PUSH1, "PUSH2" => OpcodeId::PUSH2, "PUSH3" => OpcodeId::PUSH3, @@ -1156,7 +1170,6 @@ impl FromStr for OpcodeId { "RETURN" => OpcodeId::RETURN, "REVERT" => OpcodeId::REVERT, "INVALID" => OpcodeId::INVALID(0xfe), - "PUSH0" => OpcodeId::INVALID(0x5f), "SHA3" | "KECCAK256" => OpcodeId::SHA3, "ADDRESS" => OpcodeId::ADDRESS, "BALANCE" => OpcodeId::BALANCE, @@ -1234,20 +1247,18 @@ mod opcode_ids_tests { #[test] fn push_n() { + assert!(matches!(OpcodeId::push_n(0), Ok(OpcodeId::PUSH0))); assert!(matches!(OpcodeId::push_n(1), Ok(OpcodeId::PUSH1))); assert!(matches!(OpcodeId::push_n(10), Ok(OpcodeId::PUSH10))); assert!(matches!( OpcodeId::push_n(100), Err(Error::InvalidOpConversion) )); - assert!(matches!( - OpcodeId::push_n(0), - Err(Error::InvalidOpConversion) - )); } #[test] fn postfix() { + assert_eq!(OpcodeId::PUSH0.postfix(), Some(0)); assert_eq!(OpcodeId::PUSH1.postfix(), Some(1)); assert_eq!(OpcodeId::PUSH10.postfix(), Some(10)); assert_eq!(OpcodeId::LOG2.postfix(), Some(2)); @@ -1256,6 +1267,7 @@ mod opcode_ids_tests { #[test] fn data_len() { + assert_eq!(OpcodeId::PUSH0.data_len(), 0); assert_eq!(OpcodeId::PUSH1.data_len(), 1); assert_eq!(OpcodeId::PUSH10.data_len(), 10); assert_eq!(OpcodeId::LOG2.data_len(), 0); diff --git a/eth-types/src/geth_types.rs b/eth-types/src/geth_types.rs index 0b16ab307d..ff12b907aa 100644 --- a/eth-types/src/geth_types.rs +++ b/eth-types/src/geth_types.rs @@ -3,8 +3,8 @@ use crate::{ keccak256, sign_types::{biguint_to_32bytes_le, ct_option_ok_or, recover_pk, SignData, SECP256K1_Q}, - AccessList, Address, Block, Bytes, Error, GethExecTrace, Hash, ToBigEndian, ToLittleEndian, - ToWord, Word, U64, + AccessList, Address, Block, Bytecode, Bytes, Error, GethExecTrace, Hash, ToBigEndian, + ToLittleEndian, ToWord, Word, U64, }; use ethers_core::{ types::{transaction::response, NameOrAddress, TransactionRequest}, @@ -44,6 +44,28 @@ impl Account { && self.code.is_empty() && self.storage.is_empty() } + + /// Generate an account that is either empty or has code, balance, and non-zero nonce + pub fn mock_code_balance(code: Bytecode) -> Self { + let is_empty = code.codesize() == 0; + Self { + address: Address::repeat_byte(0xff), + code: code.into(), + nonce: U64::from(!is_empty as u64), + balance: if is_empty { 0 } else { 0xdeadbeefu64 }.into(), + ..Default::default() + } + } + + /// Generate an account that has 100 ETH + pub fn mock_100_ether(code: Bytecode) -> Self { + Self { + address: Address::repeat_byte(0xfe), + balance: Word::from(10).pow(20.into()), + code: code.into(), + ..Default::default() + } + } } fn serde_account_storage<S: Serializer>( @@ -158,8 +180,8 @@ impl From<&Transaction> for crate::Transaction { gas: tx.gas_limit.to_word(), value: tx.value, gas_price: Some(tx.gas_price), - max_priority_fee_per_gas: Some(tx.gas_fee_cap), - max_fee_per_gas: Some(tx.gas_tip_cap), + max_priority_fee_per_gas: Some(tx.gas_tip_cap), + max_fee_per_gas: Some(tx.gas_fee_cap), input: tx.call_data.clone(), access_list: tx.access_list.clone(), v: tx.v.into(), @@ -179,8 +201,8 @@ impl From<&crate::Transaction> for Transaction { gas_limit: tx.gas.as_u64().into(), value: tx.value, gas_price: tx.gas_price.unwrap_or_default(), - gas_fee_cap: tx.max_priority_fee_per_gas.unwrap_or_default(), - gas_tip_cap: tx.max_fee_per_gas.unwrap_or_default(), + gas_tip_cap: tx.max_priority_fee_per_gas.unwrap_or_default(), + gas_fee_cap: tx.max_fee_per_gas.unwrap_or_default(), call_data: tx.input.clone(), access_list: tx.access_list.clone(), v: tx.v.as_u64(), @@ -249,11 +271,11 @@ impl Transaction { .fold(0, |acc, byte| acc + if *byte == 0 { 4 } else { 16 }) } - /// Get the "to" address. If `to` is None then zero adddress + /// Get the "to" address. If `to` is None then zero address pub fn to_or_zero(&self) -> Address { self.to.unwrap_or_default() } - /// Get the "to" address. If `to` is None then compute contract adddress + /// Get the "to" address. If `to` is None then compute contract address pub fn to_or_contract_addr(&self) -> Address { self.to .unwrap_or_else(|| get_contract_address(self.from, self.nonce.to_word())) @@ -288,6 +310,10 @@ impl Transaction { ..response::Transaction::default() } } + /// Convinient method for gas limit + pub fn gas(&self) -> u64 { + self.gas_limit.as_u64() + } } /// GethData is a type that contains all the information of a Ethereum block @@ -314,7 +340,9 @@ impl GethData { assert_eq!(Word::from(wallet.chain_id()), self.chain_id); let geth_tx: Transaction = (&*tx).into(); let req: TransactionRequest = (&geth_tx).into(); - let sig = wallet.sign_transaction_sync(&req.chain_id(self.chain_id.as_u64()).into()); + let sig = wallet + .sign_transaction_sync(&req.chain_id(self.chain_id.as_u64()).into()) + .unwrap(); tx.v = U64::from(sig.v); tx.r = sig.r; tx.s = sig.s; diff --git a/gadgets/src/binary_number.rs b/gadgets/src/binary_number.rs index cb5099504b..788074c5fd 100644 --- a/gadgets/src/binary_number.rs +++ b/gadgets/src/binary_number.rs @@ -59,6 +59,15 @@ where } } + /// Return the constant that represents a given value. To be compared with the value expression. + pub fn constant_expr<F: Field>(&self, value: T) -> Expression<F> { + let f = value.as_bits().iter().fold( + F::ZERO, + |result, bit| if *bit { F::ONE } else { F::ZERO } + result * F::from(2), + ); + Expression::Constant(f) + } + /// Returns a function that can evaluate to a binary expression, that /// evaluates to 1 if value is equal to value as bits. The returned /// expression is of degree N. diff --git a/gadgets/src/util.rs b/gadgets/src/util.rs index ae455d964e..dce54c9c35 100644 --- a/gadgets/src/util.rs +++ b/gadgets/src/util.rs @@ -138,6 +138,61 @@ pub mod select { } } +/// Returns the power of a number using straightforward multiplications +pub mod pow { + use crate::util::Expr; + use eth_types::Field; + use halo2_proofs::plonk::Expression; + + use super::Scalar; + + /// Raises `value` to the power of `exponent` + pub fn expr<F: Field>(value: Expression<F>, exponent: usize) -> Expression<F> { + let mut result = 1.expr(); + for _ in 0..exponent { + result = result * value.expr(); + } + result + } + + /// Raises `value` to the power of `exponent` + pub fn value<F: Field>(value: F, exponent: usize) -> F { + let mut result = 1.scalar(); + for _ in 0..exponent { + result *= value; + } + result + } +} + +/// Trait that implements functionality to get a scalar from +/// commonly used types. +pub trait Scalar<F: Field> { + /// Returns a scalar for the type. + fn scalar(&self) -> F; +} + +/// Implementation trait `Scalar` for type able to be casted to u64 +#[macro_export] +macro_rules! impl_scalar { + ($type:ty) => { + impl<F: eth_types::Field> $crate::util::Scalar<F> for $type { + #[inline] + fn scalar(&self) -> F { + F::from(*self as u64) + } + } + }; + ($type:ty, $method:path) => { + impl<F: eth_types::Field> $crate::util::Scalar<F> for $type { + #[inline] + fn scalar(&self) -> F { + F::from($method(self) as u64) + } + } + }; +} + /// Trait that implements functionality to get a constant expression from /// commonly used types. pub trait Expr<F: Field> { @@ -149,6 +204,7 @@ pub trait Expr<F: Field> { #[macro_export] macro_rules! impl_expr { ($type:ty) => { + $crate::impl_scalar!($type); impl<F: eth_types::Field> $crate::util::Expr<F> for $type { #[inline] fn expr(&self) -> Expression<F> { @@ -157,6 +213,7 @@ macro_rules! impl_expr { } }; ($type:ty, $method:path) => { + $crate::impl_scalar!($type, $method); impl<F: eth_types::Field> $crate::util::Expr<F> for $type { #[inline] fn expr(&self) -> Expression<F> { @@ -170,28 +227,41 @@ impl_expr!(bool); impl_expr!(u8); impl_expr!(u64); impl_expr!(usize); +impl_expr!(isize); impl_expr!(OpcodeId, OpcodeId::as_u8); -impl<F: Field> Expr<F> for Expression<F> { +impl<F: Field> Scalar<F> for i32 { + #[inline] + fn scalar(&self) -> F { + F::from(self.unsigned_abs() as u64) * if self.is_negative() { -F::ONE } else { F::ONE } + } +} + +impl<F: Field> Scalar<F> for &F { + #[inline] + fn scalar(&self) -> F { + *(*self) + } +} + +impl<F: Field> Expr<F> for i32 { #[inline] fn expr(&self) -> Expression<F> { - self.clone() + Expression::Constant(self.scalar()) } } -impl<F: Field> Expr<F> for &Expression<F> { +impl<F: Field> Expr<F> for Expression<F> { #[inline] fn expr(&self) -> Expression<F> { - (*self).clone() + self.clone() } } -impl<F: Field> Expr<F> for i32 { +impl<F: Field> Expr<F> for &Expression<F> { #[inline] fn expr(&self) -> Expression<F> { - Expression::Constant( - F::from(self.unsigned_abs() as u64) * if self.is_negative() { -F::ONE } else { F::ONE }, - ) + (*self).clone() } } diff --git a/geth-utils/README.md b/geth-utils/README.md index 91e2040dba..f5961c529a 100644 --- a/geth-utils/README.md +++ b/geth-utils/README.md @@ -2,19 +2,6 @@ The module `gethutil` tried to provide identical output from APIs `debug_trace*` of latest `geth` as test vectors for [`zkevm-circuits`](https://github.com/privacy-scaling-explorations/zkevm-circuits). -## Usage - -<!-- ### CLI Usage --> -<!-- TODO: Implement a CLI to consume bytecode and output logs --> - -### Library Usage - -For [`./example/mstore_mload.go`](./example/mstore_mload.go) as an example, it defines bytecode directly by builder `asm`, then write the logs produced by `TraceTx` to stdout. To reproduce the logs, run: - -```bash -go run ./example/mstore_mload.go > ./mstore_mload.json -``` - ### Debugging The execution traces returned by geth omit some information like execution diff --git a/geth-utils/build.rs b/geth-utils/build.rs index 7bf64f596a..396de6484e 100644 --- a/geth-utils/build.rs +++ b/geth-utils/build.rs @@ -26,12 +26,7 @@ fn main() { } // Files the lib depends on that should recompile the lib - let dep_files = vec![ - "./gethutil/asm.go", - "./gethutil/trace.go", - "./gethutil/util.go", - "./go.mod", - ]; + let dep_files = vec!["./gethutil/trace.go", "./go.mod"]; for file in dep_files { println!("cargo:rerun-if-changed={}", file); } diff --git a/geth-utils/example/add_sub.go b/geth-utils/example/add_sub.go deleted file mode 100644 index d58a3e033a..0000000000 --- a/geth-utils/example/add_sub.go +++ /dev/null @@ -1,31 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "os" - - "github.com/ethereum/go-ethereum/common" - - "main/gethutil" -) - -func main() { - address := common.BytesToAddress([]byte{0xff}) - assembly := gethutil.NewAssembly().Add(0xdeadbeef, 0xcafeb0ba).Sub(0xfaceb00c, 0xb0bacafe) - - accounts := map[common.Address]gethutil.Account{address: {Code: assembly.Bytecode()}} - tx := gethutil.Transaction{To: &address, GasLimit: 21100} - - result, err := gethutil.Trace(gethutil.TraceConfig{Accounts: accounts, Transactions: []gethutil.Transaction{tx}}) - if err != nil { - fmt.Fprintf(os.Stderr, "failed to trace tx, err: %v\n", err) - } - - bytes, err := json.MarshalIndent(result[0].StructLogs, "", " ") - if err != nil { - fmt.Fprintf(os.Stderr, "failed to marshal logs, err: %v\n", err) - } - - fmt.Fprintln(os.Stdout, string(bytes)) -} diff --git a/geth-utils/example/msize.go b/geth-utils/example/msize.go deleted file mode 100644 index 9c13f85d76..0000000000 --- a/geth-utils/example/msize.go +++ /dev/null @@ -1,31 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "os" - - "github.com/ethereum/go-ethereum/common" - - "main/gethutil" -) - -func main() { - address := common.BytesToAddress([]byte{0xff}) - assembly := gethutil.NewAssembly().MStore(0x40, 0x80).MSize().Stop() - - accounts := map[common.Address]gethutil.Account{address: {Code: assembly.Bytecode()}} - tx := gethutil.Transaction{To: &address, GasLimit: 21100} - - result, err := gethutil.Trace(gethutil.TraceConfig{Accounts: accounts, Transactions: []gethutil.Transaction{tx}}) - if err != nil { - fmt.Fprintf(os.Stderr, "failed to trace tx, err: %v\n", err) - } - - bytes, err := json.MarshalIndent(result[0].StructLogs, "", " ") - if err != nil { - fmt.Fprintf(os.Stderr, "failed to marshal logs, err: %v\n", err) - } - - fmt.Fprintln(os.Stdout, string(bytes)) -} diff --git a/geth-utils/example/mstore_mload.go b/geth-utils/example/mstore_mload.go deleted file mode 100644 index ecfc6d91b5..0000000000 --- a/geth-utils/example/mstore_mload.go +++ /dev/null @@ -1,31 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "os" - - "github.com/ethereum/go-ethereum/common" - - "main/gethutil" -) - -func main() { - address := common.BytesToAddress([]byte{0xff}) - assembly := gethutil.NewAssembly().MStore(0x40, 0x80).MLoad(0x40) - - accounts := map[common.Address]gethutil.Account{address: {Code: assembly.Bytecode()}} - tx := gethutil.Transaction{To: &address, GasLimit: 21100} - - result, err := gethutil.Trace(gethutil.TraceConfig{Accounts: accounts, Transactions: []gethutil.Transaction{tx}}) - if err != nil { - fmt.Fprintf(os.Stderr, "failed to trace tx, err: %v\n", err) - } - - bytes, err := json.MarshalIndent(result[0].StructLogs, "", " ") - if err != nil { - fmt.Fprintf(os.Stderr, "failed to marshal logs, err: %v\n", err) - } - - fmt.Fprintln(os.Stdout, string(bytes)) -} diff --git a/geth-utils/example/sstore_sload.go b/geth-utils/example/sstore_sload.go deleted file mode 100644 index b3bc8a672e..0000000000 --- a/geth-utils/example/sstore_sload.go +++ /dev/null @@ -1,31 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "os" - - "github.com/ethereum/go-ethereum/common" - - "main/gethutil" -) - -func main() { - address := common.BytesToAddress([]byte{0xff}) - assembly := gethutil.NewAssembly().SStore(0, 0xcafeb0ba).SLoad(0).SStore(0, 0xdeabbeef).SLoad(0) - - accounts := map[common.Address]gethutil.Account{address: {Code: assembly.Bytecode()}} - tx := gethutil.Transaction{To: &address, GasLimit: 46000} - - result, err := gethutil.Trace(gethutil.TraceConfig{Accounts: accounts, Transactions: []gethutil.Transaction{tx}}) - if err != nil { - fmt.Fprintf(os.Stderr, "failed to trace tx, err: %v\n", err) - } - - bytes, err := json.MarshalIndent(result[0].StructLogs, "", " ") - if err != nil { - fmt.Fprintf(os.Stderr, "failed to marshal logs, err: %v\n", err) - } - - fmt.Fprintln(os.Stdout, string(bytes)) -} diff --git a/geth-utils/gethutil/asm.go b/geth-utils/gethutil/asm.go deleted file mode 100644 index b5546f876a..0000000000 --- a/geth-utils/gethutil/asm.go +++ /dev/null @@ -1,231 +0,0 @@ -package gethutil - -import ( - "fmt" - "io" - "math/big" - "strings" - - "github.com/ethereum/go-ethereum/core/vm" -) - -type Asm struct { - bytecode []byte - labelMap map[string]int - pendingLabelsMap map[string][]int -} - -func NewAssembly() *Asm { - return &Asm{ - labelMap: make(map[string]int), - pendingLabelsMap: make(map[string][]int), - } -} - -func (a *Asm) Bytecode() []byte { - if len(a.pendingLabelsMap) > 0 { - pendingLabels := make([]string, 0, len(a.pendingLabelsMap)) - for pendingLabel := range a.pendingLabelsMap { - pendingLabels = append(pendingLabels, pendingLabel) - } - panic(fmt.Sprintf("pending labels are not defined yet: %v", strings.Join(pendingLabels, ", "))) - } - return a.bytecode -} - -func (a *Asm) PrintMnemonics(out io.Writer) { - for idx := 0; idx < len(a.bytecode); { - code := vm.OpCode(a.bytecode[idx]) - if code.IsPush() { - n := int(code) - int(vm.PUSH1) + 1 - fmt.Fprintf(out, "%02d\t%s\t0x%x\n", idx, code.String(), a.bytecode[idx+1:idx+1+n]) - idx += n + 1 - } else { - fmt.Fprintf(out, "%02d\t%s\n", idx, code.String()) - idx++ - } - } -} - -// 0x0 range -func (a *Asm) Stop() *Asm { return a.appendByte(vm.STOP) } -func (a *Asm) Add(v ...interface{}) *Asm { return a.opWithPush(vm.ADD, v...) } -func (a *Asm) Mul(v ...interface{}) *Asm { return a.opWithPush(vm.MUL, v...) } -func (a *Asm) Sub(v ...interface{}) *Asm { return a.opWithPush(vm.SUB, v...) } -func (a *Asm) Div(v ...interface{}) *Asm { return a.opWithPush(vm.DIV, v...) } -func (a *Asm) SDiv(v ...interface{}) *Asm { return a.opWithPush(vm.SDIV, v...) } -func (a *Asm) Mod(v ...interface{}) *Asm { return a.opWithPush(vm.MOD, v...) } -func (a *Asm) SMod(v ...interface{}) *Asm { return a.opWithPush(vm.SMOD, v...) } -func (a *Asm) AddMod(v ...interface{}) *Asm { return a.opWithPush(vm.ADDMOD, v...) } -func (a *Asm) MulMod(v ...interface{}) *Asm { return a.opWithPush(vm.MULMOD, v...) } -func (a *Asm) Exp(v ...interface{}) *Asm { return a.opWithPush(vm.EXP, v...) } -func (a *Asm) SignExtend(v ...interface{}) *Asm { return a.opWithPush(vm.SIGNEXTEND, v...) } - -// 0x10 range -func (a *Asm) Lt(v ...interface{}) *Asm { return a.opWithPush(vm.LT, v...) } -func (a *Asm) Gt(v ...interface{}) *Asm { return a.opWithPush(vm.GT, v...) } -func (a *Asm) SLt(v ...interface{}) *Asm { return a.opWithPush(vm.SLT, v...) } -func (a *Asm) SGt(v ...interface{}) *Asm { return a.opWithPush(vm.SGT, v...) } -func (a *Asm) Eq(v ...interface{}) *Asm { return a.opWithPush(vm.EQ, v...) } -func (a *Asm) IsZero(v ...interface{}) *Asm { return a.opWithPush(vm.ISZERO, v...) } -func (a *Asm) And(v ...interface{}) *Asm { return a.opWithPush(vm.AND, v...) } -func (a *Asm) Or(v ...interface{}) *Asm { return a.opWithPush(vm.OR, v...) } -func (a *Asm) Xor(v ...interface{}) *Asm { return a.opWithPush(vm.XOR, v...) } -func (a *Asm) Not(v ...interface{}) *Asm { return a.opWithPush(vm.NOT, v...) } -func (a *Asm) Byte(v ...interface{}) *Asm { return a.opWithPush(vm.BYTE, v...) } -func (a *Asm) Shl(v ...interface{}) *Asm { return a.opWithPush(vm.SHL, v...) } -func (a *Asm) Shr(v ...interface{}) *Asm { return a.opWithPush(vm.SHR, v...) } -func (a *Asm) Sar(v ...interface{}) *Asm { return a.opWithPush(vm.SAR, v...) } -func (a *Asm) Sha3(v ...interface{}) *Asm { return a.opWithPush(vm.KECCAK256, v...) } - -// 0x30 range -func (a *Asm) Address() *Asm { return a.appendByte(vm.ADDRESS) } -func (a *Asm) Balance(v ...interface{}) *Asm { return a.opWithPush(vm.BALANCE, v...) } -func (a *Asm) Origin() *Asm { return a.appendByte(vm.ORIGIN) } -func (a *Asm) Caller() *Asm { return a.appendByte(vm.CALLER) } -func (a *Asm) CallValue() *Asm { return a.appendByte(vm.CALLVALUE) } -func (a *Asm) CallDataLoad(v ...interface{}) *Asm { return a.opWithPush(vm.CALLDATALOAD, v...) } -func (a *Asm) CallDataSize() *Asm { return a.appendByte(vm.CALLDATASIZE) } -func (a *Asm) CallDataCopy(v ...interface{}) *Asm { return a.opWithPush(vm.CALLDATACOPY, v...) } -func (a *Asm) CodeSize() *Asm { return a.appendByte(vm.CODESIZE) } -func (a *Asm) CodeCopy(v ...interface{}) *Asm { return a.opWithPush(vm.CODECOPY, v...) } -func (a *Asm) GasPrice() *Asm { return a.appendByte(vm.GASPRICE) } -func (a *Asm) ExtCodeSize(v ...interface{}) *Asm { return a.opWithPush(vm.EXTCODESIZE, v...) } -func (a *Asm) ExtCodeCopy(v ...interface{}) *Asm { return a.opWithPush(vm.EXTCODECOPY, v...) } -func (a *Asm) ReturnDataSize() *Asm { return a.appendByte(vm.RETURNDATASIZE) } -func (a *Asm) ReturnDataCopy(v ...interface{}) *Asm { return a.opWithPush(vm.RETURNDATACOPY, v...) } -func (a *Asm) ExtCodeHash(v ...interface{}) *Asm { return a.opWithPush(vm.EXTCODEHASH, v...) } - -// 0x40 range -func (a *Asm) BlockHash(v ...interface{}) *Asm { return a.opWithPush(vm.BLOCKHASH, v...) } -func (a *Asm) Coinbase() *Asm { return a.appendByte(vm.COINBASE) } -func (a *Asm) Timestamp() *Asm { return a.appendByte(vm.TIMESTAMP) } -func (a *Asm) Number() *Asm { return a.appendByte(vm.NUMBER) } -func (a *Asm) Difficulty() *Asm { return a.appendByte(vm.DIFFICULTY) } -func (a *Asm) GasLimit() *Asm { return a.appendByte(vm.GASLIMIT) } -func (a *Asm) ChainID() *Asm { return a.appendByte(vm.CHAINID) } -func (a *Asm) SelfBalance() *Asm { return a.appendByte(vm.SELFBALANCE) } -func (a *Asm) BaseFee() *Asm { return a.appendByte(vm.BASEFEE) } - -// 0x50 range -func (a *Asm) Pop() *Asm { return a.appendByte(vm.POP) } -func (a *Asm) MLoad(v ...interface{}) *Asm { return a.opWithPush(vm.MLOAD, v...) } -func (a *Asm) MStore(v ...interface{}) *Asm { return a.opWithPush(vm.MSTORE, v...) } -func (a *Asm) MStore8(v ...interface{}) *Asm { return a.opWithPush(vm.MSTORE8, v...) } -func (a *Asm) SLoad(v ...interface{}) *Asm { return a.opWithPush(vm.SLOAD, v...) } -func (a *Asm) SStore(v ...interface{}) *Asm { return a.opWithPush(vm.SSTORE, v...) } -func (a *Asm) Jump(label ...string) *Asm { return a.jump(vm.JUMP, label...) } -func (a *Asm) JumpI(label ...string) *Asm { return a.jump(vm.JUMPI, label...) } -func (a *Asm) PC() *Asm { return a.appendByte(vm.PC) } -func (a *Asm) MSize() *Asm { return a.appendByte(vm.MSIZE) } -func (a *Asm) Gas() *Asm { return a.appendByte(vm.GAS) } -func (a *Asm) JumpDest(label ...string) *Asm { return a.jumpDest(label...) } - -// 0x60 range -func (a *Asm) PushX(val interface{}) *Asm { return a.push(val) } -func (a *Asm) DupX(x int) *Asm { - rangeCheck(x, 1, 16, "X") - return a.appendByte(int(vm.DUP1) + x - 1) -} -func (a *Asm) SwapX(x int) *Asm { - rangeCheck(x, 1, 16, "X") - return a.appendByte(int(vm.SWAP1) + x - 1) -} - -// 0xa0 range -func (a *Asm) LogX(x int) *Asm { - rangeCheck(x, 0, 5, "X") - return a.appendByte(int(vm.LOG0) + x) -} - -// 0xf0 range -func (a *Asm) Create(v ...interface{}) *Asm { return a.opWithPush(vm.CREATE, v...) } -func (a *Asm) Call(v ...interface{}) *Asm { return a.opWithPush(vm.CALL, v...) } -func (a *Asm) CallCode(v ...interface{}) *Asm { return a.opWithPush(vm.CALLCODE, v...) } -func (a *Asm) Return(v ...interface{}) *Asm { return a.opWithPush(vm.RETURN, v...) } -func (a *Asm) DelegateCall(v ...interface{}) *Asm { return a.opWithPush(vm.DELEGATECALL, v...) } -func (a *Asm) Create2(v ...interface{}) *Asm { return a.opWithPush(vm.CREATE2, v...) } -func (a *Asm) StaticCall(v ...interface{}) *Asm { return a.opWithPush(vm.STATICCALL, v...) } -func (a *Asm) Revert(v ...interface{}) *Asm { return a.opWithPush(vm.REVERT, v...) } -func (a *Asm) SelfDestruct() *Asm { return a.appendByte(vm.SELFDESTRUCT) } - -func (a *Asm) jump(op vm.OpCode, label ...string) *Asm { - if len(label) > 0 { - rangeCheck(len(label), 1, 1, "len(label)") - - if pos, ok := a.labelMap[label[0]]; ok { - a.PushX(pos) - } else { - a.pendingLabelsMap[label[0]] = append(a.pendingLabelsMap[label[0]], len(a.bytecode)) - a.PushX([]byte{0, 0, 0}) - } - } - - return a.appendByte(op) -} - -func (a *Asm) jumpDest(label ...string) *Asm { - a.appendByte(vm.JUMPDEST) - - if len(label) > 0 { - rangeCheck(len(label), 1, 1, "len(label)") - - if _, ok := a.labelMap[label[0]]; ok { - panic("label already defined") - } - - a.labelMap[label[0]] = len(a.bytecode) - - pos := big.NewInt(int64(len(a.bytecode) - 1)).Bytes() - if len(pos) < 3 { - pos = append(make([]byte, 3-len(pos)), pos...) - } - for _, pendingLabel := range a.pendingLabelsMap[label[0]] { - copy(a.bytecode[pendingLabel+1:pendingLabel+4], pos) - } - - delete(a.pendingLabelsMap, label[0]) - } - - return a -} - -func (a *Asm) opWithPush(op vm.OpCode, v ...interface{}) *Asm { - opPushRangeCheck(op, len(v)) - return a.pushRev(v...).appendByte(op) -} - -func (a *Asm) push(v ...interface{}) *Asm { - for _, v := range v { - bytes := toBytes(v) - - rangeCheck(len(bytes), 1, 32, "len(bytes)") - a.appendByte(int(vm.PUSH1) + len(bytes) - 1) - - for _, b := range bytes { - a.appendByte(b) - } - } - - return a -} - -func (a *Asm) pushRev(v ...interface{}) *Asm { - reverse(v) - return a.push(v...) -} - -func (a *Asm) appendByte(v interface{}) *Asm { - switch v := v.(type) { - case vm.OpCode: - a.bytecode = append(a.bytecode, byte(v)) - case byte: - a.bytecode = append(a.bytecode, v) - case int: - a.bytecode = append(a.bytecode, byte(v)) - default: - panic(fmt.Sprintf("unexpected appendByte type %T", v)) - } - - return a -} diff --git a/geth-utils/gethutil/trace.go b/geth-utils/gethutil/trace.go index d8ddc32114..185df65b0f 100644 --- a/geth-utils/gethutil/trace.go +++ b/geth-utils/gethutil/trace.go @@ -126,6 +126,13 @@ type TraceConfig struct { func newUint64(val uint64) *uint64 { return &val } +func toBigInt(value *hexutil.Big) *big.Int { + if value != nil { + return value.ToInt() + } + return big.NewInt(0) +} + func Trace(config TraceConfig) ([]*ExecutionResult, error) { chainConfig := params.ChainConfig{ ChainID: toBigInt(config.ChainID), @@ -164,16 +171,16 @@ func Trace(config TraceConfig) ([]*ExecutionResult, error) { txAccessList[i].StorageKeys = accessList.StorageKeys } messages[i] = core.Message{ - From: tx.From, - To: tx.To, - Nonce: uint64(tx.Nonce), - Value: toBigInt(tx.Value), - GasLimit: uint64(tx.GasLimit), - GasPrice: toBigInt(tx.GasPrice), - GasFeeCap: toBigInt(tx.GasFeeCap), - GasTipCap: toBigInt(tx.GasTipCap), - Data: tx.CallData, - AccessList: txAccessList, + From: tx.From, + To: tx.To, + Nonce: uint64(tx.Nonce), + Value: toBigInt(tx.Value), + GasLimit: uint64(tx.GasLimit), + GasPrice: toBigInt(tx.GasPrice), + GasFeeCap: toBigInt(tx.GasFeeCap), + GasTipCap: toBigInt(tx.GasTipCap), + Data: tx.CallData, + AccessList: txAccessList, SkipAccountChecks: false, } diff --git a/geth-utils/gethutil/util.go b/geth-utils/gethutil/util.go deleted file mode 100644 index 374c9fa529..0000000000 --- a/geth-utils/gethutil/util.go +++ /dev/null @@ -1,85 +0,0 @@ -package gethutil - -import ( - "fmt" - "math/big" - "unsafe" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/core/vm" - "github.com/holiman/uint256" -) - -var ( - minStackPtrOffset = 3 * unsafe.Sizeof(int(0)) - longonInstructionSet = newLondonInstructionSet() -) - -//go:linkname newLondonInstructionSet github.com/ethereum/go-ethereum/core/vm.newLondonInstructionSet -func newLondonInstructionSet() vm.JumpTable - -func opPushRangeCheck(op vm.OpCode, n int) { - opPtr := unsafe.Pointer(longonInstructionSet[op]) - minStack := *(*int)(unsafe.Pointer(uintptr(opPtr) + minStackPtrOffset)) - rangeCheck(n, 0, minStack, fmt.Sprintf("len(vals) of %s", op.String())) -} - -func rangeCheck(n, l, h int, name string) { - if n < l || n > h { - if l == h { - panic(fmt.Sprintf("%s should be %d, but got %d", name, h, n)) - } else { - panic(fmt.Sprintf("%s should be in range [%d, %d], but got %d", name, l, h, n)) - } - } -} - -func reverse(vals []interface{}) { - for i, j := 0, len(vals)-1; i < j; i, j = i+1, j-1 { - vals[i], vals[j] = vals[j], vals[i] - } -} - -func toBytes(value interface{}) []byte { - var bytes []byte - - switch value := value.(type) { - case string: - u256, err := uint256.FromHex(value) - if err != nil { - panic(err) - } - bytes = u256.Bytes() - case int: - for value > 0 { - bytes = append([]byte{byte(value & 0xff)}, bytes...) - value >>= 8 - } - case []byte: - bytes = value - case common.Address: - bytes = value.Bytes() - case common.Hash: - bytes = value.Bytes() - case *uint256.Int: - bytes = value.Bytes() - case *big.Int: - bytes = value.Bytes() - default: - panic(fmt.Errorf("Unsupported type %T", value)) - } - - if len(bytes) == 0 { - bytes = []byte{0} - } - - return bytes -} - -func toBigInt(value *hexutil.Big) *big.Int { - if value != nil { - return value.ToInt() - } - return big.NewInt(0) -} diff --git a/geth-utils/go.mod b/geth-utils/go.mod index 2892aa855f..8b468f2c19 100644 --- a/geth-utils/go.mod +++ b/geth-utils/go.mod @@ -2,10 +2,7 @@ module main go 1.16 -require ( - github.com/ethereum/go-ethereum v1.11.5 - github.com/holiman/uint256 v1.2.0 -) +require github.com/ethereum/go-ethereum v1.11.5 // Uncomment for debugging // replace github.com/ethereum/go-ethereum => ../../go-ethereum diff --git a/integration-tests/Cargo.toml b/integration-tests/Cargo.toml index 67156dcecc..c0d1300f51 100644 --- a/integration-tests/Cargo.toml +++ b/integration-tests/Cargo.toml @@ -8,12 +8,12 @@ license = "MIT OR Apache-2.0" [dependencies] lazy_static = "1.4" -ethers = { version = "0.17.0", features = ["ethers-solc"] } -serde_json = "1.0.66" +ethers = { version = "2.0.7", features = ["ethers-solc"] } +serde_json = { version = "1.0.66", features = ["unbounded_depth"]} serde = { version = "1.0.130", features = ["derive"] } bus-mapping = { path = "../bus-mapping" , features = ["test"] } eth-types = { path = "../eth-types" } -zkevm-circuits = { path = "../zkevm-circuits", features = ["test"] } +zkevm-circuits = { path = "../zkevm-circuits", features = ["test-circuits"] } tokio = { version = "1.13", features = ["macros", "rt-multi-thread"] } url = "2.2.2" pretty_assertions = "1.0.0" diff --git a/integration-tests/contracts/EXTCODESIZE/EXTCODESIZE100.sol b/integration-tests/contracts/EXTCODESIZE/EXTCODESIZE100.sol new file mode 100644 index 0000000000..96f32cb2eb --- /dev/null +++ b/integration-tests/contracts/EXTCODESIZE/EXTCODESIZE100.sol @@ -0,0 +1,217 @@ +// SPDX-License-Identifier: MIT + +pragma solidity >=0.7.0 <0.9.0; + +contract CheckExtCodeSize100 { + + function checkBatchYul(address[] calldata addresses) external returns (uint256 length) { + uint256 ptr = 68; + uint256 len = addresses.length/100; + uint8 inc = 32; + for (uint256 i=0; i<len; i++) { + assembly { + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + length := extcodesize(calldataload(ptr)) + ptr := add(ptr, inc) + } + } + return length; + } +} diff --git a/integration-tests/contracts/MLOAD/MLOAD.sol b/integration-tests/contracts/MLOAD/MLOAD.sol new file mode 100644 index 0000000000..cca9cb87fd --- /dev/null +++ b/integration-tests/contracts/MLOAD/MLOAD.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: MIT + +pragma solidity >=0.7.0 <0.9.0; + +contract CheckMload { + struct Len { + uint256 l; + } + + function checkBatchYul(Len calldata l) external returns (uint256 r) { + assembly { + let input := calldataload(4) + let len := div(input, 100) + let b := 77 + for { + let i := 0 + } lt(i, len) { + i := add(i, 1) + } { + r := mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(0)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) + } + } + } +} \ No newline at end of file diff --git a/integration-tests/contracts/SDIV/SDIV.sol b/integration-tests/contracts/SDIV/SDIV.sol new file mode 100644 index 0000000000..954ca9458a --- /dev/null +++ b/integration-tests/contracts/SDIV/SDIV.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: MIT + +pragma solidity >=0.7.0 <0.9.0; + +contract CheckSdiv { + struct Len { + uint256 l; + } + + function checkBatchYul(Len calldata l) external returns (uint256 r) { + assembly { + let input := calldataload(4) + let len := div(input, 100) + let b := 77 + for { + let i := 0 + } lt(i, len) { + i := add(i, 1) + } { + r := sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,r)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) + } + } + } +} \ No newline at end of file diff --git a/integration-tests/run.sh b/integration-tests/run.sh index a1f1a8dda9..974af3e14b 100755 --- a/integration-tests/run.sh +++ b/integration-tests/run.sh @@ -1,5 +1,6 @@ #!/bin/sh set -e +set -o xtrace ARG_DEFAULT_SUDO= ARG_DEFAULT_STEPS="setup gendata tests cleanup" diff --git a/integration-tests/src/bin/gen_blockchain_data.rs b/integration-tests/src/bin/gen_blockchain_data.rs index 680b0ab48d..21d74e0a56 100644 --- a/integration-tests/src/bin/gen_blockchain_data.rs +++ b/integration-tests/src/bin/gen_blockchain_data.rs @@ -11,13 +11,14 @@ use ethers::{ middleware::SignerMiddleware, providers::{Middleware, PendingTransaction}, signers::Signer, - solc::Solc, + solc::{CompilerInput, CompilerOutput, EvmVersion, Solc}, }; use integration_tests::{ get_client, get_provider, get_wallet, log_init, CompiledContract, GenDataOutput, CONTRACTS, - CONTRACTS_PATH, + CONTRACTS_PATH, WARN, }; use log::{error, info}; +use serde::de::Deserialize; use std::{collections::HashMap, fs::File, path::Path, sync::Arc, thread::sleep, time::Duration}; async fn deploy<T, M>(prov: Arc<M>, compiled: &CompiledContract, args: T) -> Contract<M> @@ -75,14 +76,46 @@ async fn main() { // Compile contracts info!("Compiling contracts..."); + let solc = Solc::default(); + info!("Solc version {}", solc.version().expect("version works")); let mut contracts = HashMap::new(); for (name, contract_path) in CONTRACTS { let path_sol = Path::new(CONTRACTS_PATH).join(contract_path); - let compiled = Solc::default() - .compile_source(&path_sol) - .unwrap_or_else(|_| panic!("solc compile error {:?}", path_sol)); - if !compiled.errors.is_empty() { - panic!("Errors compiling {:?}:\n{:#?}", &path_sol, compiled.errors) + let inputs = CompilerInput::new(&path_sol).expect("Compile success"); + // ethers-solc: explicitly indicate the EvmVersion that corresponds to the zkevm circuit's + // supported Upgrade, e.g. `London/Shanghai/...` specifications. + let input = inputs + .clone() + .first_mut() + .expect("first exists") + .clone() + .evm_version(EvmVersion::London); + + // compilation will either fail with Err variant or return Ok(CompilerOutput) + // which may contain Errors or Warnings + let output = solc.compile_output(&input).unwrap(); + let mut deserializer: serde_json::Deserializer<serde_json::de::SliceRead<'_>> = + serde_json::Deserializer::from_slice(&output); + // The contracts to test the worst-case usage of certain opcodes, such as SDIV, MLOAD, and + // EXTCODESIZE, generate big JSON compilation outputs. We disable the recursion limit to + // avoid parsing failure. + deserializer.disable_recursion_limit(); + let compiled = match CompilerOutput::deserialize(&mut deserializer) { + Err(error) => { + panic!("COMPILATION ERROR {:?}\n{:?}", &path_sol, error); + } + // CompilationOutput is succesfully created (might contain Errors or Warnings) + Ok(output) => { + info!("COMPILATION OK: {:?}", name); + output + } + }; + + if compiled.has_error() || compiled.has_warning(WARN) { + panic!( + "... but CompilerOutput contains errors/warnings: {:?}:\n{:#?}", + &path_sol, compiled.errors + ); } let contract = compiled @@ -199,6 +232,53 @@ async fn main() { (block_num.as_u64(), contract.address()), ); + // Deploy smart contracts for worst case block benches + // + + // CheckMload + let contract = deploy( + prov_wallet0.clone(), + contracts.get("CheckMload").expect("contract not found"), + (), + ) + .await; + let block_num = prov.get_block_number().await.expect("cannot get block_num"); + blocks.insert("Deploy CheckMload".to_string(), block_num.as_u64()); + deployments.insert( + "CheckMload".to_string(), + (block_num.as_u64(), contract.address()), + ); + + // CheckSdiv + let contract = deploy( + prov_wallet0.clone(), + contracts.get("CheckSdiv").expect("contract not found"), + (), + ) + .await; + let block_num = prov.get_block_number().await.expect("cannot get block_num"); + blocks.insert("Deploy CheckSdiv".to_string(), block_num.as_u64()); + deployments.insert( + "CheckSdiv".to_string(), + (block_num.as_u64(), contract.address()), + ); + + // CheckExtCodeSize100 + let contract = deploy( + prov_wallet0.clone(), + contracts + .get("CheckExtCodeSize100") + .expect("contract not found"), + (), + ) + .await; + let block_num = prov.get_block_number().await.expect("cannot get block_num"); + blocks.insert("Deploy CheckExtCodeSize100".to_string(), block_num.as_u64()); + deployments.insert( + "CheckExtCodeSize100".to_string(), + (block_num.as_u64(), contract.address()), + ); + // ETH transfers: Generate a block with multiple transfers // diff --git a/integration-tests/src/integration_test_circuits.rs b/integration-tests/src/integration_test_circuits.rs index ba2d2c8090..5f7b2d6876 100644 --- a/integration-tests/src/integration_test_circuits.rs +++ b/integration-tests/src/integration_test_circuits.rs @@ -63,7 +63,7 @@ const MAX_EVM_ROWS: usize = 10000; /// MAX_EXP_STEPS const MAX_EXP_STEPS: usize = 1000; -const MAX_KECCAK_ROWS: usize = 15000; +const MAX_KECCAK_ROWS: usize = 38000; const CIRCUITS_PARAMS: FixedCParams = FixedCParams { max_rws: MAX_RWS, diff --git a/integration-tests/src/lib.rs b/integration-tests/src/lib.rs index 5eeedf6a6d..dc49b6be4b 100644 --- a/integration-tests/src/lib.rs +++ b/integration-tests/src/lib.rs @@ -27,6 +27,14 @@ use url::Url; pub const CHAIN_ID: u64 = 1337; /// Path to the test contracts pub const CONTRACTS_PATH: &str = "contracts"; +/// Solidity compilation warnings to ignore (by error code) +/// 2018: Warning - "Function state mutability can be restricted to pure" +/// 5667: Warning - "Unused function parameter. Remove or comment out the +/// variable name to silence this warning." +/// For smart contracts that are optimized for worst case block generation, we want to allow +/// contracts that do not interfere with state, without setting state mutability to view. otherwise +/// compiler optimizations will not allow recursive execution of targeted opcodes +pub const WARN: &[u64] = &[2018, 5667]; /// List of contracts as (ContractName, ContractSolidityFile) pub const CONTRACTS: &[(&str, &str)] = &[ ("Greeter", "greeter/Greeter.sol"), @@ -34,6 +42,10 @@ pub const CONTRACTS: &[(&str, &str)] = &[ "OpenZeppelinERC20TestToken", "ERC20/OpenZeppelinERC20TestToken.sol", ), + // Contracts to test worst-case usage of opcodes. + ("CheckMload", "MLOAD/MLOAD.sol"), + ("CheckExtCodeSize100", "EXTCODESIZE/EXTCODESIZE100.sol"), + ("CheckSdiv", "SDIV/SDIV.sol"), ]; /// Path to gen_blockchain_data output file pub const GENDATA_OUTPUT_PATH: &str = "gendata_output.json"; diff --git a/mock/Cargo.toml b/mock/Cargo.toml index 406341ab7d..a2df811abb 100644 --- a/mock/Cargo.toml +++ b/mock/Cargo.toml @@ -10,7 +10,7 @@ eth-types = { path = "../eth-types" } external-tracer = { path = "../external-tracer" } lazy_static = "1.4" itertools = "0.10.3" -ethers-signers = "0.17.0" -ethers-core = "0.17.0" +ethers-signers = "2.0.7" +ethers-core = "2.0.7" rand_chacha = "0.3" rand = "0.8" diff --git a/mock/src/block.rs b/mock/src/block.rs index 1959421408..1f52109b8f 100644 --- a/mock/src/block.rs +++ b/mock/src/block.rs @@ -109,6 +109,8 @@ impl From<MockBlock> for Block<Transaction> { .collect::<Vec<Transaction>>(), size: Some(mock.size), other: OtherFields::default(), + withdrawals_root: None, + withdrawals: None, } } } @@ -141,6 +143,8 @@ impl From<MockBlock> for Block<()> { transactions: vec![], size: Some(mock.size), other: OtherFields::default(), + withdrawals_root: None, + withdrawals: None, } } } diff --git a/mock/src/lib.rs b/mock/src/lib.rs index ebdc84f528..3022465ea0 100644 --- a/mock/src/lib.rs +++ b/mock/src/lib.rs @@ -17,6 +17,9 @@ pub use sha3::Sha3CodeGen; pub use test_ctx::TestContext; pub use transaction::{AddrOrWallet, MockTransaction, CORRECT_MOCK_TXS}; +/// Mock block gas limit +pub const MOCK_BLOCK_GAS_LIMIT: u64 = 10_000_000_000_000_000; + lazy_static! { /// Mock 1 ETH pub static ref MOCK_1_ETH: Word = eth(1); diff --git a/mock/src/transaction.rs b/mock/src/transaction.rs index fe4b9ad44d..d8637c227a 100644 --- a/mock/src/transaction.rs +++ b/mock/src/transaction.rs @@ -325,7 +325,8 @@ impl MockTransaction { .from .as_wallet() .with_chain_id(self.chain_id.low_u64()) - .sign_transaction_sync(&tx.into()); + .sign_transaction_sync(&tx.into()) + .unwrap(); // Set sig parameters self.sig_data((sig.v, sig.r, sig.s)); } diff --git a/mpt-witness-generator/.gitignore b/mpt-witness-generator/.gitignore new file mode 100644 index 0000000000..2fc01ebc1c --- /dev/null +++ b/mpt-witness-generator/.gitignore @@ -0,0 +1,7 @@ +rust_call/target +.DS_Store +.vscode +mpt-witness-generator +mpt +generated_witnesses +rust_call/proof.json diff --git a/mpt-witness-generator/README.md b/mpt-witness-generator/README.md new file mode 100644 index 0000000000..064fede2a3 --- /dev/null +++ b/mpt-witness-generator/README.md @@ -0,0 +1,124 @@ +# Merkle Patricia Trie witness generator + +This project aims to prepare witness generator for Merkle Patricia Trie circuit which is part of +[zkevm-circuits](https://github.com/appliedzkp/zkevm-circuits). + +It is based on [geth](https://github.com/ethereum/go-ethereum). +It takes `eth_getProof` output and it transforms it into the MPT circuit witness. + +MPT circuit checks that the modification of the trie state happened correctly. + +Let us assume there are two proofs (as returned by `eth getProof`): + +- A proof that there exists value `val1` at key `key1` for address `addr` in the state trie with root `root1`. +- A proof that there exists value `val2` at key `key1` for address `addr` in the state trie with root `root2`. + +The circuit checks the transition from `val1` to `val2` at `key1` that led to the change +of trie root from `root1` to `root2`. + +For this reason, there are two parallel proofs for each trie modification. +There is `S` (as `State`) proof which presents the state of the trie +before the modification. And there is `C` (as `Change`) proof which presents the state +of the trie after modification. + +An example of `eth_getProof` output is given below: + +``` +[248 81 128 128 128 160 32 34 39 131 73 65 47 37 211 142 206 231 172 16 11 203 33 107 30 7 213 226 2 174 55 216 4 117 220 10 186 68 128 128 128 128 128 128 128 160 55 235 85 86 230 197 53 159 28 141 120 87 82 57 4 132 185 12 24 158 142 210 106 188 12 87 179 231 52 16 126 229 128 128 128 128 128] +[226 160 59 138 106 70 105 186 37 13 38 205 122 69 158 202 157 33 95 131 7 227 58 235 229 3 121 188 90 54 23 236 52 68 1] +``` + +The first element of the proof is a branch containing two children. The second element of the proof is +a storage leaf contained in the branch (from the first proof element). + +To simplify the MPT circuit, the `eth_getProof` elements are not directly used as rows. +Instead, the rows are prepared as: + +``` +[1 0 1 0 248 81 0 248 81 0 11 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] +[0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] +[0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] +[0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] +[0 160 32 34 39 131 73 65 47 37 211 142 206 231 172 16 11 203 33 107 30 7 213 226 2 174 55 216 4 117 220 10 186 68 0 160 32 34 39 131 73 65 47 37 211 142 206 231 172 16 11 203 33 107 30 7 213 226 2 174 55 216 4 117 220 10 186 68 1] +[0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] +[0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] +[0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] +[0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] +[0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] +[0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] +[0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] +[0 160 55 235 85 86 230 197 53 159 28 141 120 87 82 57 4 132 185 12 24 158 142 210 106 188 12 87 179 231 52 16 126 229 0 160 88 197 127 237 244 146 28 57 104 36 96 69 159 84 254 170 28 196 41 183 253 107 213 32 170 141 111 191 30 100 117 55 1] +[0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] +[0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] +[0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] +[0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] +[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16] +[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17] +[226 160 59 138 106 70 105 186 37 13 38 205 122 69 158 202 157 33 95 131 7 227 58 235 229 3 121 188 90 54 23 236 52 68 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2] +[1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13] +[226 160 59 138 106 70 105 186 37 13 38 205 122 69 158 202 157 33 95 131 7 227 58 235 229 3 121 188 90 54 23 236 52 68 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3] +[17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14] +[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15] +[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19] +``` + +... + +<!-- +What is changed compared to geth: + * Some statedb and trie methods are made public to enable accessing internal structures. + --> + +## Generate witnesses + +To generate witnesses for MPT circuit, go into witness folder and execute + +``` +go test gen_witness_from_infura_blockchain_test.go prepare_witness.go leaf.go extension_node.go modified_extension_node.go nodes.go test_tools.go branch.go util.go +``` + +to generate the tests that use Infura blockchain. + +To generate the tests that use a local blockchain you need a local `geth`. You would +need to run something like: +``` +geth --dev --http --ipcpath ~/Library/Ethereum/geth.ipc + +``` +The local `geth` is used to generate some tests that have a small number of accounts so that +these accounts appear in the first or second level of the trie. You might need to remove the +database if you already have some accounts: + +``` +geth removedb +``` + +And to generate the tests: + +``` +go test gen_witness_from_local_blockchain_test.go prepare_witness.go leaf.go extension_node.go modified_extension_node.go nodes.go test_tools.go branch.go util.go +``` + +The witness files will appear in generated_witnesses folder. + +## Calling from Rust + +Build: + +``` +go build -buildmode=c-archive -o libmpt.a witness_gen_wrapper.go +``` + +Copy libmpt.a and libmpt.h to rust_call/build: + +``` +mv libmpt.* rust_call/build +``` + +Note: to avoid the problem described [](https://github.com/golang/go/issues/42459), +the following has been set in rust_call/.cargo/config: + +``` +[build] +rustflags = ["-C", "link-args=-framework CoreFoundation -framework Security"] +``` diff --git a/mpt-witness-generator/go.mod b/mpt-witness-generator/go.mod new file mode 100644 index 0000000000..e7a910f810 --- /dev/null +++ b/mpt-witness-generator/go.mod @@ -0,0 +1,10 @@ +module github.com/privacy-scaling-explorations/mpt-witness-generator + +go 1.16 + +require ( + github.com/VictoriaMetrics/fastcache v1.6.0 // indirect + github.com/ethereum/go-ethereum v1.10.8 // indirect + github.com/holiman/uint256 v1.2.0 // indirect + golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 // indirect +) diff --git a/mpt-witness-generator/go.sum b/mpt-witness-generator/go.sum new file mode 100644 index 0000000000..5a8c30548f --- /dev/null +++ b/mpt-witness-generator/go.sum @@ -0,0 +1,578 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigtable v1.2.0/go.mod h1:JcVAOl45lrTmQfLj7T6TxyMzIN/3FGGcFm+2xVAli2o= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= +github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= +github.com/Azure/azure-storage-blob-go v0.7.0/go.mod h1:f9YQKtsG1nMisotuTPpO0tjNuEjKRYAcJU8/ydDI++4= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8= +github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/VictoriaMetrics/fastcache v1.6.0 h1:C/3Oi3EiBCqufydp1neRZkqcwmEiuRT9c3fqvvgKm5o= +github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= +github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0= +github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo= +github.com/aws/aws-sdk-go-v2/config v1.1.1/go.mod h1:0XsVy9lBI/BCXm+2Tuvt39YmdHwS5unDQmxZOYe8F5Y= +github.com/aws/aws-sdk-go-v2/credentials v1.1.1/go.mod h1:mM2iIjwl7LULWtS6JCACyInboHirisUUdkBPoTHMOUo= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2/go.mod h1:3hGg3PpiEjHnrkrlasTfxFqUsZ2GCk/fMUn4CbKgSkM= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2/go.mod h1:45MfaXZ0cNbeuT0KQ1XJylq8A6+OpVV2E5kvY/Kq+u8= +github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1/go.mod h1:rLiOUrPLW/Er5kRcQ7NkwbjlijluLsrIbu/iyl35RO4= +github.com/aws/aws-sdk-go-v2/service/sso v1.1.1/go.mod h1:SuZJxklHxLAXgLTc1iFXbEWkXs7QRTQpCLGaKIprQW0= +github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxqTCJGUfYTWXrrBwkq736bM= +github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= +github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= +github.com/btcsuite/btcd v0.20.1-beta h1:Ik4hyJqN8Jfyv3S4AGBOmyouMsYE3EdYODkMbQjwPGw= +github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= +github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= +github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= +github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= +github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= +github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304= +github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= +github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= +github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= +github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea h1:j4317fAZh7X6GqbFowYdYdI0L9bwxL07jyPZIdepyZ0= +github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= +github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= +github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dlclark/regexp2 v1.2.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/dop251/goja v0.0.0-20200721192441-a695b0cdd498/go.mod h1:Mw6PkjjMXWbTj+nnj4s3QPXq1jaT0s5pC0iFD4+BOAA= +github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= +github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/ethereum/go-ethereum v1.10.8 h1:0UP5WUR8hh46ffbjJV7PK499+uGEyasRIfffS0vy06o= +github.com/ethereum/go-ethereum v1.10.8/go.mod h1:pJNuIUYfX5+JKzSD/BTdNsvJSZ1TJqmz0dVyXMAbf6M= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= +github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= +github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= +github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-ole/go-ole v1.2.1 h1:2lOsA72HgjxAuMlKpFiCbHTvu44PIVkZ5hqm3RSdI/E= +github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-sourcemap/sourcemap v2.1.2+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= +github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.5/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/graph-gophers/graphql-go v0.0.0-20201113091052-beb923fada29/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= +github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= +github.com/holiman/uint256 v1.2.0 h1:gpSYcPLWGv4sG43I2mVLiDZCNDh/EpGjSk8tmtxitHM= +github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huin/goupnp v1.0.2/go.mod h1:0dxJBVBHqTMjIUMkESDTNgOOx/Mw5wYIfyFmdzSamkM= +github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY= +github.com/influxdata/influxdb v1.8.3/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI= +github.com/influxdata/influxdb-client-go/v2 v2.4.0/go.mod h1:vLNHdxTJkIf2mSLvGrpj8TCcISApPoXkaxP8g9uRlW8= +github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk= +github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE= +github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19ybifQhZoQNF5D8= +github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE= +github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= +github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po= +github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= +github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0 h1:TDTW5Yz1mjftljbcKqRcrYhd4XeOoI98t+9HbQbYf7g= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= +github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= +github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= +github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= +github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= +github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= +github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= +github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= +github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.0.3-0.20180606204148-bd9c31933947/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE= +github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= +github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= +github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/tsdb v0.7.1 h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= +github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= +github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= +github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/syndtr/goleveldb v1.0.1-0.20210305035536-64b5b1c73954 h1:xQdMZ1WLrgkkvOZ/LDQxjVxMLdby7osSh4ZEVa5sIjs= +github.com/syndtr/goleveldb v1.0.1-0.20210305035536-64b5b1c73954/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM= +github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= +github.com/tklauser/go-sysconf v0.3.5 h1:uu3Xl4nkLzQfXNsWn15rPc/HQCJKObbt1dKJeWp3vU4= +github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= +github.com/tklauser/numcpus v0.2.2 h1:oyhllyrScuYI6g+h/zUvNXNp1wy7x8qQy3t/piefldA= +github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= +github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= +github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= +github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 h1:It14KIkyBFYkHkwZ7k45minvA9aorojkyjGk9KJ5B/w= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912 h1:uCLL3g5wH2xjxVREVuAbP9JM5PPKjRbXKRa6IBjkzmU= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200108203644-89082a384178/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= +gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= +gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/mpt-witness-generator/oracle/apitypes.go b/mpt-witness-generator/oracle/apitypes.go new file mode 100644 index 0000000000..7459fd9b05 --- /dev/null +++ b/mpt-witness-generator/oracle/apitypes.go @@ -0,0 +1,153 @@ +package oracle + +import ( + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core/types" +) + +// SendTxArgs represents the arguments to submit a transaction +// This struct is identical to ethapi.TransactionArgs, except for the usage of +// common.MixedcaseAddress in From and To +type SendTxArgs struct { + From common.MixedcaseAddress `json:"from"` + To *common.MixedcaseAddress `json:"to"` + Gas hexutil.Uint64 `json:"gas"` + GasPrice *hexutil.Big `json:"gasPrice"` + MaxFeePerGas *hexutil.Big `json:"maxFeePerGas"` + MaxPriorityFeePerGas *hexutil.Big `json:"maxPriorityFeePerGas"` + Value hexutil.Big `json:"value"` + Nonce hexutil.Uint64 `json:"nonce"` + + // We accept "data" and "input" for backwards-compatibility reasons. + // "input" is the newer name and should be preferred by clients. + // Issue detail: https://github.com/ethereum/go-ethereum/issues/15628 + Data *hexutil.Bytes `json:"data"` + Input *hexutil.Bytes `json:"input,omitempty"` + + // For non-legacy transactions + AccessList *types.AccessList `json:"accessList,omitempty"` + ChainID *hexutil.Big `json:"chainId,omitempty"` + + // Signature values + V *hexutil.Big `json:"v" gencodec:"required"` + R *hexutil.Big `json:"r" gencodec:"required"` + S *hexutil.Big `json:"s" gencodec:"required"` +} + +type Header struct { + ParentHash *common.Hash `json:"parentHash" gencodec:"required"` + UncleHash *common.Hash `json:"sha3Uncles" gencodec:"required"` + Coinbase *common.Address `json:"miner" gencodec:"required"` + Root *common.Hash `json:"stateRoot" gencodec:"required"` + TxHash *common.Hash `json:"transactionsRoot" gencodec:"required"` + ReceiptHash *common.Hash `json:"receiptsRoot" gencodec:"required"` + Bloom *types.Bloom `json:"logsBloom" gencodec:"required"` + Difficulty *hexutil.Big `json:"difficulty" gencodec:"required"` + Number *hexutil.Big `json:"number" gencodec:"required"` + GasLimit *hexutil.Uint64 `json:"gasLimit" gencodec:"required"` + GasUsed *hexutil.Uint64 `json:"gasUsed" gencodec:"required"` + Time *hexutil.Uint64 `json:"timestamp" gencodec:"required"` + Extra *hexutil.Bytes `json:"extraData" gencodec:"required"` + MixDigest *common.Hash `json:"mixHash"` + Nonce *types.BlockNonce `json:"nonce"` + BaseFee *hexutil.Big `json:"baseFeePerGas" rlp:"optional"` + // transactions + Transactions []SendTxArgs `json:"transactions"` +} + +func (dec *Header) ToHeader() types.Header { + var h types.Header + h.ParentHash = *dec.ParentHash + h.UncleHash = *dec.UncleHash + h.Coinbase = *dec.Coinbase + h.Root = *dec.Root + h.TxHash = *dec.TxHash + h.ReceiptHash = *dec.ReceiptHash + h.Bloom = *dec.Bloom + h.Difficulty = (*big.Int)(dec.Difficulty) + h.Number = (*big.Int)(dec.Number) + h.GasLimit = uint64(*dec.GasLimit) + h.GasUsed = uint64(*dec.GasUsed) + h.Time = uint64(*dec.Time) + h.Extra = *dec.Extra + if dec.MixDigest != nil { + h.MixDigest = *dec.MixDigest + } + if dec.Nonce != nil { + h.Nonce = *dec.Nonce + } + if dec.BaseFee != nil { + h.BaseFee = (*big.Int)(dec.BaseFee) + } + return h +} + +// ToTransaction converts the arguments to a transaction. +func (args *SendTxArgs) ToTransaction() *types.Transaction { + // Add the To-field, if specified + var to *common.Address + if args.To != nil { + dstAddr := args.To.Address() + to = &dstAddr + } + + var input []byte + if args.Input != nil { + input = *args.Input + } else if args.Data != nil { + input = *args.Data + } + + var data types.TxData + switch { + case args.MaxFeePerGas != nil: + al := types.AccessList{} + if args.AccessList != nil { + al = *args.AccessList + } + data = &types.DynamicFeeTx{ + To: to, + ChainID: (*big.Int)(args.ChainID), + Nonce: uint64(args.Nonce), + Gas: uint64(args.Gas), + GasFeeCap: (*big.Int)(args.MaxFeePerGas), + GasTipCap: (*big.Int)(args.MaxPriorityFeePerGas), + Value: (*big.Int)(&args.Value), + Data: input, + AccessList: al, + V: (*big.Int)(args.V), + R: (*big.Int)(args.R), + S: (*big.Int)(args.S), + } + case args.AccessList != nil: + data = &types.AccessListTx{ + To: to, + ChainID: (*big.Int)(args.ChainID), + Nonce: uint64(args.Nonce), + Gas: uint64(args.Gas), + GasPrice: (*big.Int)(args.GasPrice), + Value: (*big.Int)(&args.Value), + Data: input, + AccessList: *args.AccessList, + V: (*big.Int)(args.V), + R: (*big.Int)(args.R), + S: (*big.Int)(args.S), + } + default: + data = &types.LegacyTx{ + To: to, + Nonce: uint64(args.Nonce), + Gas: uint64(args.Gas), + GasPrice: (*big.Int)(args.GasPrice), + Value: (*big.Int)(&args.Value), + Data: input, + V: (*big.Int)(args.V), + R: (*big.Int)(args.R), + S: (*big.Int)(args.S), + } + } + return types.NewTx(data) +} diff --git a/mpt-witness-generator/oracle/prefetch.go b/mpt-witness-generator/oracle/prefetch.go new file mode 100644 index 0000000000..cd2a2f9676 --- /dev/null +++ b/mpt-witness-generator/oracle/prefetch.go @@ -0,0 +1,335 @@ +package oracle + +import ( + "bytes" + "encoding/hex" + "encoding/json" + "fmt" + "io" + "io/ioutil" + "log" + "math/big" + "net/http" + "os" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/rlp" +) + +type jsonreq struct { + Jsonrpc string `json:"jsonrpc"` + Method string `json:"method"` + Params []interface{} `json:"params"` + Id uint64 `json:"id"` +} + +type jsonresp struct { + Jsonrpc string `json:"jsonrpc"` + Id uint64 `json:"id"` + Result AccountResult `json:"result"` +} + +type jsonresps struct { + Jsonrpc string `json:"jsonrpc"` + Id uint64 `json:"id"` + Result string `json:"result"` +} + +type jsonrespi struct { + Jsonrpc string `json:"jsonrpc"` + Id uint64 `json:"id"` + Result hexutil.Uint64 `json:"result"` +} + +type jsonrespt struct { + Jsonrpc string `json:"jsonrpc"` + Id uint64 `json:"id"` + Result Header `json:"result"` +} + +// Result structs for GetProof +type AccountResult struct { + Address common.Address `json:"address"` + AccountProof []string `json:"accountProof"` + Balance *hexutil.Big `json:"balance"` + CodeHash common.Hash `json:"codeHash"` + Nonce hexutil.Uint64 `json:"nonce"` + StorageHash common.Hash `json:"storageHash"` + StorageProof []StorageResult `json:"storageProof"` +} + +type StorageResult struct { + Key string `json:"key"` + Value *hexutil.Big `json:"value"` + Proof []string `json:"proof"` +} + +// Account is the Ethereum consensus representation of accounts. +// These objects are stored in the main account trie. +type Account struct { + Nonce uint64 + Balance *big.Int + Root common.Hash // merkle root of the storage trie + CodeHash []byte +} + +var NodeUrl = "https://mainnet.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161" +var RemoteUrl = "https://mainnet.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161" +var LocalUrl = "http://localhost:8545" + +// For generating special tests for MPT circuit: +var PreventHashingInSecureTrie = false + +func toFilename(key string) string { + return fmt.Sprintf("/tmp/eth/json_%s", key) +} + +func cacheRead(key string) []byte { + dat, err := ioutil.ReadFile(toFilename(key)) + if err == nil { + return dat + } + panic("cache missing") +} + +func cacheExists(key string) bool { + _, err := os.Stat(toFilename(key)) + return err == nil +} + +func cacheWrite(key string, value []byte) { + ioutil.WriteFile(toFilename(key), value, 0644) +} + +func getAPI(jsonData []byte) io.Reader { + key := hexutil.Encode(crypto.Keccak256(jsonData)) + /* Note: switching between two testnets (to prepare tests with account in the first level) + if cacheExists(key) { + return bytes.NewReader(cacheRead(key)) + } + */ + resp, _ := http.Post(NodeUrl, "application/json", bytes.NewBuffer(jsonData)) + defer resp.Body.Close() + ret, _ := ioutil.ReadAll(resp.Body) + cacheWrite(key, ret) + return bytes.NewReader(ret) +} + +var unhashMap = make(map[common.Hash]common.Address) + +func unhash(addrHash common.Hash) common.Address { + return unhashMap[addrHash] +} + +var cached = make(map[string]bool) + +func PrefetchStorage(blockNumber *big.Int, addr common.Address, skey common.Hash, postProcess func(map[common.Hash][]byte)) []string { + key := fmt.Sprintf("proof_%d_%s_%s", blockNumber, addr, skey) + // TODO: should return proof anyway + if cached[key] { + return nil + } + cached[key] = true + + ap := getProofAccount(blockNumber, addr, skey, true) + //fmt.Println("PrefetchStorage", blockNumber, addr, skey, len(ap)) + newPreimages := make(map[common.Hash][]byte) + for _, s := range ap { + ret, _ := hex.DecodeString(s[2:]) + hash := crypto.Keccak256Hash(ret) + //fmt.Println(" ", i, hash) + newPreimages[hash] = ret + } + + if postProcess != nil { + postProcess(newPreimages) + } + + for hash, val := range newPreimages { + preimages[hash] = val + } + + return ap +} + +func PrefetchAccount(blockNumber *big.Int, addr common.Address, postProcess func(map[common.Hash][]byte)) []string { + key := fmt.Sprintf("proof_%d_%s", blockNumber, addr) + if cached[key] { + return nil + } + cached[key] = true + + ap := getProofAccount(blockNumber, addr, common.Hash{}, false) + newPreimages := make(map[common.Hash][]byte) + for _, s := range ap { + ret, _ := hex.DecodeString(s[2:]) + hash := crypto.Keccak256Hash(ret) + newPreimages[hash] = ret + + /* + // just for debugging: + elems, _, err := rlp.SplitList(ret) + if err != nil { + fmt.Println("decode error", err) + } + switch c, _ := rlp.CountValues(elems); c { + case 2: + fmt.Println("2") + case 17: + fmt.Println("17") + default: + fmt.Println("invalid number of list elements") + } + */ + } + + if postProcess != nil { + postProcess(newPreimages) + } + + for hash, val := range newPreimages { + preimages[hash] = val + } + + return ap +} + +func PrefetchCode(blockNumber *big.Int, addrHash common.Hash) { + key := fmt.Sprintf("code_%d_%s", blockNumber, addrHash) + if cached[key] { + return + } + cached[key] = true + ret := getProvedCodeBytes(blockNumber, addrHash) + hash := crypto.Keccak256Hash(ret) + preimages[hash] = ret +} + +var inputs [7]common.Hash + +func Input(index int) common.Hash { + if index < 0 || index > 5 { + panic("bad input index") + } + return inputs[index] +} + +func Output(output common.Hash) { + if output == inputs[6] { + fmt.Println("good transition") + } else { + fmt.Println(output, "!=", inputs[5]) + panic("BAD transition :((") + } +} + +func check(err error) { + if err != nil { + log.Fatal(err) + } +} + +func PrefetchBlock(blockNumber *big.Int, startBlock bool, hasher types.TrieHasher) types.Header { + r := jsonreq{Jsonrpc: "2.0", Method: "eth_getBlockByNumber", Id: 1} + r.Params = make([]interface{}, 2) + r.Params[0] = fmt.Sprintf("0x%x", blockNumber.Int64()) + r.Params[1] = true + jsonData, _ := json.Marshal(r) + + /*dat, _ := ioutil.ReadAll(getAPI(jsonData)) + fmt.Println(string(dat))*/ + + jr := jsonrespt{} + check(json.NewDecoder(getAPI(jsonData)).Decode(&jr)) + //fmt.Println(jr.Result) + // blockHeader := types.Header(jr.Result) + blockHeader := jr.Result.ToHeader() + + // put in the start block header + if startBlock { + blockHeaderRlp, _ := rlp.EncodeToBytes(blockHeader) + hash := crypto.Keccak256Hash(blockHeaderRlp) + preimages[hash] = blockHeaderRlp + inputs[0] = hash + return blockHeader + } + + // second block + if blockHeader.ParentHash != Input(0) { + fmt.Println(blockHeader.ParentHash, Input(0)) + panic("block transition isn't correct") + } + inputs[1] = blockHeader.TxHash + inputs[2] = blockHeader.Coinbase.Hash() + inputs[3] = blockHeader.UncleHash + inputs[4] = common.BigToHash(big.NewInt(int64(blockHeader.GasLimit))) + inputs[5] = common.BigToHash(big.NewInt(int64(blockHeader.Time))) + + // secret input + inputs[6] = blockHeader.Root + + // save the inputs + saveinput := make([]byte, 0) + for i := 0; i < len(inputs); i++ { + saveinput = append(saveinput, inputs[i].Bytes()[:]...) + } + key := fmt.Sprintf("/tmp/eth/%d", blockNumber.Uint64()-1) + ioutil.WriteFile(key, saveinput, 0644) + + // save the txs + txs := make([]*types.Transaction, len(jr.Result.Transactions)) + for i := 0; i < len(jr.Result.Transactions); i++ { + txs[i] = jr.Result.Transactions[i].ToTransaction() + } + fmt.Println(txs[0].To()) + testTxHash := types.DeriveSha(types.Transactions(txs), hasher) + if testTxHash != blockHeader.TxHash { + fmt.Println(testTxHash, "!=", blockHeader.TxHash) + panic("tx hash derived wrong") + } + + return blockHeader +} + +func getProofAccount(blockNumber *big.Int, addr common.Address, skey common.Hash, storage bool) []string { + addrHash := crypto.Keccak256Hash(addr[:]) + unhashMap[addrHash] = addr + + r := jsonreq{Jsonrpc: "2.0", Method: "eth_getProof", Id: 1} + r.Params = make([]interface{}, 3) + r.Params[0] = addr + r.Params[1] = [1]common.Hash{skey} + r.Params[2] = fmt.Sprintf("0x%x", blockNumber.Int64()) + jsonData, _ := json.Marshal(r) + jr := jsonresp{} + json.NewDecoder(getAPI(jsonData)).Decode(&jr) + + if storage { + return jr.Result.StorageProof[0].Proof + } else { + return jr.Result.AccountProof + } +} + +func getProvedCodeBytes(blockNumber *big.Int, addrHash common.Hash) []byte { + addr := unhash(addrHash) + + r := jsonreq{Jsonrpc: "2.0", Method: "eth_getCode", Id: 1} + r.Params = make([]interface{}, 2) + r.Params[0] = addr + r.Params[1] = fmt.Sprintf("0x%x", blockNumber.Int64()) + jsonData, _ := json.Marshal(r) + jr := jsonresps{} + json.NewDecoder(getAPI(jsonData)).Decode(&jr) + + //fmt.Println(jr.Result) + + // curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCode","params":["0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", "0x2"],"id":1}' + + ret, _ := hex.DecodeString(jr.Result[2:]) + //fmt.Println(ret) + return ret +} diff --git a/mpt-witness-generator/oracle/preimage.go b/mpt-witness-generator/oracle/preimage.go new file mode 100644 index 0000000000..93dd8323cb --- /dev/null +++ b/mpt-witness-generator/oracle/preimage.go @@ -0,0 +1,49 @@ +package oracle + +import ( + "fmt" + "io/ioutil" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" +) + +var preimages = make(map[common.Hash][]byte) + +func Preimage(hash common.Hash) []byte { + val, ok := preimages[hash] + key := fmt.Sprintf("/tmp/eth/%s", hash) + ioutil.WriteFile(key, val, 0644) + if !ok { + fmt.Println("can't find preimage", hash) + } + comphash := crypto.Keccak256Hash(val) + if hash != comphash { + panic("corruption in hash " + hash.String()) + } + return val +} + +// TODO: Maybe we will want to have a seperate preimages for next block's preimages? +func Preimages() map[common.Hash][]byte { + return preimages +} + +// KeyValueWriter wraps the Put method of a backing data store. +type PreimageKeyValueWriter struct{} + +// Put inserts the given value into the key-value data store. +func (kw PreimageKeyValueWriter) Put(key []byte, value []byte) error { + hash := crypto.Keccak256Hash(value) + if hash != common.BytesToHash(key) { + panic("bad preimage value write") + } + preimages[hash] = common.CopyBytes(value) + // fmt.Println("tx preimage", hash, common.Bytes2Hex(value)) + return nil +} + +// Delete removes the key from the key-value data store. +func (kw PreimageKeyValueWriter) Delete(key []byte) error { + return nil +} diff --git a/mpt-witness-generator/rust_call/.cargo/config b/mpt-witness-generator/rust_call/.cargo/config new file mode 100644 index 0000000000..e90e761d30 --- /dev/null +++ b/mpt-witness-generator/rust_call/.cargo/config @@ -0,0 +1,2 @@ +[build] +rustflags = ["-C", "link-args=-framework CoreFoundation -framework Security"] diff --git a/mpt-witness-generator/rust_call/Cargo.lock b/mpt-witness-generator/rust_call/Cargo.lock new file mode 100644 index 0000000000..2f4d2570f8 --- /dev/null +++ b/mpt-witness-generator/rust_call/Cargo.lock @@ -0,0 +1,89 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "itoa" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" + +[[package]] +name = "proc-macro2" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "quote" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rust_call" +version = "0.1.0" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "ryu" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" + +[[package]] +name = "serde" +version = "1.0.136" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.136" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "syn" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "unicode-xid" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" diff --git a/mpt-witness-generator/rust_call/Cargo.toml b/mpt-witness-generator/rust_call/Cargo.toml new file mode 100644 index 0000000000..5197fe66aa --- /dev/null +++ b/mpt-witness-generator/rust_call/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "rust_call" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" \ No newline at end of file diff --git a/mpt-witness-generator/rust_call/build.rs b/mpt-witness-generator/rust_call/build.rs new file mode 100644 index 0000000000..978a982142 --- /dev/null +++ b/mpt-witness-generator/rust_call/build.rs @@ -0,0 +1,8 @@ +fn main() { + let path = "./build"; + let lib = "mpt"; + + println!("cargo:rustc-link-search=native={}", path); + println!("cargo:rustc-link-lib=static={}", lib); +} + diff --git a/mpt-witness-generator/rust_call/build/libmpt.a b/mpt-witness-generator/rust_call/build/libmpt.a new file mode 100644 index 0000000000..db38863154 Binary files /dev/null and b/mpt-witness-generator/rust_call/build/libmpt.a differ diff --git a/mpt-witness-generator/rust_call/build/libmpt.h b/mpt-witness-generator/rust_call/build/libmpt.h new file mode 100644 index 0000000000..5978e80bbb --- /dev/null +++ b/mpt-witness-generator/rust_call/build/libmpt.h @@ -0,0 +1,81 @@ +/* Code generated by cmd/cgo; DO NOT EDIT. */ + +/* package command-line-arguments */ + + +#line 1 "cgo-builtin-export-prolog" + +#include <stddef.h> + +#ifndef GO_CGO_EXPORT_PROLOGUE_H +#define GO_CGO_EXPORT_PROLOGUE_H + +#ifndef GO_CGO_GOSTRING_TYPEDEF +typedef struct { const char *p; ptrdiff_t n; } _GoString_; +#endif + +#endif + +/* Start of preamble from import "C" comments. */ + + + + +/* End of preamble from import "C" comments. */ + + +/* Start of boilerplate cgo prologue. */ +#line 1 "cgo-gcc-export-header-prolog" + +#ifndef GO_CGO_PROLOGUE_H +#define GO_CGO_PROLOGUE_H + +typedef signed char GoInt8; +typedef unsigned char GoUint8; +typedef short GoInt16; +typedef unsigned short GoUint16; +typedef int GoInt32; +typedef unsigned int GoUint32; +typedef long long GoInt64; +typedef unsigned long long GoUint64; +typedef GoInt64 GoInt; +typedef GoUint64 GoUint; +typedef size_t GoUintptr; +typedef float GoFloat32; +typedef double GoFloat64; +#ifdef _MSC_VER +#include <complex.h> +typedef _Fcomplex GoComplex64; +typedef _Dcomplex GoComplex128; +#else +typedef float _Complex GoComplex64; +typedef double _Complex GoComplex128; +#endif + +/* + static assertion to make sure the file is being used on architecture + at least with matching size of GoInt. +*/ +typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1]; + +#ifndef GO_CGO_GOSTRING_TYPEDEF +typedef _GoString_ GoString; +#endif +typedef void *GoMap; +typedef void *GoChan; +typedef struct { void *t; void *v; } GoInterface; +typedef struct { void *data; GoInt len; GoInt cap; } GoSlice; + +#endif + +/* End of boilerplate cgo prologue. */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern char* GetWitness(char* proofConf); + +#ifdef __cplusplus +} +#endif diff --git a/mpt-witness-generator/rust_call/src/main.rs b/mpt-witness-generator/rust_call/src/main.rs new file mode 100644 index 0000000000..7144e39003 --- /dev/null +++ b/mpt-witness-generator/rust_call/src/main.rs @@ -0,0 +1,30 @@ +// use serde_json::{json, Value}; +use std::ffi::{CStr, CString}; +use std::os::raw::c_char; +use std::fs::File; +use std::io::Write; + +extern "C" { + fn GetWitness(str: *const c_char) -> *const c_char; +} + +fn main() { + let data = r#" + { + "NodeUrl": "https://mainnet.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161", + "BlockNum": 14359865, + "Addr": "0x4E5B2e1dc63F6b91cb6Cd759936495434C7e972F", + "Keys": ["0x12", "0x21"], + "Values": ["0x1123e2", "0xa21"] + }"#; + + let c_config = CString::new(data).expect("invalid config"); + + let result = unsafe { GetWitness(c_config.as_ptr()) }; + let c_str = unsafe { CStr::from_ptr(result) }; + let string = c_str.to_str().expect("Error translating from library"); + println!("{:?}", string); + + let mut f = File::create("proof.json").expect("Unable to create file"); + f.write_all(string.as_bytes()).expect("Unable to write data"); +} diff --git a/mpt-witness-generator/state/access_list.go b/mpt-witness-generator/state/access_list.go new file mode 100644 index 0000000000..4194691345 --- /dev/null +++ b/mpt-witness-generator/state/access_list.go @@ -0,0 +1,136 @@ +// Copyright 2020 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package state + +import ( + "github.com/ethereum/go-ethereum/common" +) + +type accessList struct { + addresses map[common.Address]int + slots []map[common.Hash]struct{} +} + +// ContainsAddress returns true if the address is in the access list. +func (al *accessList) ContainsAddress(address common.Address) bool { + _, ok := al.addresses[address] + return ok +} + +// Contains checks if a slot within an account is present in the access list, returning +// separate flags for the presence of the account and the slot respectively. +func (al *accessList) Contains(address common.Address, slot common.Hash) (addressPresent bool, slotPresent bool) { + idx, ok := al.addresses[address] + if !ok { + // no such address (and hence zero slots) + return false, false + } + if idx == -1 { + // address yes, but no slots + return true, false + } + _, slotPresent = al.slots[idx][slot] + return true, slotPresent +} + +// newAccessList creates a new accessList. +func newAccessList() *accessList { + return &accessList{ + addresses: make(map[common.Address]int), + } +} + +// Copy creates an independent copy of an accessList. +func (a *accessList) Copy() *accessList { + cp := newAccessList() + for k, v := range a.addresses { + cp.addresses[k] = v + } + cp.slots = make([]map[common.Hash]struct{}, len(a.slots)) + for i, slotMap := range a.slots { + newSlotmap := make(map[common.Hash]struct{}, len(slotMap)) + for k := range slotMap { + newSlotmap[k] = struct{}{} + } + cp.slots[i] = newSlotmap + } + return cp +} + +// AddAddress adds an address to the access list, and returns 'true' if the operation +// caused a change (addr was not previously in the list). +func (al *accessList) AddAddress(address common.Address) bool { + if _, present := al.addresses[address]; present { + return false + } + al.addresses[address] = -1 + return true +} + +// AddSlot adds the specified (addr, slot) combo to the access list. +// Return values are: +// - address added +// - slot added +// For any 'true' value returned, a corresponding journal entry must be made. +func (al *accessList) AddSlot(address common.Address, slot common.Hash) (addrChange bool, slotChange bool) { + idx, addrPresent := al.addresses[address] + if !addrPresent || idx == -1 { + // Address not present, or addr present but no slots there + al.addresses[address] = len(al.slots) + slotmap := map[common.Hash]struct{}{slot: {}} + al.slots = append(al.slots, slotmap) + return !addrPresent, true + } + // There is already an (address,slot) mapping + slotmap := al.slots[idx] + if _, ok := slotmap[slot]; !ok { + slotmap[slot] = struct{}{} + // Journal add slot change + return false, true + } + // No changes required + return false, false +} + +// DeleteSlot removes an (address, slot)-tuple from the access list. +// This operation needs to be performed in the same order as the addition happened. +// This method is meant to be used by the journal, which maintains ordering of +// operations. +func (al *accessList) DeleteSlot(address common.Address, slot common.Hash) { + idx, addrOk := al.addresses[address] + // There are two ways this can fail + if !addrOk { + panic("reverting slot change, address not present in list") + } + slotmap := al.slots[idx] + delete(slotmap, slot) + // If that was the last (first) slot, remove it + // Since additions and rollbacks are always performed in order, + // we can delete the item without worrying about screwing up later indices + if len(slotmap) == 0 { + al.slots = al.slots[:idx] + al.addresses[address] = -1 + } +} + +// DeleteAddress removes an address from the access list. This operation +// needs to be performed in the same order as the addition happened. +// This method is meant to be used by the journal, which maintains ordering of +// operations. +func (al *accessList) DeleteAddress(address common.Address) { + delete(al.addresses, address) +} diff --git a/mpt-witness-generator/state/database.go b/mpt-witness-generator/state/database.go new file mode 100644 index 0000000000..89c86df0c8 --- /dev/null +++ b/mpt-witness-generator/state/database.go @@ -0,0 +1,126 @@ +package state + +import ( + "fmt" + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethdb" + "github.com/privacy-scaling-explorations/mpt-witness-generator/oracle" + "github.com/privacy-scaling-explorations/mpt-witness-generator/trie" +) + +// TODO: add oracle calls here +// wrapper for the oracle + +type Database struct { + db *trie.Database + BlockNumber *big.Int + StateRoot common.Hash +} + +func NewDatabase(header types.Header) Database { + //triedb := trie.Database{BlockNumber: header.Number, Root: header.Root} + //triedb.Preseed() + triedb := trie.NewDatabase(header) + return Database{db: &triedb, BlockNumber: header.Number, StateRoot: header.Root} +} + +// ContractCode retrieves a particular contract's code. +func (db *Database) ContractCode(addrHash common.Hash, codeHash common.Hash) ([]byte, error) { + oracle.PrefetchCode(db.BlockNumber, addrHash) + code := oracle.Preimage(codeHash) + return code, nil +} + +// ContractCodeSize retrieves a particular contracts code's size. +func (db *Database) ContractCodeSize(addrHash common.Hash, codeHash common.Hash) (int, error) { + oracle.PrefetchCode(db.BlockNumber, addrHash) + code := oracle.Preimage(codeHash) + return len(code), nil +} + +func (db *Database) CopyTrie(t Trie) Trie { + // panic("don't copy tries") // <- from cannon + switch t := t.(type) { + case *trie.SecureTrie: + return t.Copy() + default: + panic(fmt.Errorf("unknown trie type %T", t)) + } +} + +// OpenTrie opens the main account trie at a specific root hash. +func (db *Database) OpenTrie(root common.Hash) (Trie, error) { + tr, err := trie.NewSecure(root, db.db) + if err != nil { + return nil, err + } + return tr, nil +} + +// OpenStorageTrie opens the storage trie of an account. +func (db *Database) OpenStorageTrie(addrHash, root common.Hash) (Trie, error) { + //return SimpleTrie{db.BlockNumber, root, true, addrHash}, nil + tr, err := trie.NewSecure(root, db.db) + if err != nil { + return nil, err + } + return tr, nil +} + +type Trie interface { + // TryGet returns the value for key stored in the trie. The value bytes must + // not be modified by the caller. If a node was not found in the database, a + // trie.MissingNodeError is returned. + TryGet(key []byte) ([]byte, error) + + // TryUpdate associates key with value in the trie. If value has length zero, any + // existing value is deleted from the trie. The value bytes must not be modified + // by the caller while they are stored in the trie. If a node was not found in the + // database, a trie.MissingNodeError is returned. + TryUpdate(key, value []byte) error + + TryUpdateAlwaysHash(key, value []byte) error + + // TryDelete removes any existing value for key from the trie. If a node was not + // found in the database, a trie.MissingNodeError is returned. + TryDelete(key []byte) error + + // Hash returns the root hash of the trie. It does not write to the database and + // can be used even if the trie doesn't have one. + Hash() common.Hash + + // Commit writes all nodes to the trie's memory database, tracking the internal + // and external (for account tries) references. + Commit(onleaf trie.LeafCallback) (common.Hash, error) + + Prove(key []byte, fromLevel uint, proofDb ethdb.KeyValueWriter) ([]byte, [][]byte, bool, error) + + GetNodeByNibbles(key []byte) ([]byte, error) + + GetRoot() trie.Node +} + +// stubbed: we don't prefetch + +type triePrefetcher struct { +} + +func (p *triePrefetcher) prefetch(root common.Hash, keys [][]byte) { +} + +func (p *triePrefetcher) used(root common.Hash, used [][]byte) { +} + +func (p *triePrefetcher) close() { +} + +func (p *triePrefetcher) copy() *triePrefetcher { + return p +} + +func (p *triePrefetcher) trie(root common.Hash) Trie { + return nil +} diff --git a/mpt-witness-generator/state/journal.go b/mpt-witness-generator/state/journal.go new file mode 100644 index 0000000000..2070f30875 --- /dev/null +++ b/mpt-witness-generator/state/journal.go @@ -0,0 +1,269 @@ +// Copyright 2016 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package state + +import ( + "math/big" + + "github.com/ethereum/go-ethereum/common" +) + +// journalEntry is a modification entry in the state change journal that can be +// reverted on demand. +type journalEntry interface { + // revert undoes the changes introduced by this journal entry. + revert(*StateDB) + + // dirtied returns the Ethereum address modified by this journal entry. + dirtied() *common.Address +} + +// journal contains the list of state modifications applied since the last state +// commit. These are tracked to be able to be reverted in case of an execution +// exception or revertal request. +type journal struct { + entries []journalEntry // Current changes tracked by the journal + dirties map[common.Address]int // Dirty accounts and the number of changes +} + +// newJournal create a new initialized journal. +func newJournal() *journal { + return &journal{ + dirties: make(map[common.Address]int), + } +} + +// append inserts a new modification entry to the end of the change journal. +func (j *journal) append(entry journalEntry) { + j.entries = append(j.entries, entry) + if addr := entry.dirtied(); addr != nil { + j.dirties[*addr]++ + } +} + +// revert undoes a batch of journalled modifications along with any reverted +// dirty handling too. +func (j *journal) revert(statedb *StateDB, snapshot int) { + for i := len(j.entries) - 1; i >= snapshot; i-- { + // Undo the changes made by the operation + j.entries[i].revert(statedb) + + // Drop any dirty tracking induced by the change + if addr := j.entries[i].dirtied(); addr != nil { + if j.dirties[*addr]--; j.dirties[*addr] == 0 { + delete(j.dirties, *addr) + } + } + } + j.entries = j.entries[:snapshot] +} + +// dirty explicitly sets an address to dirty, even if the change entries would +// otherwise suggest it as clean. This method is an ugly hack to handle the RIPEMD +// precompile consensus exception. +func (j *journal) dirty(addr common.Address) { + j.dirties[addr]++ +} + +// length returns the current number of entries in the journal. +func (j *journal) length() int { + return len(j.entries) +} + +type ( + // Changes to the account trie. + createObjectChange struct { + account *common.Address + } + resetObjectChange struct { + prev *stateObject + prevdestruct bool + } + suicideChange struct { + account *common.Address + prev bool // whether account had already suicided + prevbalance *big.Int + } + + // Changes to individual accounts. + balanceChange struct { + account *common.Address + prev *big.Int + } + nonceChange struct { + account *common.Address + prev uint64 + } + storageChange struct { + account *common.Address + key, prevalue common.Hash + } + codeChange struct { + account *common.Address + prevcode, prevhash []byte + } + + // Changes to other state values. + refundChange struct { + prev uint64 + } + addLogChange struct { + txhash common.Hash + } + addPreimageChange struct { + hash common.Hash + } + touchChange struct { + account *common.Address + } + // Changes to the access list + accessListAddAccountChange struct { + address *common.Address + } + accessListAddSlotChange struct { + address *common.Address + slot *common.Hash + } +) + +func (ch createObjectChange) revert(s *StateDB) { + delete(s.stateObjects, *ch.account) + delete(s.stateObjectsDirty, *ch.account) +} + +func (ch createObjectChange) dirtied() *common.Address { + return ch.account +} + +func (ch resetObjectChange) revert(s *StateDB) { + s.setStateObject(ch.prev) + if !ch.prevdestruct && s.snap != nil { + delete(s.snapDestructs, ch.prev.addrHash) + } +} + +func (ch resetObjectChange) dirtied() *common.Address { + return nil +} + +func (ch suicideChange) revert(s *StateDB) { + obj := s.getStateObject(*ch.account) + if obj != nil { + obj.suicided = ch.prev + obj.setBalance(ch.prevbalance) + } +} + +func (ch suicideChange) dirtied() *common.Address { + return ch.account +} + +var ripemd = common.HexToAddress("0000000000000000000000000000000000000003") + +func (ch touchChange) revert(s *StateDB) { +} + +func (ch touchChange) dirtied() *common.Address { + return ch.account +} + +func (ch balanceChange) revert(s *StateDB) { + s.getStateObject(*ch.account).setBalance(ch.prev) +} + +func (ch balanceChange) dirtied() *common.Address { + return ch.account +} + +func (ch nonceChange) revert(s *StateDB) { + s.getStateObject(*ch.account).setNonce(ch.prev) +} + +func (ch nonceChange) dirtied() *common.Address { + return ch.account +} + +func (ch codeChange) revert(s *StateDB) { + s.getStateObject(*ch.account).setCode(common.BytesToHash(ch.prevhash), ch.prevcode) +} + +func (ch codeChange) dirtied() *common.Address { + return ch.account +} + +func (ch storageChange) revert(s *StateDB) { + s.getStateObject(*ch.account).setState(ch.key, ch.prevalue) +} + +func (ch storageChange) dirtied() *common.Address { + return ch.account +} + +func (ch refundChange) revert(s *StateDB) { + s.refund = ch.prev +} + +func (ch refundChange) dirtied() *common.Address { + return nil +} + +func (ch addLogChange) revert(s *StateDB) { + logs := s.logs[ch.txhash] + if len(logs) == 1 { + delete(s.logs, ch.txhash) + } else { + s.logs[ch.txhash] = logs[:len(logs)-1] + } + s.logSize-- +} + +func (ch addLogChange) dirtied() *common.Address { + return nil +} + +func (ch addPreimageChange) revert(s *StateDB) { + delete(s.preimages, ch.hash) +} + +func (ch addPreimageChange) dirtied() *common.Address { + return nil +} + +func (ch accessListAddAccountChange) revert(s *StateDB) { + /* + One important invariant here, is that whenever a (addr, slot) is added, if the + addr is not already present, the add causes two journal entries: + - one for the address, + - one for the (address,slot) + Therefore, when unrolling the change, we can always blindly delete the + (addr) at this point, since no storage adds can remain when come upon + a single (addr) change. + */ + s.accessList.DeleteAddress(*ch.address) +} + +func (ch accessListAddAccountChange) dirtied() *common.Address { + return nil +} + +func (ch accessListAddSlotChange) revert(s *StateDB) { + s.accessList.DeleteSlot(*ch.address, *ch.slot) +} + +func (ch accessListAddSlotChange) dirtied() *common.Address { + return nil +} diff --git a/mpt-witness-generator/state/state_object.go b/mpt-witness-generator/state/state_object.go new file mode 100644 index 0000000000..197c8b63f7 --- /dev/null +++ b/mpt-witness-generator/state/state_object.go @@ -0,0 +1,563 @@ +// Copyright 2014 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package state + +import ( + "bytes" + "fmt" + "io" + "math/big" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/metrics" + "github.com/ethereum/go-ethereum/rlp" + "github.com/privacy-scaling-explorations/mpt-witness-generator/oracle" +) + +var emptyCodeHash = crypto.Keccak256(nil) + +type Code []byte + +func (c Code) String() string { + return string(c) //strings.Join(Disassemble(c), " ") +} + +type Storage map[common.Hash]common.Hash + +func (s Storage) String() (str string) { + for key, value := range s { + str += fmt.Sprintf("%X : %X\n", key, value) + } + + return +} + +func (s Storage) Copy() Storage { + cpy := make(Storage) + for key, value := range s { + cpy[key] = value + } + + return cpy +} + +// stateObject represents an Ethereum account which is being modified. +// +// The usage pattern is as follows: +// First you need to obtain a state object. +// Account values can be accessed and modified through the object. +// Finally, call CommitTrie to write the modified storage trie into a database. +type stateObject struct { + address common.Address + addrHash common.Hash // hash of ethereum address of the account + data Account + db *StateDB + + // DB error. + // State objects are used by the consensus core and VM which are + // unable to deal with database-level errors. Any error that occurs + // during a database read is memoized here and will eventually be returned + // by StateDB.Commit. + dbErr error + + // Write caches. + Trie Trie // storage trie, which becomes non-nil on first access + code Code // contract bytecode, which gets set when code is loaded + + originStorage Storage // Storage cache of original entries to dedup rewrites, reset for every transaction + pendingStorage Storage // Storage entries that need to be flushed to disk, at the end of an entire block + dirtyStorage Storage // Storage entries that have been modified in the current transaction execution + fakeStorage Storage // Fake storage which constructed by caller for debugging purpose. + + // Cache flags. + // When an object is marked suicided it will be delete from the trie + // during the "update" phase of the state transition. + dirtyCode bool // true if the code was updated + suicided bool + deleted bool +} + +// empty returns whether the account is considered empty. +func (s *stateObject) empty() bool { + return s.data.Nonce == 0 && s.data.Balance.Sign() == 0 && bytes.Equal(s.data.CodeHash, emptyCodeHash) +} + +// Account is the Ethereum consensus representation of accounts. +// These objects are stored in the main account trie. +type Account struct { + Nonce uint64 + Balance *big.Int + Root common.Hash // merkle root of the storage trie + CodeHash []byte +} + +// newObject creates a state object. +func newObject(db *StateDB, address common.Address, data Account) *stateObject { + if data.Balance == nil { + data.Balance = new(big.Int) + } + if data.CodeHash == nil { + data.CodeHash = emptyCodeHash + } + if data.Root == (common.Hash{}) { + data.Root = emptyRoot + } + return &stateObject{ + db: db, + address: address, + addrHash: crypto.Keccak256Hash(address[:]), + data: data, + originStorage: make(Storage), + pendingStorage: make(Storage), + dirtyStorage: make(Storage), + } +} + +// EncodeRLP implements rlp.Encoder. +func (s *stateObject) EncodeRLP(w io.Writer) error { + return rlp.Encode(w, s.data) +} + +// setError remembers the first non-nil error it is called with. +func (s *stateObject) setError(err error) { + if s.dbErr == nil { + s.dbErr = err + } +} + +func (s *stateObject) markSuicided() { + s.suicided = true +} + +func (s *stateObject) touch() { + s.db.journal.append(touchChange{ + account: &s.address, + }) + if s.address == ripemd { + // Explicitly put it in the dirty-cache, which is otherwise generated from + // flattened journals. + s.db.journal.dirty(s.address) + } +} + +func (s *stateObject) getTrie(db Database) Trie { + if s.Trie == nil { + // Try fetching from prefetcher first + // We don't prefetch empty tries + if s.data.Root != emptyRoot && s.db.prefetcher != nil { + // When the miner is creating the pending state, there is no + // prefetcher + s.Trie = s.db.prefetcher.trie(s.data.Root) + } + if s.Trie == nil { + var err error + s.Trie, err = db.OpenStorageTrie(s.addrHash, s.data.Root) + if err != nil { + s.Trie, _ = db.OpenStorageTrie(s.addrHash, common.Hash{}) + s.setError(fmt.Errorf("can't create storage trie: %v", err)) + } + } + } + return s.Trie +} + +// GetState retrieves a value from the account storage trie. +func (s *stateObject) GetState(db Database, key common.Hash) common.Hash { + // If the fake storage is set, only lookup the state here(in the debugging mode) + if s.fakeStorage != nil { + return s.fakeStorage[key] + } + // If we have a dirty value for this state entry, return it + value, dirty := s.dirtyStorage[key] + if dirty { + return value + } + // Otherwise return the entry's original value + return s.GetCommittedState(db, key) +} + +// GetCommittedState retrieves a value from the committed account storage trie. +func (s *stateObject) GetCommittedState(db Database, key common.Hash) common.Hash { + // If the fake storage is set, only lookup the state here(in the debugging mode) + if s.fakeStorage != nil { + return s.fakeStorage[key] + } + // If we have a pending write or clean cached, return that + if value, pending := s.pendingStorage[key]; pending { + return value + } + if value, cached := s.originStorage[key]; cached { + return value + } + // If no live objects are available, attempt to use snapshots + var ( + enc []byte + err error + meter *time.Duration + ) + readStart := time.Now() + if metrics.EnabledExpensive { + // If the snap is 'under construction', the first lookup may fail. If that + // happens, we don't want to double-count the time elapsed. Thus this + // dance with the metering. + defer func() { + if meter != nil { + *meter += time.Since(readStart) + } + }() + } + if s.db.snap != nil { + if metrics.EnabledExpensive { + meter = &s.db.SnapshotStorageReads + } + // If the object was destructed in *this* block (and potentially resurrected), + // the storage has been cleared out, and we should *not* consult the previous + // snapshot about any storage values. The only possible alternatives are: + // 1) resurrect happened, and new slot values were set -- those should + // have been handles via pendingStorage above. + // 2) we don't have new values, and can deliver empty response back + if _, destructed := s.db.snapDestructs[s.addrHash]; destructed { + return common.Hash{} + } + enc, err = s.db.snap.Storage(s.addrHash, crypto.Keccak256Hash(key.Bytes())) + } + // If snapshot unavailable or reading from it failed, load from the database + if s.db.snap == nil || err != nil { + if meter != nil { + // If we already spent time checking the snapshot, account for it + // and reset the readStart + *meter += time.Since(readStart) + readStart = time.Now() + } + if metrics.EnabledExpensive { + meter = &s.db.StorageReads + } + oracle.PrefetchStorage(db.BlockNumber, s.address, key, nil) + if enc, err = s.getTrie(db).TryGet(key.Bytes()); err != nil { + s.setError(err) + return common.Hash{} + } + } + var value common.Hash + if len(enc) > 0 { + _, content, _, err := rlp.Split(enc) + if err != nil { + s.setError(err) + } + value.SetBytes(content) + } + s.originStorage[key] = value + return value +} + +// SetState updates a value in account storage. +func (s *stateObject) SetState(db Database, key, value common.Hash) { + // If the fake storage is set, put the temporary state update here. + if s.fakeStorage != nil { + s.fakeStorage[key] = value + return + } + // If the new value is the same as old, don't set + prev := s.GetState(db, key) + if prev == value { + return + } + // New value is different, update and journal the change + s.db.journal.append(storageChange{ + account: &s.address, + key: key, + prevalue: prev, + }) + s.setState(key, value) +} + +// SetStorage replaces the entire state storage with the given one. +// +// After this function is called, all original state will be ignored and state +// lookup only happens in the fake state storage. +// +// Note this function should only be used for debugging purpose. +func (s *stateObject) SetStorage(storage map[common.Hash]common.Hash) { + // Allocate fake storage if it's nil. + if s.fakeStorage == nil { + s.fakeStorage = make(Storage) + } + for key, value := range storage { + s.fakeStorage[key] = value + } + // Don't bother journal since this function should only be used for + // debugging and the `fake` storage won't be committed to database. +} + +func (s *stateObject) setState(key, value common.Hash) { + s.dirtyStorage[key] = value +} + +// finalise moves all dirty storage slots into the pending area to be hashed or +// committed later. It is invoked at the end of every transaction. +func (s *stateObject) finalise(prefetch bool) { + slotsToPrefetch := make([][]byte, 0, len(s.dirtyStorage)) + for key, value := range s.dirtyStorage { + s.pendingStorage[key] = value + if value != s.originStorage[key] { + slotsToPrefetch = append(slotsToPrefetch, common.CopyBytes(key[:])) // Copy needed for closure + } + } + if s.db.prefetcher != nil && prefetch && len(slotsToPrefetch) > 0 && s.data.Root != emptyRoot { + s.db.prefetcher.prefetch(s.data.Root, slotsToPrefetch) + } + if len(s.dirtyStorage) > 0 { + s.dirtyStorage = make(Storage) + } +} + +// updateTrie writes cached storage modifications into the object's storage trie. +// It will return nil if the trie has not been loaded and no changes have been made +func (s *stateObject) updateTrie(db Database) Trie { + // Make sure all dirty slots are finalized into the pending storage area + s.finalise(false) // Don't prefetch any more, pull directly if need be + if len(s.pendingStorage) == 0 { + return s.Trie + } + // Track the amount of time wasted on updating the storage trie + if metrics.EnabledExpensive { + defer func(start time.Time) { s.db.StorageUpdates += time.Since(start) }(time.Now()) + } + // The snapshot storage map for the object + var storage map[common.Hash][]byte + // Insert all the pending updates into the trie + tr := s.getTrie(db) + hasher := s.db.hasher + + usedStorage := make([][]byte, 0, len(s.pendingStorage)) + for key, value := range s.pendingStorage { + // Skip noop changes, persist actual changes + if value == s.originStorage[key] { + continue + } + s.originStorage[key] = value + + var v []byte + if (value == common.Hash{}) { + //fmt.Println("delete", s.address, key) + // Get absense proof of key in case the deletion needs the sister node. + + // Note: commented for now because of `ExtNodeDeleted` + // oracle.PrefetchStorage(big.NewInt(db.BlockNumber.Int64()+1), s.address, key, trie.GenPossibleShortNodePreimage) + s.setError(tr.TryDelete(key[:])) + } else { + //fmt.Println("update", s.address, key, value) + // Encoding []byte cannot fail, ok to ignore the error. + v, _ = rlp.EncodeToBytes(common.TrimLeftZeroes(value[:])) + s.setError(tr.TryUpdate(key[:], v)) + } + // If state snapshotting is active, cache the data til commit + if s.db.snap != nil { + if storage == nil { + // Retrieve the old storage map, if available, create a new one otherwise + if storage = s.db.snapStorage[s.addrHash]; storage == nil { + storage = make(map[common.Hash][]byte) + s.db.snapStorage[s.addrHash] = storage + } + } + storage[crypto.HashData(hasher, key[:])] = v // v will be nil if value is 0x00 + } + usedStorage = append(usedStorage, common.CopyBytes(key[:])) // Copy needed for closure + } + if s.db.prefetcher != nil { + s.db.prefetcher.used(s.data.Root, usedStorage) + } + if len(s.pendingStorage) > 0 { + s.pendingStorage = make(Storage) + } + return tr +} + +// UpdateRoot sets the trie root to the current root hash of +func (s *stateObject) updateRoot(db Database) { + // If nothing changed, don't bother with hashing anything + if s.updateTrie(db) == nil { + return + } + // Track the amount of time wasted on hashing the storage trie + if metrics.EnabledExpensive { + defer func(start time.Time) { s.db.StorageHashes += time.Since(start) }(time.Now()) + } + s.data.Root = s.Trie.Hash() +} + +// CommitTrie the storage trie of the object to db. +// This updates the trie root. +func (s *stateObject) CommitTrie(db Database) error { + // If nothing changed, don't bother with hashing anything + if s.updateTrie(db) == nil { + return nil + } + if s.dbErr != nil { + return s.dbErr + } + // Track the amount of time wasted on committing the storage trie + if metrics.EnabledExpensive { + defer func(start time.Time) { s.db.StorageCommits += time.Since(start) }(time.Now()) + } + root, err := s.Trie.Commit(nil) + if err == nil { + s.data.Root = root + } + return err +} + +// AddBalance adds amount to s's balance. +// It is used to add funds to the destination account of a transfer. +func (s *stateObject) AddBalance(amount *big.Int) { + // EIP161: We must check emptiness for the objects such that the account + // clearing (0,0,0 objects) can take effect. + if amount.Sign() == 0 { + if s.empty() { + s.touch() + } + return + } + s.SetBalance(new(big.Int).Add(s.Balance(), amount)) +} + +// SubBalance removes amount from s's balance. +// It is used to remove funds from the origin account of a transfer. +func (s *stateObject) SubBalance(amount *big.Int) { + if amount.Sign() == 0 { + return + } + s.SetBalance(new(big.Int).Sub(s.Balance(), amount)) +} + +func (s *stateObject) SetBalance(amount *big.Int) { + s.db.journal.append(balanceChange{ + account: &s.address, + prev: new(big.Int).Set(s.data.Balance), + }) + s.setBalance(amount) +} + +func (s *stateObject) setBalance(amount *big.Int) { + s.data.Balance = amount +} + +func (s *stateObject) deepCopy(db *StateDB) *stateObject { + stateObject := newObject(db, s.address, s.data) + if s.Trie != nil { + stateObject.Trie = db.Db.CopyTrie(s.Trie) + } + stateObject.code = s.code + stateObject.dirtyStorage = s.dirtyStorage.Copy() + stateObject.originStorage = s.originStorage.Copy() + stateObject.pendingStorage = s.pendingStorage.Copy() + stateObject.suicided = s.suicided + stateObject.dirtyCode = s.dirtyCode + stateObject.deleted = s.deleted + return stateObject +} + +// +// Attribute accessors +// + +// Returns the address of the contract/account +func (s *stateObject) Address() common.Address { + return s.address +} + +// Code returns the contract code associated with this object, if any. +func (s *stateObject) Code(db Database) []byte { + if s.code != nil { + return s.code + } + if bytes.Equal(s.CodeHash(), emptyCodeHash) { + return nil + } + code, err := db.ContractCode(s.addrHash, common.BytesToHash(s.CodeHash())) + if err != nil { + s.setError(fmt.Errorf("can't load code hash %x: %v", s.CodeHash(), err)) + } + s.code = code + return code +} + +// CodeSize returns the size of the contract code associated with this object, +// or zero if none. This method is an almost mirror of Code, but uses a cache +// inside the database to avoid loading codes seen recently. +func (s *stateObject) CodeSize(db Database) int { + if s.code != nil { + return len(s.code) + } + if bytes.Equal(s.CodeHash(), emptyCodeHash) { + return 0 + } + size, err := db.ContractCodeSize(s.addrHash, common.BytesToHash(s.CodeHash())) + if err != nil { + s.setError(fmt.Errorf("can't load code size %x: %v", s.CodeHash(), err)) + } + return size +} + +func (s *stateObject) SetCode(codeHash common.Hash, code []byte) { + prevcode := s.Code(s.db.Db) + s.db.journal.append(codeChange{ + account: &s.address, + prevhash: s.CodeHash(), + prevcode: prevcode, + }) + s.setCode(codeHash, code) +} + +func (s *stateObject) setCode(codeHash common.Hash, code []byte) { + s.code = code + s.data.CodeHash = codeHash[:] + s.dirtyCode = true +} + +func (s *stateObject) SetNonce(nonce uint64) { + s.db.journal.append(nonceChange{ + account: &s.address, + prev: s.data.Nonce, + }) + s.setNonce(nonce) +} + +func (s *stateObject) setNonce(nonce uint64) { + s.data.Nonce = nonce +} + +func (s *stateObject) CodeHash() []byte { + return s.data.CodeHash +} + +func (s *stateObject) Balance() *big.Int { + return s.data.Balance +} + +func (s *stateObject) Nonce() uint64 { + return s.data.Nonce +} + +// Never called, but must be present to allow stateObject to be used +// as a vm.Account interface that also satisfies the vm.ContractRef +// interface. Interfaces are awesome. +func (s *stateObject) Value() *big.Int { + panic("Value on stateObject should never be called") +} diff --git a/mpt-witness-generator/state/statedb.go b/mpt-witness-generator/state/statedb.go new file mode 100644 index 0000000000..0a5376f108 --- /dev/null +++ b/mpt-witness-generator/state/statedb.go @@ -0,0 +1,1110 @@ +// Copyright 2014 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +// Package state provides a caching layer atop the Ethereum state trie. +package state + +import ( + "encoding/hex" + "errors" + "fmt" + "math/big" + "sort" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/state/snapshot" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/metrics" + "github.com/ethereum/go-ethereum/rlp" + "github.com/privacy-scaling-explorations/mpt-witness-generator/oracle" + "github.com/privacy-scaling-explorations/mpt-witness-generator/trie" +) + +// for includes we don't have +// + +type revision struct { + id int + journalIndex int +} + +var ( + // emptyRoot is the known root hash of an empty trie. + emptyRoot = common.HexToHash("56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421") +) + +type proofList [][]byte + +func (n *proofList) Put(key []byte, value []byte) error { + *n = append(*n, value) + return nil +} + +func (n *proofList) Delete(key []byte) error { + panic("not supported") +} + +// StateDB structs within the ethereum protocol are used to store anything +// within the merkle trie. StateDBs take care of caching and storing +// nested states. It's the general query interface to retrieve: +// * Contracts +// * Accounts +type StateDB struct { + Db Database + prefetcher *triePrefetcher + originalRoot common.Hash // The pre-state root, before any changes were made + trie Trie + hasher crypto.KeccakState + + snaps *snapshot.Tree + snap snapshot.Snapshot + snapDestructs map[common.Hash]struct{} + snapAccounts map[common.Hash][]byte + snapStorage map[common.Hash]map[common.Hash][]byte + + // This map holds 'live' objects, which will get modified while processing a state transition. + stateObjects map[common.Address]*stateObject + stateObjectsPending map[common.Address]struct{} // State objects finalized but not yet written to the trie + stateObjectsDirty map[common.Address]struct{} // State objects modified in the current execution + + // DB error. + // State objects are used by the consensus core and VM which are + // unable to deal with database-level errors. Any error that occurs + // during a database read is memoized here and will eventually be returned + // by StateDB.Commit. + dbErr error + + // The refund counter, also used by state transitioning. + refund uint64 + + thash common.Hash + txIndex int + logs map[common.Hash][]*types.Log + logSize uint + + preimages map[common.Hash][]byte + + // Per-transaction access list + accessList *accessList + + // Journal of state modifications. This is the backbone of + // Snapshot and RevertToSnapshot. + journal *journal + validRevisions []revision + nextRevisionId int + + loadRemoteAccountsIntoStateObjects bool // for MPT generator + + // Measurements gathered during execution for debugging purposes + AccountReads time.Duration + AccountHashes time.Duration + AccountUpdates time.Duration + AccountCommits time.Duration + StorageReads time.Duration + StorageHashes time.Duration + StorageUpdates time.Duration + StorageCommits time.Duration + SnapshotAccountReads time.Duration + SnapshotStorageReads time.Duration + SnapshotCommits time.Duration +} + +func New(root common.Hash, db Database, snaps *snapshot.Tree) (*StateDB, error) { + tr, err := db.OpenTrie(root) + if err != nil { + return nil, err + } + sdb := &StateDB{ + Db: db, + trie: tr, + originalRoot: root, + snaps: snaps, + stateObjects: make(map[common.Address]*stateObject), + stateObjectsPending: make(map[common.Address]struct{}), + stateObjectsDirty: make(map[common.Address]struct{}), + logs: make(map[common.Hash][]*types.Log), + preimages: make(map[common.Hash][]byte), + journal: newJournal(), + accessList: newAccessList(), + hasher: crypto.NewKeccakState(), + loadRemoteAccountsIntoStateObjects: true, + } + /*if sdb.snaps != nil { + if sdb.snap = sdb.snaps.Snapshot(root); sdb.snap != nil { + sdb.snapDestructs = make(map[common.Hash]struct{}) + sdb.snapAccounts = make(map[common.Hash][]byte) + sdb.snapStorage = make(map[common.Hash]map[common.Hash][]byte) + } + }*/ + return sdb, nil +} + +// setError remembers the first non-nil error it is called with. +func (s *StateDB) setError(err error) { + if s.dbErr == nil { + s.dbErr = err + } +} + +func (s *StateDB) Error() error { + return s.dbErr +} + +func (s *StateDB) AddLog(log *types.Log) { + log.TxHash = s.thash + log.TxIndex = uint(s.txIndex) + log.Index = s.logSize + s.logs[s.thash] = append(s.logs[s.thash], log) + s.logSize++ +} + +func (s *StateDB) GetLogs(hash common.Hash, blockHash common.Hash) []*types.Log { + logs := s.logs[hash] + for _, l := range logs { + l.BlockHash = blockHash + } + return logs +} + +func (s *StateDB) Logs() []*types.Log { + var logs []*types.Log + for _, lgs := range s.logs { + logs = append(logs, lgs...) + } + return logs +} + +func (s *StateDB) GetTrie() Trie { + return s.trie +} + +func (s *StateDB) GetTrieRootElement() ([]byte, error) { + return rlp.EncodeToBytes(s.trie.GetRoot()) +} + +// AddPreimage records a SHA3 preimage seen by the VM. +func (s *StateDB) AddPreimage(hash common.Hash, preimage []byte) { + if _, ok := s.preimages[hash]; !ok { + s.journal.append(addPreimageChange{hash: hash}) + pi := make([]byte, len(preimage)) + copy(pi, preimage) + s.preimages[hash] = pi + } +} + +// Preimages returns a list of SHA3 preimages that have been submitted. +func (s *StateDB) Preimages() map[common.Hash][]byte { + return s.preimages +} + +// AddRefund adds gas to the refund counter +func (s *StateDB) AddRefund(gas uint64) { + s.refund += gas +} + +// SubRefund removes gas from the refund counter. +// This method will panic if the refund counter goes below zero +func (s *StateDB) SubRefund(gas uint64) { + if gas > s.refund { + panic(fmt.Sprintf("Refund counter below zero (gas: %d > refund: %d)", gas, s.refund)) + } + s.refund -= gas +} + +// Exist reports whether the given account address exists in the state. +// Notably this also returns true for suicided accounts. +func (s *StateDB) Exist(addr common.Address) bool { + return s.getStateObject(addr) != nil +} + +// Empty returns whether the state object is either non-existent +// or empty according to the EIP161 specification (balance = nonce = code = 0) +func (s *StateDB) Empty(addr common.Address) bool { + so := s.getStateObject(addr) + return so == nil || so.empty() +} + +// GetBalance retrieves the balance from the given address or 0 if object not found +func (s *StateDB) GetBalance(addr common.Address) *big.Int { + stateObject := s.getStateObject(addr) + if stateObject != nil { + return stateObject.Balance() + } + return common.Big0 +} + +func (s *StateDB) GetNonce(addr common.Address) uint64 { + stateObject := s.getStateObject(addr) + if stateObject != nil { + return stateObject.Nonce() + } + + return 0 +} + +// TxIndex returns the current transaction index set by Prepare. +func (s *StateDB) TxIndex() int { + return s.txIndex +} + +func (s *StateDB) GetCode(addr common.Address) []byte { + stateObject := s.getStateObject(addr) + if stateObject != nil { + return stateObject.Code(s.Db) + } + return nil +} + +func (s *StateDB) GetCodeSize(addr common.Address) int { + stateObject := s.getStateObject(addr) + if stateObject != nil { + return stateObject.CodeSize(s.Db) + } + return 0 +} + +func (s *StateDB) GetCodeHash(addr common.Address) common.Hash { + stateObject := s.getStateObject(addr) + if stateObject == nil { + return common.Hash{} + } + return common.BytesToHash(stateObject.CodeHash()) +} + +// GetState retrieves a value from the given account's storage trie. +func (s *StateDB) GetState(addr common.Address, hash common.Hash) common.Hash { + stateObject := s.getStateObject(addr) + if stateObject != nil { + return stateObject.GetState(s.Db, hash) + } + return common.Hash{} +} + +// GetProof returns the Merkle proof for a given account. +func (s *StateDB) GetProof(addr common.Address) ([][]byte, []byte, [][]byte, bool, error) { + return s.GetProofByHash(crypto.Keccak256Hash(addr.Bytes())) +} + +// GetProofByHash returns the Merkle proof for a given account. +func (s *StateDB) GetProofByHash(addrHash common.Hash) ([][]byte, []byte, [][]byte, bool, error) { + var proof proofList + neighbourNode, extNibbles, isLastLeaf, err := s.trie.Prove(addrHash[:], 0, &proof) + return proof, neighbourNode, extNibbles, isLastLeaf, err +} + +// GetStorageProof returns the Merkle proof for given storage slot. +func (s *StateDB) GetStorageProof(a common.Address, key common.Hash) ([][]byte, []byte, [][]byte, bool, error) { + var proof proofList + trie := s.StorageTrie(a) + if trie == nil { + return proof, nil, nil, false, errors.New("storage trie for requested address does not exist") + } + var newKey []byte + if !oracle.PreventHashingInSecureTrie { + newKey = crypto.Keccak256(key.Bytes()) + } else { + newKey = key.Bytes() + } + neighbourNode, extNibbles, isLastLeaf, err := trie.Prove(newKey, 0, &proof) + return proof, neighbourNode, extNibbles, isLastLeaf, err +} + +func (s *StateDB) GetNodeByNibbles(a common.Address, key []byte) ([]byte, error) { + trie := s.StorageTrie(a) + return trie.GetNodeByNibbles(key) +} + +// GetCommittedState retrieves a value from the given account's committed storage trie. +func (s *StateDB) GetCommittedState(addr common.Address, hash common.Hash) common.Hash { + stateObject := s.getStateObject(addr) + if stateObject != nil { + return stateObject.GetCommittedState(s.Db, hash) + } + return common.Hash{} +} + +// Database retrieves the low level database supporting the lower level trie ops. +func (s *StateDB) Database() Database { + return s.Db +} + +// StorageTrie returns the storage trie of an account. +// The return value is a copy and is nil for non-existent accounts. +func (s *StateDB) StorageTrie(addr common.Address) Trie { + stateObject := s.getStateObject(addr) + if stateObject == nil { + return nil + } + cpy := stateObject.deepCopy(s) + cpy.updateTrie(s.Db) + return cpy.getTrie(s.Db) +} + +func (s *StateDB) HasSuicided(addr common.Address) bool { + stateObject := s.getStateObject(addr) + if stateObject != nil { + return stateObject.suicided + } + return false +} + +/* + * SETTERS + */ + +// AddBalance adds amount to the account associated with addr. +func (s *StateDB) AddBalance(addr common.Address, amount *big.Int) { + s.SetStateObjectIfExists(addr) + stateObject := s.GetOrNewStateObject(addr) + if stateObject != nil { + stateObject.AddBalance(amount) + } +} + +// SubBalance subtracts amount from the account associated with addr. +func (s *StateDB) SubBalance(addr common.Address, amount *big.Int) { + s.SetStateObjectIfExists(addr) + stateObject := s.GetOrNewStateObject(addr) + if stateObject != nil { + stateObject.SubBalance(amount) + } +} + +func (s *StateDB) SetBalance(addr common.Address, amount *big.Int) { + s.SetStateObjectIfExists(addr) + stateObject := s.GetOrNewStateObject(addr) + if stateObject != nil { + stateObject.SetBalance(amount) + } +} + +func (s *StateDB) SetNonce(addr common.Address, nonce uint64) { + s.SetStateObjectIfExists(addr) + stateObject := s.GetOrNewStateObject(addr) + if stateObject != nil { + stateObject.SetNonce(nonce) + } +} + +func (s *StateDB) SetCode(addr common.Address, code []byte) { + s.SetStateObjectIfExists(addr) + stateObject := s.GetOrNewStateObject(addr) + if stateObject != nil { + stateObject.SetCode(crypto.Keccak256Hash(code), code) + } +} + +func (s *StateDB) SetState(addr common.Address, key, value common.Hash) { + s.SetStateObjectIfExists(addr) + stateObject := s.GetOrNewStateObject(addr) + if stateObject != nil { + stateObject.SetState(s.Db, key, value) + } +} + +// SetStorage replaces the entire storage for the specified account with given +// storage. This function should only be used for debugging. +func (s *StateDB) SetStorage(addr common.Address, storage map[common.Hash]common.Hash) { + s.SetStateObjectIfExists(addr) + stateObject := s.GetOrNewStateObject(addr) + if stateObject != nil { + stateObject.SetStorage(storage) + } +} + +// Retrieve an account from chain instead of +// creating a new account in GetOrNewStateObject (called from example from SetBalance). +// The reason the new account is created without this call is that the local statedb.stateObjects +// is populated only with the objects that are created locally. +func (s *StateDB) SetStateObjectIfExists(addr common.Address) { + if s.loadRemoteAccountsIntoStateObjects { + ap := oracle.PrefetchAccount(s.Db.BlockNumber, addr, nil) + if len(ap) > 0 { + ret, _ := hex.DecodeString(ap[len(ap)-1][2:]) + s.setStateObjectFromEncoding(addr, ret) + } + } +} + +// Suicide marks the given account as suicided. +// This clears the account balance. +// +// The account's state object is still available until the state is committed, +// getStateObject will return a non-nil account after Suicide. +func (s *StateDB) Suicide(addr common.Address) bool { + stateObject := s.getStateObject(addr) + if stateObject == nil { + return false + } + s.journal.append(suicideChange{ + account: &addr, + prev: stateObject.suicided, + prevbalance: new(big.Int).Set(stateObject.Balance()), + }) + stateObject.markSuicided() + stateObject.data.Balance = new(big.Int) + + return true +} + +// Added for MPT generator: +func (s *StateDB) DeleteAccount(addr common.Address) bool { + stateObject := s.getStateObject(addr) + if stateObject == nil { + return false + } + s.deleteStateObject(stateObject) + + return true +} + +// +// Setting, updating & deleting state object methods. +// + +// updateStateObject writes the given object to the trie. +func (s *StateDB) updateStateObject(obj *stateObject) { + // Track the amount of time wasted on updating the account from the trie + if metrics.EnabledExpensive { + defer func(start time.Time) { s.AccountUpdates += time.Since(start) }(time.Now()) + } + // Encode the account and update the account trie + addr := obj.Address() + + data, err := rlp.EncodeToBytes(obj) + if err != nil { + panic(fmt.Errorf("can't encode object at %x: %v", addr[:], err)) + } + if err = s.trie.TryUpdateAlwaysHash(addr[:], data); err != nil { + s.setError(fmt.Errorf("updateStateObject (%x) error: %v", addr[:], err)) + } + + // If state snapshotting is active, cache the data til commit. Note, this + // update mechanism is not symmetric to the deletion, because whereas it is + // enough to track account updates at commit time, deletions need tracking + // at transaction boundary level to ensure we capture state clearing. + /*if s.snap != nil { + s.snapAccounts[obj.addrHash] = snapshot.SlimAccountRLP(obj.data.Nonce, obj.data.Balance, obj.data.Root, obj.data.CodeHash) + }*/ +} + +// deleteStateObject removes the given object from the state trie. +func (s *StateDB) deleteStateObject(obj *stateObject) { + // Track the amount of time wasted on deleting the account from the trie + if metrics.EnabledExpensive { + defer func(start time.Time) { s.AccountUpdates += time.Since(start) }(time.Now()) + } + // Delete the account from the trie + addr := obj.Address() + // Get absense proof of account in case the deletion needs the sister node. + oracle.PrefetchAccount(big.NewInt(s.Db.BlockNumber.Int64()+1), addr, trie.GenPossibleShortNodePreimage) + if err := s.trie.TryDelete(addr[:]); err != nil { + s.setError(fmt.Errorf("deleteStateObject (%x) error: %v", addr[:], err)) + } +} + +// getStateObject retrieves a state object given by the address, returning nil if +// the object is not found or was deleted in this execution context. If you need +// to differentiate between non-existent/just-deleted, use getDeletedStateObject. +func (s *StateDB) getStateObject(addr common.Address) *stateObject { + if obj := s.getDeletedStateObject(addr); obj != nil && !obj.deleted { + return obj + } + return nil +} + +// getDeletedStateObject is similar to getStateObject, but instead of returning +// nil for a deleted state object, it returns the actual object with the deleted +// flag set. This is needed by the state journal to revert to the correct s- +// destructed object instead of wiping all knowledge about the state object. +func (s *StateDB) getDeletedStateObject(addr common.Address) *stateObject { + // Prefer live objects if any is available + if obj := s.stateObjects[addr]; obj != nil { + return obj + } + // If no live objects are available, attempt to use snapshots + var ( + data *Account + err error + ) + /*if s.snap != nil { + if metrics.EnabledExpensive { + defer func(start time.Time) { s.SnapshotAccountReads += time.Since(start) }(time.Now()) + } + var acc *snapshot.Account + if acc, err = s.snap.Account(crypto.HashData(s.hasher, addr.Bytes())); err == nil { + if acc == nil { + return nil + } + data = &Account{ + Nonce: acc.Nonce, + Balance: acc.Balance, + CodeHash: acc.CodeHash, + Root: common.BytesToHash(acc.Root), + } + if len(data.CodeHash) == 0 { + data.CodeHash = emptyCodeHash + } + if data.Root == (common.Hash{}) { + data.Root = emptyRoot + } + } + }*/ + // If snapshot unavailable or reading from it failed, load from the database + if s.snap == nil || err != nil { + if metrics.EnabledExpensive { + defer func(start time.Time) { s.AccountReads += time.Since(start) }(time.Now()) + } + oracle.PrefetchAccount(s.Db.BlockNumber, addr, nil) + enc, err := s.trie.TryGet(addr.Bytes()) + if err != nil { + s.setError(fmt.Errorf("getDeleteStateObject (%x) error: %v", addr.Bytes(), err)) + return nil + } + if len(enc) == 0 { + return nil + } + data = new(Account) + if err := rlp.DecodeBytes(enc, data); err != nil { + log.Error("Failed to decode state object", "addr", addr, "err", err) + return nil + } + } + // Insert into the live set + obj := newObject(s, addr, *data) + s.setStateObject(obj) + return obj +} + +// Added for MPT generator. This loads account into stateObjects - if an account is not +// in stateObjects, a new account is created in GetOrNewStateObject. +func (s *StateDB) setStateObjectFromEncoding(addr common.Address, enc []byte) error { + if len(enc) == 0 { + return errors.New("encoding of account is of length 0") + } + data := new(Account) + keyLen := enc[2] - 128 + accData := enc[3+keyLen+2:] + + if err := rlp.DecodeBytes(accData, data); err != nil { + // If it's not account RLP, nothing is set (in stateObjects) - this is to prevent + // the need of checking whether enc is account RLP or something else (like branch RLP). + fmt.Println("failed to decode account") + return nil + } + + obj := newObject(s, addr, *data) + s.setStateObject(obj) + + return nil +} + +func (s *StateDB) setStateObject(object *stateObject) { + s.stateObjects[object.Address()] = object +} + +// GetOrNewStateObject retrieves a state object or create a new state object if nil. +func (s *StateDB) GetOrNewStateObject(addr common.Address) *stateObject { + stateObject := s.getStateObject(addr) + if stateObject == nil { + stateObject, _ = s.createObject(addr) + } + return stateObject +} + +// createObject creates a new state object. If there is an existing account with +// the given address, it is overwritten and returned as the second return value. +func (s *StateDB) createObject(addr common.Address) (newobj, prev *stateObject) { + prev = s.getDeletedStateObject(addr) // Note, prev might have been deleted, we need that! + + var prevdestruct bool + if s.snap != nil && prev != nil { + _, prevdestruct = s.snapDestructs[prev.addrHash] + if !prevdestruct { + s.snapDestructs[prev.addrHash] = struct{}{} + } + } + newobj = newObject(s, addr, Account{}) + if prev == nil { + s.journal.append(createObjectChange{account: &addr}) + } else { + s.journal.append(resetObjectChange{prev: prev, prevdestruct: prevdestruct}) + } + s.setStateObject(newobj) + if prev != nil && !prev.deleted { + return newobj, prev + } + return newobj, nil +} + +// CreateAccount explicitly creates a state object. If a state object with the address +// already exists the balance is carried over to the new account. +// +// CreateAccount is called during the EVM CREATE operation. The situation might arise that +// a contract does the following: +// +// 1. sends funds to sha(account ++ (nonce + 1)) +// 2. tx_create(sha(account ++ nonce)) (note that this gets the address of 1) +// +// Carrying over the balance ensures that Ether doesn't disappear. +func (s *StateDB) CreateAccount(addr common.Address) { + newObj, prev := s.createObject(addr) + if prev != nil { + newObj.setBalance(prev.data.Balance) + } +} + +func (db *StateDB) ForEachStorage(addr common.Address, cb func(key, value common.Hash) bool) error { + /*so := db.getStateObject(addr) + if so == nil { + return nil + } + it := trie.NewIterator(so.getTrie(db.db).NodeIterator(nil)) + + for it.Next() { + key := common.BytesToHash(db.trie.GetKey(it.Key)) + if value, dirty := so.dirtyStorage[key]; dirty { + if !cb(key, value) { + return nil + } + continue + } + + if len(it.Value) > 0 { + _, content, _, err := rlp.Split(it.Value) + if err != nil { + return err + } + if !cb(key, common.BytesToHash(content)) { + return nil + } + } + }*/ + fmt.Println("ForEachStorage is BROKEN!!") + return nil +} + +// Copy creates a deep, independent copy of the state. +// Snapshots of the copied state cannot be applied to the copy. +func (s *StateDB) Copy() *StateDB { + // Copy all the basic fields, initialize the memory ones + state := &StateDB{ + Db: s.Db, + trie: s.Db.CopyTrie(s.trie), + stateObjects: make(map[common.Address]*stateObject, len(s.journal.dirties)), + stateObjectsPending: make(map[common.Address]struct{}, len(s.stateObjectsPending)), + stateObjectsDirty: make(map[common.Address]struct{}, len(s.journal.dirties)), + refund: s.refund, + logs: make(map[common.Hash][]*types.Log, len(s.logs)), + logSize: s.logSize, + preimages: make(map[common.Hash][]byte, len(s.preimages)), + journal: newJournal(), + hasher: crypto.NewKeccakState(), + } + // Copy the dirty states, logs, and preimages + for addr := range s.journal.dirties { + // As documented [here](https://github.com/ethereum/go-ethereum/pull/16485#issuecomment-380438527), + // and in the Finalise-method, there is a case where an object is in the journal but not + // in the stateObjects: OOG after touch on ripeMD prior to Byzantium. Thus, we need to check for + // nil + if object, exist := s.stateObjects[addr]; exist { + // Even though the original object is dirty, we are not copying the journal, + // so we need to make sure that anyside effect the journal would have caused + // during a commit (or similar op) is already applied to the copy. + state.stateObjects[addr] = object.deepCopy(state) + + state.stateObjectsDirty[addr] = struct{}{} // Mark the copy dirty to force internal (code/state) commits + state.stateObjectsPending[addr] = struct{}{} // Mark the copy pending to force external (account) commits + } + } + // Above, we don't copy the actual journal. This means that if the copy is copied, the + // loop above will be a no-op, since the copy's journal is empty. + // Thus, here we iterate over stateObjects, to enable copies of copies + for addr := range s.stateObjectsPending { + if _, exist := state.stateObjects[addr]; !exist { + state.stateObjects[addr] = s.stateObjects[addr].deepCopy(state) + } + state.stateObjectsPending[addr] = struct{}{} + } + for addr := range s.stateObjectsDirty { + if _, exist := state.stateObjects[addr]; !exist { + state.stateObjects[addr] = s.stateObjects[addr].deepCopy(state) + } + state.stateObjectsDirty[addr] = struct{}{} + } + for hash, logs := range s.logs { + cpy := make([]*types.Log, len(logs)) + for i, l := range logs { + cpy[i] = new(types.Log) + *cpy[i] = *l + } + state.logs[hash] = cpy + } + for hash, preimage := range s.preimages { + state.preimages[hash] = preimage + } + // Do we need to copy the access list? In practice: No. At the start of a + // transaction, the access list is empty. In practice, we only ever copy state + // _between_ transactions/blocks, never in the middle of a transaction. + // However, it doesn't cost us much to copy an empty list, so we do it anyway + // to not blow up if we ever decide copy it in the middle of a transaction + state.accessList = s.accessList.Copy() + + // If there's a prefetcher running, make an inactive copy of it that can + // only access data but does not actively preload (since the user will not + // know that they need to explicitly terminate an active copy). + if s.prefetcher != nil { + state.prefetcher = s.prefetcher.copy() + } + if s.snaps != nil { + // In order for the miner to be able to use and make additions + // to the snapshot tree, we need to copy that aswell. + // Otherwise, any block mined by ourselves will cause gaps in the tree, + // and force the miner to operate trie-backed only + state.snaps = s.snaps + state.snap = s.snap + // deep copy needed + state.snapDestructs = make(map[common.Hash]struct{}) + for k, v := range s.snapDestructs { + state.snapDestructs[k] = v + } + state.snapAccounts = make(map[common.Hash][]byte) + for k, v := range s.snapAccounts { + state.snapAccounts[k] = v + } + state.snapStorage = make(map[common.Hash]map[common.Hash][]byte) + for k, v := range s.snapStorage { + temp := make(map[common.Hash][]byte) + for kk, vv := range v { + temp[kk] = vv + } + state.snapStorage[k] = temp + } + } + return state +} + +// Snapshot returns an identifier for the current revision of the state. +func (s *StateDB) Snapshot() int { + id := s.nextRevisionId + s.nextRevisionId++ + s.validRevisions = append(s.validRevisions, revision{id, s.journal.length()}) + return id +} + +// RevertToSnapshot reverts all state changes made since the given revision. +func (s *StateDB) RevertToSnapshot(revid int) { + // Find the snapshot in the stack of valid snapshots. + idx := sort.Search(len(s.validRevisions), func(i int) bool { + return s.validRevisions[i].id >= revid + }) + if idx == len(s.validRevisions) || s.validRevisions[idx].id != revid { + panic(fmt.Errorf("revision id %v cannot be reverted", revid)) + } + snapshot := s.validRevisions[idx].journalIndex + + // Replay the journal to undo changes and remove invalidated snapshots + s.journal.revert(s, snapshot) + s.validRevisions = s.validRevisions[:idx] +} + +// GetRefund returns the current value of the refund counter. +func (s *StateDB) GetRefund() uint64 { + return s.refund +} + +// Finalise finalises the state by removing the s destructed objects and clears +// the journal as well as the refunds. Finalise, however, will not push any updates +// into the tries just yet. Only IntermediateRoot or Commit will do that. +func (s *StateDB) Finalise(deleteEmptyObjects bool) { + addressesToPrefetch := make([][]byte, 0, len(s.journal.dirties)) + for addr := range s.journal.dirties { + obj, exist := s.stateObjects[addr] + if !exist { + // ripeMD is 'touched' at block 1714175, in tx 0x1237f737031e40bcde4a8b7e717b2d15e3ecadfe49bb1bbc71ee9deb09c6fcf2 + // That tx goes out of gas, and although the notion of 'touched' does not exist there, the + // touch-event will still be recorded in the journal. Since ripeMD is a special snowflake, + // it will persist in the journal even though the journal is reverted. In this special circumstance, + // it may exist in `s.journal.dirties` but not in `s.stateObjects`. + // Thus, we can safely ignore it here + continue + } + if obj.suicided || (deleteEmptyObjects && obj.empty()) { + obj.deleted = true + + // If state snapshotting is active, also mark the destruction there. + // Note, we can't do this only at the end of a block because multiple + // transactions within the same block might self destruct and then + // ressurrect an account; but the snapshotter needs both events. + if s.snap != nil { + s.snapDestructs[obj.addrHash] = struct{}{} // We need to maintain account deletions explicitly (will remain set indefinitely) + delete(s.snapAccounts, obj.addrHash) // Clear out any previously updated account data (may be recreated via a ressurrect) + delete(s.snapStorage, obj.addrHash) // Clear out any previously updated storage data (may be recreated via a ressurrect) + } + } else { + obj.finalise(true) // Prefetch slots in the background + } + s.stateObjectsPending[addr] = struct{}{} + s.stateObjectsDirty[addr] = struct{}{} + + // At this point, also ship the address off to the precacher. The precacher + // will start loading tries, and when the change is eventually committed, + // the commit-phase will be a lot faster + addressesToPrefetch = append(addressesToPrefetch, common.CopyBytes(addr[:])) // Copy needed for closure + } + if s.prefetcher != nil && len(addressesToPrefetch) > 0 { + s.prefetcher.prefetch(s.originalRoot, addressesToPrefetch) + } + // Invalidate journal because reverting across transactions is not allowed. + s.clearJournalAndRefund() +} + +// IntermediateRoot computes the current root hash of the state trie. +// It is called in between transactions to get the root hash that +// goes into transaction receipts. +func (s *StateDB) IntermediateRoot(deleteEmptyObjects bool) common.Hash { + // Finalise all the dirty storage states and write them into the tries + s.Finalise(deleteEmptyObjects) + + // If there was a trie prefetcher operating, it gets aborted and irrevocably + // modified after we start retrieving tries. Remove it from the statedb after + // this round of use. + // + // This is weird pre-byzantium since the first tx runs with a prefetcher and + // the remainder without, but pre-byzantium even the initial prefetcher is + // useless, so no sleep lost. + prefetcher := s.prefetcher + if s.prefetcher != nil { + defer func() { + s.prefetcher.close() + s.prefetcher = nil + }() + } + // Although naively it makes sense to retrieve the account trie and then do + // the contract storage and account updates sequentially, that short circuits + // the account prefetcher. Instead, let's process all the storage updates + // first, giving the account prefeches just a few more milliseconds of time + // to pull useful data from disk. + for addr := range s.stateObjectsPending { + if obj := s.stateObjects[addr]; !obj.deleted { + obj.updateRoot(s.Db) + } + } + // Now we're about to start to write changes to the trie. The trie is so far + // _untouched_. We can check with the prefetcher, if it can give us a trie + // which has the same root, but also has some content loaded into it. + if prefetcher != nil { + if trie := prefetcher.trie(s.originalRoot); trie != nil { + s.trie = trie + } + } + usedAddrs := make([][]byte, 0, len(s.stateObjectsPending)) + for addr := range s.stateObjectsPending { + if obj := s.stateObjects[addr]; obj.deleted { + s.deleteStateObject(obj) + } else { + s.updateStateObject(obj) + } + usedAddrs = append(usedAddrs, common.CopyBytes(addr[:])) // Copy needed for closure + } + if prefetcher != nil { + prefetcher.used(s.originalRoot, usedAddrs) + } + if len(s.stateObjectsPending) > 0 { + s.stateObjectsPending = make(map[common.Address]struct{}) + } + // Track the amount of time wasted on hashing the account trie + if metrics.EnabledExpensive { + defer func(start time.Time) { s.AccountHashes += time.Since(start) }(time.Now()) + } + return s.trie.Hash() +} + +// Prepare sets the current transaction hash and index which are +// used when the EVM emits new state logs. +func (s *StateDB) Prepare(thash common.Hash, ti int) { + s.thash = thash + s.txIndex = ti + s.accessList = newAccessList() +} + +func (s *StateDB) clearJournalAndRefund() { + if len(s.journal.entries) > 0 { + s.journal = newJournal() + s.refund = 0 + } + s.validRevisions = s.validRevisions[:0] // Snapshots can be created without journal entires +} + +// Commit writes the state to the underlying in-memory trie database. +func (s *StateDB) Commit(deleteEmptyObjects bool) (common.Hash, error) { + if s.dbErr != nil { + return common.Hash{}, fmt.Errorf("commit aborted due to earlier error: %v", s.dbErr) + } + // Finalize any pending changes and merge everything into the tries + s.IntermediateRoot(deleteEmptyObjects) + + for addr := range s.stateObjectsDirty { + if obj := s.stateObjects[addr]; !obj.deleted { + fmt.Println("dirty state object", addr) + // Write any contract code associated with the state object + if obj.code != nil && obj.dirtyCode { + fmt.Println("write code", common.BytesToHash(obj.CodeHash())) + } + // Write any storage changes in the state object to its storage trie + if err := obj.CommitTrie(s.Db); err != nil { + return common.Hash{}, err + } + } + } + + // Commit objects to the trie, measuring the elapsed time + /*codeWriter := s.db.TrieDB().DiskDB().NewBatch() + for addr := range s.stateObjectsDirty { + if obj := s.stateObjects[addr]; !obj.deleted { + // Write any contract code associated with the state object + if obj.code != nil && obj.dirtyCode { + rawdb.WriteCode(codeWriter, common.BytesToHash(obj.CodeHash()), obj.code) + obj.dirtyCode = false + } + // Write any storage changes in the state object to its storage trie + if err := obj.CommitTrie(s.db); err != nil { + return common.Hash{}, err + } + } + } + if len(s.stateObjectsDirty) > 0 { + s.stateObjectsDirty = make(map[common.Address]struct{}) + } + if codeWriter.ValueSize() > 0 { + if err := codeWriter.Write(); err != nil { + log.Crit("Failed to commit dirty codes", "error", err) + } + }*/ + + // Write the account trie changes, measuing the amount of wasted time + var start time.Time + if metrics.EnabledExpensive { + start = time.Now() + } + // The onleaf func is called _serially_, so we can reuse the same account + // for unmarshalling every time. + var account Account + root, err := s.trie.Commit(func(_ [][]byte, _ []byte, leaf []byte, parent common.Hash) error { + if err := rlp.DecodeBytes(leaf, &account); err != nil { + return nil + } + /*if account.Root != emptyRoot { + s.db.TrieDB().Reference(account.Root, parent) + }*/ + return nil + }) + if metrics.EnabledExpensive { + s.AccountCommits += time.Since(start) + } + // If snapshotting is enabled, update the snapshot tree with this new version + /*if s.snap != nil { + if metrics.EnabledExpensive { + defer func(start time.Time) { s.SnapshotCommits += time.Since(start) }(time.Now()) + } + // Only update if there's a state transition (skip empty Clique blocks) + if parent := s.snap.Root(); parent != root { + if err := s.snaps.Update(root, parent, s.snapDestructs, s.snapAccounts, s.snapStorage); err != nil { + log.Warn("Failed to update snapshot tree", "from", parent, "to", root, "err", err) + } + // Keep 128 diff layers in the memory, persistent layer is 129th. + // - head layer is paired with HEAD state + // - head-1 layer is paired with HEAD-1 state + // - head-127 layer(bottom-most diff layer) is paired with HEAD-127 state + if err := s.snaps.Cap(root, 128); err != nil { + log.Warn("Failed to cap snapshot tree", "root", root, "layers", 128, "err", err) + } + } + s.snap, s.snapDestructs, s.snapAccounts, s.snapStorage = nil, nil, nil, nil + }*/ + //fmt.Println("Commit doesn't work!!!") + return root, err +} + +// PrepareAccessList handles the preparatory steps for executing a state transition with +// regards to both EIP-2929 and EIP-2930: +// +// - Add sender to access list (2929) +// - Add destination to access list (2929) +// - Add precompiles to access list (2929) +// - Add the contents of the optional tx access list (2930) +// +// This method should only be called if Berlin/2929+2930 is applicable at the current number. +func (s *StateDB) PrepareAccessList(sender common.Address, dst *common.Address, precompiles []common.Address, list types.AccessList) { + s.AddAddressToAccessList(sender) + if dst != nil { + s.AddAddressToAccessList(*dst) + // If it's a create-tx, the destination will be added inside evm.create + } + for _, addr := range precompiles { + s.AddAddressToAccessList(addr) + } + for _, el := range list { + s.AddAddressToAccessList(el.Address) + for _, key := range el.StorageKeys { + s.AddSlotToAccessList(el.Address, key) + } + } +} + +// AddAddressToAccessList adds the given address to the access list +func (s *StateDB) AddAddressToAccessList(addr common.Address) { + if s.accessList.AddAddress(addr) { + s.journal.append(accessListAddAccountChange{&addr}) + } +} + +// AddSlotToAccessList adds the given (address, slot)-tuple to the access list +func (s *StateDB) AddSlotToAccessList(addr common.Address, slot common.Hash) { + addrMod, slotMod := s.accessList.AddSlot(addr, slot) + if addrMod { + // In practice, this should not happen, since there is no way to enter the + // scope of 'address' without having the 'address' become already added + // to the access list (via call-variant, create, etc). + // Better safe than sorry, though + s.journal.append(accessListAddAccountChange{&addr}) + } + if slotMod { + s.journal.append(accessListAddSlotChange{ + address: &addr, + slot: &slot, + }) + } +} + +// AddressInAccessList returns true if the given address is in the access list. +func (s *StateDB) AddressInAccessList(addr common.Address) bool { + return s.accessList.ContainsAddress(addr) +} + +// SlotInAccessList returns true if the given (address, slot)-tuple is in the access list. +func (s *StateDB) SlotInAccessList(addr common.Address, slot common.Hash) (addressPresent bool, slotPresent bool) { + return s.accessList.Contains(addr, slot) +} + +// MPT generator: used only because the tests have been written by creating a new account +// for each address - changing this would mean the tests would change. +func (s *StateDB) DisableLoadingRemoteAccounts() { + s.loadRemoteAccountsIntoStateObjects = false +} diff --git a/mpt-witness-generator/trie/committer.go b/mpt-witness-generator/trie/committer.go new file mode 100644 index 0000000000..61cd82017e --- /dev/null +++ b/mpt-witness-generator/trie/committer.go @@ -0,0 +1,271 @@ +// Copyright 2019 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package trie + +import ( + "errors" + "fmt" + "sync" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "golang.org/x/crypto/sha3" +) + +// leafChanSize is the size of the leafCh. It's a pretty arbitrary number, to allow +// some parallelism but not incur too much memory overhead. +const leafChanSize = 200 + +// leaf represents a trie leaf value +type leaf struct { + size int // size of the rlp data (estimate) + hash common.Hash // hash of rlp data + node Node // the node to commit +} + +// committer is a type used for the trie Commit operation. A committer has some +// internal preallocated temp space, and also a callback that is invoked when +// leaves are committed. The leafs are passed through the `leafCh`, to allow +// some level of parallelism. +// By 'some level' of parallelism, it's still the case that all leaves will be +// processed sequentially - onleaf will never be called in parallel or out of order. +type committer struct { + tmp sliceBuffer + sha crypto.KeccakState + + onleaf LeafCallback + leafCh chan *leaf +} + +// committers live in a global sync.Pool +var committerPool = sync.Pool{ + New: func() interface{} { + return &committer{ + tmp: make(sliceBuffer, 0, 550), // cap is as large as a full fullNode. + sha: sha3.NewLegacyKeccak256().(crypto.KeccakState), + } + }, +} + +// newCommitter creates a new committer or picks one from the pool. +func newCommitter() *committer { + return committerPool.Get().(*committer) +} + +func returnCommitterToPool(h *committer) { + h.onleaf = nil + h.leafCh = nil + committerPool.Put(h) +} + +// commit collapses a node down into a hash node and inserts it into the database +func (c *committer) Commit(n Node, db *Database) (HashNode, error) { + if db == nil { + return nil, errors.New("no db provided") + } + h, err := c.commit(n, db) + if err != nil { + return nil, err + } + return h.(HashNode), nil +} + +// commit collapses a node down into a hash node and inserts it into the database +func (c *committer) commit(n Node, db *Database) (Node, error) { + // if this path is clean, use available cached data + hash, dirty := n.cache() + if hash != nil && !dirty { + return hash, nil + } + // Commit children, then parent, and remove remove the dirty flag. + switch cn := n.(type) { + case *ShortNode: + // Commit child + collapsed := cn.copy() + + // If the child is fullnode, recursively commit. + // Otherwise it can only be hashNode or valueNode. + if _, ok := cn.Val.(*FullNode); ok { + childV, err := c.commit(cn.Val, db) + if err != nil { + return nil, err + } + collapsed.Val = childV + } + // The key needs to be copied, since we're delivering it to database + collapsed.Key = HexToCompact(cn.Key) + hashedNode := c.store(collapsed, db) + if hn, ok := hashedNode.(HashNode); ok { + return hn, nil + } + return collapsed, nil + case *FullNode: + hashedKids, err := c.commitChildren(cn, db) + if err != nil { + return nil, err + } + collapsed := cn.copy() + collapsed.Children = hashedKids + + hashedNode := c.store(collapsed, db) + if hn, ok := hashedNode.(HashNode); ok { + return hn, nil + } + return collapsed, nil + case HashNode: + return cn, nil + default: + // nil, valuenode shouldn't be committed + panic(fmt.Sprintf("%T: invalid node: %v", n, n)) + } +} + +// commitChildren commits the children of the given fullnode +func (c *committer) commitChildren(n *FullNode, db *Database) ([17]Node, error) { + var children [17]Node + for i := 0; i < 16; i++ { + child := n.Children[i] + if child == nil { + continue + } + // If it's the hashed child, save the hash value directly. + // Note: it's impossible that the child in range [0, 15] + // is a valuenode. + if hn, ok := child.(HashNode); ok { + children[i] = hn + continue + } + // Commit the child recursively and store the "hashed" value. + // Note the returned node can be some embedded nodes, so it's + // possible the type is not hashnode. + hashed, err := c.commit(child, db) + if err != nil { + return children, err + } + children[i] = hashed + } + // For the 17th child, it's possible the type is valuenode. + if n.Children[16] != nil { + children[16] = n.Children[16] + } + return children, nil +} + +// store hashes the node n and if we have a storage layer specified, it writes +// the key/value pair to it and tracks any node->child references as well as any +// node->external trie references. +func (c *committer) store(n Node, db *Database) Node { + // Larger nodes are replaced by their hash and stored in the database. + var ( + hash, _ = n.cache() + size int + ) + if hash == nil { + // This was not generated - must be a small node stored in the parent. + // In theory we should apply the leafCall here if it's not nil(embedded + // node usually contains value). But small value(less than 32bytes) is + // not our target. + return n + } else { + // We have the hash already, estimate the RLP encoding-size of the node. + // The size is used for mem tracking, does not need to be exact + size = estimateSize(n) + } + // If we're using channel-based leaf-reporting, send to channel. + // The leaf channel will be active only when there an active leaf-callback + if c.leafCh != nil { + c.leafCh <- &leaf{ + size: size, + hash: common.BytesToHash(hash), + node: n, + } + } else if db != nil { + // No leaf-callback used, but there's still a database. Do serial + // insertion + db.lock.Lock() + db.insert(common.BytesToHash(hash), size, n) + db.lock.Unlock() + } + return hash +} + +// commitLoop does the actual insert + leaf callback for nodes. +func (c *committer) commitLoop(db *Database) { + for item := range c.leafCh { + var ( + hash = item.hash + size = item.size + n = item.node + ) + // We are pooling the trie nodes into an intermediate memory cache + db.lock.Lock() + db.insert(hash, size, n) + db.lock.Unlock() + + if c.onleaf != nil { + switch n := n.(type) { + case *ShortNode: + if child, ok := n.Val.(ValueNode); ok { + c.onleaf(nil, nil, child, hash) + } + case *FullNode: + // For children in range [0, 15], it's impossible + // to contain valuenode. Only check the 17th child. + if n.Children[16] != nil { + c.onleaf(nil, nil, n.Children[16].(ValueNode), hash) + } + } + } + } +} + +func (c *committer) makeHashNode(data []byte) HashNode { + n := make(HashNode, c.sha.Size()) + c.sha.Reset() + c.sha.Write(data) + c.sha.Read(n) + return n +} + +// estimateSize estimates the size of an rlp-encoded node, without actually +// rlp-encoding it (zero allocs). This method has been experimentally tried, and with a trie +// with 1000 leafs, the only errors above 1% are on small shortnodes, where this +// method overestimates by 2 or 3 bytes (e.g. 37 instead of 35) +func estimateSize(n Node) int { + switch n := n.(type) { + case *ShortNode: + // A short node contains a compacted key, and a value. + return 3 + len(n.Key) + estimateSize(n.Val) + case *FullNode: + // A full node contains up to 16 hashes (some nils), and a key + s := 3 + for i := 0; i < 16; i++ { + if child := n.Children[i]; child != nil { + s += estimateSize(child) + } else { + s++ + } + } + return s + case ValueNode: + return 1 + len(n) + case HashNode: + return 1 + len(n) + default: + panic(fmt.Sprintf("node type %T", n)) + } +} diff --git a/mpt-witness-generator/trie/database.go b/mpt-witness-generator/trie/database.go new file mode 100644 index 0000000000..65dd5de1e9 --- /dev/null +++ b/mpt-witness-generator/trie/database.go @@ -0,0 +1,101 @@ +package trie + +import ( + "bytes" + "io" + "math/big" + "sync" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/rlp" + "github.com/privacy-scaling-explorations/mpt-witness-generator/oracle" +) + +// rawNode is a simple binary blob used to differentiate between collapsed trie +// nodes and already encoded RLP binary blobs (while at the same time store them +// in the same cache fields). +type rawNode []byte + +func (n rawNode) cache() (HashNode, bool) { panic("this should never end up in a live trie") } +func (n rawNode) fstring(ind string) string { panic("this should never end up in a live trie") } + +func (n rawNode) EncodeRLP(w io.Writer) error { + _, err := w.Write(n) + return err +} + +type Database struct { + BlockNumber *big.Int + Root common.Hash + lock sync.RWMutex +} + +func NewDatabase(header types.Header) Database { + triedb := Database{BlockNumber: header.Number, Root: header.Root} + //triedb.preimages = make(map[common.Hash][]byte) + //fmt.Println("init database") + oracle.PrefetchAccount(header.Number, common.Address{}, nil) + + //panic("preseed") + return triedb +} + +// Node retrieves an encoded cached trie node from memory. If it cannot be found +// cached, the method queries the persistent database for the content. +func (db *Database) Node(hash common.Hash) ([]byte, error) { + panic("no Node function") +} + +// node retrieves a cached trie node from memory, or returns nil if none can be +// found in the memory cache. +func (db *Database) node(hash common.Hash) Node { + //fmt.Println("node", hash) + if val := oracle.Preimage(hash); val != nil { + return mustDecodeNode(hash[:], val) + } + return nil +} + +// insert inserts a collapsed trie node into the memory database. +// The blob size must be specified to allow proper size tracking. +// All nodes inserted by this function will be reference tracked +// and in theory should only used for **trie nodes** insertion. +func (db *Database) insert(hash common.Hash, size int, node Node) { + // can put things in the oracle here if we care + //fmt.Println("insert", hash, size) +} + +func GenPossibleShortNodePreimage(preimages map[common.Hash][]byte) { + newPreimages := make(map[common.Hash][]byte) + + for _, val := range preimages { + node, err := DecodeNode(nil, val) + if err != nil { + continue + } + + if node, ok := node.(*ShortNode); ok { + for i := len(node.Key) - 1; i > 0; i-- { + n := ShortNode{ + Key: HexToCompact(node.Key[i:]), + Val: node.Val, + } + buf := new(bytes.Buffer) + if err := rlp.Encode(buf, n); err != nil { + panic("encode error: " + err.Error()) + } + preimage := buf.Bytes() + if len(preimage) < 32 { + continue + } + newPreimages[crypto.Keccak256Hash(preimage)] = preimage + } + } + } + + for hash, val := range newPreimages { + preimages[hash] = val + } +} diff --git a/mpt-witness-generator/trie/encoding.go b/mpt-witness-generator/trie/encoding.go new file mode 100644 index 0000000000..1ed739984d --- /dev/null +++ b/mpt-witness-generator/trie/encoding.go @@ -0,0 +1,146 @@ +// Copyright 2014 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package trie + +// Trie keys are dealt with in three distinct encodings: +// +// KEYBYTES encoding contains the actual key and nothing else. This encoding is the +// input to most API functions. +// +// HEX encoding contains one byte for each nibble of the key and an optional trailing +// 'terminator' byte of value 0x10 which indicates whether or not the node at the key +// contains a value. Hex key encoding is used for nodes loaded in memory because it's +// convenient to access. +// +// COMPACT encoding is defined by the Ethereum Yellow Paper (it's called "hex prefix +// encoding" there) and contains the bytes of the key and a flag. The high nibble of the +// first byte contains the flag; the lowest bit encoding the oddness of the length and +// the second-lowest encoding whether the node at the key is a value node. The low nibble +// of the first byte is zero in the case of an even number of nibbles and the first nibble +// in the case of an odd number. All remaining nibbles (now an even number) fit properly +// into the remaining bytes. Compact encoding is used for nodes stored on disk. + +func HexToCompact(hex []byte) []byte { + terminator := byte(0) + if hasTerm(hex) { + terminator = 1 + hex = hex[:len(hex)-1] + } + + buf := make([]byte, len(hex)/2+1) + buf[0] = terminator << 5 // the flag byte + if len(hex)&1 == 1 { + buf[0] |= 1 << 4 // odd flag + buf[0] |= hex[0] // first nibble is contained in the first byte + hex = hex[1:] + } + decodeNibbles(hex, buf[1:]) + return buf +} + +// hexToCompactInPlace places the compact key in input buffer, returning the length +// needed for the representation +func hexToCompactInPlace(hex []byte) int { + var ( + hexLen = len(hex) // length of the hex input + firstByte = byte(0) + ) + // Check if we have a terminator there + if hexLen > 0 && hex[hexLen-1] == 16 { + firstByte = 1 << 5 + hexLen-- // last part was the terminator, ignore that + } + var ( + binLen = hexLen/2 + 1 + ni = 0 // index in hex + bi = 1 // index in bin (compact) + ) + if hexLen&1 == 1 { + firstByte |= 1 << 4 // odd flag + firstByte |= hex[0] // first nibble is contained in the first byte + ni++ + } + for ; ni < hexLen; bi, ni = bi+1, ni+2 { + hex[bi] = hex[ni]<<4 | hex[ni+1] + } + hex[0] = firstByte + return binLen +} + +func compactToHex(compact []byte) []byte { + if len(compact) == 0 { + return compact + } + base := KeybytesToHex(compact) + // delete terminator flag + if base[0] < 2 { + base = base[:len(base)-1] + } + // apply odd flag + chop := 2 - base[0]&1 + return base[chop:] +} + +func KeybytesToHex(str []byte) []byte { + l := len(str)*2 + 1 + var nibbles = make([]byte, l) + for i, b := range str { + nibbles[i*2] = b / 16 + nibbles[i*2+1] = b % 16 + } + nibbles[l-1] = 16 + return nibbles +} + +// hexToKeybytes turns hex nibbles into key bytes. +// This can only be used for keys of even length. +func HexToKeybytes(hex []byte) []byte { + if hasTerm(hex) { + hex = hex[:len(hex)-1] + } + if len(hex)&1 != 0 { + panic("can't convert hex key of odd length") + } + key := make([]byte, len(hex)/2) + decodeNibbles(hex, key) + return key +} + +func decodeNibbles(nibbles []byte, bytes []byte) { + for bi, ni := 0, 0; ni < len(nibbles); bi, ni = bi+1, ni+2 { + bytes[bi] = nibbles[ni]<<4 | nibbles[ni+1] + } +} + +// prefixLen returns the length of the common prefix of a and b. +func prefixLen(a, b []byte) int { + var i, length = 0, len(a) + if len(b) < length { + length = len(b) + } + for ; i < length; i++ { + if a[i] != b[i] { + break + } + } + return i +} + +// hasTerm returns whether a hex key has the terminator flag. +func hasTerm(s []byte) bool { + return len(s) > 0 && s[len(s)-1] == 16 +} diff --git a/mpt-witness-generator/trie/errors.go b/mpt-witness-generator/trie/errors.go new file mode 100644 index 0000000000..567b80078c --- /dev/null +++ b/mpt-witness-generator/trie/errors.go @@ -0,0 +1,35 @@ +// Copyright 2015 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package trie + +import ( + "fmt" + + "github.com/ethereum/go-ethereum/common" +) + +// MissingNodeError is returned by the trie functions (TryGet, TryUpdate, TryDelete) +// in the case where a trie node is not present in the local database. It contains +// information necessary for retrieving the missing node. +type MissingNodeError struct { + NodeHash common.Hash // hash of the missing node + Path []byte // hex-encoded path to the missing node +} + +func (err *MissingNodeError) Error() string { + return fmt.Sprintf("missing trie node %x (path %x)", err.NodeHash, err.Path) +} diff --git a/mpt-witness-generator/trie/hasher.go b/mpt-witness-generator/trie/hasher.go new file mode 100644 index 0000000000..c96677415b --- /dev/null +++ b/mpt-witness-generator/trie/hasher.go @@ -0,0 +1,207 @@ +// Copyright 2019 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package trie + +import ( + "sync" + + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/rlp" + "golang.org/x/crypto/sha3" +) + +type sliceBuffer []byte + +func (b *sliceBuffer) Write(data []byte) (n int, err error) { + *b = append(*b, data...) + return len(data), nil +} + +func (b *sliceBuffer) Reset() { + *b = (*b)[:0] +} + +// hasher is a type used for the trie Hash operation. A hasher has some +// internal preallocated temp space +type hasher struct { + sha crypto.KeccakState + tmp sliceBuffer + parallel bool // Whether to use paralallel threads when hashing +} + +// hasherPool holds pureHashers +var hasherPool = sync.Pool{ + New: func() interface{} { + return &hasher{ + tmp: make(sliceBuffer, 0, 550), // cap is as large as a full fullNode. + sha: sha3.NewLegacyKeccak256().(crypto.KeccakState), + } + }, +} + +func NewHasher(parallel bool) *hasher { + h := hasherPool.Get().(*hasher) + h.parallel = parallel + return h +} + +func returnHasherToPool(h *hasher) { + hasherPool.Put(h) +} + +// Hash collapses a node down into a Hash node, also returning a copy of the +// original node initialized with the computed Hash to replace the original one. +func (h *hasher) Hash(n Node, force bool) (hashed Node, cached Node) { + // Return the cached hash if it's available + if hash, _ := n.cache(); hash != nil { + return hash, n + } + // Trie not processed yet, walk the children + switch n := n.(type) { + case *ShortNode: + collapsed, cached := h.hashShortNodeChildren(n) + hashed := h.shortnodeToHash(collapsed, force) + // We need to retain the possibly _not_ hashed node, in case it was too + // small to be hashed + if hn, ok := hashed.(HashNode); ok { + cached.flags.hash = hn + } else { + cached.flags.hash = nil + } + return hashed, cached + case *FullNode: + collapsed, cached := h.hashFullNodeChildren(n) + hashed = h.FullnodeToHash(collapsed, force) + if hn, ok := hashed.(HashNode); ok { + cached.flags.hash = hn + } else { + cached.flags.hash = nil + } + return hashed, cached + default: + // Value and hash nodes don't have children so they're left as were + return n, n + } +} + +// hashShortNodeChildren collapses the short node. The returned collapsed node +// holds a live reference to the Key, and must not be modified. +// The cached +func (h *hasher) hashShortNodeChildren(n *ShortNode) (collapsed, cached *ShortNode) { + // Hash the short node's child, caching the newly hashed subtree + collapsed, cached = n.copy(), n.copy() + // Previously, we did copy this one. We don't seem to need to actually + // do that, since we don't overwrite/reuse keys + //cached.Key = common.CopyBytes(n.Key) + collapsed.Key = HexToCompact(n.Key) + // Unless the child is a valuenode or hashnode, hash it + switch n.Val.(type) { + case *FullNode, *ShortNode: + collapsed.Val, cached.Val = h.Hash(n.Val, false) + } + return collapsed, cached +} + +func (h *hasher) hashFullNodeChildren(n *FullNode) (collapsed *FullNode, cached *FullNode) { + // Hash the full node's children, caching the newly hashed subtrees + cached = n.copy() + collapsed = n.copy() + if h.parallel { + var wg sync.WaitGroup + wg.Add(16) + for i := 0; i < 16; i++ { + go func(i int) { + hasher := NewHasher(false) + if child := n.Children[i]; child != nil { + collapsed.Children[i], cached.Children[i] = hasher.Hash(child, false) + } else { + collapsed.Children[i] = nilValueNode + } + returnHasherToPool(hasher) + wg.Done() + }(i) + } + wg.Wait() + } else { + for i := 0; i < 16; i++ { + if child := n.Children[i]; child != nil { + collapsed.Children[i], cached.Children[i] = h.Hash(child, false) + } else { + collapsed.Children[i] = nilValueNode + } + } + } + return collapsed, cached +} + +// shortnodeToHash creates a hashNode from a shortNode. The supplied shortnode +// should have hex-type Key, which will be converted (without modification) +// into compact form for RLP encoding. +// If the rlp data is smaller than 32 bytes, `nil` is returned. +func (h *hasher) shortnodeToHash(n *ShortNode, force bool) Node { + h.tmp.Reset() + if err := rlp.Encode(&h.tmp, n); err != nil { + panic("encode error: " + err.Error()) + } + + if len(h.tmp) < 32 && !force { + return n // Nodes smaller than 32 bytes are stored inside their parent + } + return h.HashData(h.tmp) +} + +// shortnodeToHash is used to creates a hashNode from a set of hashNodes, (which +// may contain nil values) +func (h *hasher) FullnodeToHash(n *FullNode, force bool) Node { + h.tmp.Reset() + // Generate the RLP encoding of the node + if err := n.EncodeRLP(&h.tmp); err != nil { + panic("encode error: " + err.Error()) + } + + if len(h.tmp) < 32 && !force { + return n // Nodes smaller than 32 bytes are stored inside their parent + } + return h.HashData(h.tmp) +} + +// HashData hashes the provided data +func (h *hasher) HashData(data []byte) HashNode { + n := make(HashNode, 32) + h.sha.Reset() + h.sha.Write(data) + h.sha.Read(n) + return n +} + +// ProofHash is used to construct trie proofs, and returns the 'collapsed' +// node (for later RLP encoding) aswell as the hashed node -- unless the +// node is smaller than 32 bytes, in which case it will be returned as is. +// This method does not do anything on value- or hash-nodes. +func (h *hasher) ProofHash(original Node) (collapsed, hashed Node) { + switch n := original.(type) { + case *ShortNode: + sn, _ := h.hashShortNodeChildren(n) + return sn, h.shortnodeToHash(sn, false) + case *FullNode: + fn, _ := h.hashFullNodeChildren(n) + return fn, h.FullnodeToHash(fn, false) + default: + // Value and hash nodes don't have children so they're left as were + return n, n + } +} diff --git a/mpt-witness-generator/trie/iterator.go b/mpt-witness-generator/trie/iterator.go new file mode 100644 index 0000000000..6237ce0027 --- /dev/null +++ b/mpt-witness-generator/trie/iterator.go @@ -0,0 +1,714 @@ +// Copyright 2014 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package trie + +import ( + "bytes" + "container/heap" + "errors" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/ethdb" + "github.com/ethereum/go-ethereum/rlp" +) + +// Iterator is a key-value trie iterator that traverses a Trie. +type Iterator struct { + nodeIt NodeIterator + + Key []byte // Current data key on which the iterator is positioned on + Value []byte // Current data value on which the iterator is positioned on + Err error +} + +// NewIterator creates a new key-value iterator from a node iterator. +// Note that the value returned by the iterator is raw. If the content is encoded +// (e.g. storage value is RLP-encoded), it's caller's duty to decode it. +func NewIterator(it NodeIterator) *Iterator { + return &Iterator{ + nodeIt: it, + } +} + +// Next moves the iterator forward one key-value entry. +func (it *Iterator) Next() bool { + for it.nodeIt.Next(true) { + if it.nodeIt.Leaf() { + it.Key = it.nodeIt.LeafKey() + it.Value = it.nodeIt.LeafBlob() + return true + } + } + it.Key = nil + it.Value = nil + it.Err = it.nodeIt.Error() + return false +} + +// Prove generates the Merkle proof for the leaf node the iterator is currently +// positioned on. +func (it *Iterator) Prove() [][]byte { + return it.nodeIt.LeafProof() +} + +// NodeIterator is an iterator to traverse the trie pre-order. +type NodeIterator interface { + // Next moves the iterator to the next node. If the parameter is false, any child + // nodes will be skipped. + Next(bool) bool + + // Error returns the error status of the iterator. + Error() error + + // Hash returns the hash of the current node. + Hash() common.Hash + + // Parent returns the hash of the parent of the current node. The hash may be the one + // grandparent if the immediate parent is an internal node with no hash. + Parent() common.Hash + + // Path returns the hex-encoded path to the current node. + // Callers must not retain references to the return value after calling Next. + // For leaf nodes, the last element of the path is the 'terminator symbol' 0x10. + Path() []byte + + // Leaf returns true iff the current node is a leaf node. + Leaf() bool + + // LeafKey returns the key of the leaf. The method panics if the iterator is not + // positioned at a leaf. Callers must not retain references to the value after + // calling Next. + LeafKey() []byte + + // LeafBlob returns the content of the leaf. The method panics if the iterator + // is not positioned at a leaf. Callers must not retain references to the value + // after calling Next. + LeafBlob() []byte + + // LeafProof returns the Merkle proof of the leaf. The method panics if the + // iterator is not positioned at a leaf. Callers must not retain references + // to the value after calling Next. + LeafProof() [][]byte + + // AddResolver sets an intermediate database to use for looking up trie nodes + // before reaching into the real persistent layer. + // + // This is not required for normal operation, rather is an optimization for + // cases where trie nodes can be recovered from some external mechanism without + // reading from disk. In those cases, this resolver allows short circuiting + // accesses and returning them from memory. + // + // Before adding a similar mechanism to any other place in Geth, consider + // making trie.Database an interface and wrapping at that level. It's a huge + // refactor, but it could be worth it if another occurrence arises. + AddResolver(ethdb.KeyValueStore) +} + +// nodeIteratorState represents the iteration state at one particular node of the +// trie, which can be resumed at a later invocation. +type nodeIteratorState struct { + hash common.Hash // Hash of the node being iterated (nil if not standalone) + node Node // Trie node being iterated + parent common.Hash // Hash of the first full ancestor node (nil if current is the root) + index int // Child to be processed next + pathlen int // Length of the path to this node +} + +type nodeIterator struct { + trie *Trie // Trie being iterated + stack []*nodeIteratorState // Hierarchy of trie nodes persisting the iteration state + path []byte // Path to the current node + err error // Failure set in case of an internal error in the iterator + + resolver ethdb.KeyValueStore // Optional intermediate resolver above the disk layer +} + +// errIteratorEnd is stored in nodeIterator.err when iteration is done. +var errIteratorEnd = errors.New("end of iteration") + +// seekError is stored in nodeIterator.err if the initial seek has failed. +type seekError struct { + key []byte + err error +} + +func (e seekError) Error() string { + return "seek error: " + e.err.Error() +} + +func newNodeIterator(trie *Trie, start []byte) NodeIterator { + if trie.Hash() == emptyState { + return new(nodeIterator) + } + it := &nodeIterator{trie: trie} + it.err = it.seek(start) + return it +} + +func (it *nodeIterator) AddResolver(resolver ethdb.KeyValueStore) { + it.resolver = resolver +} + +func (it *nodeIterator) Hash() common.Hash { + if len(it.stack) == 0 { + return common.Hash{} + } + return it.stack[len(it.stack)-1].hash +} + +func (it *nodeIterator) Parent() common.Hash { + if len(it.stack) == 0 { + return common.Hash{} + } + return it.stack[len(it.stack)-1].parent +} + +func (it *nodeIterator) Leaf() bool { + return hasTerm(it.path) +} + +func (it *nodeIterator) LeafKey() []byte { + if len(it.stack) > 0 { + if _, ok := it.stack[len(it.stack)-1].node.(ValueNode); ok { + return HexToKeybytes(it.path) + } + } + panic("not at leaf") +} + +func (it *nodeIterator) LeafBlob() []byte { + if len(it.stack) > 0 { + if node, ok := it.stack[len(it.stack)-1].node.(ValueNode); ok { + return node + } + } + panic("not at leaf") +} + +func (it *nodeIterator) LeafProof() [][]byte { + if len(it.stack) > 0 { + if _, ok := it.stack[len(it.stack)-1].node.(ValueNode); ok { + hasher := NewHasher(false) + defer returnHasherToPool(hasher) + proofs := make([][]byte, 0, len(it.stack)) + + for i, item := range it.stack[:len(it.stack)-1] { + // Gather nodes that end up as hash nodes (or the root) + node, hashed := hasher.ProofHash(item.node) + if _, ok := hashed.(HashNode); ok || i == 0 { + enc, _ := rlp.EncodeToBytes(node) + proofs = append(proofs, enc) + } + } + return proofs + } + } + panic("not at leaf") +} + +func (it *nodeIterator) Path() []byte { + return it.path +} + +func (it *nodeIterator) Error() error { + if it.err == errIteratorEnd { + return nil + } + if seek, ok := it.err.(seekError); ok { + return seek.err + } + return it.err +} + +// Next moves the iterator to the next node, returning whether there are any +// further nodes. In case of an internal error this method returns false and +// sets the Error field to the encountered failure. If `descend` is false, +// skips iterating over any subnodes of the current node. +func (it *nodeIterator) Next(descend bool) bool { + if it.err == errIteratorEnd { + return false + } + if seek, ok := it.err.(seekError); ok { + if it.err = it.seek(seek.key); it.err != nil { + return false + } + } + // Otherwise step forward with the iterator and report any errors. + state, parentIndex, path, err := it.peek(descend) + it.err = err + if it.err != nil { + return false + } + it.push(state, parentIndex, path) + return true +} + +func (it *nodeIterator) seek(prefix []byte) error { + // The path we're looking for is the hex encoded key without terminator. + key := KeybytesToHex(prefix) + key = key[:len(key)-1] + // Move forward until we're just before the closest match to key. + for { + state, parentIndex, path, err := it.peekSeek(key) + if err == errIteratorEnd { + return errIteratorEnd + } else if err != nil { + return seekError{prefix, err} + } else if bytes.Compare(path, key) >= 0 { + return nil + } + it.push(state, parentIndex, path) + } +} + +// init initializes the the iterator. +func (it *nodeIterator) init() (*nodeIteratorState, error) { + root := it.trie.Hash() + state := &nodeIteratorState{node: it.trie.root, index: -1} + if root != emptyRoot { + state.hash = root + } + return state, state.resolve(it, nil) +} + +// peek creates the next state of the iterator. +func (it *nodeIterator) peek(descend bool) (*nodeIteratorState, *int, []byte, error) { + // Initialize the iterator if we've just started. + if len(it.stack) == 0 { + state, err := it.init() + return state, nil, nil, err + } + if !descend { + // If we're skipping children, pop the current node first + it.pop() + } + + // Continue iteration to the next child + for len(it.stack) > 0 { + parent := it.stack[len(it.stack)-1] + ancestor := parent.hash + if (ancestor == common.Hash{}) { + ancestor = parent.parent + } + state, path, ok := it.nextChild(parent, ancestor) + if ok { + if err := state.resolve(it, path); err != nil { + return parent, &parent.index, path, err + } + return state, &parent.index, path, nil + } + // No more child nodes, move back up. + it.pop() + } + return nil, nil, nil, errIteratorEnd +} + +// peekSeek is like peek, but it also tries to skip resolving hashes by skipping +// over the siblings that do not lead towards the desired seek position. +func (it *nodeIterator) peekSeek(seekKey []byte) (*nodeIteratorState, *int, []byte, error) { + // Initialize the iterator if we've just started. + if len(it.stack) == 0 { + state, err := it.init() + return state, nil, nil, err + } + if !bytes.HasPrefix(seekKey, it.path) { + // If we're skipping children, pop the current node first + it.pop() + } + + // Continue iteration to the next child + for len(it.stack) > 0 { + parent := it.stack[len(it.stack)-1] + ancestor := parent.hash + if (ancestor == common.Hash{}) { + ancestor = parent.parent + } + state, path, ok := it.nextChildAt(parent, ancestor, seekKey) + if ok { + if err := state.resolve(it, path); err != nil { + return parent, &parent.index, path, err + } + return state, &parent.index, path, nil + } + // No more child nodes, move back up. + it.pop() + } + return nil, nil, nil, errIteratorEnd +} + +func (it *nodeIterator) resolveHash(hash HashNode, path []byte) (Node, error) { + if it.resolver != nil { + if blob, err := it.resolver.Get(hash); err == nil && len(blob) > 0 { + if resolved, err := DecodeNode(hash, blob); err == nil { + return resolved, nil + } + } + } + resolved, err := it.trie.resolveHash(hash, path) + return resolved, err +} + +func (st *nodeIteratorState) resolve(it *nodeIterator, path []byte) error { + if hash, ok := st.node.(HashNode); ok { + resolved, err := it.resolveHash(hash, path) + if err != nil { + return err + } + st.node = resolved + st.hash = common.BytesToHash(hash) + } + return nil +} + +func findChild(n *FullNode, index int, path []byte, ancestor common.Hash) (Node, *nodeIteratorState, []byte, int) { + var ( + child Node + state *nodeIteratorState + childPath []byte + ) + for ; index < len(n.Children); index++ { + if n.Children[index] != nil { + child = n.Children[index] + hash, _ := child.cache() + state = &nodeIteratorState{ + hash: common.BytesToHash(hash), + node: child, + parent: ancestor, + index: -1, + pathlen: len(path), + } + childPath = append(childPath, path...) + childPath = append(childPath, byte(index)) + return child, state, childPath, index + } + } + return nil, nil, nil, 0 +} + +func (it *nodeIterator) nextChild(parent *nodeIteratorState, ancestor common.Hash) (*nodeIteratorState, []byte, bool) { + switch node := parent.node.(type) { + case *FullNode: + //Full node, move to the first non-nil child. + if child, state, path, index := findChild(node, parent.index+1, it.path, ancestor); child != nil { + parent.index = index - 1 + return state, path, true + } + case *ShortNode: + // Short node, return the pointer singleton child + if parent.index < 0 { + hash, _ := node.Val.cache() + state := &nodeIteratorState{ + hash: common.BytesToHash(hash), + node: node.Val, + parent: ancestor, + index: -1, + pathlen: len(it.path), + } + path := append(it.path, node.Key...) + return state, path, true + } + } + return parent, it.path, false +} + +// nextChildAt is similar to nextChild, except that it targets a child as close to the +// target key as possible, thus skipping siblings. +func (it *nodeIterator) nextChildAt(parent *nodeIteratorState, ancestor common.Hash, key []byte) (*nodeIteratorState, []byte, bool) { + switch n := parent.node.(type) { + case *FullNode: + // Full node, move to the first non-nil child before the desired key position + child, state, path, index := findChild(n, parent.index+1, it.path, ancestor) + if child == nil { + // No more children in this fullnode + return parent, it.path, false + } + // If the child we found is already past the seek position, just return it. + if bytes.Compare(path, key) >= 0 { + parent.index = index - 1 + return state, path, true + } + // The child is before the seek position. Try advancing + for { + nextChild, nextState, nextPath, nextIndex := findChild(n, index+1, it.path, ancestor) + // If we run out of children, or skipped past the target, return the + // previous one + if nextChild == nil || bytes.Compare(nextPath, key) >= 0 { + parent.index = index - 1 + return state, path, true + } + // We found a better child closer to the target + state, path, index = nextState, nextPath, nextIndex + } + case *ShortNode: + // Short node, return the pointer singleton child + if parent.index < 0 { + hash, _ := n.Val.cache() + state := &nodeIteratorState{ + hash: common.BytesToHash(hash), + node: n.Val, + parent: ancestor, + index: -1, + pathlen: len(it.path), + } + path := append(it.path, n.Key...) + return state, path, true + } + } + return parent, it.path, false +} + +func (it *nodeIterator) push(state *nodeIteratorState, parentIndex *int, path []byte) { + it.path = path + it.stack = append(it.stack, state) + if parentIndex != nil { + *parentIndex++ + } +} + +func (it *nodeIterator) pop() { + parent := it.stack[len(it.stack)-1] + it.path = it.path[:parent.pathlen] + it.stack = it.stack[:len(it.stack)-1] +} + +func compareNodes(a, b NodeIterator) int { + if cmp := bytes.Compare(a.Path(), b.Path()); cmp != 0 { + return cmp + } + if a.Leaf() && !b.Leaf() { + return -1 + } else if b.Leaf() && !a.Leaf() { + return 1 + } + if cmp := bytes.Compare(a.Hash().Bytes(), b.Hash().Bytes()); cmp != 0 { + return cmp + } + if a.Leaf() && b.Leaf() { + return bytes.Compare(a.LeafBlob(), b.LeafBlob()) + } + return 0 +} + +type differenceIterator struct { + a, b NodeIterator // Nodes returned are those in b - a. + eof bool // Indicates a has run out of elements + count int // Number of nodes scanned on either trie +} + +// NewDifferenceIterator constructs a NodeIterator that iterates over elements in b that +// are not in a. Returns the iterator, and a pointer to an integer recording the number +// of nodes seen. +func NewDifferenceIterator(a, b NodeIterator) (NodeIterator, *int) { + a.Next(true) + it := &differenceIterator{ + a: a, + b: b, + } + return it, &it.count +} + +func (it *differenceIterator) Hash() common.Hash { + return it.b.Hash() +} + +func (it *differenceIterator) Parent() common.Hash { + return it.b.Parent() +} + +func (it *differenceIterator) Leaf() bool { + return it.b.Leaf() +} + +func (it *differenceIterator) LeafKey() []byte { + return it.b.LeafKey() +} + +func (it *differenceIterator) LeafBlob() []byte { + return it.b.LeafBlob() +} + +func (it *differenceIterator) LeafProof() [][]byte { + return it.b.LeafProof() +} + +func (it *differenceIterator) Path() []byte { + return it.b.Path() +} + +func (it *differenceIterator) AddResolver(resolver ethdb.KeyValueStore) { + panic("not implemented") +} + +func (it *differenceIterator) Next(bool) bool { + // Invariants: + // - We always advance at least one element in b. + // - At the start of this function, a's path is lexically greater than b's. + if !it.b.Next(true) { + return false + } + it.count++ + + if it.eof { + // a has reached eof, so we just return all elements from b + return true + } + + for { + switch compareNodes(it.a, it.b) { + case -1: + // b jumped past a; advance a + if !it.a.Next(true) { + it.eof = true + return true + } + it.count++ + case 1: + // b is before a + return true + case 0: + // a and b are identical; skip this whole subtree if the nodes have hashes + hasHash := it.a.Hash() == common.Hash{} + if !it.b.Next(hasHash) { + return false + } + it.count++ + if !it.a.Next(hasHash) { + it.eof = true + return true + } + it.count++ + } + } +} + +func (it *differenceIterator) Error() error { + if err := it.a.Error(); err != nil { + return err + } + return it.b.Error() +} + +type nodeIteratorHeap []NodeIterator + +func (h nodeIteratorHeap) Len() int { return len(h) } +func (h nodeIteratorHeap) Less(i, j int) bool { return compareNodes(h[i], h[j]) < 0 } +func (h nodeIteratorHeap) Swap(i, j int) { h[i], h[j] = h[j], h[i] } +func (h *nodeIteratorHeap) Push(x interface{}) { *h = append(*h, x.(NodeIterator)) } +func (h *nodeIteratorHeap) Pop() interface{} { + n := len(*h) + x := (*h)[n-1] + *h = (*h)[0 : n-1] + return x +} + +type unionIterator struct { + items *nodeIteratorHeap // Nodes returned are the union of the ones in these iterators + count int // Number of nodes scanned across all tries +} + +// NewUnionIterator constructs a NodeIterator that iterates over elements in the union +// of the provided NodeIterators. Returns the iterator, and a pointer to an integer +// recording the number of nodes visited. +func NewUnionIterator(iters []NodeIterator) (NodeIterator, *int) { + h := make(nodeIteratorHeap, len(iters)) + copy(h, iters) + heap.Init(&h) + + ui := &unionIterator{items: &h} + return ui, &ui.count +} + +func (it *unionIterator) Hash() common.Hash { + return (*it.items)[0].Hash() +} + +func (it *unionIterator) Parent() common.Hash { + return (*it.items)[0].Parent() +} + +func (it *unionIterator) Leaf() bool { + return (*it.items)[0].Leaf() +} + +func (it *unionIterator) LeafKey() []byte { + return (*it.items)[0].LeafKey() +} + +func (it *unionIterator) LeafBlob() []byte { + return (*it.items)[0].LeafBlob() +} + +func (it *unionIterator) LeafProof() [][]byte { + return (*it.items)[0].LeafProof() +} + +func (it *unionIterator) Path() []byte { + return (*it.items)[0].Path() +} + +func (it *unionIterator) AddResolver(resolver ethdb.KeyValueStore) { + panic("not implemented") +} + +// Next returns the next node in the union of tries being iterated over. +// +// It does this by maintaining a heap of iterators, sorted by the iteration +// order of their next elements, with one entry for each source trie. Each +// time Next() is called, it takes the least element from the heap to return, +// advancing any other iterators that also point to that same element. These +// iterators are called with descend=false, since we know that any nodes under +// these nodes will also be duplicates, found in the currently selected iterator. +// Whenever an iterator is advanced, it is pushed back into the heap if it still +// has elements remaining. +// +// In the case that descend=false - eg, we're asked to ignore all subnodes of the +// current node - we also advance any iterators in the heap that have the current +// path as a prefix. +func (it *unionIterator) Next(descend bool) bool { + if len(*it.items) == 0 { + return false + } + + // Get the next key from the union + least := heap.Pop(it.items).(NodeIterator) + + // Skip over other nodes as long as they're identical, or, if we're not descending, as + // long as they have the same prefix as the current node. + for len(*it.items) > 0 && ((!descend && bytes.HasPrefix((*it.items)[0].Path(), least.Path())) || compareNodes(least, (*it.items)[0]) == 0) { + skipped := heap.Pop(it.items).(NodeIterator) + // Skip the whole subtree if the nodes have hashes; otherwise just skip this node + if skipped.Next(skipped.Hash() == common.Hash{}) { + it.count++ + // If there are more elements, push the iterator back on the heap + heap.Push(it.items, skipped) + } + } + if least.Next(descend) { + it.count++ + heap.Push(it.items, least) + } + return len(*it.items) > 0 +} + +func (it *unionIterator) Error() error { + for i := 0; i < len(*it.items); i++ { + if err := (*it.items)[i].Error(); err != nil { + return err + } + } + return nil +} diff --git a/mpt-witness-generator/trie/node.go b/mpt-witness-generator/trie/node.go new file mode 100644 index 0000000000..0f4ac24277 --- /dev/null +++ b/mpt-witness-generator/trie/node.go @@ -0,0 +1,225 @@ +// Copyright 2014 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package trie + +import ( + "fmt" + "io" + "strings" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/rlp" +) + +var indices = []string{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "[17]"} + +type Node interface { + fstring(string) string + cache() (HashNode, bool) +} + +type ( + FullNode struct { + Children [17]Node // Actual trie node data to encode/decode (needs custom encoder) + flags nodeFlag + } + ShortNode struct { + Key []byte + Val Node + flags nodeFlag + } + HashNode []byte + ValueNode []byte +) + +// nilValueNode is used when collapsing internal trie nodes for hashing, since +// unset children need to serialize correctly. +var nilValueNode = ValueNode(nil) + +// EncodeRLP encodes a full node into the consensus RLP format. +func (n *FullNode) EncodeRLP(w io.Writer) error { + var nodes [17]Node + + for i, child := range &n.Children { + if child != nil { + nodes[i] = child + } else { + nodes[i] = nilValueNode + } + } + return rlp.Encode(w, nodes) +} + +func (n *FullNode) copy() *FullNode { copy := *n; return © } +func (n *ShortNode) copy() *ShortNode { copy := *n; return © } + +// nodeFlag contains caching-related metadata about a node. +type nodeFlag struct { + hash HashNode // cached hash of the node (may be nil) + dirty bool // whether the node has changes that must be written to the database +} + +func (n *FullNode) cache() (HashNode, bool) { return n.flags.hash, n.flags.dirty } +func (n *ShortNode) cache() (HashNode, bool) { return n.flags.hash, n.flags.dirty } +func (n HashNode) cache() (HashNode, bool) { return nil, true } +func (n ValueNode) cache() (HashNode, bool) { return nil, true } + +// Pretty printing. +func (n *FullNode) String() string { return n.fstring("") } +func (n *ShortNode) String() string { return n.fstring("") } +func (n HashNode) String() string { return n.fstring("") } +func (n ValueNode) String() string { return n.fstring("") } + +func (n *FullNode) fstring(ind string) string { + resp := fmt.Sprintf("[\n%s ", ind) + for i, node := range &n.Children { + if node == nil { + resp += fmt.Sprintf("%s: <nil> ", indices[i]) + } else { + resp += fmt.Sprintf("%s: %v", indices[i], node.fstring(ind+" ")) + } + } + return resp + fmt.Sprintf("\n%s] ", ind) +} +func (n *ShortNode) fstring(ind string) string { + return fmt.Sprintf("{%x: %v} ", n.Key, n.Val.fstring(ind+" ")) +} +func (n HashNode) fstring(ind string) string { + return fmt.Sprintf("<%x> ", []byte(n)) +} +func (n ValueNode) fstring(ind string) string { + return fmt.Sprintf("%x ", []byte(n)) +} + +func mustDecodeNode(hash, buf []byte) Node { + n, err := DecodeNode(hash, buf) + if err != nil { + panic(fmt.Sprintf("node %x: %v", hash, err)) + } + return n +} + +// DecodeNode parses the RLP encoding of a trie node. +func DecodeNode(hash, buf []byte) (Node, error) { + if len(buf) == 0 { + return nil, io.ErrUnexpectedEOF + } + elems, _, err := rlp.SplitList(buf) + if err != nil { + return nil, fmt.Errorf("decode error: %v", err) + } + switch c, _ := rlp.CountValues(elems); c { + case 2: + n, err := decodeShort(hash, elems) + return n, wrapError(err, "short") + case 17: + n, err := decodeFull(hash, elems) + return n, wrapError(err, "full") + default: + return nil, fmt.Errorf("invalid number of list elements: %v", c) + } +} + +func decodeShort(hash, elems []byte) (Node, error) { + kbuf, rest, err := rlp.SplitString(elems) + if err != nil { + return nil, err + } + flag := nodeFlag{hash: hash} + key := compactToHex(kbuf) + if hasTerm(key) { + // value node + val, _, err := rlp.SplitString(rest) + if err != nil { + return nil, fmt.Errorf("invalid value node: %v", err) + } + return &ShortNode{key, append(ValueNode{}, val...), flag}, nil + } + r, _, err := decodeRef(rest) + if err != nil { + return nil, wrapError(err, "val") + } + return &ShortNode{key, r, flag}, nil +} + +func decodeFull(hash, elems []byte) (*FullNode, error) { + n := &FullNode{flags: nodeFlag{hash: hash}} + for i := 0; i < 16; i++ { + cld, rest, err := decodeRef(elems) + if err != nil { + return n, wrapError(err, fmt.Sprintf("[%d]", i)) + } + n.Children[i], elems = cld, rest + } + val, _, err := rlp.SplitString(elems) + if err != nil { + return n, err + } + if len(val) > 0 { + n.Children[16] = append(ValueNode{}, val...) + } + return n, nil +} + +const hashLen = len(common.Hash{}) + +func decodeRef(buf []byte) (Node, []byte, error) { + kind, val, rest, err := rlp.Split(buf) + if err != nil { + return nil, buf, err + } + switch { + case kind == rlp.List: + // 'embedded' node reference. The encoding must be smaller + // than a hash in order to be valid. + if size := len(buf) - len(rest); size > hashLen { + err := fmt.Errorf("oversized embedded node (size is %d bytes, want size < %d)", size, hashLen) + return nil, buf, err + } + n, err := DecodeNode(nil, buf) + return n, rest, err + case kind == rlp.String && len(val) == 0: + // empty node + return nil, rest, nil + case kind == rlp.String && len(val) == 32: + return append(HashNode{}, val...), rest, nil + default: + return nil, nil, fmt.Errorf("invalid RLP string size %d (want 0 or 32)", len(val)) + } +} + +// wraps a decoding error with information about the path to the +// invalid child node (for debugging encoding issues). +type decodeError struct { + what error + stack []string +} + +func wrapError(err error, ctx string) error { + if err == nil { + return nil + } + if decErr, ok := err.(*decodeError); ok { + decErr.stack = append(decErr.stack, ctx) + return decErr + } + return &decodeError{err, []string{ctx}} +} + +func (err *decodeError) Error() string { + return fmt.Sprintf("%v (decode path: %s)", err.what, strings.Join(err.stack, "<-")) +} diff --git a/mpt-witness-generator/trie/proof.go b/mpt-witness-generator/trie/proof.go new file mode 100644 index 0000000000..39ce02f401 --- /dev/null +++ b/mpt-witness-generator/trie/proof.go @@ -0,0 +1,692 @@ +// Copyright 2015 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package trie + +import ( + "bytes" + "errors" + "fmt" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/ethdb" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/rlp" +) + +// Prove constructs a merkle proof for key. The result contains all encoded nodes +// on the path to the value at key. The value itself is also included in the last +// node and can be retrieved by verifying the proof. +// +// If the trie does not contain a value for key, the returned proof contains all +// nodes of the longest existing prefix of the key (at least the root node), ending +// with the node that proves the absence of the key. +func (t *Trie) Prove(key []byte, fromLevel uint, proofDb ethdb.KeyValueWriter) ([]byte, [][]byte, bool, error) { + // Collect all nodes on the path to key. + key = KeybytesToHex(key) + var nodes []Node + tn := t.root + var neighbourNode Node + for len(key) > 0 && tn != nil { + switch n := tn.(type) { + case *ShortNode: + if len(key) < len(n.Key) || !bytes.Equal(n.Key, key[:len(n.Key)]) { + // The trie doesn't contain the key. + tn = nil + } else { + tn = n.Val + key = key[len(n.Key):] + } + nodes = append(nodes, n) + case *FullNode: + tn = n.Children[key[0]] + + count := 0 + neighbourIndex := -1 + // If there is only one neighbour node, store it, as it is needed when the node + // is deleted and the branch turns into leaf (that used to be neighbour node). + for i, c := range n.Children { + if byte(i) == key[0] { + continue + } + if c != nil { + count++ + neighbourIndex = i + } + } + neighbourNode = n.Children[neighbourIndex] + + key = key[1:] + nodes = append(nodes, n) + case HashNode: + var err error + tn, err = t.resolveHash(n, nil) + if err != nil { + log.Error(fmt.Sprintf("Unhandled trie error: %v", err)) + return nil, nil, false, err + } + default: + panic(fmt.Sprintf("%T: invalid node: %v", tn, tn)) + } + } + hasher := NewHasher(false) + defer returnHasherToPool(hasher) + + var extNibbles [][]byte + + // From getProof response it is not possible to see (in some cases it is though) whether + // the short node is a leaf or an extension node. + isLastLeaf := false + if len(nodes) > 0 { + n := nodes[len(nodes)-1] + if short, ok := n.(*ShortNode); ok { + isLastLeaf = hasTerm(short.Key) + } + } + + for _, n := range nodes { + if fromLevel > 0 { + fromLevel-- + continue + } + // var hn Node + + // We need nibbles in witness for extension keys. + // copy n.Key before it gets changed in ProofHash + var nCopy []byte + if short, ok := n.(*ShortNode); ok { + if !hasTerm(short.Key) { // only for extension keys + nCopy = make([]byte, len(short.Key)) + copy(nCopy, short.Key) + extNibbles = append(extNibbles, nCopy) + } + } + + // n, hn = hasher.ProofHash(n) + n, _ = hasher.ProofHash(n) + // if hash, ok := hn.(HashNode); ok || i == 0 { + // If the node's database encoding is a hash (or is the + // root node), it becomes a proof element. + enc, _ := rlp.EncodeToBytes(n) + /* + if !ok { + hash = hasher.HashData(enc) + } + */ + // proofDb.Put(hash, enc) + proofDb.Put([]byte{1, 1, 1}, enc) + // } + } + + neighbourNodeRLP := []byte{} + if neighbourNode != nil { + neighbourHash, _ := hasher.ProofHash(neighbourNode) + neighbourNodeRLP, _ = rlp.EncodeToBytes(neighbourHash) + } + + return neighbourNodeRLP, extNibbles, isLastLeaf, nil +} + +func (t *Trie) GetNodeByNibbles(key []byte) ([]byte, error) { + tn := t.root + // var node Node + for len(key) > 0 && tn != nil { + switch n := tn.(type) { + case *ShortNode: + if len(key) < len(n.Key) || !bytes.Equal(n.Key, key[:len(n.Key)]) { + // The trie doesn't contain the key. + tn = nil + } else { + tn = n.Val + key = key[len(n.Key):] + } + case *FullNode: + tn = n.Children[key[0]] + key = key[1:] + if len(key) == 0 { + hasher := NewHasher(false) + s := tn.(*ShortNode) + nn, _ := hasher.ProofHash(s) + enc, _ := rlp.EncodeToBytes(nn) + return enc, nil + } + case HashNode: + var err error + tn, err = t.resolveHash(n, nil) + if err != nil { + log.Error(fmt.Sprintf("Unhandled trie error: %v", err)) + return nil, err + } + default: + panic(fmt.Sprintf("%T: invalid node: %v", tn, tn)) + } + } + + return nil, nil +} + +// Prove constructs a merkle proof for key. The result contains all encoded nodes +// on the path to the value at key. The value itself is also included in the last +// node and can be retrieved by verifying the proof. +// +// If the trie does not contain a value for key, the returned proof contains all +// nodes of the longest existing prefix of the key (at least the root node), ending +// with the node that proves the absence of the key. +func (t *SecureTrie) Prove(key []byte, fromLevel uint, proofDb ethdb.KeyValueWriter) ([]byte, [][]byte, bool, error) { + return t.trie.Prove(key, fromLevel, proofDb) +} + +func (t *SecureTrie) GetNodeByNibbles(key []byte) ([]byte, error) { + return t.trie.GetNodeByNibbles(key) +} + +// VerifyProof checks merkle proofs. The given proof must contain the value for +// key in a trie with the given root hash. VerifyProof returns an error if the +// proof contains invalid trie nodes or the wrong value. +func VerifyProof(rootHash common.Hash, key []byte, proofDb ethdb.KeyValueReader) (value []byte, err error) { + key = KeybytesToHex(key) + wantHash := rootHash + for i := 0; ; i++ { + buf, _ := proofDb.Get(wantHash[:]) + if buf == nil { + return nil, fmt.Errorf("proof node %d (hash %064x) missing", i, wantHash) + } + n, err := DecodeNode(wantHash[:], buf) + if err != nil { + return nil, fmt.Errorf("bad proof node %d: %v", i, err) + } + keyrest, cld := get(n, key, true) + switch cld := cld.(type) { + case nil: + // The trie doesn't contain the key. + return nil, nil + case HashNode: + key = keyrest + copy(wantHash[:], cld) + case ValueNode: + return cld, nil + } + } +} + +// proofToPath converts a merkle proof to trie node path. The main purpose of +// this function is recovering a node path from the merkle proof stream. All +// necessary nodes will be resolved and leave the remaining as hashnode. +// +// The given edge proof is allowed to be an existent or non-existent proof. +func proofToPath(rootHash common.Hash, root Node, key []byte, proofDb ethdb.KeyValueReader, allowNonExistent bool) (Node, []byte, error) { + // resolveNode retrieves and resolves trie node from merkle proof stream + resolveNode := func(hash common.Hash) (Node, error) { + buf, _ := proofDb.Get(hash[:]) + if buf == nil { + return nil, fmt.Errorf("proof node (hash %064x) missing", hash) + } + n, err := DecodeNode(hash[:], buf) + if err != nil { + return nil, fmt.Errorf("bad proof node %v", err) + } + return n, err + } + // If the root node is empty, resolve it first. + // Root node must be included in the proof. + if root == nil { + n, err := resolveNode(rootHash) + if err != nil { + return nil, nil, err + } + root = n + } + var ( + err error + child, parent Node + keyrest []byte + valnode []byte + ) + key, parent = KeybytesToHex(key), root + for { + keyrest, child = get(parent, key, false) + switch cld := child.(type) { + case nil: + // The trie doesn't contain the key. It's possible + // the proof is a non-existing proof, but at least + // we can prove all resolved nodes are correct, it's + // enough for us to prove range. + if allowNonExistent { + return root, nil, nil + } + return nil, nil, errors.New("the node is not contained in trie") + case *ShortNode: + key, parent = keyrest, child // Already resolved + continue + case *FullNode: + key, parent = keyrest, child // Already resolved + continue + case HashNode: + child, err = resolveNode(common.BytesToHash(cld)) + if err != nil { + return nil, nil, err + } + case ValueNode: + valnode = cld + } + // Link the parent and child. + switch pnode := parent.(type) { + case *ShortNode: + pnode.Val = child + case *FullNode: + pnode.Children[key[0]] = child + default: + panic(fmt.Sprintf("%T: invalid node: %v", pnode, pnode)) + } + if len(valnode) > 0 { + return root, valnode, nil // The whole path is resolved + } + key, parent = keyrest, child + } +} + +// unsetInternal removes all internal node references(hashnode, embedded node). +// It should be called after a trie is constructed with two edge paths. Also +// the given boundary keys must be the one used to construct the edge paths. +// +// It's the key step for range proof. All visited nodes should be marked dirty +// since the node content might be modified. Besides it can happen that some +// fullnodes only have one child which is disallowed. But if the proof is valid, +// the missing children will be filled, otherwise it will be thrown anyway. +// +// Note we have the assumption here the given boundary keys are different +// and right is larger than left. +func unsetInternal(n Node, left []byte, right []byte) (bool, error) { + left, right = KeybytesToHex(left), KeybytesToHex(right) + + // Step down to the fork point. There are two scenarios can happen: + // - the fork point is a shortnode: either the key of left proof or + // right proof doesn't match with shortnode's key. + // - the fork point is a fullnode: both two edge proofs are allowed + // to point to a non-existent key. + var ( + pos = 0 + parent Node + + // fork indicator, 0 means no fork, -1 means proof is less, 1 means proof is greater + shortForkLeft, shortForkRight int + ) +findFork: + for { + switch rn := (n).(type) { + case *ShortNode: + rn.flags = nodeFlag{dirty: true} + + // If either the key of left proof or right proof doesn't match with + // shortnode, stop here and the forkpoint is the shortnode. + if len(left)-pos < len(rn.Key) { + shortForkLeft = bytes.Compare(left[pos:], rn.Key) + } else { + shortForkLeft = bytes.Compare(left[pos:pos+len(rn.Key)], rn.Key) + } + if len(right)-pos < len(rn.Key) { + shortForkRight = bytes.Compare(right[pos:], rn.Key) + } else { + shortForkRight = bytes.Compare(right[pos:pos+len(rn.Key)], rn.Key) + } + if shortForkLeft != 0 || shortForkRight != 0 { + break findFork + } + parent = n + n, pos = rn.Val, pos+len(rn.Key) + case *FullNode: + rn.flags = nodeFlag{dirty: true} + + // If either the node pointed by left proof or right proof is nil, + // stop here and the forkpoint is the fullnode. + leftnode, rightnode := rn.Children[left[pos]], rn.Children[right[pos]] + if leftnode == nil || rightnode == nil || leftnode != rightnode { + break findFork + } + parent = n + n, pos = rn.Children[left[pos]], pos+1 + default: + panic(fmt.Sprintf("%T: invalid node: %v", n, n)) + } + } + switch rn := n.(type) { + case *ShortNode: + // There can have these five scenarios: + // - both proofs are less than the trie path => no valid range + // - both proofs are greater than the trie path => no valid range + // - left proof is less and right proof is greater => valid range, unset the shortnode entirely + // - left proof points to the shortnode, but right proof is greater + // - right proof points to the shortnode, but left proof is less + if shortForkLeft == -1 && shortForkRight == -1 { + return false, errors.New("empty range") + } + if shortForkLeft == 1 && shortForkRight == 1 { + return false, errors.New("empty range") + } + if shortForkLeft != 0 && shortForkRight != 0 { + // The fork point is root node, unset the entire trie + if parent == nil { + return true, nil + } + parent.(*FullNode).Children[left[pos-1]] = nil + return false, nil + } + // Only one proof points to non-existent key. + if shortForkRight != 0 { + if _, ok := rn.Val.(ValueNode); ok { + // The fork point is root node, unset the entire trie + if parent == nil { + return true, nil + } + parent.(*FullNode).Children[left[pos-1]] = nil + return false, nil + } + return false, unset(rn, rn.Val, left[pos:], len(rn.Key), false) + } + if shortForkLeft != 0 { + if _, ok := rn.Val.(ValueNode); ok { + // The fork point is root node, unset the entire trie + if parent == nil { + return true, nil + } + parent.(*FullNode).Children[right[pos-1]] = nil + return false, nil + } + return false, unset(rn, rn.Val, right[pos:], len(rn.Key), true) + } + return false, nil + case *FullNode: + // unset all internal nodes in the forkpoint + for i := left[pos] + 1; i < right[pos]; i++ { + rn.Children[i] = nil + } + if err := unset(rn, rn.Children[left[pos]], left[pos:], 1, false); err != nil { + return false, err + } + if err := unset(rn, rn.Children[right[pos]], right[pos:], 1, true); err != nil { + return false, err + } + return false, nil + default: + panic(fmt.Sprintf("%T: invalid node: %v", n, n)) + } +} + +// unset removes all internal node references either the left most or right most. +// It can meet these scenarios: +// +// - The given path is existent in the trie, unset the associated nodes with the +// specific direction +// - The given path is non-existent in the trie +// - the fork point is a fullnode, the corresponding child pointed by path +// is nil, return +// - the fork point is a shortnode, the shortnode is included in the range, +// keep the entire branch and return. +// - the fork point is a shortnode, the shortnode is excluded in the range, +// unset the entire branch. +func unset(parent Node, child Node, key []byte, pos int, removeLeft bool) error { + switch cld := child.(type) { + case *FullNode: + if removeLeft { + for i := 0; i < int(key[pos]); i++ { + cld.Children[i] = nil + } + cld.flags = nodeFlag{dirty: true} + } else { + for i := key[pos] + 1; i < 16; i++ { + cld.Children[i] = nil + } + cld.flags = nodeFlag{dirty: true} + } + return unset(cld, cld.Children[key[pos]], key, pos+1, removeLeft) + case *ShortNode: + if len(key[pos:]) < len(cld.Key) || !bytes.Equal(cld.Key, key[pos:pos+len(cld.Key)]) { + // Find the fork point, it's an non-existent branch. + if removeLeft { + if bytes.Compare(cld.Key, key[pos:]) < 0 { + // The key of fork shortnode is less than the path + // (it belongs to the range), unset the entrie + // branch. The parent must be a fullnode. + fn := parent.(*FullNode) + fn.Children[key[pos-1]] = nil + } else { + // The key of fork shortnode is greater than the + // path(it doesn't belong to the range), keep + // it with the cached hash available. + } + } else { + if bytes.Compare(cld.Key, key[pos:]) > 0 { + // The key of fork shortnode is greater than the + // path(it belongs to the range), unset the entrie + // branch. The parent must be a fullnode. + fn := parent.(*FullNode) + fn.Children[key[pos-1]] = nil + } else { + // The key of fork shortnode is less than the + // path(it doesn't belong to the range), keep + // it with the cached hash available. + } + } + return nil + } + if _, ok := cld.Val.(ValueNode); ok { + fn := parent.(*FullNode) + fn.Children[key[pos-1]] = nil + return nil + } + cld.flags = nodeFlag{dirty: true} + return unset(cld, cld.Val, key, pos+len(cld.Key), removeLeft) + case nil: + // If the node is nil, then it's a child of the fork point + // fullnode(it's a non-existent branch). + return nil + default: + panic("it shouldn't happen") // hashNode, valueNode + } +} + +// hasRightElement returns the indicator whether there exists more elements +// in the right side of the given path. The given path can point to an existent +// key or a non-existent one. This function has the assumption that the whole +// path should already be resolved. +func hasRightElement(node Node, key []byte) bool { + pos, key := 0, KeybytesToHex(key) + for node != nil { + switch rn := node.(type) { + case *FullNode: + for i := key[pos] + 1; i < 16; i++ { + if rn.Children[i] != nil { + return true + } + } + node, pos = rn.Children[key[pos]], pos+1 + case *ShortNode: + if len(key)-pos < len(rn.Key) || !bytes.Equal(rn.Key, key[pos:pos+len(rn.Key)]) { + return bytes.Compare(rn.Key, key[pos:]) > 0 + } + node, pos = rn.Val, pos+len(rn.Key) + case ValueNode: + return false // We have resolved the whole path + default: + panic(fmt.Sprintf("%T: invalid node: %v", node, node)) // hashnode + } + } + return false +} + +/* +// VerifyRangeProof checks whether the given leaf nodes and edge proof +// can prove the given trie leaves range is matched with the specific root. +// Besides, the range should be consecutive (no gap inside) and monotonic +// increasing. +// +// Note the given proof actually contains two edge proofs. Both of them can +// be non-existent proofs. For example the first proof is for a non-existent +// key 0x03, the last proof is for a non-existent key 0x10. The given batch +// leaves are [0x04, 0x05, .. 0x09]. It's still feasible to prove the given +// batch is valid. +// +// The firstKey is paired with firstProof, not necessarily the same as keys[0] +// (unless firstProof is an existent proof). Similarly, lastKey and lastProof +// are paired. +// +// Expect the normal case, this function can also be used to verify the following +// range proofs: +// +// - All elements proof. In this case the proof can be nil, but the range should +// be all the leaves in the trie. +// +// - One element proof. In this case no matter the edge proof is a non-existent +// proof or not, we can always verify the correctness of the proof. +// +// - Zero element proof. In this case a single non-existent proof is enough to prove. +// Besides, if there are still some other leaves available on the right side, then +// an error will be returned. +// +// Except returning the error to indicate the proof is valid or not, the function will +// also return a flag to indicate whether there exists more accounts/slots in the trie. +// +// Note: This method does not verify that the proof is of minimal form. If the input +// proofs are 'bloated' with neighbour leaves or random data, aside from the 'useful' +// data, then the proof will still be accepted. +func VerifyRangeProof(rootHash common.Hash, firstKey []byte, lastKey []byte, keys [][]byte, values [][]byte, proof ethdb.KeyValueReader) (bool, error) { + if len(keys) != len(values) { + return false, fmt.Errorf("inconsistent proof data, keys: %d, values: %d", len(keys), len(values)) + } + // Ensure the received batch is monotonic increasing. + for i := 0; i < len(keys)-1; i++ { + if bytes.Compare(keys[i], keys[i+1]) >= 0 { + return false, errors.New("range is not monotonically increasing") + } + } + // Special case, there is no edge proof at all. The given range is expected + // to be the whole leaf-set in the trie. + if proof == nil { + tr := NewStackTrie(nil) + for index, key := range keys { + tr.TryUpdate(key, values[index]) + } + if have, want := tr.Hash(), rootHash; have != want { + return false, fmt.Errorf("invalid proof, want hash %x, got %x", want, have) + } + return false, nil // No more elements + } + // Special case, there is a provided edge proof but zero key/value + // pairs, ensure there are no more accounts / slots in the trie. + if len(keys) == 0 { + root, val, err := proofToPath(rootHash, nil, firstKey, proof, true) + if err != nil { + return false, err + } + if val != nil || hasRightElement(root, firstKey) { + return false, errors.New("more entries available") + } + return hasRightElement(root, firstKey), nil + } + // Special case, there is only one element and two edge keys are same. + // In this case, we can't construct two edge paths. So handle it here. + if len(keys) == 1 && bytes.Equal(firstKey, lastKey) { + root, val, err := proofToPath(rootHash, nil, firstKey, proof, false) + if err != nil { + return false, err + } + if !bytes.Equal(firstKey, keys[0]) { + return false, errors.New("correct proof but invalid key") + } + if !bytes.Equal(val, values[0]) { + return false, errors.New("correct proof but invalid data") + } + return hasRightElement(root, firstKey), nil + } + // Ok, in all other cases, we require two edge paths available. + // First check the validity of edge keys. + if bytes.Compare(firstKey, lastKey) >= 0 { + return false, errors.New("invalid edge keys") + } + // todo(rjl493456442) different length edge keys should be supported + if len(firstKey) != len(lastKey) { + return false, errors.New("inconsistent edge keys") + } + // Convert the edge proofs to edge trie paths. Then we can + // have the same tree architecture with the original one. + // For the first edge proof, non-existent proof is allowed. + root, _, err := proofToPath(rootHash, nil, firstKey, proof, true) + if err != nil { + return false, err + } + // Pass the root node here, the second path will be merged + // with the first one. For the last edge proof, non-existent + // proof is also allowed. + root, _, err = proofToPath(rootHash, root, lastKey, proof, true) + if err != nil { + return false, err + } + // Remove all internal references. All the removed parts should + // be re-filled(or re-constructed) by the given leaves range. + empty, err := unsetInternal(root, firstKey, lastKey) + if err != nil { + return false, err + } + // Rebuild the trie with the leaf stream, the shape of trie + // should be same with the original one. + tr := &Trie{root: root, db: NewDatabase(memorydb.New())} + if empty { + tr.root = nil + } + for index, key := range keys { + tr.TryUpdate(key, values[index]) + } + if tr.Hash() != rootHash { + return false, fmt.Errorf("invalid proof, want hash %x, got %x", rootHash, tr.Hash()) + } + return hasRightElement(root, keys[len(keys)-1]), nil +} +*/ + +// get returns the child of the given node. Return nil if the +// node with specified key doesn't exist at all. +// +// There is an additional flag `skipResolved`. If it's set then +// all resolved nodes won't be returned. +func get(tn Node, key []byte, skipResolved bool) ([]byte, Node) { + for { + switch n := tn.(type) { + case *ShortNode: + if len(key) < len(n.Key) || !bytes.Equal(n.Key, key[:len(n.Key)]) { + return nil, nil + } + tn = n.Val + key = key[len(n.Key):] + if !skipResolved { + return key, tn + } + case *FullNode: + tn = n.Children[key[0]] + key = key[1:] + if !skipResolved { + return key, tn + } + case HashNode: + return key, n + case nil: + return key, nil + case ValueNode: + return nil, n + default: + panic(fmt.Sprintf("%T: invalid node: %v", tn, tn)) + } + } +} diff --git a/mpt-witness-generator/trie/secure_trie.go b/mpt-witness-generator/trie/secure_trie.go new file mode 100644 index 0000000000..3bf3a889f3 --- /dev/null +++ b/mpt-witness-generator/trie/secure_trie.go @@ -0,0 +1,231 @@ +// Copyright 2015 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package trie + +import ( + "fmt" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/log" + "github.com/privacy-scaling-explorations/mpt-witness-generator/oracle" +) + +// SecureTrie wraps a trie with key hashing. In a secure trie, all +// access operations hash the key using keccak256. This prevents +// calling code from creating long chains of nodes that +// increase the access time. +// +// Contrary to a regular trie, a SecureTrie can only be created with +// New and must have an attached database. The database also stores +// the preimage of each key. +// +// SecureTrie is not safe for concurrent use. +type SecureTrie struct { + trie Trie + hashKeyBuf [common.HashLength]byte + secKeyCache map[string][]byte + secKeyCacheOwner *SecureTrie // Pointer to self, replace the key cache on mismatch +} + +// NewSecure creates a trie with an existing root node from a backing database +// and optional intermediate in-memory node pool. +// +// If root is the zero hash or the sha3 hash of an empty string, the +// trie is initially empty. Otherwise, New will panic if db is nil +// and returns MissingNodeError if the root node cannot be found. +// +// Accessing the trie loads nodes from the database or node pool on demand. +// Loaded nodes are kept around until their 'cache generation' expires. +// A new cache generation is created by each call to Commit. +// cachelimit sets the number of past cache generations to keep. +func NewSecure(root common.Hash, db *Database) (*SecureTrie, error) { + if db == nil { + panic("trie.NewSecure called without a database") + } + trie, err := New(root, db) + if err != nil { + return nil, err + } + return &SecureTrie{trie: *trie}, nil +} + +// Get returns the value for key stored in the trie. +// The value bytes must not be modified by the caller. +func (t *SecureTrie) Get(key []byte) []byte { + res, err := t.TryGet(key) + if err != nil { + log.Error(fmt.Sprintf("Unhandled trie error: %v", err)) + } + return res +} + +// TryGet returns the value for key stored in the trie. +// The value bytes must not be modified by the caller. +// If a node was not found in the database, a MissingNodeError is returned. +func (t *SecureTrie) TryGet(key []byte) ([]byte, error) { + return t.trie.TryGet(t.hashKey(key)) +} + +// TryGetNode attempts to retrieve a trie node by compact-encoded path. It is not +// possible to use keybyte-encoding as the path might contain odd nibbles. +func (t *SecureTrie) TryGetNode(path []byte) ([]byte, int, error) { + return t.trie.TryGetNode(path) +} + +// Update associates key with value in the trie. Subsequent calls to +// Get will return value. If value has length zero, any existing value +// is deleted from the trie and calls to Get will return nil. +// +// The value bytes must not be modified by the caller while they are +// stored in the trie. +func (t *SecureTrie) Update(key, value []byte) { + if err := t.TryUpdate(key, value); err != nil { + log.Error(fmt.Sprintf("Unhandled trie error: %v", err)) + } +} + +// TryUpdate associates key with value in the trie. Subsequent calls to +// Get will return value. If value has length zero, any existing value +// is deleted from the trie and calls to Get will return nil. +// +// The value bytes must not be modified by the caller while they are +// stored in the trie. +// +// If a node was not found in the database, a MissingNodeError is returned. +func (t *SecureTrie) TryUpdate(key, value []byte) error { + hk := t.hashKey(key) + err := t.trie.TryUpdate(hk, value) + if err != nil { + return err + } + t.getSecKeyCache()[string(hk)] = common.CopyBytes(key) + return nil +} + +// MPT circuit test generating. +func (t *SecureTrie) TryUpdateAlwaysHash(key, value []byte) error { + // hk := t.hashKey(key) + h := NewHasher(false) + h.sha.Reset() + h.sha.Write(key) + h.sha.Read(t.hashKeyBuf[:]) + returnHasherToPool(h) + hk := t.hashKeyBuf[:] + + err := t.trie.TryUpdate(hk, value) + if err != nil { + return err + } + t.getSecKeyCache()[string(hk)] = common.CopyBytes(key) + return nil +} + +// Delete removes any existing value for key from the trie. +func (t *SecureTrie) Delete(key []byte) { + if err := t.TryDelete(key); err != nil { + log.Error(fmt.Sprintf("Unhandled trie error: %v", err)) + } +} + +// TryDelete removes any existing value for key from the trie. +// If a node was not found in the database, a MissingNodeError is returned. +func (t *SecureTrie) TryDelete(key []byte) error { + hk := t.hashKey(key) + delete(t.getSecKeyCache(), string(hk)) + return t.trie.TryDelete(hk) +} + +// GetKey returns the sha3 preimage of a hashed key that was +// previously used to store a value. +/*func (t *SecureTrie) GetKey(shaKey []byte) []byte { + if key, ok := t.getSecKeyCache()[string(shaKey)]; ok { + return key + } + return t.trie.db.preimage(common.BytesToHash(shaKey)) +}*/ + +// Commit writes all nodes and the secure hash pre-images to the trie's database. +// Nodes are stored with their sha3 hash as the key. +// +// Committing flushes nodes from memory. Subsequent Get calls will load nodes +// from the database. +func (t *SecureTrie) Commit(onleaf LeafCallback) (root common.Hash, err error) { + // Write all the pre-images to the actual disk database + /*if len(t.getSecKeyCache()) > 0 { + if t.trie.db.preimages != nil { // Ugly direct check but avoids the below write lock + t.trie.db.lock.Lock() + for hk, key := range t.secKeyCache { + t.trie.db.insertPreimage(common.BytesToHash([]byte(hk)), key) + } + t.trie.db.lock.Unlock() + } + t.secKeyCache = make(map[string][]byte) + }*/ + // Commit the trie to its intermediate node database + return t.trie.Commit(onleaf) +} + +// Hash returns the root hash of SecureTrie. It does not write to the +// database and can be used even if the trie doesn't have one. +func (t *SecureTrie) Hash() common.Hash { + return t.trie.Hash() +} + +// Copy returns a copy of SecureTrie. +func (t *SecureTrie) Copy() *SecureTrie { + cpy := *t + return &cpy +} + +// NodeIterator returns an iterator that returns nodes of the underlying trie. Iteration +// starts at the key after the given start key. +func (t *SecureTrie) NodeIterator(start []byte) NodeIterator { + return t.trie.NodeIterator(start) +} + +// hashKey returns the hash of key as an ephemeral buffer. +// The caller must not hold onto the return value because it will become +// invalid on the next call to hashKey or secKey. +func (t *SecureTrie) hashKey(key []byte) []byte { + if !oracle.PreventHashingInSecureTrie { + h := NewHasher(false) + h.sha.Reset() + h.sha.Write(key) + h.sha.Read(t.hashKeyBuf[:]) + returnHasherToPool(h) + return t.hashKeyBuf[:] + } else { + // For generating special tests for MPT circuit. + return key + } +} + +// getSecKeyCache returns the current secure key cache, creating a new one if +// ownership changed (i.e. the current secure trie is a copy of another owning +// the actual cache). +func (t *SecureTrie) getSecKeyCache() map[string][]byte { + if t != t.secKeyCacheOwner { + t.secKeyCacheOwner = t + t.secKeyCache = make(map[string][]byte) + } + return t.secKeyCache +} + +// For Merkle Patricia Trie generator. +func (t *SecureTrie) GetRoot() Node { + return t.trie.root +} diff --git a/mpt-witness-generator/trie/stacktrie.go b/mpt-witness-generator/trie/stacktrie.go new file mode 100644 index 0000000000..9f3a63a23f --- /dev/null +++ b/mpt-witness-generator/trie/stacktrie.go @@ -0,0 +1,772 @@ +// Copyright 2020 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package trie + +import ( + "bufio" + "bytes" + "encoding/gob" + "errors" + "fmt" + "io" + "sync" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/ethdb" + "github.com/ethereum/go-ethereum/log" + "github.com/privacy-scaling-explorations/mpt-witness-generator/types" + + //"github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/rlp" +) + +var ErrCommitDisabled = errors.New("no database for committing") + +var stPool = sync.Pool{ + New: func() interface{} { + return NewStackTrie(nil) + }, +} + +func stackTrieFromPool(db ethdb.KeyValueWriter) *StackTrie { + st := stPool.Get().(*StackTrie) + st.db = db + return st +} + +func returnToPool(st *StackTrie) { + st.Reset() + stPool.Put(st) +} + +// StackTrie is a trie implementation that expects keys to be inserted +// in order. Once it determines that a subtree will no longer be inserted +// into, it will hash it and free up the memory it uses. +type StackTrie struct { + nodeType uint8 // node type (as in branch, ext, leaf) + val []byte // value contained by this node if it's a leaf + key []byte // key chunk covered by this (full|ext) node + keyOffset int // offset of the key chunk inside a full key + children [16]*StackTrie // list of children (for fullnodes and exts) + db ethdb.KeyValueWriter // Pointer to the commit db, can be nil +} + +// NewStackTrie allocates and initializes an empty trie. +func NewStackTrie(db ethdb.KeyValueWriter) *StackTrie { + return &StackTrie{ + nodeType: emptyNode, + db: db, + } +} + +// NewFromBinary initialises a serialized stacktrie with the given db. +func NewFromBinary(data []byte, db ethdb.KeyValueWriter) (*StackTrie, error) { + var st StackTrie + if err := st.UnmarshalBinary(data); err != nil { + return nil, err + } + // If a database is used, we need to recursively add it to every child + if db != nil { + st.setDb(db) + } + return &st, nil +} + +// MarshalBinary implements encoding.BinaryMarshaler +func (st *StackTrie) MarshalBinary() (data []byte, err error) { + var ( + b bytes.Buffer + w = bufio.NewWriter(&b) + ) + if err := gob.NewEncoder(w).Encode(struct { + Nodetype uint8 + Val []byte + Key []byte + KeyOffset uint8 + }{ + st.nodeType, + st.val, + st.key, + uint8(st.keyOffset), + }); err != nil { + return nil, err + } + for _, child := range st.children { + if child == nil { + w.WriteByte(0) + continue + } + w.WriteByte(1) + if childData, err := child.MarshalBinary(); err != nil { + return nil, err + } else { + w.Write(childData) + } + } + w.Flush() + return b.Bytes(), nil +} + +// UnmarshalBinary implements encoding.BinaryUnmarshaler +func (st *StackTrie) UnmarshalBinary(data []byte) error { + r := bytes.NewReader(data) + return st.unmarshalBinary(r) +} + +func (st *StackTrie) unmarshalBinary(r io.Reader) error { + var dec struct { + Nodetype uint8 + Val []byte + Key []byte + KeyOffset uint8 + } + gob.NewDecoder(r).Decode(&dec) + st.nodeType = dec.Nodetype + st.val = dec.Val + st.key = dec.Key + st.keyOffset = int(dec.KeyOffset) + + var hasChild = make([]byte, 1) + for i := range st.children { + if _, err := r.Read(hasChild); err != nil { + return err + } else if hasChild[0] == 0 { + continue + } + var child StackTrie + child.unmarshalBinary(r) + st.children[i] = &child + } + return nil +} + +func (st *StackTrie) setDb(db ethdb.KeyValueWriter) { + st.db = db + for _, child := range st.children { + if child != nil { + child.setDb(db) + } + } +} + +func newLeaf(ko int, key, val []byte, db ethdb.KeyValueWriter) *StackTrie { + st := stackTrieFromPool(db) + st.nodeType = leafNode + st.keyOffset = ko + st.key = append(st.key, key[ko:]...) + st.val = val + return st +} + +func newExt(ko int, key []byte, child *StackTrie, db ethdb.KeyValueWriter) *StackTrie { + st := stackTrieFromPool(db) + st.nodeType = extNode + st.keyOffset = ko + st.key = append(st.key, key[ko:]...) + st.children[0] = child + return st +} + +// List all values that StackTrie#nodeType can hold +const ( + emptyNode = iota + branchNode + extNode + leafNode + hashedNode +) + +// TryUpdate inserts a (key, value) pair into the stack trie +func (st *StackTrie) TryUpdate(key, value []byte) error { + k := KeybytesToHex(key) + if len(value) == 0 { + panic("deletion not supported") + } + st.insert(k[:len(k)-1], value) + return nil +} + +func (st *StackTrie) Update(key, value []byte) { + if err := st.TryUpdate(key, value); err != nil { + log.Error(fmt.Sprintf("Unhandled trie error: %v", err)) + } +} + +func (st *StackTrie) Reset() { + //st.db = nil + st.key = st.key[:0] + st.val = nil + for i := range st.children { + st.children[i] = nil + } + st.nodeType = emptyNode + st.keyOffset = 0 +} + +// Helper function that, given a full key, determines the index +// at which the chunk pointed by st.keyOffset is different from +// the same chunk in the full key. +func (st *StackTrie) getDiffIndex(key []byte) int { + diffindex := 0 + for ; diffindex < len(st.key) && st.key[diffindex] == key[st.keyOffset+diffindex]; diffindex++ { + } + return diffindex +} + +// Helper function to that inserts a (key, value) pair into +// the trie. +func (st *StackTrie) insert(key, value []byte) { + if key[0] == 1 && key[1] == 0 { + fmt.Println("d") + } + switch st.nodeType { + case branchNode: /* Branch */ + idx := int(key[st.keyOffset]) + // Unresolve elder siblings + for i := idx - 1; i >= 0; i-- { + if st.children[i] != nil { + if st.children[i].nodeType != hashedNode { + st.children[i].hash(true) + } + break + } + } + // Add new child + if st.children[idx] == nil { + st.children[idx] = stackTrieFromPool(st.db) + st.children[idx].keyOffset = st.keyOffset + 1 + } + st.children[idx].insert(key, value) + case extNode: /* Ext */ + // Compare both key chunks and see where they differ + diffidx := st.getDiffIndex(key) + + // Check if chunks are identical. If so, recurse into + // the child node. Otherwise, the key has to be split + // into 1) an optional common prefix, 2) the fullnode + // representing the two differing path, and 3) a leaf + // for each of the differentiated subtrees. + if diffidx == len(st.key) { + // Ext key and key segment are identical, recurse into + // the child node. + st.children[0].insert(key, value) + return + } + // Save the original part. Depending if the break is + // at the extension's last byte or not, create an + // intermediate extension or use the extension's child + // node directly. + var n *StackTrie + if diffidx < len(st.key)-1 { + n = newExt(diffidx+1, st.key, st.children[0], st.db) + } else { + // Break on the last byte, no need to insert + // an extension node: reuse the current node + n = st.children[0] + } + // Convert to hash + n.hash(true) + var p *StackTrie + if diffidx == 0 { + // the break is on the first byte, so + // the current node is converted into + // a branch node. + st.children[0] = nil + p = st + st.nodeType = branchNode + } else { + // the common prefix is at least one byte + // long, insert a new intermediate branch + // node. + st.children[0] = stackTrieFromPool(st.db) + st.children[0].nodeType = branchNode + st.children[0].keyOffset = st.keyOffset + diffidx + p = st.children[0] + } + // Create a leaf for the inserted part + o := newLeaf(st.keyOffset+diffidx+1, key, value, st.db) + + // Insert both child leaves where they belong: + origIdx := st.key[diffidx] + newIdx := key[diffidx+st.keyOffset] + p.children[origIdx] = n + p.children[newIdx] = o + st.key = st.key[:diffidx] + + case leafNode: /* Leaf */ + // Compare both key chunks and see where they differ + diffidx := st.getDiffIndex(key) + + // Overwriting a key isn't supported, which means that + // the current leaf is expected to be split into 1) an + // optional extension for the common prefix of these 2 + // keys, 2) a fullnode selecting the path on which the + // keys differ, and 3) one leaf for the differentiated + // component of each key. + if diffidx >= len(st.key) { + panic("Trying to insert into existing key") + } + + // Check if the split occurs at the first nibble of the + // chunk. In that case, no prefix extnode is necessary. + // Otherwise, create that + var p *StackTrie + if diffidx == 0 { + // Convert current leaf into a branch + st.nodeType = branchNode + p = st + st.children[0] = nil + } else { + // Convert current node into an ext, + // and insert a child branch node. + st.nodeType = extNode + st.children[0] = NewStackTrie(st.db) + st.children[0].nodeType = branchNode + st.children[0].keyOffset = st.keyOffset + diffidx + p = st.children[0] + } + + // Create the two child leaves: the one containing the + // original value and the one containing the new value + // The child leave will be hashed directly in order to + // free up some memory. + origIdx := st.key[diffidx] + p.children[origIdx] = newLeaf(diffidx+1, st.key, st.val, st.db) + p.children[origIdx].hash(true) + + newIdx := key[diffidx+st.keyOffset] + p.children[newIdx] = newLeaf(p.keyOffset+1, key, value, st.db) + + // Finally, cut off the key part that has been passed + // over to the children. + st.key = st.key[:diffidx] + st.val = nil + case emptyNode: /* Empty */ + st.nodeType = leafNode + st.key = key[st.keyOffset:] + st.val = value + case hashedNode: + panic("trying to insert into hash") + default: + panic("invalid type") + } +} + +func (st *StackTrie) branchToHasher(doUpdate bool) *hasher { + if st.nodeType != branchNode { + panic("Converting branch to RLP: wrong node") + } + var nodes [17]Node + for i, child := range st.children { + if child == nil { + nodes[i] = nilValueNode + continue + } + child.hash(doUpdate) + if len(child.val) < 32 { + nodes[i] = rawNode(child.val) + } else { + nodes[i] = HashNode(child.val) + } + if doUpdate { + st.children[i] = nil // Reclaim mem from subtree + returnToPool(child) + } + } + nodes[16] = nilValueNode + + h := NewHasher(false) + defer returnHasherToPool(h) + h.tmp.Reset() + if err := rlp.Encode(&h.tmp, nodes); err != nil { + panic(err) + } + + // h.tmp is branch RLP + return h +} + +func (st *StackTrie) extNodeToHasher(doUpdate bool) *hasher { + if st.nodeType != extNode { + panic("Converting extension node to RLP: wrong node") + } + st.children[0].hash(doUpdate) + h := NewHasher(false) + defer returnHasherToPool(h) + h.tmp.Reset() + var valuenode Node + if len(st.children[0].val) < 32 { + valuenode = rawNode(st.children[0].val) + } else { + valuenode = HashNode(st.children[0].val) + } + n := struct { + Key []byte + Val Node + }{ + Key: HexToCompact(st.key), + Val: valuenode, + } + if err := rlp.Encode(&h.tmp, n); err != nil { + panic(err) + } + if doUpdate { + returnToPool(st.children[0]) + st.children[0] = nil // Reclaim mem from subtree + } + + // h.tmp is extension node RLP + return h +} + +// hash() hashes the node 'st' and converts it into 'hashedNode', if possible. +// Possible outcomes: +// 1. The rlp-encoded value was >= 32 bytes: +// - Then the 32-byte `hash` will be accessible in `st.val`. +// - And the 'st.type' will be 'hashedNode' +// +// 2. The rlp-encoded value was < 32 bytes +// - Then the <32 byte rlp-encoded value will be accessible in 'st.val'. +// - And the 'st.type' will be 'hashedNode' AGAIN +// +// This method will also: +// set 'st.type' to hashedNode +// clear 'st.key' +func (st *StackTrie) hash(doUpdate bool) { + /* Shortcut if node is already hashed */ + if st.nodeType == hashedNode { + return + } + // The 'hasher' is taken from a pool, but we don't actually + // claim an instance until all children are done with their hashing, + // and we actually need one + var h *hasher + + switch st.nodeType { + case branchNode: + h = st.branchToHasher(doUpdate) + case extNode: + h = st.extNodeToHasher(doUpdate) + case leafNode: + h = NewHasher(false) + defer returnHasherToPool(h) + h.tmp.Reset() + + k := make([]byte, len(st.key)) + copy(k, st.key) + k = append(k, byte(16)) + + if doUpdate { + st.key = k + } + sz := hexToCompactInPlace(k) + n := [][]byte{k[:sz], st.val} + if err := rlp.Encode(&h.tmp, n); err != nil { + panic(err) + } + case emptyNode: + st.val = emptyRoot.Bytes() + st.key = st.key[:0] + st.nodeType = hashedNode + return + default: + panic("Invalid node type") + } + if doUpdate { + st.key = st.key[:0] + st.nodeType = hashedNode + } + if len(h.tmp) < 32 { + st.val = common.CopyBytes(h.tmp) + return + } + // Write the hash to the 'val'. We allocate a new val here to not mutate + // input values + st.val = make([]byte, 32) + h.sha.Reset() + h.sha.Write(h.tmp) + h.sha.Read(st.val) + if st.db != nil { + // TODO! Is it safe to Put the slice here? + // Do all db implementations copy the value provided? + fmt.Println("into db:", st.val) + st.db.Put(st.val, h.tmp) + } +} + +// Hash returns the hash of the current node +func (st *StackTrie) Hash() (h common.Hash) { + st.hash(true) + if len(st.val) != 32 { + // If the node's RLP isn't 32 bytes long, the node will not + // be hashed, and instead contain the rlp-encoding of the + // node. For the top level node, we need to force the hashing. + ret := make([]byte, 32) + h := NewHasher(false) + defer returnHasherToPool(h) + h.sha.Reset() + h.sha.Write(st.val) + h.sha.Read(ret) + return common.BytesToHash(ret) + } + return common.BytesToHash(st.val) +} + +// Commit will firstly hash the entrie trie if it's still not hashed +// and then commit all nodes to the associated database. Actually most +// of the trie nodes MAY have been committed already. The main purpose +// here is to commit the root node. +// +// The associated database is expected, otherwise the whole commit +// functionality should be disabled. +func (st *StackTrie) Commit() (common.Hash, error) { + if st.db == nil { + return common.Hash{}, ErrCommitDisabled + } + st.hash(true) + if len(st.val) != 32 { + // If the node's RLP isn't 32 bytes long, the node will not + // be hashed (and committed), and instead contain the rlp-encoding of the + // node. For the top level node, we need to force the hashing+commit. + ret := make([]byte, 32) + h := NewHasher(false) + defer returnHasherToPool(h) + h.sha.Reset() + h.sha.Write(st.val) + h.sha.Read(ret) + st.db.Put(ret, st.val) + return common.BytesToHash(ret), nil + } + return common.BytesToHash(st.val), nil +} + +func (st *StackTrie) getNodeFromBranchRLP(branch []byte, ind byte) []byte { + start := 2 // when branch[0] == 248 + if branch[0] == 249 { + start = 3 + } + + i := 0 + insideInd := -1 + cInd := byte(0) + for { + if start+i == len(branch)-1 { // -1 because of the last 128 (branch value) + return []byte{0} + } + b := branch[start+i] + if insideInd == -1 && b == 128 { + if cInd == ind { + return []byte{128} + } else { + cInd += 1 + } + } else if insideInd == -1 && b != 128 { + if b == 160 { + if cInd == ind { + return branch[start+i+1 : start+i+1+32] + } + insideInd = 32 + } else { + // non-hashed node + if cInd == ind { + return branch[start+i+1 : start+i+1+int(b)-192] + } + insideInd = int(b) - 192 + } + cInd += 1 + } else { + if insideInd == 1 { + insideInd = -1 + } else { + insideInd-- + } + } + + i++ + } +} + +type StackProof struct { + proofS [][]byte + proofC [][]byte +} + +func (st *StackTrie) UpdateAndGetProof(db ethdb.KeyValueReader, indexBuf, value []byte) (StackProof, error) { + proofS, err := st.GetProof(db, indexBuf) + if err != nil { + return StackProof{}, err + } + + st.Update(indexBuf, value) + + proofC, err := st.GetProof(db, indexBuf) + if err != nil { + return StackProof{}, err + } + + return StackProof{proofS, proofC}, nil +} + +func (st *StackTrie) UpdateAndGetProofs(db ethdb.KeyValueReader, list types.DerivableList) ([]StackProof, error) { + valueBuf := types.EncodeBufferPool.Get().(*bytes.Buffer) + defer types.EncodeBufferPool.Put(valueBuf) + + var proofs []StackProof + + // StackTrie requires values to be inserted in increasing hash order, which is not the + // order that `list` provides hashes in. This insertion sequence ensures that the + // order is correct. + var indexBuf []byte + for i := 1; i < list.Len() && i <= 0x7f; i++ { + indexBuf = rlp.AppendUint64(indexBuf[:0], uint64(i)) + value := types.EncodeForDerive(list, i, valueBuf) + + proof, err := st.UpdateAndGetProof(db, indexBuf, value) + if err != nil { + return nil, err + } + + proofs = append(proofs, proof) + } + if list.Len() > 0 { + indexBuf = rlp.AppendUint64(indexBuf[:0], 0) + value := types.EncodeForDerive(list, 0, valueBuf) + // TODO: get proof + st.Update(indexBuf, value) + } + for i := 0x80; i < list.Len(); i++ { + indexBuf = rlp.AppendUint64(indexBuf[:0], uint64(i)) + value := types.EncodeForDerive(list, i, valueBuf) + // TODO: get proof + st.Update(indexBuf, value) + } + + return proofs, nil +} + +func (st *StackTrie) GetProof(db ethdb.KeyValueReader, key []byte) ([][]byte, error) { + k := KeybytesToHex(key) + i := 0 + + if st.nodeType == emptyNode { + return [][]byte{}, nil + } + + // Note that when root is a leaf, this leaf should be returned even if you ask for a different key (than the key of + // of this leaf) - this is how it works in state GetProof and how it should, because this means the second change + // of the trie. The first change is going from empty trie to the trie with only a leaf. The second change is going + // from a leaf to a branch (or extension node). That means the second change requires a placeholder branch + // and when there is a placeholder branch, the circuit checks that there are only two leaves in a branch and one + // (the one not just added) is the same as in the S proof. This wouldn't work if we would have a placeholder leaf + // in the S proof (another reason is that the S proof with a placeholder leaf would be an empty trie and thus with + // a root of an empty trie - which is not the case in S proof). + if st.nodeType == leafNode { + return [][]byte{st.val}, nil + } + + var proof [][]byte + + var nodes []*StackTrie + + c := st + isHashed := false + + for i < len(k) { + if c.nodeType == extNode { + nodes = append(nodes, c) + c = st.children[0] + } else if c.nodeType == branchNode { + nodes = append(nodes, c) + c = c.children[k[i]] + if c == nil { + break + } + } else if c.nodeType == leafNode { + nodes = append(nodes, c) + break + } else if c.nodeType == hashedNode { + isHashed = true + c_rlp, error := db.Get(c.val) + if error != nil { + fmt.Println(error) + panic(error) + } + fmt.Println(c_rlp) + + proof = append(proof, c_rlp) + + for i < len(k)-1 { + node := st.getNodeFromBranchRLP(c_rlp, k[i]) + i += 1 + fmt.Println(node) + + if len(node) == 1 && node[0] == 128 { // no child at this position + break + } + + c_rlp, error = db.Get(node) + if error != nil { + fmt.Println(error) + panic(error) + } + fmt.Println(c_rlp) + + proof = append(proof, c_rlp) + } + + break + } + } + + // Differently as in the Trie, the StackTrie branch doesn't store children once it is hashed. + // For getting the proof, we need to hash the nodes, but once they are hashed we cannot add children + // to them - which is needed in MPT proof, because we need a proof for each modification (after + // the first modification, some nodes are hashed and we cannot add children to the hashed node). + + if !isHashed { + lNodes := len(nodes) + for i := lNodes - 1; i >= 0; i-- { + node := nodes[i] + fmt.Println(node) + + if node.nodeType == leafNode { + rlp, error := db.Get(node.val) + if error != nil { // TODO: avoid error when RLP + proof = append(proof, node.val) // already have RLP + } else { + proof = append(proof, rlp) + } + } else if node.nodeType == branchNode || node.nodeType == extNode { + node.hash(false) + + rlp, error := db.Get(node.val) + if error != nil { + return nil, error + } + proof = append(proof, rlp) + } + + } + } + + fmt.Println("----------") + for i := 0; i < len(proof); i++ { + fmt.Println(proof[i]) + } + + return proof, nil +} diff --git a/mpt-witness-generator/trie/trie.go b/mpt-witness-generator/trie/trie.go new file mode 100644 index 0000000000..433da4a1b6 --- /dev/null +++ b/mpt-witness-generator/trie/trie.go @@ -0,0 +1,615 @@ +// Copyright 2014 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +// Package trie implements Merkle Patricia Tries. +package trie + +import ( + "bytes" + "errors" + "fmt" + "sync" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/log" +) + +var ( + // emptyRoot is the known root hash of an empty trie. + emptyRoot = common.HexToHash("56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421") + + // emptyState is the known hash of an empty state trie entry. + emptyState = crypto.Keccak256Hash(nil) +) + +// LeafCallback is a callback type invoked when a trie operation reaches a leaf +// node. +// +// The paths is a path tuple identifying a particular trie node either in a single +// trie (account) or a layered trie (account -> storage). Each path in the tuple +// is in the raw format(32 bytes). +// +// The hexpath is a composite hexary path identifying the trie node. All the key +// bytes are converted to the hexary nibbles and composited with the parent path +// if the trie node is in a layered trie. +// +// It's used by state sync and commit to allow handling external references +// between account and storage tries. And also it's used in the state healing +// for extracting the raw states(leaf nodes) with corresponding paths. +type LeafCallback func(paths [][]byte, hexpath []byte, leaf []byte, parent common.Hash) error + +// Trie is a Merkle Patricia Trie. +// The zero value is an empty trie with no database. +// Use New to create a trie that sits on top of a database. +// +// Trie is not safe for concurrent use. +type Trie struct { + db *Database + root Node + // Keep track of the number leafs which have been inserted since the last + // hashing operation. This number will not directly map to the number of + // actually unhashed nodes + unhashed int +} + +// newFlag returns the cache flag value for a newly created node. +func (t *Trie) newFlag() nodeFlag { + return nodeFlag{dirty: true} +} + +// New creates a trie with an existing root node from db. +// +// If root is the zero hash or the sha3 hash of an empty string, the +// trie is initially empty and does not require a database. Otherwise, +// New will panic if db is nil and returns a MissingNodeError if root does +// not exist in the database. Accessing the trie loads nodes from db on demand. +func New(root common.Hash, db *Database) (*Trie, error) { + if db == nil { + panic("trie.New called without a database") + } + trie := &Trie{ + db: db, + } + if root != (common.Hash{}) && root != emptyRoot { + rootnode, err := trie.resolveHash(root[:], nil) + if err != nil { + return nil, err + } + trie.root = rootnode + } + return trie, nil +} + +// NodeIterator returns an iterator that returns nodes of the trie. Iteration starts at +// the key after the given start key. +func (t *Trie) NodeIterator(start []byte) NodeIterator { + return newNodeIterator(t, start) +} + +// Get returns the value for key stored in the trie. +// The value bytes must not be modified by the caller. +func (t *Trie) Get(key []byte) []byte { + res, err := t.TryGet(key) + if err != nil { + log.Error(fmt.Sprintf("Unhandled trie error: %v", err)) + } + return res +} + +// For Merkle Patricia Trie generator. +func (t *Trie) GetRoot() Node { + return t.root +} + +// TryGet returns the value for key stored in the trie. +// The value bytes must not be modified by the caller. +// If a node was not found in the database, a MissingNodeError is returned. +func (t *Trie) TryGet(key []byte) ([]byte, error) { + value, newroot, didResolve, err := t.tryGet(t.root, KeybytesToHex(key), 0) + if err == nil && didResolve { + t.root = newroot + } + return value, err +} + +func (t *Trie) tryGet(origNode Node, key []byte, pos int) (value []byte, newnode Node, didResolve bool, err error) { + switch n := (origNode).(type) { + case nil: + return nil, nil, false, nil + case ValueNode: + return n, n, false, nil + case *ShortNode: + if len(key)-pos < len(n.Key) || !bytes.Equal(n.Key, key[pos:pos+len(n.Key)]) { + // key not found in trie + return nil, n, false, nil + } + value, newnode, didResolve, err = t.tryGet(n.Val, key, pos+len(n.Key)) + if err == nil && didResolve { + n = n.copy() + n.Val = newnode + } + return value, n, didResolve, err + case *FullNode: + value, newnode, didResolve, err = t.tryGet(n.Children[key[pos]], key, pos+1) + if err == nil && didResolve { + n = n.copy() + n.Children[key[pos]] = newnode + } + return value, n, didResolve, err + case HashNode: + child, err := t.resolveHash(n, key[:pos]) + if err != nil { + return nil, n, true, err + } + value, newnode, _, err := t.tryGet(child, key, pos) + return value, newnode, true, err + default: + panic(fmt.Sprintf("%T: invalid node: %v", origNode, origNode)) + } +} + +// TryGetNode attempts to retrieve a trie node by compact-encoded path. It is not +// possible to use keybyte-encoding as the path might contain odd nibbles. +func (t *Trie) TryGetNode(path []byte) ([]byte, int, error) { + item, newroot, resolved, err := t.tryGetNode(t.root, compactToHex(path), 0) + if err != nil { + return nil, resolved, err + } + if resolved > 0 { + t.root = newroot + } + if item == nil { + return nil, resolved, nil + } + return item, resolved, err +} + +func (t *Trie) tryGetNode(origNode Node, path []byte, pos int) (item []byte, newnode Node, resolved int, err error) { + // If we reached the requested path, return the current node + if pos >= len(path) { + // Although we most probably have the original node expanded, encoding + // that into consensus form can be nasty (needs to cascade down) and + // time consuming. Instead, just pull the hash up from disk directly. + var hash HashNode + if node, ok := origNode.(HashNode); ok { + hash = node + } else { + hash, _ = origNode.cache() + } + if hash == nil { + return nil, origNode, 0, errors.New("non-consensus node") + } + blob, err := t.db.Node(common.BytesToHash(hash)) + return blob, origNode, 1, err + } + // Path still needs to be traversed, descend into children + switch n := (origNode).(type) { + case nil: + // Non-existent path requested, abort + return nil, nil, 0, nil + + case ValueNode: + // Path prematurely ended, abort + return nil, nil, 0, nil + + case *ShortNode: + if len(path)-pos < len(n.Key) || !bytes.Equal(n.Key, path[pos:pos+len(n.Key)]) { + // Path branches off from short node + return nil, n, 0, nil + } + item, newnode, resolved, err = t.tryGetNode(n.Val, path, pos+len(n.Key)) + if err == nil && resolved > 0 { + n = n.copy() + n.Val = newnode + } + return item, n, resolved, err + + case *FullNode: + item, newnode, resolved, err = t.tryGetNode(n.Children[path[pos]], path, pos+1) + if err == nil && resolved > 0 { + n = n.copy() + n.Children[path[pos]] = newnode + } + return item, n, resolved, err + + case HashNode: + child, err := t.resolveHash(n, path[:pos]) + if err != nil { + return nil, n, 1, err + } + item, newnode, resolved, err := t.tryGetNode(child, path, pos) + return item, newnode, resolved + 1, err + + default: + panic(fmt.Sprintf("%T: invalid node: %v", origNode, origNode)) + } +} + +// Update associates key with value in the trie. Subsequent calls to +// Get will return value. If value has length zero, any existing value +// is deleted from the trie and calls to Get will return nil. +// +// The value bytes must not be modified by the caller while they are +// stored in the trie. +func (t *Trie) Update(key, value []byte) { + if err := t.TryUpdate(key, value); err != nil { + log.Error(fmt.Sprintf("Unhandled trie error: %v", err)) + } +} + +// TryUpdate associates key with value in the trie. Subsequent calls to +// Get will return value. If value has length zero, any existing value +// is deleted from the trie and calls to Get will return nil. +// +// The value bytes must not be modified by the caller while they are +// stored in the trie. +// +// If a node was not found in the database, a MissingNodeError is returned. +func (t *Trie) TryUpdate(key, value []byte) error { + t.unhashed++ + k := KeybytesToHex(key) + + if len(value) != 0 { + _, n, err := t.insert(t.root, nil, k, ValueNode(value)) + if err != nil { + return err + } + t.root = n + } else { + _, n, err := t.delete(t.root, nil, k) + if err != nil { + return err + } + t.root = n + } + return nil +} + +func (t *Trie) TryUpdateAlwaysHash(key, value []byte) error { + t.unhashed++ + k := KeybytesToHex(key) + + if len(value) != 0 { + _, n, err := t.insert(t.root, nil, k, ValueNode(value)) + if err != nil { + return err + } + t.root = n + } else { + _, n, err := t.delete(t.root, nil, k) + if err != nil { + return err + } + t.root = n + } + return nil +} + +func (t *Trie) insert(n Node, prefix, key []byte, value Node) (bool, Node, error) { + if len(key) == 0 { + if v, ok := n.(ValueNode); ok { + return !bytes.Equal(v, value.(ValueNode)), value, nil + } + return true, value, nil + } + switch n := n.(type) { + case *ShortNode: + matchlen := prefixLen(key, n.Key) + // If the whole key matches, keep this short node as is + // and only update the value. + if matchlen == len(n.Key) { + dirty, nn, err := t.insert(n.Val, append(prefix, key[:matchlen]...), key[matchlen:], value) + if !dirty || err != nil { + return false, n, err + } + return true, &ShortNode{n.Key, nn, t.newFlag()}, nil + } + // Otherwise branch out at the index where they differ. + branch := &FullNode{flags: t.newFlag()} + var err error + _, branch.Children[n.Key[matchlen]], err = t.insert(nil, append(prefix, n.Key[:matchlen+1]...), n.Key[matchlen+1:], n.Val) + if err != nil { + return false, nil, err + } + _, branch.Children[key[matchlen]], err = t.insert(nil, append(prefix, key[:matchlen+1]...), key[matchlen+1:], value) + if err != nil { + return false, nil, err + } + // Replace this shortNode with the branch if it occurs at index 0. + if matchlen == 0 { + return true, branch, nil + } + // Otherwise, replace it with a short node leading up to the branch. + // (this is extension node) + if matchlen > 2 { + fmt.Println(matchlen) + fmt.Println("====") + } + return true, &ShortNode{key[:matchlen], branch, t.newFlag()}, nil + + case *FullNode: + dirty, nn, err := t.insert(n.Children[key[0]], append(prefix, key[0]), key[1:], value) + if !dirty || err != nil { + return false, n, err + } + n = n.copy() + n.flags = t.newFlag() + + n.Children[key[0]] = nn + return true, n, nil + + case nil: + return true, &ShortNode{key, value, t.newFlag()}, nil + + case HashNode: + // We've hit a part of the trie that isn't loaded yet. Load + // the node and insert into it. This leaves all child nodes on + // the path to the value in the trie. + rn, err := t.resolveHash(n, prefix) + if err != nil { + return false, nil, err + } + dirty, nn, err := t.insert(rn, prefix, key, value) + if !dirty || err != nil { + return false, rn, err + } + return true, nn, nil + + default: + panic(fmt.Sprintf("%T: invalid node: %v", n, n)) + } +} + +// Delete removes any existing value for key from the trie. +func (t *Trie) Delete(key []byte) { + if err := t.TryDelete(key); err != nil { + log.Error(fmt.Sprintf("Unhandled trie error: %v", err)) + } +} + +// TryDelete removes any existing value for key from the trie. +// If a node was not found in the database, a MissingNodeError is returned. +func (t *Trie) TryDelete(key []byte) error { + t.unhashed++ + k := KeybytesToHex(key) + _, n, err := t.delete(t.root, nil, k) + if err != nil { + return err + } + t.root = n + return nil +} + +// delete returns the new root of the trie with key deleted. +// It reduces the trie to minimal form by simplifying +// nodes on the way up after deleting recursively. +func (t *Trie) delete(n Node, prefix, key []byte) (bool, Node, error) { + switch n := n.(type) { + case *ShortNode: + matchlen := prefixLen(key, n.Key) + if matchlen < len(n.Key) { + return false, n, nil // don't replace n on mismatch + } + if matchlen == len(key) { + return true, nil, nil // remove n entirely for whole matches + } + // The key is longer than n.Key. Remove the remaining suffix + // from the subtrie. Child can never be nil here since the + // subtrie must contain at least two other values with keys + // longer than n.Key. + dirty, child, err := t.delete(n.Val, append(prefix, key[:len(n.Key)]...), key[len(n.Key):]) + if !dirty || err != nil { + return false, n, err + } + switch child := child.(type) { + case *ShortNode: + // Deleting from the subtrie reduced it to another + // short node. Merge the nodes to avoid creating a + // shortNode{..., shortNode{...}}. Use concat (which + // always creates a new slice) instead of append to + // avoid modifying n.Key since it might be shared with + // other nodes. + return true, &ShortNode{concat(n.Key, child.Key...), child.Val, t.newFlag()}, nil + default: + return true, &ShortNode{n.Key, child, t.newFlag()}, nil + } + + case *FullNode: + dirty, nn, err := t.delete(n.Children[key[0]], append(prefix, key[0]), key[1:]) + if !dirty || err != nil { + return false, n, err + } + n = n.copy() + n.flags = t.newFlag() + n.Children[key[0]] = nn + + // Because n is a full node, it must've contained at least two children + // before the delete operation. If the new child value is non-nil, n still + // has at least two children after the deletion, and cannot be reduced to + // a short node. + if nn != nil { + return true, n, nil + } + // Reduction: + // Check how many non-nil entries are left after deleting and + // reduce the full node to a short node if only one entry is + // left. Since n must've contained at least two children + // before deletion (otherwise it would not be a full node) n + // can never be reduced to nil. + // + // When the loop is done, pos contains the index of the single + // value that is left in n or -2 if n contains at least two + // values. + pos := -1 + for i, cld := range &n.Children { + if cld != nil { + if pos == -1 { + pos = i + } else { + pos = -2 + break + } + } + } + if pos >= 0 { + if pos != 16 { + //fmt.Println("delete fails here", pos, n.Children, prefix, n.Children[pos]) + // If the remaining entry is a short node, it replaces + // n and its key gets the missing nibble tacked to the + // front. This avoids creating an invalid + // shortNode{..., shortNode{...}}. Since the entry + // might not be loaded yet, resolve it just for this + // check. + + // When node is not resolved in next block's absence proof, + // it must be an extension node if the state transition is + // valid, so we ignore the error here. + cnode, _ := t.resolve(n.Children[pos], prefix) + if cnode, ok := cnode.(*ShortNode); ok { + k := append([]byte{byte(pos)}, cnode.Key...) + return true, &ShortNode{k, cnode.Val, t.newFlag()}, nil + } + } + // Otherwise, n is replaced by a one-nibble short node + // containing the child. + return true, &ShortNode{[]byte{byte(pos)}, n.Children[pos], t.newFlag()}, nil + } + // n still contains at least two values and cannot be reduced. + return true, n, nil + + case ValueNode: + return true, nil, nil + + case nil: + return false, nil, nil + + case HashNode: + fmt.Println("delete hashNode", prefix, key) + // We've hit a part of the trie that isn't loaded yet. Load + // the node and delete from it. This leaves all child nodes on + // the path to the value in the trie. + rn, err := t.resolveHash(n, prefix) + if err != nil { + return false, nil, err + } + dirty, nn, err := t.delete(rn, prefix, key) + if !dirty || err != nil { + return false, rn, err + } + return true, nn, nil + + default: + panic(fmt.Sprintf("%T: invalid node: %v (%v)", n, n, key)) + } +} + +func concat(s1 []byte, s2 ...byte) []byte { + r := make([]byte, len(s1)+len(s2)) + copy(r, s1) + copy(r[len(s1):], s2) + return r +} + +func (t *Trie) resolve(n Node, prefix []byte) (Node, error) { + if n, ok := n.(HashNode); ok { + return t.resolveHash(n, prefix) + } + return n, nil +} + +func (t *Trie) resolveHash(n HashNode, prefix []byte) (Node, error) { + hash := common.BytesToHash(n) + if node := t.db.node(hash); node != nil { + return node, nil + } + return nil, &MissingNodeError{NodeHash: hash, Path: prefix} +} + +// Hash returns the root hash of the trie. It does not write to the +// database and can be used even if the trie doesn't have one. +func (t *Trie) Hash() common.Hash { + hash, cached, _ := t.hashRoot() + t.root = cached + return common.BytesToHash(hash.(HashNode)) +} + +// Commit writes all nodes to the trie's memory database, tracking the internal +// and external (for account tries) references. +func (t *Trie) Commit(onleaf LeafCallback) (root common.Hash, err error) { + if t.db == nil { + panic("commit called on trie with nil database") + } + if t.root == nil { + return emptyRoot, nil + } + // Derive the hash for all dirty nodes first. We hold the assumption + // in the following procedure that all nodes are hashed. + rootHash := t.Hash() + h := newCommitter() + defer returnCommitterToPool(h) + + // Do a quick check if we really need to commit, before we spin + // up goroutines. This can happen e.g. if we load a trie for reading storage + // values, but don't write to it. + if _, dirty := t.root.cache(); !dirty { + return rootHash, nil + } + var wg sync.WaitGroup + if onleaf != nil { + h.onleaf = onleaf + h.leafCh = make(chan *leaf, leafChanSize) + wg.Add(1) + go func() { + defer wg.Done() + h.commitLoop(t.db) + }() + } + var newRoot HashNode + newRoot, err = h.Commit(t.root, t.db) + if onleaf != nil { + // The leafch is created in newCommitter if there was an onleaf callback + // provided. The commitLoop only _reads_ from it, and the commit + // operation was the sole writer. Therefore, it's safe to close this + // channel here. + close(h.leafCh) + wg.Wait() + } + if err != nil { + return common.Hash{}, err + } + t.root = newRoot + return rootHash, nil +} + +// hashRoot calculates the root hash of the given trie +func (t *Trie) hashRoot() (Node, Node, error) { + if t.root == nil { + return HashNode(emptyRoot.Bytes()), nil, nil + } + // If the number of changes is below 100, we let one thread handle it + h := NewHasher(t.unhashed >= 100) + defer returnHasherToPool(h) + hashed, cached := h.Hash(t.root, true) + t.unhashed = 0 + return hashed, cached, nil +} + +// Reset drops the referenced root node and cleans all internal state. +func (t *Trie) Reset() { + t.root = nil + t.unhashed = 0 +} diff --git a/mpt-witness-generator/types/access_list_tx.go b/mpt-witness-generator/types/access_list_tx.go new file mode 100644 index 0000000000..d8d08b48c5 --- /dev/null +++ b/mpt-witness-generator/types/access_list_tx.go @@ -0,0 +1,116 @@ +// Copyright 2020 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package types + +import ( + "math/big" + + "github.com/ethereum/go-ethereum/common" +) + +//go:generate gencodec -type AccessTuple -out gen_access_tuple.go + +// AccessList is an EIP-2930 access list. +type AccessList []AccessTuple + +// AccessTuple is the element type of an access list. +type AccessTuple struct { + Address common.Address `json:"address" gencodec:"required"` + StorageKeys []common.Hash `json:"storageKeys" gencodec:"required"` +} + +// StorageKeys returns the total number of storage keys in the access list. +func (al AccessList) StorageKeys() int { + sum := 0 + for _, tuple := range al { + sum += len(tuple.StorageKeys) + } + return sum +} + +// AccessListTx is the data of EIP-2930 access list transactions. +type AccessListTx struct { + ChainID *big.Int // destination chain ID + Nonce uint64 // nonce of sender account + GasPrice *big.Int // wei per gas + Gas uint64 // gas limit + To *common.Address `rlp:"nil"` // nil means contract creation + Value *big.Int // wei amount + Data []byte // contract invocation input data + AccessList AccessList // EIP-2930 access list + V, R, S *big.Int // signature values +} + +// copy creates a deep copy of the transaction data and initializes all fields. +func (tx *AccessListTx) copy() TxData { + cpy := &AccessListTx{ + Nonce: tx.Nonce, + To: tx.To, // TODO: copy pointed-to address + Data: common.CopyBytes(tx.Data), + Gas: tx.Gas, + // These are copied below. + AccessList: make(AccessList, len(tx.AccessList)), + Value: new(big.Int), + ChainID: new(big.Int), + GasPrice: new(big.Int), + V: new(big.Int), + R: new(big.Int), + S: new(big.Int), + } + copy(cpy.AccessList, tx.AccessList) + if tx.Value != nil { + cpy.Value.Set(tx.Value) + } + if tx.ChainID != nil { + cpy.ChainID.Set(tx.ChainID) + } + if tx.GasPrice != nil { + cpy.GasPrice.Set(tx.GasPrice) + } + if tx.V != nil { + cpy.V.Set(tx.V) + } + if tx.R != nil { + cpy.R.Set(tx.R) + } + if tx.S != nil { + cpy.S.Set(tx.S) + } + return cpy +} + +// accessors for innerTx. +func (tx *AccessListTx) txType() byte { return AccessListTxType } +func (tx *AccessListTx) chainID() *big.Int { return tx.ChainID } +func (tx *AccessListTx) protected() bool { return true } +func (tx *AccessListTx) accessList() AccessList { return tx.AccessList } +func (tx *AccessListTx) data() []byte { return tx.Data } +func (tx *AccessListTx) gas() uint64 { return tx.Gas } +func (tx *AccessListTx) gasPrice() *big.Int { return tx.GasPrice } +func (tx *AccessListTx) gasTipCap() *big.Int { return tx.GasPrice } +func (tx *AccessListTx) gasFeeCap() *big.Int { return tx.GasPrice } +func (tx *AccessListTx) value() *big.Int { return tx.Value } +func (tx *AccessListTx) nonce() uint64 { return tx.Nonce } +func (tx *AccessListTx) to() *common.Address { return tx.To } + +func (tx *AccessListTx) rawSignatureValues() (v, r, s *big.Int) { + return tx.V, tx.R, tx.S +} + +func (tx *AccessListTx) setSignatureValues(chainID, v, r, s *big.Int) { + tx.ChainID, tx.V, tx.R, tx.S = chainID, v, r, s +} diff --git a/mpt-witness-generator/types/block.go b/mpt-witness-generator/types/block.go new file mode 100644 index 0000000000..360f1eb47c --- /dev/null +++ b/mpt-witness-generator/types/block.go @@ -0,0 +1,385 @@ +// Copyright 2014 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +// Package types contains data types related to Ethereum consensus. +package types + +import ( + "encoding/binary" + "fmt" + "io" + "math/big" + "reflect" + "sync/atomic" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/rlp" +) + +var ( + EmptyRootHash = common.HexToHash("56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421") + EmptyUncleHash = rlpHash([]*Header(nil)) +) + +// A BlockNonce is a 64-bit hash which proves (combined with the +// mix-hash) that a sufficient amount of computation has been carried +// out on a block. +type BlockNonce [8]byte + +// EncodeNonce converts the given integer to a block nonce. +func EncodeNonce(i uint64) BlockNonce { + var n BlockNonce + binary.BigEndian.PutUint64(n[:], i) + return n +} + +// Uint64 returns the integer value of a block nonce. +func (n BlockNonce) Uint64() uint64 { + return binary.BigEndian.Uint64(n[:]) +} + +// MarshalText encodes n as a hex string with 0x prefix. +func (n BlockNonce) MarshalText() ([]byte, error) { + return hexutil.Bytes(n[:]).MarshalText() +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (n *BlockNonce) UnmarshalText(input []byte) error { + return hexutil.UnmarshalFixedText("BlockNonce", input, n[:]) +} + +//go:generate gencodec -type Header -field-override headerMarshaling -out gen_header_json.go + +// Header represents a block header in the Ethereum blockchain. +type Header struct { + ParentHash common.Hash `json:"parentHash" gencodec:"required"` + UncleHash common.Hash `json:"sha3Uncles" gencodec:"required"` + Coinbase common.Address `json:"miner" gencodec:"required"` + Root common.Hash `json:"stateRoot" gencodec:"required"` + TxHash common.Hash `json:"transactionsRoot" gencodec:"required"` + ReceiptHash common.Hash `json:"receiptsRoot" gencodec:"required"` + Bloom Bloom `json:"logsBloom" gencodec:"required"` + Difficulty *big.Int `json:"difficulty" gencodec:"required"` + Number *big.Int `json:"number" gencodec:"required"` + GasLimit uint64 `json:"gasLimit" gencodec:"required"` + GasUsed uint64 `json:"gasUsed" gencodec:"required"` + Time uint64 `json:"timestamp" gencodec:"required"` + Extra []byte `json:"extraData" gencodec:"required"` + MixDigest common.Hash `json:"mixHash"` + Nonce BlockNonce `json:"nonce"` + + // BaseFee was added by EIP-1559 and is ignored in legacy headers. + BaseFee *big.Int `json:"baseFeePerGas" rlp:"optional"` +} + +// field type overrides for gencodec +type headerMarshaling struct { + Difficulty *hexutil.Big + Number *hexutil.Big + GasLimit hexutil.Uint64 + GasUsed hexutil.Uint64 + Time hexutil.Uint64 + Extra hexutil.Bytes + BaseFee *hexutil.Big + Hash common.Hash `json:"hash"` // adds call to Hash() in MarshalJSON +} + +// Hash returns the block hash of the header, which is simply the keccak256 hash of its +// RLP encoding. +func (h *Header) Hash() common.Hash { + return rlpHash(h) +} + +var headerSize = common.StorageSize(reflect.TypeOf(Header{}).Size()) + +// Size returns the approximate memory used by all internal contents. It is used +// to approximate and limit the memory consumption of various caches. +func (h *Header) Size() common.StorageSize { + return headerSize + common.StorageSize(len(h.Extra)+(h.Difficulty.BitLen()+h.Number.BitLen())/8) +} + +// SanityCheck checks a few basic things -- these checks are way beyond what +// any 'sane' production values should hold, and can mainly be used to prevent +// that the unbounded fields are stuffed with junk data to add processing +// overhead +func (h *Header) SanityCheck() error { + if h.Number != nil && !h.Number.IsUint64() { + return fmt.Errorf("too large block number: bitlen %d", h.Number.BitLen()) + } + if h.Difficulty != nil { + if diffLen := h.Difficulty.BitLen(); diffLen > 80 { + return fmt.Errorf("too large block difficulty: bitlen %d", diffLen) + } + } + if eLen := len(h.Extra); eLen > 100*1024 { + return fmt.Errorf("too large block extradata: size %d", eLen) + } + if h.BaseFee != nil { + if bfLen := h.BaseFee.BitLen(); bfLen > 256 { + return fmt.Errorf("too large base fee: bitlen %d", bfLen) + } + } + return nil +} + +// EmptyBody returns true if there is no additional 'body' to complete the header +// that is: no transactions and no uncles. +func (h *Header) EmptyBody() bool { + return h.TxHash == EmptyRootHash && h.UncleHash == EmptyUncleHash +} + +// EmptyReceipts returns true if there are no receipts for this header/block. +func (h *Header) EmptyReceipts() bool { + return h.ReceiptHash == EmptyRootHash +} + +// Body is a simple (mutable, non-safe) data container for storing and moving +// a block's data contents (transactions and uncles) together. +type Body struct { + Transactions []*Transaction + Uncles []*Header +} + +// Block represents an entire block in the Ethereum blockchain. +type Block struct { + header *Header + uncles []*Header + transactions Transactions + + // caches + hash atomic.Value + size atomic.Value + + // Td is used by package core to store the total difficulty + // of the chain up to and including the block. + td *big.Int + + // These fields are used by package eth to track + // inter-peer block relay. + ReceivedAt time.Time + ReceivedFrom interface{} +} + +// "external" block encoding. used for eth protocol, etc. +type extblock struct { + Header *Header + Txs []*Transaction + Uncles []*Header +} + +// NewBlock creates a new block. The input data is copied, +// changes to header and to the field values will not affect the +// block. +// +// The values of TxHash, UncleHash, ReceiptHash and Bloom in header +// are ignored and set to values derived from the given txs, uncles +// and receipts. +func NewBlock(header *Header, txs []*Transaction, uncles []*Header, receipts []*Receipt, hasher TrieHasher) *Block { + b := &Block{header: CopyHeader(header), td: new(big.Int)} + + // TODO: panic if len(txs) != len(receipts) + if len(txs) == 0 { + b.header.TxHash = EmptyRootHash + } else { + b.header.TxHash = DeriveSha(Transactions(txs), hasher) + b.transactions = make(Transactions, len(txs)) + copy(b.transactions, txs) + } + + if len(receipts) == 0 { + b.header.ReceiptHash = EmptyRootHash + } else { + b.header.ReceiptHash = DeriveSha(Receipts(receipts), hasher) + b.header.Bloom = CreateBloom(receipts) + } + + if len(uncles) == 0 { + b.header.UncleHash = EmptyUncleHash + } else { + b.header.UncleHash = CalcUncleHash(uncles) + b.uncles = make([]*Header, len(uncles)) + for i := range uncles { + b.uncles[i] = CopyHeader(uncles[i]) + } + } + + return b +} + +// NewBlockWithHeader creates a block with the given header data. The +// header data is copied, changes to header and to the field values +// will not affect the block. +func NewBlockWithHeader(header *Header) *Block { + return &Block{header: CopyHeader(header)} +} + +// CopyHeader creates a deep copy of a block header to prevent side effects from +// modifying a header variable. +func CopyHeader(h *Header) *Header { + cpy := *h + if cpy.Difficulty = new(big.Int); h.Difficulty != nil { + cpy.Difficulty.Set(h.Difficulty) + } + if cpy.Number = new(big.Int); h.Number != nil { + cpy.Number.Set(h.Number) + } + if h.BaseFee != nil { + cpy.BaseFee = new(big.Int).Set(h.BaseFee) + } + if len(h.Extra) > 0 { + cpy.Extra = make([]byte, len(h.Extra)) + copy(cpy.Extra, h.Extra) + } + return &cpy +} + +// DecodeRLP decodes the Ethereum +func (b *Block) DecodeRLP(s *rlp.Stream) error { + var eb extblock + _, size, _ := s.Kind() + if err := s.Decode(&eb); err != nil { + return err + } + b.header, b.uncles, b.transactions = eb.Header, eb.Uncles, eb.Txs + b.size.Store(common.StorageSize(rlp.ListSize(size))) + return nil +} + +// EncodeRLP serializes b into the Ethereum RLP block format. +func (b *Block) EncodeRLP(w io.Writer) error { + return rlp.Encode(w, extblock{ + Header: b.header, + Txs: b.transactions, + Uncles: b.uncles, + }) +} + +// TODO: copies + +func (b *Block) Uncles() []*Header { return b.uncles } +func (b *Block) Transactions() Transactions { return b.transactions } + +func (b *Block) Transaction(hash common.Hash) *Transaction { + for _, transaction := range b.transactions { + if transaction.Hash() == hash { + return transaction + } + } + return nil +} + +func (b *Block) Number() *big.Int { return new(big.Int).Set(b.header.Number) } +func (b *Block) GasLimit() uint64 { return b.header.GasLimit } +func (b *Block) GasUsed() uint64 { return b.header.GasUsed } +func (b *Block) Difficulty() *big.Int { return new(big.Int).Set(b.header.Difficulty) } +func (b *Block) Time() uint64 { return b.header.Time } + +func (b *Block) NumberU64() uint64 { return b.header.Number.Uint64() } +func (b *Block) MixDigest() common.Hash { return b.header.MixDigest } +func (b *Block) Nonce() uint64 { return binary.BigEndian.Uint64(b.header.Nonce[:]) } +func (b *Block) Bloom() Bloom { return b.header.Bloom } +func (b *Block) Coinbase() common.Address { return b.header.Coinbase } +func (b *Block) Root() common.Hash { return b.header.Root } +func (b *Block) ParentHash() common.Hash { return b.header.ParentHash } +func (b *Block) TxHash() common.Hash { return b.header.TxHash } +func (b *Block) ReceiptHash() common.Hash { return b.header.ReceiptHash } +func (b *Block) UncleHash() common.Hash { return b.header.UncleHash } +func (b *Block) Extra() []byte { return common.CopyBytes(b.header.Extra) } + +func (b *Block) BaseFee() *big.Int { + if b.header.BaseFee == nil { + return nil + } + return new(big.Int).Set(b.header.BaseFee) +} + +func (b *Block) Header() *Header { return CopyHeader(b.header) } + +// Body returns the non-header content of the block. +func (b *Block) Body() *Body { return &Body{b.transactions, b.uncles} } + +// Size returns the true RLP encoded storage size of the block, either by encoding +// and returning it, or returning a previsouly cached value. +func (b *Block) Size() common.StorageSize { + if size := b.size.Load(); size != nil { + return size.(common.StorageSize) + } + c := writeCounter(0) + rlp.Encode(&c, b) + b.size.Store(common.StorageSize(c)) + return common.StorageSize(c) +} + +// SanityCheck can be used to prevent that unbounded fields are +// stuffed with junk data to add processing overhead +func (b *Block) SanityCheck() error { + return b.header.SanityCheck() +} + +type writeCounter common.StorageSize + +func (c *writeCounter) Write(b []byte) (int, error) { + *c += writeCounter(len(b)) + return len(b), nil +} + +func CalcUncleHash(uncles []*Header) common.Hash { + if len(uncles) == 0 { + return EmptyUncleHash + } + return rlpHash(uncles) +} + +// WithSeal returns a new block with the data from b but the header replaced with +// the sealed one. +func (b *Block) WithSeal(header *Header) *Block { + cpy := *header + + return &Block{ + header: &cpy, + transactions: b.transactions, + uncles: b.uncles, + } +} + +// WithBody returns a new block with the given transaction and uncle contents. +func (b *Block) WithBody(transactions []*Transaction, uncles []*Header) *Block { + block := &Block{ + header: CopyHeader(b.header), + transactions: make([]*Transaction, len(transactions)), + uncles: make([]*Header, len(uncles)), + } + copy(block.transactions, transactions) + for i := range uncles { + block.uncles[i] = CopyHeader(uncles[i]) + } + return block +} + +// Hash returns the keccak256 hash of b's header. +// The hash is computed on the first call and cached thereafter. +func (b *Block) Hash() common.Hash { + if hash := b.hash.Load(); hash != nil { + return hash.(common.Hash) + } + v := b.header.Hash() + b.hash.Store(v) + return v +} + +type Blocks []*Block diff --git a/mpt-witness-generator/types/bloom9.go b/mpt-witness-generator/types/bloom9.go new file mode 100644 index 0000000000..1793c2adc7 --- /dev/null +++ b/mpt-witness-generator/types/bloom9.go @@ -0,0 +1,160 @@ +// Copyright 2014 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package types + +import ( + "encoding/binary" + "fmt" + "math/big" + + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/crypto" +) + +type bytesBacked interface { + Bytes() []byte +} + +const ( + // BloomByteLength represents the number of bytes used in a header log bloom. + BloomByteLength = 256 + + // BloomBitLength represents the number of bits used in a header log bloom. + BloomBitLength = 8 * BloomByteLength +) + +// Bloom represents a 2048 bit bloom filter. +type Bloom [BloomByteLength]byte + +// BytesToBloom converts a byte slice to a bloom filter. +// It panics if b is not of suitable size. +func BytesToBloom(b []byte) Bloom { + var bloom Bloom + bloom.SetBytes(b) + return bloom +} + +// SetBytes sets the content of b to the given bytes. +// It panics if d is not of suitable size. +func (b *Bloom) SetBytes(d []byte) { + if len(b) < len(d) { + panic(fmt.Sprintf("bloom bytes too big %d %d", len(b), len(d))) + } + copy(b[BloomByteLength-len(d):], d) +} + +// Add adds d to the filter. Future calls of Test(d) will return true. +func (b *Bloom) Add(d []byte) { + b.add(d, make([]byte, 6)) +} + +// add is internal version of Add, which takes a scratch buffer for reuse (needs to be at least 6 bytes) +func (b *Bloom) add(d []byte, buf []byte) { + i1, v1, i2, v2, i3, v3 := bloomValues(d, buf) + b[i1] |= v1 + b[i2] |= v2 + b[i3] |= v3 +} + +// Big converts b to a big integer. +// Note: Converting a bloom filter to a big.Int and then calling GetBytes +// does not return the same bytes, since big.Int will trim leading zeroes +func (b Bloom) Big() *big.Int { + return new(big.Int).SetBytes(b[:]) +} + +// Bytes returns the backing byte slice of the bloom +func (b Bloom) Bytes() []byte { + return b[:] +} + +// Test checks if the given topic is present in the bloom filter +func (b Bloom) Test(topic []byte) bool { + i1, v1, i2, v2, i3, v3 := bloomValues(topic, make([]byte, 6)) + return v1 == v1&b[i1] && + v2 == v2&b[i2] && + v3 == v3&b[i3] +} + +// MarshalText encodes b as a hex string with 0x prefix. +func (b Bloom) MarshalText() ([]byte, error) { + return hexutil.Bytes(b[:]).MarshalText() +} + +// UnmarshalText b as a hex string with 0x prefix. +func (b *Bloom) UnmarshalText(input []byte) error { + return hexutil.UnmarshalFixedText("Bloom", input, b[:]) +} + +// CreateBloom creates a bloom filter out of the give Receipts (+Logs) +func CreateBloom(receipts Receipts) Bloom { + buf := make([]byte, 6) + var bin Bloom + for _, receipt := range receipts { + for _, log := range receipt.Logs { + bin.add(log.Address.Bytes(), buf) + for _, b := range log.Topics { + bin.add(b[:], buf) + } + } + } + return bin +} + +// LogsBloom returns the bloom bytes for the given logs +func LogsBloom(logs []*Log) []byte { + buf := make([]byte, 6) + var bin Bloom + for _, log := range logs { + bin.add(log.Address.Bytes(), buf) + for _, b := range log.Topics { + bin.add(b[:], buf) + } + } + return bin[:] +} + +// Bloom9 returns the bloom filter for the given data +func Bloom9(data []byte) []byte { + var b Bloom + b.SetBytes(data) + return b.Bytes() +} + +// bloomValues returns the bytes (index-value pairs) to set for the given data +func bloomValues(data []byte, hashbuf []byte) (uint, byte, uint, byte, uint, byte) { + sha := hasherPool.Get().(crypto.KeccakState) + sha.Reset() + sha.Write(data) + sha.Read(hashbuf) + hasherPool.Put(sha) + // The actual bits to flip + v1 := byte(1 << (hashbuf[1] & 0x7)) + v2 := byte(1 << (hashbuf[3] & 0x7)) + v3 := byte(1 << (hashbuf[5] & 0x7)) + // The indices for the bytes to OR in + i1 := BloomByteLength - uint((binary.BigEndian.Uint16(hashbuf)&0x7ff)>>3) - 1 + i2 := BloomByteLength - uint((binary.BigEndian.Uint16(hashbuf[2:])&0x7ff)>>3) - 1 + i3 := BloomByteLength - uint((binary.BigEndian.Uint16(hashbuf[4:])&0x7ff)>>3) - 1 + + return i1, v1, i2, v2, i3, v3 +} + +// BloomLookup is a convenience-method to check presence int he bloom filter +func BloomLookup(bin Bloom, topic bytesBacked) bool { + return bin.Test(topic.Bytes()) +} diff --git a/mpt-witness-generator/types/dynamic_fee_tx.go b/mpt-witness-generator/types/dynamic_fee_tx.go new file mode 100644 index 0000000000..c6719a4089 --- /dev/null +++ b/mpt-witness-generator/types/dynamic_fee_tx.go @@ -0,0 +1,104 @@ +// Copyright 2021 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package types + +import ( + "math/big" + + "github.com/ethereum/go-ethereum/common" +) + +type DynamicFeeTx struct { + ChainID *big.Int + Nonce uint64 + GasTipCap *big.Int + GasFeeCap *big.Int + Gas uint64 + To *common.Address `rlp:"nil"` // nil means contract creation + Value *big.Int + Data []byte + AccessList AccessList + + // Signature values + V *big.Int `json:"v" gencodec:"required"` + R *big.Int `json:"r" gencodec:"required"` + S *big.Int `json:"s" gencodec:"required"` +} + +// copy creates a deep copy of the transaction data and initializes all fields. +func (tx *DynamicFeeTx) copy() TxData { + cpy := &DynamicFeeTx{ + Nonce: tx.Nonce, + To: tx.To, // TODO: copy pointed-to address + Data: common.CopyBytes(tx.Data), + Gas: tx.Gas, + // These are copied below. + AccessList: make(AccessList, len(tx.AccessList)), + Value: new(big.Int), + ChainID: new(big.Int), + GasTipCap: new(big.Int), + GasFeeCap: new(big.Int), + V: new(big.Int), + R: new(big.Int), + S: new(big.Int), + } + copy(cpy.AccessList, tx.AccessList) + if tx.Value != nil { + cpy.Value.Set(tx.Value) + } + if tx.ChainID != nil { + cpy.ChainID.Set(tx.ChainID) + } + if tx.GasTipCap != nil { + cpy.GasTipCap.Set(tx.GasTipCap) + } + if tx.GasFeeCap != nil { + cpy.GasFeeCap.Set(tx.GasFeeCap) + } + if tx.V != nil { + cpy.V.Set(tx.V) + } + if tx.R != nil { + cpy.R.Set(tx.R) + } + if tx.S != nil { + cpy.S.Set(tx.S) + } + return cpy +} + +// accessors for innerTx. +func (tx *DynamicFeeTx) txType() byte { return DynamicFeeTxType } +func (tx *DynamicFeeTx) chainID() *big.Int { return tx.ChainID } +func (tx *DynamicFeeTx) protected() bool { return true } +func (tx *DynamicFeeTx) accessList() AccessList { return tx.AccessList } +func (tx *DynamicFeeTx) data() []byte { return tx.Data } +func (tx *DynamicFeeTx) gas() uint64 { return tx.Gas } +func (tx *DynamicFeeTx) gasFeeCap() *big.Int { return tx.GasFeeCap } +func (tx *DynamicFeeTx) gasTipCap() *big.Int { return tx.GasTipCap } +func (tx *DynamicFeeTx) gasPrice() *big.Int { return tx.GasFeeCap } +func (tx *DynamicFeeTx) value() *big.Int { return tx.Value } +func (tx *DynamicFeeTx) nonce() uint64 { return tx.Nonce } +func (tx *DynamicFeeTx) to() *common.Address { return tx.To } + +func (tx *DynamicFeeTx) rawSignatureValues() (v, r, s *big.Int) { + return tx.V, tx.R, tx.S +} + +func (tx *DynamicFeeTx) setSignatureValues(chainID, v, r, s *big.Int) { + tx.ChainID, tx.V, tx.R, tx.S = chainID, v, r, s +} diff --git a/mpt-witness-generator/types/hashing.go b/mpt-witness-generator/types/hashing.go new file mode 100644 index 0000000000..c47c9c90b3 --- /dev/null +++ b/mpt-witness-generator/types/hashing.go @@ -0,0 +1,118 @@ +// Copyright 2014 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package types + +import ( + "bytes" + "sync" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/rlp" + "golang.org/x/crypto/sha3" +) + +// hasherPool holds LegacyKeccak256 hashers for rlpHash. +var hasherPool = sync.Pool{ + New: func() interface{} { return sha3.NewLegacyKeccak256() }, +} + +// deriveBufferPool holds temporary encoder buffers for DeriveSha and TX encoding. +var EncodeBufferPool = sync.Pool{ + New: func() interface{} { return new(bytes.Buffer) }, +} + +// rlpHash encodes x and hashes the encoded bytes. +func rlpHash(x interface{}) (h common.Hash) { + sha := hasherPool.Get().(crypto.KeccakState) + defer hasherPool.Put(sha) + sha.Reset() + rlp.Encode(sha, x) + sha.Read(h[:]) + return h +} + +// prefixedRlpHash writes the prefix into the hasher before rlp-encoding x. +// It's used for typed transactions. +func prefixedRlpHash(prefix byte, x interface{}) (h common.Hash) { + sha := hasherPool.Get().(crypto.KeccakState) + defer hasherPool.Put(sha) + sha.Reset() + sha.Write([]byte{prefix}) + rlp.Encode(sha, x) + sha.Read(h[:]) + return h +} + +// TrieHasher is the tool used to calculate the hash of derivable list. +// This is internal, do not use. +type TrieHasher interface { + Reset() + Update([]byte, []byte) + Hash() common.Hash +} + +// DerivableList is the input to DeriveSha. +// It is implemented by the 'Transactions' and 'Receipts' types. +// This is internal, do not use these methods. +type DerivableList interface { + Len() int + EncodeIndex(int, *bytes.Buffer) +} + +func EncodeForDerive(list DerivableList, i int, buf *bytes.Buffer) []byte { + buf.Reset() + list.EncodeIndex(i, buf) + // It's really unfortunate that we need to do perform this copy. + // StackTrie holds onto the values until Hash is called, so the values + // written to it must not alias. + return common.CopyBytes(buf.Bytes()) +} + +// DeriveSha creates the tree hashes of transactions and receipts in a block header. +func DeriveSha(list DerivableList, hasher TrieHasher) common.Hash { + return UpdateStackTrie(list, hasher).Hash() +} + +func UpdateStackTrie(list DerivableList, hasher TrieHasher) TrieHasher { + hasher.Reset() + + valueBuf := EncodeBufferPool.Get().(*bytes.Buffer) + defer EncodeBufferPool.Put(valueBuf) + + // StackTrie requires values to be inserted in increasing hash order, which is not the + // order that `list` provides hashes in. This insertion sequence ensures that the + // order is correct. + var indexBuf []byte + for i := 1; i < list.Len() && i <= 0x7f; i++ { + indexBuf = rlp.AppendUint64(indexBuf[:0], uint64(i)) + value := EncodeForDerive(list, i, valueBuf) + hasher.Update(indexBuf, value) + } + if list.Len() > 0 { + indexBuf = rlp.AppendUint64(indexBuf[:0], 0) + value := EncodeForDerive(list, 0, valueBuf) + hasher.Update(indexBuf, value) + } + for i := 0x80; i < list.Len(); i++ { + indexBuf = rlp.AppendUint64(indexBuf[:0], uint64(i)) + value := EncodeForDerive(list, i, valueBuf) + hasher.Update(indexBuf, value) + } + + return hasher +} diff --git a/mpt-witness-generator/types/legacy_tx.go b/mpt-witness-generator/types/legacy_tx.go new file mode 100644 index 0000000000..514010ebbd --- /dev/null +++ b/mpt-witness-generator/types/legacy_tx.go @@ -0,0 +1,112 @@ +// Copyright 2020 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package types + +import ( + "math/big" + + "github.com/ethereum/go-ethereum/common" +) + +// LegacyTx is the transaction data of regular Ethereum transactions. +type LegacyTx struct { + Nonce uint64 // nonce of sender account + GasPrice *big.Int // wei per gas + Gas uint64 // gas limit + To *common.Address `rlp:"nil"` // nil means contract creation + Value *big.Int // wei amount + Data []byte // contract invocation input data + V, R, S *big.Int // signature values +} + +// NewTransaction creates an unsigned legacy transaction. +// Deprecated: use NewTx instead. +func NewTransaction(nonce uint64, to common.Address, amount *big.Int, gasLimit uint64, gasPrice *big.Int, data []byte) *Transaction { + return NewTx(&LegacyTx{ + Nonce: nonce, + To: &to, + Value: amount, + Gas: gasLimit, + GasPrice: gasPrice, + Data: data, + }) +} + +// NewContractCreation creates an unsigned legacy transaction. +// Deprecated: use NewTx instead. +func NewContractCreation(nonce uint64, amount *big.Int, gasLimit uint64, gasPrice *big.Int, data []byte) *Transaction { + return NewTx(&LegacyTx{ + Nonce: nonce, + Value: amount, + Gas: gasLimit, + GasPrice: gasPrice, + Data: data, + }) +} + +// copy creates a deep copy of the transaction data and initializes all fields. +func (tx *LegacyTx) copy() TxData { + cpy := &LegacyTx{ + Nonce: tx.Nonce, + To: tx.To, // TODO: copy pointed-to address + Data: common.CopyBytes(tx.Data), + Gas: tx.Gas, + // These are initialized below. + Value: new(big.Int), + GasPrice: new(big.Int), + V: new(big.Int), + R: new(big.Int), + S: new(big.Int), + } + if tx.Value != nil { + cpy.Value.Set(tx.Value) + } + if tx.GasPrice != nil { + cpy.GasPrice.Set(tx.GasPrice) + } + if tx.V != nil { + cpy.V.Set(tx.V) + } + if tx.R != nil { + cpy.R.Set(tx.R) + } + if tx.S != nil { + cpy.S.Set(tx.S) + } + return cpy +} + +// accessors for innerTx. +func (tx *LegacyTx) txType() byte { return LegacyTxType } +func (tx *LegacyTx) chainID() *big.Int { return deriveChainId(tx.V) } +func (tx *LegacyTx) accessList() AccessList { return nil } +func (tx *LegacyTx) data() []byte { return tx.Data } +func (tx *LegacyTx) gas() uint64 { return tx.Gas } +func (tx *LegacyTx) gasPrice() *big.Int { return tx.GasPrice } +func (tx *LegacyTx) gasTipCap() *big.Int { return tx.GasPrice } +func (tx *LegacyTx) gasFeeCap() *big.Int { return tx.GasPrice } +func (tx *LegacyTx) value() *big.Int { return tx.Value } +func (tx *LegacyTx) nonce() uint64 { return tx.Nonce } +func (tx *LegacyTx) to() *common.Address { return tx.To } + +func (tx *LegacyTx) rawSignatureValues() (v, r, s *big.Int) { + return tx.V, tx.R, tx.S +} + +func (tx *LegacyTx) setSignatureValues(chainID, v, r, s *big.Int) { + tx.V, tx.R, tx.S = v, r, s +} diff --git a/mpt-witness-generator/types/log.go b/mpt-witness-generator/types/log.go new file mode 100644 index 0000000000..88274e39da --- /dev/null +++ b/mpt-witness-generator/types/log.go @@ -0,0 +1,143 @@ +// Copyright 2014 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package types + +import ( + "io" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/rlp" +) + +//go:generate gencodec -type Log -field-override logMarshaling -out gen_log_json.go + +// Log represents a contract log event. These events are generated by the LOG opcode and +// stored/indexed by the node. +type Log struct { + // Consensus fields: + // address of the contract that generated the event + Address common.Address `json:"address" gencodec:"required"` + // list of topics provided by the contract. + Topics []common.Hash `json:"topics" gencodec:"required"` + // supplied by the contract, usually ABI-encoded + Data []byte `json:"data" gencodec:"required"` + + // Derived fields. These fields are filled in by the node + // but not secured by consensus. + // block in which the transaction was included + BlockNumber uint64 `json:"blockNumber"` + // hash of the transaction + TxHash common.Hash `json:"transactionHash" gencodec:"required"` + // index of the transaction in the block + TxIndex uint `json:"transactionIndex"` + // hash of the block in which the transaction was included + BlockHash common.Hash `json:"blockHash"` + // index of the log in the block + Index uint `json:"logIndex"` + + // The Removed field is true if this log was reverted due to a chain reorganisation. + // You must pay attention to this field if you receive logs through a filter query. + Removed bool `json:"removed"` +} + +type logMarshaling struct { + Data hexutil.Bytes + BlockNumber hexutil.Uint64 + TxIndex hexutil.Uint + Index hexutil.Uint +} + +type rlpLog struct { + Address common.Address + Topics []common.Hash + Data []byte +} + +// rlpStorageLog is the storage encoding of a log. +type rlpStorageLog rlpLog + +// legacyRlpStorageLog is the previous storage encoding of a log including some redundant fields. +type legacyRlpStorageLog struct { + Address common.Address + Topics []common.Hash + Data []byte + BlockNumber uint64 + TxHash common.Hash + TxIndex uint + BlockHash common.Hash + Index uint +} + +// EncodeRLP implements rlp.Encoder. +func (l *Log) EncodeRLP(w io.Writer) error { + return rlp.Encode(w, rlpLog{Address: l.Address, Topics: l.Topics, Data: l.Data}) +} + +// DecodeRLP implements rlp.Decoder. +func (l *Log) DecodeRLP(s *rlp.Stream) error { + var dec rlpLog + err := s.Decode(&dec) + if err == nil { + l.Address, l.Topics, l.Data = dec.Address, dec.Topics, dec.Data + } + return err +} + +// LogForStorage is a wrapper around a Log that flattens and parses the entire content of +// a log including non-consensus fields. +type LogForStorage Log + +// EncodeRLP implements rlp.Encoder. +func (l *LogForStorage) EncodeRLP(w io.Writer) error { + return rlp.Encode(w, rlpStorageLog{ + Address: l.Address, + Topics: l.Topics, + Data: l.Data, + }) +} + +// DecodeRLP implements rlp.Decoder. +// +// Note some redundant fields(e.g. block number, tx hash etc) will be assembled later. +func (l *LogForStorage) DecodeRLP(s *rlp.Stream) error { + blob, err := s.Raw() + if err != nil { + return err + } + var dec rlpStorageLog + err = rlp.DecodeBytes(blob, &dec) + if err == nil { + *l = LogForStorage{ + Address: dec.Address, + Topics: dec.Topics, + Data: dec.Data, + } + } else { + // Try to decode log with previous definition. + var dec legacyRlpStorageLog + err = rlp.DecodeBytes(blob, &dec) + if err == nil { + *l = LogForStorage{ + Address: dec.Address, + Topics: dec.Topics, + Data: dec.Data, + } + } + } + return err +} diff --git a/mpt-witness-generator/types/receipt.go b/mpt-witness-generator/types/receipt.go new file mode 100644 index 0000000000..aef09597fa --- /dev/null +++ b/mpt-witness-generator/types/receipt.go @@ -0,0 +1,397 @@ +// Copyright 2014 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package types + +import ( + "bytes" + "errors" + "fmt" + "io" + "math/big" + "unsafe" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/rlp" +) + +//go:generate gencodec -type Receipt -field-override receiptMarshaling -out gen_receipt_json.go + +var ( + receiptStatusFailedRLP = []byte{} + receiptStatusSuccessfulRLP = []byte{0x01} +) + +// This error is returned when a typed receipt is decoded, but the string is empty. +var errEmptyTypedReceipt = errors.New("empty typed receipt bytes") + +const ( + // ReceiptStatusFailed is the status code of a transaction if execution failed. + ReceiptStatusFailed = uint64(0) + + // ReceiptStatusSuccessful is the status code of a transaction if execution succeeded. + ReceiptStatusSuccessful = uint64(1) +) + +// Receipt represents the results of a transaction. +type Receipt struct { + // Consensus fields: These fields are defined by the Yellow Paper + Type uint8 `json:"type,omitempty"` + PostState []byte `json:"root"` + Status uint64 `json:"status"` + CumulativeGasUsed uint64 `json:"cumulativeGasUsed" gencodec:"required"` + Bloom Bloom `json:"logsBloom" gencodec:"required"` + Logs []*Log `json:"logs" gencodec:"required"` + + // Implementation fields: These fields are added by geth when processing a transaction. + // They are stored in the chain database. + TxHash common.Hash `json:"transactionHash" gencodec:"required"` + ContractAddress common.Address `json:"contractAddress"` + GasUsed uint64 `json:"gasUsed" gencodec:"required"` + + // Inclusion information: These fields provide information about the inclusion of the + // transaction corresponding to this receipt. + BlockHash common.Hash `json:"blockHash,omitempty"` + BlockNumber *big.Int `json:"blockNumber,omitempty"` + TransactionIndex uint `json:"transactionIndex"` +} + +type receiptMarshaling struct { + Type hexutil.Uint64 + PostState hexutil.Bytes + Status hexutil.Uint64 + CumulativeGasUsed hexutil.Uint64 + GasUsed hexutil.Uint64 + BlockNumber *hexutil.Big + TransactionIndex hexutil.Uint +} + +// receiptRLP is the consensus encoding of a receipt. +type receiptRLP struct { + PostStateOrStatus []byte + CumulativeGasUsed uint64 + Bloom Bloom + Logs []*Log +} + +// storedReceiptRLP is the storage encoding of a receipt. +type storedReceiptRLP struct { + PostStateOrStatus []byte + CumulativeGasUsed uint64 + Logs []*LogForStorage +} + +// v4StoredReceiptRLP is the storage encoding of a receipt used in database version 4. +type v4StoredReceiptRLP struct { + PostStateOrStatus []byte + CumulativeGasUsed uint64 + TxHash common.Hash + ContractAddress common.Address + Logs []*LogForStorage + GasUsed uint64 +} + +// v3StoredReceiptRLP is the original storage encoding of a receipt including some unnecessary fields. +type v3StoredReceiptRLP struct { + PostStateOrStatus []byte + CumulativeGasUsed uint64 + Bloom Bloom + TxHash common.Hash + ContractAddress common.Address + Logs []*LogForStorage + GasUsed uint64 +} + +// NewReceipt creates a barebone transaction receipt, copying the init fields. +// Deprecated: create receipts using a struct literal instead. +func NewReceipt(root []byte, failed bool, cumulativeGasUsed uint64) *Receipt { + r := &Receipt{ + Type: LegacyTxType, + PostState: common.CopyBytes(root), + CumulativeGasUsed: cumulativeGasUsed, + } + if failed { + r.Status = ReceiptStatusFailed + } else { + r.Status = ReceiptStatusSuccessful + } + return r +} + +// EncodeRLP implements rlp.Encoder, and flattens the consensus fields of a receipt +// into an RLP stream. If no post state is present, byzantium fork is assumed. +func (r *Receipt) EncodeRLP(w io.Writer) error { + data := &receiptRLP{r.statusEncoding(), r.CumulativeGasUsed, r.Bloom, r.Logs} + if r.Type == LegacyTxType { + return rlp.Encode(w, data) + } + buf := EncodeBufferPool.Get().(*bytes.Buffer) + defer EncodeBufferPool.Put(buf) + buf.Reset() + buf.WriteByte(r.Type) + if err := rlp.Encode(buf, data); err != nil { + return err + } + return rlp.Encode(w, buf.Bytes()) +} + +// DecodeRLP implements rlp.Decoder, and loads the consensus fields of a receipt +// from an RLP stream. +func (r *Receipt) DecodeRLP(s *rlp.Stream) error { + kind, _, err := s.Kind() + switch { + case err != nil: + return err + case kind == rlp.List: + // It's a legacy receipt. + var dec receiptRLP + if err := s.Decode(&dec); err != nil { + return err + } + r.Type = LegacyTxType + return r.setFromRLP(dec) + case kind == rlp.String: + // It's an EIP-2718 typed tx receipt. + b, err := s.Bytes() + if err != nil { + return err + } + if len(b) == 0 { + return errEmptyTypedReceipt + } + r.Type = b[0] + if r.Type == AccessListTxType || r.Type == DynamicFeeTxType { + var dec receiptRLP + if err := rlp.DecodeBytes(b[1:], &dec); err != nil { + return err + } + return r.setFromRLP(dec) + } + return ErrTxTypeNotSupported + default: + return rlp.ErrExpectedList + } +} + +func (r *Receipt) setFromRLP(data receiptRLP) error { + r.CumulativeGasUsed, r.Bloom, r.Logs = data.CumulativeGasUsed, data.Bloom, data.Logs + return r.setStatus(data.PostStateOrStatus) +} + +func (r *Receipt) setStatus(postStateOrStatus []byte) error { + switch { + case bytes.Equal(postStateOrStatus, receiptStatusSuccessfulRLP): + r.Status = ReceiptStatusSuccessful + case bytes.Equal(postStateOrStatus, receiptStatusFailedRLP): + r.Status = ReceiptStatusFailed + case len(postStateOrStatus) == len(common.Hash{}): + r.PostState = postStateOrStatus + default: + return fmt.Errorf("invalid receipt status %x", postStateOrStatus) + } + return nil +} + +func (r *Receipt) statusEncoding() []byte { + if len(r.PostState) == 0 { + if r.Status == ReceiptStatusFailed { + return receiptStatusFailedRLP + } + return receiptStatusSuccessfulRLP + } + return r.PostState +} + +// Size returns the approximate memory used by all internal contents. It is used +// to approximate and limit the memory consumption of various caches. +func (r *Receipt) Size() common.StorageSize { + size := common.StorageSize(unsafe.Sizeof(*r)) + common.StorageSize(len(r.PostState)) + size += common.StorageSize(len(r.Logs)) * common.StorageSize(unsafe.Sizeof(Log{})) + for _, log := range r.Logs { + size += common.StorageSize(len(log.Topics)*common.HashLength + len(log.Data)) + } + return size +} + +// ReceiptForStorage is a wrapper around a Receipt that flattens and parses the +// entire content of a receipt, as opposed to only the consensus fields originally. +type ReceiptForStorage Receipt + +// EncodeRLP implements rlp.Encoder, and flattens all content fields of a receipt +// into an RLP stream. +func (r *ReceiptForStorage) EncodeRLP(w io.Writer) error { + enc := &storedReceiptRLP{ + PostStateOrStatus: (*Receipt)(r).statusEncoding(), + CumulativeGasUsed: r.CumulativeGasUsed, + Logs: make([]*LogForStorage, len(r.Logs)), + } + for i, log := range r.Logs { + enc.Logs[i] = (*LogForStorage)(log) + } + return rlp.Encode(w, enc) +} + +// DecodeRLP implements rlp.Decoder, and loads both consensus and implementation +// fields of a receipt from an RLP stream. +func (r *ReceiptForStorage) DecodeRLP(s *rlp.Stream) error { + // Retrieve the entire receipt blob as we need to try multiple decoders + blob, err := s.Raw() + if err != nil { + return err + } + // Try decoding from the newest format for future proofness, then the older one + // for old nodes that just upgraded. V4 was an intermediate unreleased format so + // we do need to decode it, but it's not common (try last). + if err := decodeStoredReceiptRLP(r, blob); err == nil { + return nil + } + if err := decodeV3StoredReceiptRLP(r, blob); err == nil { + return nil + } + return decodeV4StoredReceiptRLP(r, blob) +} + +func decodeStoredReceiptRLP(r *ReceiptForStorage, blob []byte) error { + var stored storedReceiptRLP + if err := rlp.DecodeBytes(blob, &stored); err != nil { + return err + } + if err := (*Receipt)(r).setStatus(stored.PostStateOrStatus); err != nil { + return err + } + r.CumulativeGasUsed = stored.CumulativeGasUsed + r.Logs = make([]*Log, len(stored.Logs)) + for i, log := range stored.Logs { + r.Logs[i] = (*Log)(log) + } + r.Bloom = CreateBloom(Receipts{(*Receipt)(r)}) + + return nil +} + +func decodeV4StoredReceiptRLP(r *ReceiptForStorage, blob []byte) error { + var stored v4StoredReceiptRLP + if err := rlp.DecodeBytes(blob, &stored); err != nil { + return err + } + if err := (*Receipt)(r).setStatus(stored.PostStateOrStatus); err != nil { + return err + } + r.CumulativeGasUsed = stored.CumulativeGasUsed + r.TxHash = stored.TxHash + r.ContractAddress = stored.ContractAddress + r.GasUsed = stored.GasUsed + r.Logs = make([]*Log, len(stored.Logs)) + for i, log := range stored.Logs { + r.Logs[i] = (*Log)(log) + } + r.Bloom = CreateBloom(Receipts{(*Receipt)(r)}) + + return nil +} + +func decodeV3StoredReceiptRLP(r *ReceiptForStorage, blob []byte) error { + var stored v3StoredReceiptRLP + if err := rlp.DecodeBytes(blob, &stored); err != nil { + return err + } + if err := (*Receipt)(r).setStatus(stored.PostStateOrStatus); err != nil { + return err + } + r.CumulativeGasUsed = stored.CumulativeGasUsed + r.Bloom = stored.Bloom + r.TxHash = stored.TxHash + r.ContractAddress = stored.ContractAddress + r.GasUsed = stored.GasUsed + r.Logs = make([]*Log, len(stored.Logs)) + for i, log := range stored.Logs { + r.Logs[i] = (*Log)(log) + } + return nil +} + +// Receipts implements DerivableList for receipts. +type Receipts []*Receipt + +// Len returns the number of receipts in this list. +func (rs Receipts) Len() int { return len(rs) } + +// EncodeIndex encodes the i'th receipt to w. +func (rs Receipts) EncodeIndex(i int, w *bytes.Buffer) { + r := rs[i] + data := &receiptRLP{r.statusEncoding(), r.CumulativeGasUsed, r.Bloom, r.Logs} + switch r.Type { + case LegacyTxType: + rlp.Encode(w, data) + case AccessListTxType: + w.WriteByte(AccessListTxType) + rlp.Encode(w, data) + case DynamicFeeTxType: + w.WriteByte(DynamicFeeTxType) + rlp.Encode(w, data) + default: + // For unsupported types, write nothing. Since this is for + // DeriveSha, the error will be caught matching the derived hash + // to the block. + } +} + +// DeriveFields fills the receipts with their computed fields based on consensus +// data and contextual infos like containing block and transactions. +func (r Receipts) DeriveFields(config *params.ChainConfig, hash common.Hash, number uint64, txs Transactions) error { + signer := MakeSigner(config, new(big.Int).SetUint64(number)) + + logIndex := uint(0) + if len(txs) != len(r) { + return errors.New("transaction and receipt count mismatch") + } + for i := 0; i < len(r); i++ { + // The transaction type and hash can be retrieved from the transaction itself + r[i].Type = txs[i].Type() + r[i].TxHash = txs[i].Hash() + + // block location fields + r[i].BlockHash = hash + r[i].BlockNumber = new(big.Int).SetUint64(number) + r[i].TransactionIndex = uint(i) + + // The contract address can be derived from the transaction itself + if txs[i].To() == nil { + // Deriving the signer is expensive, only do if it's actually needed + from, _ := Sender(signer, txs[i]) + r[i].ContractAddress = crypto.CreateAddress(from, txs[i].Nonce()) + } + // The used gas can be calculated based on previous r + if i == 0 { + r[i].GasUsed = r[i].CumulativeGasUsed + } else { + r[i].GasUsed = r[i].CumulativeGasUsed - r[i-1].CumulativeGasUsed + } + // The derived log fields can simply be set from the block and transaction + for j := 0; j < len(r[i].Logs); j++ { + r[i].Logs[j].BlockNumber = number + r[i].Logs[j].BlockHash = hash + r[i].Logs[j].TxHash = r[i].TxHash + r[i].Logs[j].TxIndex = uint(i) + r[i].Logs[j].Index = logIndex + logIndex++ + } + } + return nil +} diff --git a/mpt-witness-generator/types/transaction.go b/mpt-witness-generator/types/transaction.go new file mode 100644 index 0000000000..9214b95ebd --- /dev/null +++ b/mpt-witness-generator/types/transaction.go @@ -0,0 +1,634 @@ +// Copyright 2014 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package types + +import ( + "bytes" + "container/heap" + "errors" + "io" + "math/big" + "sync/atomic" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/math" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/rlp" +) + +var ( + ErrInvalidSig = errors.New("invalid transaction v, r, s values") + ErrUnexpectedProtection = errors.New("transaction type does not supported EIP-155 protected signatures") + ErrInvalidTxType = errors.New("transaction type not valid in this context") + ErrTxTypeNotSupported = errors.New("transaction type not supported") + ErrGasFeeCapTooLow = errors.New("fee cap less than base fee") + errEmptyTypedTx = errors.New("empty typed transaction bytes") +) + +// Transaction types. +const ( + LegacyTxType = iota + AccessListTxType + DynamicFeeTxType +) + +// Transaction is an Ethereum transaction. +type Transaction struct { + inner TxData // Consensus contents of a transaction + time time.Time // Time first seen locally (spam avoidance) + + // caches + hash atomic.Value + size atomic.Value + from atomic.Value +} + +// NewTx creates a new transaction. +func NewTx(inner TxData) *Transaction { + tx := new(Transaction) + tx.setDecoded(inner.copy(), 0) + return tx +} + +// TxData is the underlying data of a transaction. +// +// This is implemented by DynamicFeeTx, LegacyTx and AccessListTx. +type TxData interface { + txType() byte // returns the type ID + copy() TxData // creates a deep copy and initializes all fields + + chainID() *big.Int + accessList() AccessList + data() []byte + gas() uint64 + gasPrice() *big.Int + gasTipCap() *big.Int + gasFeeCap() *big.Int + value() *big.Int + nonce() uint64 + to() *common.Address + + rawSignatureValues() (v, r, s *big.Int) + setSignatureValues(chainID, v, r, s *big.Int) +} + +// EncodeRLP implements rlp.Encoder +func (tx *Transaction) EncodeRLP(w io.Writer) error { + if tx.Type() == LegacyTxType { + return rlp.Encode(w, tx.inner) + } + // It's an EIP-2718 typed TX envelope. + buf := EncodeBufferPool.Get().(*bytes.Buffer) + defer EncodeBufferPool.Put(buf) + buf.Reset() + if err := tx.encodeTyped(buf); err != nil { + return err + } + return rlp.Encode(w, buf.Bytes()) +} + +// encodeTyped writes the canonical encoding of a typed transaction to w. +func (tx *Transaction) encodeTyped(w *bytes.Buffer) error { + w.WriteByte(tx.Type()) + return rlp.Encode(w, tx.inner) +} + +// MarshalBinary returns the canonical encoding of the transaction. +// For legacy transactions, it returns the RLP encoding. For EIP-2718 typed +// transactions, it returns the type and payload. +func (tx *Transaction) MarshalBinary() ([]byte, error) { + if tx.Type() == LegacyTxType { + return rlp.EncodeToBytes(tx.inner) + } + var buf bytes.Buffer + err := tx.encodeTyped(&buf) + return buf.Bytes(), err +} + +// DecodeRLP implements rlp.Decoder +func (tx *Transaction) DecodeRLP(s *rlp.Stream) error { + kind, size, err := s.Kind() + switch { + case err != nil: + return err + case kind == rlp.List: + // It's a legacy transaction. + var inner LegacyTx + err := s.Decode(&inner) + if err == nil { + tx.setDecoded(&inner, int(rlp.ListSize(size))) + } + return err + case kind == rlp.String: + // It's an EIP-2718 typed TX envelope. + var b []byte + if b, err = s.Bytes(); err != nil { + return err + } + inner, err := tx.decodeTyped(b) + if err == nil { + tx.setDecoded(inner, len(b)) + } + return err + default: + return rlp.ErrExpectedList + } +} + +// UnmarshalBinary decodes the canonical encoding of transactions. +// It supports legacy RLP transactions and EIP2718 typed transactions. +func (tx *Transaction) UnmarshalBinary(b []byte) error { + if len(b) > 0 && b[0] > 0x7f { + // It's a legacy transaction. + var data LegacyTx + err := rlp.DecodeBytes(b, &data) + if err != nil { + return err + } + tx.setDecoded(&data, len(b)) + return nil + } + // It's an EIP2718 typed transaction envelope. + inner, err := tx.decodeTyped(b) + if err != nil { + return err + } + tx.setDecoded(inner, len(b)) + return nil +} + +// decodeTyped decodes a typed transaction from the canonical format. +func (tx *Transaction) decodeTyped(b []byte) (TxData, error) { + if len(b) == 0 { + return nil, errEmptyTypedTx + } + switch b[0] { + case AccessListTxType: + var inner AccessListTx + err := rlp.DecodeBytes(b[1:], &inner) + return &inner, err + case DynamicFeeTxType: + var inner DynamicFeeTx + err := rlp.DecodeBytes(b[1:], &inner) + return &inner, err + default: + return nil, ErrTxTypeNotSupported + } +} + +// setDecoded sets the inner transaction and size after decoding. +func (tx *Transaction) setDecoded(inner TxData, size int) { + tx.inner = inner + tx.time = time.Now() + if size > 0 { + tx.size.Store(common.StorageSize(size)) + } +} + +func sanityCheckSignature(v *big.Int, r *big.Int, s *big.Int, maybeProtected bool) error { + if isProtectedV(v) && !maybeProtected { + return ErrUnexpectedProtection + } + + var plainV byte + if isProtectedV(v) { + chainID := deriveChainId(v).Uint64() + plainV = byte(v.Uint64() - 35 - 2*chainID) + } else if maybeProtected { + // Only EIP-155 signatures can be optionally protected. Since + // we determined this v value is not protected, it must be a + // raw 27 or 28. + plainV = byte(v.Uint64() - 27) + } else { + // If the signature is not optionally protected, we assume it + // must already be equal to the recovery id. + plainV = byte(v.Uint64()) + } + if !crypto.ValidateSignatureValues(plainV, r, s, false) { + return ErrInvalidSig + } + + return nil +} + +func isProtectedV(V *big.Int) bool { + if V.BitLen() <= 8 { + v := V.Uint64() + return v != 27 && v != 28 && v != 1 && v != 0 + } + // anything not 27 or 28 is considered protected + return true +} + +// Protected says whether the transaction is replay-protected. +func (tx *Transaction) Protected() bool { + switch tx := tx.inner.(type) { + case *LegacyTx: + return tx.V != nil && isProtectedV(tx.V) + default: + return true + } +} + +// Type returns the transaction type. +func (tx *Transaction) Type() uint8 { + return tx.inner.txType() +} + +// ChainId returns the EIP155 chain ID of the transaction. The return value will always be +// non-nil. For legacy transactions which are not replay-protected, the return value is +// zero. +func (tx *Transaction) ChainId() *big.Int { + return tx.inner.chainID() +} + +// Data returns the input data of the transaction. +func (tx *Transaction) Data() []byte { return tx.inner.data() } + +// AccessList returns the access list of the transaction. +func (tx *Transaction) AccessList() AccessList { return tx.inner.accessList() } + +// Gas returns the gas limit of the transaction. +func (tx *Transaction) Gas() uint64 { return tx.inner.gas() } + +// GasPrice returns the gas price of the transaction. +func (tx *Transaction) GasPrice() *big.Int { return new(big.Int).Set(tx.inner.gasPrice()) } + +// GasTipCap returns the gasTipCap per gas of the transaction. +func (tx *Transaction) GasTipCap() *big.Int { return new(big.Int).Set(tx.inner.gasTipCap()) } + +// GasFeeCap returns the fee cap per gas of the transaction. +func (tx *Transaction) GasFeeCap() *big.Int { return new(big.Int).Set(tx.inner.gasFeeCap()) } + +// Value returns the ether amount of the transaction. +func (tx *Transaction) Value() *big.Int { return new(big.Int).Set(tx.inner.value()) } + +// Nonce returns the sender account nonce of the transaction. +func (tx *Transaction) Nonce() uint64 { return tx.inner.nonce() } + +// To returns the recipient address of the transaction. +// For contract-creation transactions, To returns nil. +func (tx *Transaction) To() *common.Address { + // Copy the pointed-to address. + ito := tx.inner.to() + if ito == nil { + return nil + } + cpy := *ito + return &cpy +} + +// Cost returns gas * gasPrice + value. +func (tx *Transaction) Cost() *big.Int { + total := new(big.Int).Mul(tx.GasPrice(), new(big.Int).SetUint64(tx.Gas())) + total.Add(total, tx.Value()) + return total +} + +// RawSignatureValues returns the V, R, S signature values of the transaction. +// The return values should not be modified by the caller. +func (tx *Transaction) RawSignatureValues() (v, r, s *big.Int) { + return tx.inner.rawSignatureValues() +} + +// GasFeeCapCmp compares the fee cap of two transactions. +func (tx *Transaction) GasFeeCapCmp(other *Transaction) int { + return tx.inner.gasFeeCap().Cmp(other.inner.gasFeeCap()) +} + +// GasFeeCapIntCmp compares the fee cap of the transaction against the given fee cap. +func (tx *Transaction) GasFeeCapIntCmp(other *big.Int) int { + return tx.inner.gasFeeCap().Cmp(other) +} + +// GasTipCapCmp compares the gasTipCap of two transactions. +func (tx *Transaction) GasTipCapCmp(other *Transaction) int { + return tx.inner.gasTipCap().Cmp(other.inner.gasTipCap()) +} + +// GasTipCapIntCmp compares the gasTipCap of the transaction against the given gasTipCap. +func (tx *Transaction) GasTipCapIntCmp(other *big.Int) int { + return tx.inner.gasTipCap().Cmp(other) +} + +// EffectiveGasTip returns the effective miner gasTipCap for the given base fee. +// Note: if the effective gasTipCap is negative, this method returns both error +// the actual negative value, _and_ ErrGasFeeCapTooLow +func (tx *Transaction) EffectiveGasTip(baseFee *big.Int) (*big.Int, error) { + if baseFee == nil { + return tx.GasTipCap(), nil + } + var err error + gasFeeCap := tx.GasFeeCap() + if gasFeeCap.Cmp(baseFee) == -1 { + err = ErrGasFeeCapTooLow + } + return math.BigMin(tx.GasTipCap(), gasFeeCap.Sub(gasFeeCap, baseFee)), err +} + +// EffectiveGasTipValue is identical to EffectiveGasTip, but does not return an +// error in case the effective gasTipCap is negative +func (tx *Transaction) EffectiveGasTipValue(baseFee *big.Int) *big.Int { + effectiveTip, _ := tx.EffectiveGasTip(baseFee) + return effectiveTip +} + +// EffectiveGasTipCmp compares the effective gasTipCap of two transactions assuming the given base fee. +func (tx *Transaction) EffectiveGasTipCmp(other *Transaction, baseFee *big.Int) int { + if baseFee == nil { + return tx.GasTipCapCmp(other) + } + return tx.EffectiveGasTipValue(baseFee).Cmp(other.EffectiveGasTipValue(baseFee)) +} + +// EffectiveGasTipIntCmp compares the effective gasTipCap of a transaction to the given gasTipCap. +func (tx *Transaction) EffectiveGasTipIntCmp(other *big.Int, baseFee *big.Int) int { + if baseFee == nil { + return tx.GasTipCapIntCmp(other) + } + return tx.EffectiveGasTipValue(baseFee).Cmp(other) +} + +// Hash returns the transaction hash. +func (tx *Transaction) Hash() common.Hash { + if hash := tx.hash.Load(); hash != nil { + return hash.(common.Hash) + } + + var h common.Hash + if tx.Type() == LegacyTxType { + h = rlpHash(tx.inner) + } else { + h = prefixedRlpHash(tx.Type(), tx.inner) + } + tx.hash.Store(h) + return h +} + +// Size returns the true RLP encoded storage size of the transaction, either by +// encoding and returning it, or returning a previously cached value. +func (tx *Transaction) Size() common.StorageSize { + if size := tx.size.Load(); size != nil { + return size.(common.StorageSize) + } + c := writeCounter(0) + rlp.Encode(&c, &tx.inner) + tx.size.Store(common.StorageSize(c)) + return common.StorageSize(c) +} + +// WithSignature returns a new transaction with the given signature. +// This signature needs to be in the [R || S || V] format where V is 0 or 1. +func (tx *Transaction) WithSignature(signer Signer, sig []byte) (*Transaction, error) { + r, s, v, err := signer.SignatureValues(tx, sig) + if err != nil { + return nil, err + } + cpy := tx.inner.copy() + cpy.setSignatureValues(signer.ChainID(), v, r, s) + return &Transaction{inner: cpy, time: tx.time}, nil +} + +// Transactions implements DerivableList for transactions. +type Transactions []*Transaction + +// Len returns the length of s. +func (s Transactions) Len() int { return len(s) } + +// EncodeIndex encodes the i'th transaction to w. Note that this does not check for errors +// because we assume that *Transaction will only ever contain valid txs that were either +// constructed by decoding or via public API in this package. +func (s Transactions) EncodeIndex(i int, w *bytes.Buffer) { + tx := s[i] + if tx.Type() == LegacyTxType { + rlp.Encode(w, tx.inner) + } else { + tx.encodeTyped(w) + } +} + +// TxDifference returns a new set which is the difference between a and b. +func TxDifference(a, b Transactions) Transactions { + keep := make(Transactions, 0, len(a)) + + remove := make(map[common.Hash]struct{}) + for _, tx := range b { + remove[tx.Hash()] = struct{}{} + } + + for _, tx := range a { + if _, ok := remove[tx.Hash()]; !ok { + keep = append(keep, tx) + } + } + + return keep +} + +// TxByNonce implements the sort interface to allow sorting a list of transactions +// by their nonces. This is usually only useful for sorting transactions from a +// single account, otherwise a nonce comparison doesn't make much sense. +type TxByNonce Transactions + +func (s TxByNonce) Len() int { return len(s) } +func (s TxByNonce) Less(i, j int) bool { return s[i].Nonce() < s[j].Nonce() } +func (s TxByNonce) Swap(i, j int) { s[i], s[j] = s[j], s[i] } + +// TxWithMinerFee wraps a transaction with its gas price or effective miner gasTipCap +type TxWithMinerFee struct { + tx *Transaction + minerFee *big.Int +} + +// NewTxWithMinerFee creates a wrapped transaction, calculating the effective +// miner gasTipCap if a base fee is provided. +// Returns error in case of a negative effective miner gasTipCap. +func NewTxWithMinerFee(tx *Transaction, baseFee *big.Int) (*TxWithMinerFee, error) { + minerFee, err := tx.EffectiveGasTip(baseFee) + if err != nil { + return nil, err + } + return &TxWithMinerFee{ + tx: tx, + minerFee: minerFee, + }, nil +} + +// TxByPriceAndTime implements both the sort and the heap interface, making it useful +// for all at once sorting as well as individually adding and removing elements. +type TxByPriceAndTime []*TxWithMinerFee + +func (s TxByPriceAndTime) Len() int { return len(s) } +func (s TxByPriceAndTime) Less(i, j int) bool { + // If the prices are equal, use the time the transaction was first seen for + // deterministic sorting + cmp := s[i].minerFee.Cmp(s[j].minerFee) + if cmp == 0 { + return s[i].tx.time.Before(s[j].tx.time) + } + return cmp > 0 +} +func (s TxByPriceAndTime) Swap(i, j int) { s[i], s[j] = s[j], s[i] } + +func (s *TxByPriceAndTime) Push(x interface{}) { + *s = append(*s, x.(*TxWithMinerFee)) +} + +func (s *TxByPriceAndTime) Pop() interface{} { + old := *s + n := len(old) + x := old[n-1] + *s = old[0 : n-1] + return x +} + +// TransactionsByPriceAndNonce represents a set of transactions that can return +// transactions in a profit-maximizing sorted order, while supporting removing +// entire batches of transactions for non-executable accounts. +type TransactionsByPriceAndNonce struct { + txs map[common.Address]Transactions // Per account nonce-sorted list of transactions + heads TxByPriceAndTime // Next transaction for each unique account (price heap) + signer Signer // Signer for the set of transactions + baseFee *big.Int // Current base fee +} + +// NewTransactionsByPriceAndNonce creates a transaction set that can retrieve +// price sorted transactions in a nonce-honouring way. +// +// Note, the input map is reowned so the caller should not interact any more with +// if after providing it to the constructor. +func NewTransactionsByPriceAndNonce(signer Signer, txs map[common.Address]Transactions, baseFee *big.Int) *TransactionsByPriceAndNonce { + // Initialize a price and received time based heap with the head transactions + heads := make(TxByPriceAndTime, 0, len(txs)) + for from, accTxs := range txs { + acc, _ := Sender(signer, accTxs[0]) + wrapped, err := NewTxWithMinerFee(accTxs[0], baseFee) + // Remove transaction if sender doesn't match from, or if wrapping fails. + if acc != from || err != nil { + delete(txs, from) + continue + } + heads = append(heads, wrapped) + txs[from] = accTxs[1:] + } + heap.Init(&heads) + + // Assemble and return the transaction set + return &TransactionsByPriceAndNonce{ + txs: txs, + heads: heads, + signer: signer, + baseFee: baseFee, + } +} + +// Peek returns the next transaction by price. +func (t *TransactionsByPriceAndNonce) Peek() *Transaction { + if len(t.heads) == 0 { + return nil + } + return t.heads[0].tx +} + +// Shift replaces the current best head with the next one from the same account. +func (t *TransactionsByPriceAndNonce) Shift() { + acc, _ := Sender(t.signer, t.heads[0].tx) + if txs, ok := t.txs[acc]; ok && len(txs) > 0 { + if wrapped, err := NewTxWithMinerFee(txs[0], t.baseFee); err == nil { + t.heads[0], t.txs[acc] = wrapped, txs[1:] + heap.Fix(&t.heads, 0) + return + } + } + heap.Pop(&t.heads) +} + +// Pop removes the best transaction, *not* replacing it with the next one from +// the same account. This should be used when a transaction cannot be executed +// and hence all subsequent ones should be discarded from the same account. +func (t *TransactionsByPriceAndNonce) Pop() { + heap.Pop(&t.heads) +} + +// Message is a fully derived transaction and implements core.Message +// +// NOTE: In a future PR this will be removed. +type Message struct { + to *common.Address + from common.Address + nonce uint64 + amount *big.Int + gasLimit uint64 + gasPrice *big.Int + gasFeeCap *big.Int + gasTipCap *big.Int + data []byte + accessList AccessList + isFake bool +} + +func NewMessage(from common.Address, to *common.Address, nonce uint64, amount *big.Int, gasLimit uint64, gasPrice, gasFeeCap, gasTipCap *big.Int, data []byte, accessList AccessList, isFake bool) Message { + return Message{ + from: from, + to: to, + nonce: nonce, + amount: amount, + gasLimit: gasLimit, + gasPrice: gasPrice, + gasFeeCap: gasFeeCap, + gasTipCap: gasTipCap, + data: data, + accessList: accessList, + isFake: isFake, + } +} + +// AsMessage returns the transaction as a core.Message. +func (tx *Transaction) AsMessage(s Signer, baseFee *big.Int) (Message, error) { + msg := Message{ + nonce: tx.Nonce(), + gasLimit: tx.Gas(), + gasPrice: new(big.Int).Set(tx.GasPrice()), + gasFeeCap: new(big.Int).Set(tx.GasFeeCap()), + gasTipCap: new(big.Int).Set(tx.GasTipCap()), + to: tx.To(), + amount: tx.Value(), + data: tx.Data(), + accessList: tx.AccessList(), + isFake: false, + } + // If baseFee provided, set gasPrice to effectiveGasPrice. + if baseFee != nil { + msg.gasPrice = math.BigMin(msg.gasPrice.Add(msg.gasTipCap, baseFee), msg.gasFeeCap) + } + var err error + msg.from, err = Sender(s, tx) + return msg, err +} + +func (m Message) From() common.Address { return m.from } +func (m Message) To() *common.Address { return m.to } +func (m Message) GasPrice() *big.Int { return m.gasPrice } +func (m Message) GasFeeCap() *big.Int { return m.gasFeeCap } +func (m Message) GasTipCap() *big.Int { return m.gasTipCap } +func (m Message) Value() *big.Int { return m.amount } +func (m Message) Gas() uint64 { return m.gasLimit } +func (m Message) Nonce() uint64 { return m.nonce } +func (m Message) Data() []byte { return m.data } +func (m Message) AccessList() AccessList { return m.accessList } +func (m Message) IsFake() bool { return m.isFake } diff --git a/mpt-witness-generator/types/transaction_signing.go b/mpt-witness-generator/types/transaction_signing.go new file mode 100644 index 0000000000..1d0d2a4c75 --- /dev/null +++ b/mpt-witness-generator/types/transaction_signing.go @@ -0,0 +1,520 @@ +// Copyright 2016 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package types + +import ( + "crypto/ecdsa" + "errors" + "fmt" + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/params" +) + +var ErrInvalidChainId = errors.New("invalid chain id for signer") + +// sigCache is used to cache the derived sender and contains +// the signer used to derive it. +type sigCache struct { + signer Signer + from common.Address +} + +// MakeSigner returns a Signer based on the given chain config and block number. +func MakeSigner(config *params.ChainConfig, blockNumber *big.Int) Signer { + var signer Signer + switch { + case config.IsLondon(blockNumber): + signer = NewLondonSigner(config.ChainID) + case config.IsBerlin(blockNumber): + signer = NewEIP2930Signer(config.ChainID) + case config.IsEIP155(blockNumber): + signer = NewEIP155Signer(config.ChainID) + case config.IsHomestead(blockNumber): + signer = HomesteadSigner{} + default: + signer = FrontierSigner{} + } + return signer +} + +// LatestSigner returns the 'most permissive' Signer available for the given chain +// configuration. Specifically, this enables support of EIP-155 replay protection and +// EIP-2930 access list transactions when their respective forks are scheduled to occur at +// any block number in the chain config. +// +// Use this in transaction-handling code where the current block number is unknown. If you +// have the current block number available, use MakeSigner instead. +func LatestSigner(config *params.ChainConfig) Signer { + if config.ChainID != nil { + if config.LondonBlock != nil { + return NewLondonSigner(config.ChainID) + } + if config.BerlinBlock != nil { + return NewEIP2930Signer(config.ChainID) + } + if config.EIP155Block != nil { + return NewEIP155Signer(config.ChainID) + } + } + return HomesteadSigner{} +} + +// LatestSignerForChainID returns the 'most permissive' Signer available. Specifically, +// this enables support for EIP-155 replay protection and all implemented EIP-2718 +// transaction types if chainID is non-nil. +// +// Use this in transaction-handling code where the current block number and fork +// configuration are unknown. If you have a ChainConfig, use LatestSigner instead. +// If you have a ChainConfig and know the current block number, use MakeSigner instead. +func LatestSignerForChainID(chainID *big.Int) Signer { + if chainID == nil { + return HomesteadSigner{} + } + return NewLondonSigner(chainID) +} + +// SignTx signs the transaction using the given signer and private key. +func SignTx(tx *Transaction, s Signer, prv *ecdsa.PrivateKey) (*Transaction, error) { + h := s.Hash(tx) + sig, err := crypto.Sign(h[:], prv) + if err != nil { + return nil, err + } + return tx.WithSignature(s, sig) +} + +// SignNewTx creates a transaction and signs it. +func SignNewTx(prv *ecdsa.PrivateKey, s Signer, txdata TxData) (*Transaction, error) { + tx := NewTx(txdata) + h := s.Hash(tx) + sig, err := crypto.Sign(h[:], prv) + if err != nil { + return nil, err + } + return tx.WithSignature(s, sig) +} + +// MustSignNewTx creates a transaction and signs it. +// This panics if the transaction cannot be signed. +func MustSignNewTx(prv *ecdsa.PrivateKey, s Signer, txdata TxData) *Transaction { + tx, err := SignNewTx(prv, s, txdata) + if err != nil { + panic(err) + } + return tx +} + +// Sender returns the address derived from the signature (V, R, S) using secp256k1 +// elliptic curve and an error if it failed deriving or upon an incorrect +// signature. +// +// Sender may cache the address, allowing it to be used regardless of +// signing method. The cache is invalidated if the cached signer does +// not match the signer used in the current call. +func Sender(signer Signer, tx *Transaction) (common.Address, error) { + if sc := tx.from.Load(); sc != nil { + sigCache := sc.(sigCache) + // If the signer used to derive from in a previous + // call is not the same as used current, invalidate + // the cache. + if sigCache.signer.Equal(signer) { + return sigCache.from, nil + } + } + + addr, err := signer.Sender(tx) + if err != nil { + return common.Address{}, err + } + tx.from.Store(sigCache{signer: signer, from: addr}) + return addr, nil +} + +// Signer encapsulates transaction signature handling. The name of this type is slightly +// misleading because Signers don't actually sign, they're just for validating and +// processing of signatures. +// +// Note that this interface is not a stable API and may change at any time to accommodate +// new protocol rules. +type Signer interface { + // Sender returns the sender address of the transaction. + Sender(tx *Transaction) (common.Address, error) + + // SignatureValues returns the raw R, S, V values corresponding to the + // given signature. + SignatureValues(tx *Transaction, sig []byte) (r, s, v *big.Int, err error) + ChainID() *big.Int + + // Hash returns 'signature hash', i.e. the transaction hash that is signed by the + // private key. This hash does not uniquely identify the transaction. + Hash(tx *Transaction) common.Hash + + // Equal returns true if the given signer is the same as the receiver. + Equal(Signer) bool +} + +type londonSigner struct{ eip2930Signer } + +// NewLondonSigner returns a signer that accepts +// - EIP-1559 dynamic fee transactions +// - EIP-2930 access list transactions, +// - EIP-155 replay protected transactions, and +// - legacy Homestead transactions. +func NewLondonSigner(chainId *big.Int) Signer { + return londonSigner{eip2930Signer{NewEIP155Signer(chainId)}} +} + +func (s londonSigner) Sender(tx *Transaction) (common.Address, error) { + if tx.Type() != DynamicFeeTxType { + return s.eip2930Signer.Sender(tx) + } + V, R, S := tx.RawSignatureValues() + // DynamicFee txs are defined to use 0 and 1 as their recovery + // id, add 27 to become equivalent to unprotected Homestead signatures. + V = new(big.Int).Add(V, big.NewInt(27)) + if tx.ChainId().Cmp(s.chainId) != 0 { + return common.Address{}, ErrInvalidChainId + } + return recoverPlain(s.Hash(tx), R, S, V, true) +} + +func (s londonSigner) Equal(s2 Signer) bool { + x, ok := s2.(londonSigner) + return ok && x.chainId.Cmp(s.chainId) == 0 +} + +func (s londonSigner) SignatureValues(tx *Transaction, sig []byte) (R, S, V *big.Int, err error) { + txdata, ok := tx.inner.(*DynamicFeeTx) + if !ok { + return s.eip2930Signer.SignatureValues(tx, sig) + } + // Check that chain ID of tx matches the signer. We also accept ID zero here, + // because it indicates that the chain ID was not specified in the tx. + if txdata.ChainID.Sign() != 0 && txdata.ChainID.Cmp(s.chainId) != 0 { + return nil, nil, nil, ErrInvalidChainId + } + R, S, _ = decodeSignature(sig) + V = big.NewInt(int64(sig[64])) + return R, S, V, nil +} + +// Hash returns the hash to be signed by the sender. +// It does not uniquely identify the transaction. +func (s londonSigner) Hash(tx *Transaction) common.Hash { + if tx.Type() != DynamicFeeTxType { + return s.eip2930Signer.Hash(tx) + } + return prefixedRlpHash( + tx.Type(), + []interface{}{ + s.chainId, + tx.Nonce(), + tx.GasTipCap(), + tx.GasFeeCap(), + tx.Gas(), + tx.To(), + tx.Value(), + tx.Data(), + tx.AccessList(), + }) +} + +type eip2930Signer struct{ EIP155Signer } + +// NewEIP2930Signer returns a signer that accepts EIP-2930 access list transactions, +// EIP-155 replay protected transactions, and legacy Homestead transactions. +func NewEIP2930Signer(chainId *big.Int) Signer { + return eip2930Signer{NewEIP155Signer(chainId)} +} + +func (s eip2930Signer) ChainID() *big.Int { + return s.chainId +} + +func (s eip2930Signer) Equal(s2 Signer) bool { + x, ok := s2.(eip2930Signer) + return ok && x.chainId.Cmp(s.chainId) == 0 +} + +func (s eip2930Signer) Sender(tx *Transaction) (common.Address, error) { + V, R, S := tx.RawSignatureValues() + switch tx.Type() { + case LegacyTxType: + if !tx.Protected() { + return HomesteadSigner{}.Sender(tx) + } + V = new(big.Int).Sub(V, s.chainIdMul) + V.Sub(V, big8) + case AccessListTxType: + // AL txs are defined to use 0 and 1 as their recovery + // id, add 27 to become equivalent to unprotected Homestead signatures. + V = new(big.Int).Add(V, big.NewInt(27)) + default: + return common.Address{}, ErrTxTypeNotSupported + } + if tx.ChainId().Cmp(s.chainId) != 0 { + return common.Address{}, ErrInvalidChainId + } + return recoverPlain(s.Hash(tx), R, S, V, true) +} + +func (s eip2930Signer) SignatureValues(tx *Transaction, sig []byte) (R, S, V *big.Int, err error) { + switch txdata := tx.inner.(type) { + case *LegacyTx: + return s.EIP155Signer.SignatureValues(tx, sig) + case *AccessListTx: + // Check that chain ID of tx matches the signer. We also accept ID zero here, + // because it indicates that the chain ID was not specified in the tx. + if txdata.ChainID.Sign() != 0 && txdata.ChainID.Cmp(s.chainId) != 0 { + return nil, nil, nil, ErrInvalidChainId + } + R, S, _ = decodeSignature(sig) + V = big.NewInt(int64(sig[64])) + default: + return nil, nil, nil, ErrTxTypeNotSupported + } + return R, S, V, nil +} + +// Hash returns the hash to be signed by the sender. +// It does not uniquely identify the transaction. +func (s eip2930Signer) Hash(tx *Transaction) common.Hash { + switch tx.Type() { + case LegacyTxType: + return rlpHash([]interface{}{ + tx.Nonce(), + tx.GasPrice(), + tx.Gas(), + tx.To(), + tx.Value(), + tx.Data(), + s.chainId, uint(0), uint(0), + }) + case AccessListTxType: + return prefixedRlpHash( + tx.Type(), + []interface{}{ + s.chainId, + tx.Nonce(), + tx.GasPrice(), + tx.Gas(), + tx.To(), + tx.Value(), + tx.Data(), + tx.AccessList(), + }) + default: + // This _should_ not happen, but in case someone sends in a bad + // json struct via RPC, it's probably more prudent to return an + // empty hash instead of killing the node with a panic + //panic("Unsupported transaction type: %d", tx.typ) + return common.Hash{} + } +} + +// EIP155Signer implements Signer using the EIP-155 rules. This accepts transactions which +// are replay-protected as well as unprotected homestead transactions. +type EIP155Signer struct { + chainId, chainIdMul *big.Int +} + +func NewEIP155Signer(chainId *big.Int) EIP155Signer { + if chainId == nil { + chainId = new(big.Int) + } + return EIP155Signer{ + chainId: chainId, + chainIdMul: new(big.Int).Mul(chainId, big.NewInt(2)), + } +} + +func (s EIP155Signer) ChainID() *big.Int { + return s.chainId +} + +func (s EIP155Signer) Equal(s2 Signer) bool { + eip155, ok := s2.(EIP155Signer) + return ok && eip155.chainId.Cmp(s.chainId) == 0 +} + +var big8 = big.NewInt(8) + +func (s EIP155Signer) Sender(tx *Transaction) (common.Address, error) { + if tx.Type() != LegacyTxType { + return common.Address{}, ErrTxTypeNotSupported + } + if !tx.Protected() { + return HomesteadSigner{}.Sender(tx) + } + if tx.ChainId().Cmp(s.chainId) != 0 { + return common.Address{}, ErrInvalidChainId + } + V, R, S := tx.RawSignatureValues() + V = new(big.Int).Sub(V, s.chainIdMul) + V.Sub(V, big8) + return recoverPlain(s.Hash(tx), R, S, V, true) +} + +// SignatureValues returns signature values. This signature +// needs to be in the [R || S || V] format where V is 0 or 1. +func (s EIP155Signer) SignatureValues(tx *Transaction, sig []byte) (R, S, V *big.Int, err error) { + if tx.Type() != LegacyTxType { + return nil, nil, nil, ErrTxTypeNotSupported + } + R, S, V = decodeSignature(sig) + if s.chainId.Sign() != 0 { + V = big.NewInt(int64(sig[64] + 35)) + V.Add(V, s.chainIdMul) + } + return R, S, V, nil +} + +// Hash returns the hash to be signed by the sender. +// It does not uniquely identify the transaction. +func (s EIP155Signer) Hash(tx *Transaction) common.Hash { + return rlpHash([]interface{}{ + tx.Nonce(), + tx.GasPrice(), + tx.Gas(), + tx.To(), + tx.Value(), + tx.Data(), + s.chainId, uint(0), uint(0), + }) +} + +// HomesteadTransaction implements TransactionInterface using the +// homestead rules. +type HomesteadSigner struct{ FrontierSigner } + +func (s HomesteadSigner) ChainID() *big.Int { + return nil +} + +func (s HomesteadSigner) Equal(s2 Signer) bool { + _, ok := s2.(HomesteadSigner) + return ok +} + +// SignatureValues returns signature values. This signature +// needs to be in the [R || S || V] format where V is 0 or 1. +func (hs HomesteadSigner) SignatureValues(tx *Transaction, sig []byte) (r, s, v *big.Int, err error) { + return hs.FrontierSigner.SignatureValues(tx, sig) +} + +func (hs HomesteadSigner) Sender(tx *Transaction) (common.Address, error) { + if tx.Type() != LegacyTxType { + return common.Address{}, ErrTxTypeNotSupported + } + v, r, s := tx.RawSignatureValues() + return recoverPlain(hs.Hash(tx), r, s, v, true) +} + +type FrontierSigner struct{} + +func (s FrontierSigner) ChainID() *big.Int { + return nil +} + +func (s FrontierSigner) Equal(s2 Signer) bool { + _, ok := s2.(FrontierSigner) + return ok +} + +func (fs FrontierSigner) Sender(tx *Transaction) (common.Address, error) { + if tx.Type() != LegacyTxType { + return common.Address{}, ErrTxTypeNotSupported + } + v, r, s := tx.RawSignatureValues() + return recoverPlain(fs.Hash(tx), r, s, v, false) +} + +// SignatureValues returns signature values. This signature +// needs to be in the [R || S || V] format where V is 0 or 1. +func (fs FrontierSigner) SignatureValues(tx *Transaction, sig []byte) (r, s, v *big.Int, err error) { + if tx.Type() != LegacyTxType { + return nil, nil, nil, ErrTxTypeNotSupported + } + r, s, v = decodeSignature(sig) + return r, s, v, nil +} + +// Hash returns the hash to be signed by the sender. +// It does not uniquely identify the transaction. +func (fs FrontierSigner) Hash(tx *Transaction) common.Hash { + return rlpHash([]interface{}{ + tx.Nonce(), + tx.GasPrice(), + tx.Gas(), + tx.To(), + tx.Value(), + tx.Data(), + }) +} + +func decodeSignature(sig []byte) (r, s, v *big.Int) { + if len(sig) != crypto.SignatureLength { + panic(fmt.Sprintf("wrong size for signature: got %d, want %d", len(sig), crypto.SignatureLength)) + } + r = new(big.Int).SetBytes(sig[:32]) + s = new(big.Int).SetBytes(sig[32:64]) + v = new(big.Int).SetBytes([]byte{sig[64] + 27}) + return r, s, v +} + +func recoverPlain(sighash common.Hash, R, S, Vb *big.Int, homestead bool) (common.Address, error) { + if Vb.BitLen() > 8 { + return common.Address{}, ErrInvalidSig + } + V := byte(Vb.Uint64() - 27) + if !crypto.ValidateSignatureValues(V, R, S, homestead) { + return common.Address{}, ErrInvalidSig + } + // encode the signature in uncompressed format + r, s := R.Bytes(), S.Bytes() + sig := make([]byte, crypto.SignatureLength) + copy(sig[32-len(r):32], r) + copy(sig[64-len(s):64], s) + sig[64] = V + // recover the public key from the signature + pub, err := crypto.Ecrecover(sighash[:], sig) + if err != nil { + return common.Address{}, err + } + if len(pub) == 0 || pub[0] != 4 { + return common.Address{}, errors.New("invalid public key") + } + var addr common.Address + copy(addr[:], crypto.Keccak256(pub[1:])[12:]) + return addr, nil +} + +// deriveChainId derives the chain id from the given v parameter +func deriveChainId(v *big.Int) *big.Int { + if v.BitLen() <= 64 { + v := v.Uint64() + if v == 27 || v == 28 { + return new(big.Int) + } + return new(big.Int).SetUint64((v - 35) / 2) + } + v = new(big.Int).Sub(v, big.NewInt(35)) + return v.Div(v, big.NewInt(2)) +} diff --git a/mpt-witness-generator/witness/branch.go b/mpt-witness-generator/witness/branch.go new file mode 100644 index 0000000000..465cf257f5 --- /dev/null +++ b/mpt-witness-generator/witness/branch.go @@ -0,0 +1,320 @@ +package witness + +import ( + "log" + + "github.com/ethereum/go-ethereum/rlp" +) + +// isBranch takes GetProof element and returns whether the element is a branch. +func isBranch(proofEl []byte) bool { + elems, _, err := rlp.SplitList(proofEl) + check(err) + c, err1 := rlp.CountValues(elems) + check(err1) + if c != 2 && c != 17 { + log.Fatal("Proof element is neither leaf or branch") + } + return c == 17 +} + +// prepareBranchWitness takes the rows that are to be filled with branch data and it takes +// a branch as returned by GetProof. There are 19 rows for a branch and prepareBranchWitness +// fills the rows from index 1 to index 16 (index 0 is init, index 17 and 18 are for extension +// node when it applies). The parameter branchStart depends on whether it is S or C branch - +// S occupies the first 34 columns, C occupies the next 34 columns. +// The branch children are positioned each in its own row. +func prepareBranchWitness(rows [][]byte, branch []byte, branchStart int, branchRLPOffset int) { + rowInd := 1 + colInd := branchNodeRLPLen - 1 + + i := 0 + insideInd := -1 + for { + if branchRLPOffset+i == len(branch)-1 { // -1 because of the last 128 (branch value) + break + } + b := branch[branchRLPOffset+i] + if insideInd == -1 && b == 128 { + rows[rowInd][branchStart] = b + rowInd++ + } else if insideInd == -1 && b != 128 { + if b == 160 { + insideInd = 32 + colInd = branchNodeRLPLen - 2 + } else { + // non-hashed node + insideInd = int(b) - 192 + colInd = branchNodeRLPLen - 2 + } + rows[rowInd][branchStart+colInd] = b + } else { + colInd++ + rows[rowInd][branchStart+colInd] = b + if insideInd == 1 { + insideInd = -1 + rowInd++ + colInd = 0 + } else { + insideInd-- + } + } + + i++ + } +} + +func prepareBranchNode(branch1, branch2, extNode1, extNode2, extListRlpBytes []byte, extValues [][]byte, key, driftedInd, + branchC16, branchC1 byte, isBranchSPlaceholder, isBranchCPlaceholder, isExtension, isSModExtension, isCModExtension bool) Node { + extensionNode := ExtensionNode{ + ListRlpBytes: extListRlpBytes, + } + + var listRlpBytes [2][]byte + branch1RLPOffset := 1 + branch2RLPOffset := 1 + listRlpBytes1 := []byte{branch1[0]} + listRlpBytes2 := []byte{branch2[0]} + + if branch1[0] == 248 { // two RLP bytes + branch1RLPOffset = 2 + } else if branch1[0] == 249 { // three RLP bytes + branch1RLPOffset = 3 + } + + if branch2[0] == 248 { // two RLP bytes + branch2RLPOffset = 2 + } else if branch2[0] == 249 { // three RLP bytes + branch2RLPOffset = 3 + } + + if branch1[0] == 248 || branch1[0] == 249 { + listRlpBytes1 = append(listRlpBytes1, branch1[1]) + } + if branch2[0] == 248 || branch2[0] == 249 { + listRlpBytes2 = append(listRlpBytes2, branch2[1]) + } + + if branch1[0] == 249 { + listRlpBytes1 = append(listRlpBytes1, branch1[2]) + } + if branch2[0] == 249 { + listRlpBytes2 = append(listRlpBytes2, branch2[2]) + } + + listRlpBytes[0] = listRlpBytes1 + listRlpBytes[1] = listRlpBytes2 + + branchNode := BranchNode{ + ModifiedIndex: int(key), + DriftedIndex: int(driftedInd), + ListRlpBytes: listRlpBytes, + } + + extensionBranch := ExtensionBranchNode{ + IsExtension: isExtension, + IsModExtension: [2]bool{isSModExtension, isCModExtension}, + IsPlaceholder: [2]bool{isBranchSPlaceholder, isBranchCPlaceholder}, + Extension: extensionNode, + Branch: branchNode, + } + + values := make([][]byte, 17) + for i := 0; i < len(values); i++ { + values[i] = make([]byte, valueLen) + } + prepareBranchWitness(values, branch1, 0, branch1RLPOffset) + + // Just to get the modified child: + rows := make([][]byte, 17) + for i := 0; i < len(rows); i++ { + rows[i] = make([]byte, valueLen) + } + prepareBranchWitness(rows, branch2, 0, branch2RLPOffset) + values[0] = rows[1+key] + + values = append(values, extValues...) + + keccakData := [][]byte{branch1, branch2} + if isExtension { + keccakData = append(keccakData, extNode1) + keccakData = append(keccakData, extNode2) + } + node := Node{ + ExtensionBranch: &extensionBranch, + Values: values, + KeccakData: keccakData, + } + + return node +} + +// getDriftedPosition returns the position in branch to which the leaf drifted because another +// leaf has been added to the same slot. This information is stored into a branch init row. +func getDriftedPosition(leafKeyRow []byte, numberOfNibbles int) byte { + var nibbles []byte + if leafKeyRow[0] != 248 { + keyLen := int(leafKeyRow[1] - 128) + if (leafKeyRow[2] != 32) && (leafKeyRow[2] != 0) { // second term is for extension node + if leafKeyRow[2] < 32 { // extension node + nibbles = append(nibbles, leafKeyRow[2]-16) + } else { // leaf + nibbles = append(nibbles, leafKeyRow[2]-48) + } + } + for i := 0; i < keyLen-1; i++ { // -1 because the first byte doesn't have any nibbles + b := leafKeyRow[3+i] + n1 := b / 16 + n2 := b - n1*16 + nibbles = append(nibbles, n1) + nibbles = append(nibbles, n2) + } + } else { + keyLen := int(leafKeyRow[2] - 128) + if (leafKeyRow[3] != 32) && (leafKeyRow[3] != 0) { // second term is for extension node + if leafKeyRow[3] < 32 { // extension node + nibbles = append(nibbles, leafKeyRow[3]-16) + } else { // leaf + nibbles = append(nibbles, leafKeyRow[3]-48) + } + } + for i := 0; i < keyLen-1; i++ { // -1 because the first byte doesn't have any nibbles + b := leafKeyRow[4+i] + n1 := b / 16 + n2 := b - n1*16 + nibbles = append(nibbles, n1) + nibbles = append(nibbles, n2) + } + } + + return nibbles[numberOfNibbles] +} + +// addBranchAndPlaceholder adds to the rows a branch and its placeholder counterpart +// (used when one of the proofs have one branch more than the other). +func addBranchAndPlaceholder(proof1, proof2, + extNibblesS, extNibblesC [][]byte, + leafRow0, key, neighbourNode []byte, + keyIndex, extensionNodeInd int, + additionalBranch, isAccountProof, nonExistingAccountProof, + isShorterProofLastLeaf bool, branchC16, branchC1 byte, toBeHashed *[][]byte) (bool, bool, int, byte, Node) { + len1 := len(proof1) + len2 := len(proof2) + + var node Node + + numberOfNibbles := 0 + var extListRlpBytes []byte + var extValues [][]byte + for i := 0; i < 4; i++ { + extValues = append(extValues, make([]byte, valueLen)) + } + + isExtension := (len1 == len2+2) || (len2 == len1+2) + if !isExtension { + if branchC16 == 1 { + branchC16 = 0 + branchC1 = 1 + } else { + branchC16 = 1 + branchC1 = 0 + } + } else { + var numNibbles byte + if len1 > len2 { + numNibbles, extListRlpBytes, extValues = prepareExtensions(extNibblesS, extensionNodeInd, proof1[len1-3], proof1[len1-3]) + } else { + numNibbles, extListRlpBytes, extValues = prepareExtensions(extNibblesC, extensionNodeInd, proof2[len2-3], proof2[len2-3]) + } + numberOfNibbles = int(numNibbles) + + if numberOfNibbles%2 == 0 { + if branchC16 == 1 { + branchC16 = 0 + branchC1 = 1 + } else { + branchC16 = 1 + branchC1 = 0 + } + } + } + + /* + For special cases when a new extension node is inserted. + + Imagine you have an extension node at n1 n2 n3 n4 (where each of these is a nibble). + Let's say this extension node has the following nibbles as the extension: n5 n6 n7. + So at position n1 n2 n3 n4 n5 n6 n7 there is some branch. + Now we want to add a leaf at position n1 n2 n3 n4 n5 m1 where m1 != n6. + The adding algorithm walks through the trie, but it bumps into an extension node where + it should put this leaf. So a new extension node is added at position n1 n2 n3 n4 which only + has one nibble: n5. So at n1 n2 n3 n4 n5 we have a branch now. In this brach, at position m we + have a leaf, while at position n6 we have another extension node with one extension nibble: n7. + At this position (n7) we have the branch from the original extension node. + + When an extension node is inserted because of the added key, C proof will contain this new + extension node and the underlying branch. However, S proof will stop at the old extension node. + This old extension node is not part of the C proof, but we need to ensure that it is in the C trie. + We need to take into accout that in the C trie the old extension node has a shortened extension. + + The problem is where to store the old extension node. Note that in the above code the new + extension node and the underlying branch rows are prepared. For example, when len2 > len1 we + take extension node from proof2[len2 - 3] and branch from proof2[len2 - 2]. In this case, + the old extension node in proof1[len1 - 1] has been ignored. For this reason we store it + in the rows before we add a leaf. + */ + var longExtNode []byte + if len1 > len2 { + longExtNode = proof2[len2-1] + } else { + longExtNode = proof1[len1-1] + } + + // TODO: fix + var extNode []byte + if isExtension { + if len1 > len2 { + extNode = proof1[len1-3] + } else { + extNode = proof2[len2-3] + } + } + + // Note that isModifiedExtNode happens also when we have a branch instead of shortExtNode + isModifiedExtNode := !isBranch(longExtNode) && !isShorterProofLastLeaf + isSModifiedExtNode := false + isCModifiedExtNode := false + if isModifiedExtNode { + if len1 < len2 { + isSModifiedExtNode = true + } else { + isCModifiedExtNode = true + } + } + + if len1 > len2 { + // We now get the first nibble of the leaf that was turned into branch. + // This first nibble presents the position of the leaf once it moved + // into the new branch. + driftedInd := getDriftedPosition(leafRow0, numberOfNibbles) + + node = prepareBranchNode(proof1[len1-2], proof1[len1-2], extNode, extNode, extListRlpBytes, extValues, + key[keyIndex+numberOfNibbles], driftedInd, + branchC16, branchC1, false, true, isExtension, isSModifiedExtNode, isCModifiedExtNode) + + // We now get the first nibble of the leaf that was turned into branch. + // This first nibble presents the position of the leaf once it moved + // into the new branch. + } else { + // We now get the first nibble of the leaf that was turned into branch. + // This first nibble presents the position of the leaf once it moved + // into the new branch. + driftedInd := getDriftedPosition(leafRow0, numberOfNibbles) + + node = prepareBranchNode(proof2[len2-2], proof2[len2-2], extNode, extNode, extListRlpBytes, extValues, + key[keyIndex+numberOfNibbles], driftedInd, + branchC16, branchC1, true, false, isExtension, isSModifiedExtNode, isCModifiedExtNode) + } + + return isModifiedExtNode, isExtension, numberOfNibbles, branchC16, node +} diff --git a/mpt-witness-generator/witness/extension_node.go b/mpt-witness-generator/witness/extension_node.go new file mode 100644 index 0000000000..252c260ef7 --- /dev/null +++ b/mpt-witness-generator/witness/extension_node.go @@ -0,0 +1,345 @@ +package witness + +// setExtNodeSelectors sets in the branch init row the information about the extension node. +func setExtNodeSelectors(row, proofEl []byte, numberOfNibbles int, branchC16 byte) { + row[isExtensionPos] = 1 + if len(proofEl) > 56 { // 56 because there is 1 byte for length + // isCExtLongerThan55 doesn't need to be set here + row[isSExtLongerThan55Pos] = 1 + } + + if len(proofEl) < 32 { + // isExtNodeSNonHashed doesn't need to be set here + row[isExtNodeSNonHashedPos] = 1 + } + + if numberOfNibbles == 1 { + if branchC16 == 1 { + row[isExtShortC16Pos] = 1 + } else { + row[isExtShortC1Pos] = 1 + } + } else { + if numberOfNibbles%2 == 0 { + if branchC16 == 1 { + row[isExtLongEvenC16Pos] = 1 + } else { + row[isExtLongEvenC1Pos] = 1 + } + } else { + if branchC16 == 1 { + row[isExtLongOddC16Pos] = 1 + } else { + row[isExtLongOddC1Pos] = 1 + } + } + } +} + +func prepareEmptyExtensionRows(beforeModification, afterModification bool) [][]byte { + ext_row1 := make([]byte, rowLen) + ext_row2 := make([]byte, rowLen) + if !beforeModification && !afterModification { + ext_row1 = append(ext_row1, 16) + ext_row2 = append(ext_row2, 17) + } else if beforeModification { + ext_row1 = append(ext_row1, 20) + ext_row2 = append(ext_row2, 21) + } else if afterModification { + ext_row1 = append(ext_row1, 22) + ext_row2 = append(ext_row2, 23) + } + + return [][]byte{ext_row1, ext_row2} +} + +// TODO: remove when Nodes are fully implemented +func prepareExtensionRows(extNibbles [][]byte, extensionNodeInd int, proofEl1, proofEl2 []byte, beforeModification, afterModification bool) (byte, []byte, []byte) { + var extensionRowS []byte + var extensionRowC []byte + + extRows := prepareEmptyExtensionRows(beforeModification, afterModification) + extensionRowS = extRows[0] + extensionRowC = extRows[1] + prepareExtensionRow(extensionRowS, proofEl1, true) + prepareExtensionRow(extensionRowC, proofEl2, false) + + evenNumberOfNibbles := proofEl1[2] == 0 + keyLen := getExtensionNodeKeyLen(proofEl1) + numberOfNibbles := getExtensionNumberOfNibbles(proofEl1) + + // We need nibbles as witness to compute key RLC, so we set them + // into extensionRowC s_advices (we can do this because both extension + // nodes have the same key, so we can have this info only in one). + // There can be more up to 64 nibbles, but there is only 32 bytes + // in extensionRowC s_advices. So we store every second nibble (having + // the whole byte and one nibble is enough to compute the other nibble). + startNibblePos := 2 // we don't need any nibbles for case keyLen = 1 + if keyLen > 1 { + if evenNumberOfNibbles { + startNibblePos = 1 + } else { + startNibblePos = 2 + } + } + ind := 0 + for j := startNibblePos; j < len(extNibbles[extensionNodeInd]); j += 2 { + extensionRowC[branchNodeRLPLen+ind] = + extNibbles[extensionNodeInd][j] + ind++ + } + + return numberOfNibbles, extensionRowS, extensionRowC +} + +func prepareExtensions(extNibbles [][]byte, extensionNodeInd int, proofEl1, proofEl2 []byte) (byte, []byte, [][]byte) { + var values [][]byte + v1 := make([]byte, valueLen) + v2 := make([]byte, valueLen) + v3 := make([]byte, valueLen) + v4 := make([]byte, valueLen) + + listRlpBytes := prepareExtension(v1, v2, proofEl1, true) + prepareExtension(v3, v4, proofEl2, false) + + evenNumberOfNibbles := proofEl1[2] == 0 + keyLen := getExtensionNodeKeyLen(proofEl1) + numberOfNibbles := getExtensionNumberOfNibbles(proofEl1) + + // We need nibbles as witness to compute key RLC, so we set them + // into extensionRowC s_advices (we can do this because both extension + // nodes have the same key, so we can have this info only in one). + // There can be more up to 64 nibbles, but there is only 32 bytes + // in extensionRowC s_advices. So we store every second nibble (having + // the whole byte and one nibble is enough to compute the other nibble). + + startNibblePos := 2 // we don't need any nibbles for case keyLen = 1 + if keyLen > 1 { + if evenNumberOfNibbles { + startNibblePos = 1 + } else { + startNibblePos = 2 + } + } + ind := 0 + for j := startNibblePos; j < len(extNibbles[extensionNodeInd]); j += 2 { + v3[2+ind] = // TODO: check 2 + ind + extNibbles[extensionNodeInd][j] + ind++ + } + values = append(values, v1) + values = append(values, v2) + values = append(values, v3) + values = append(values, v4) + + return numberOfNibbles, listRlpBytes, values +} + +func getExtensionLenStartKey(proofEl []byte) (int, int) { + lenKey := 0 + startKey := 0 + // proofEl[1] <= 32 means only one nibble: the stored value is `16 + nibble`, note that if there are + // at least two nibbles there will be `128 + number of bytes occupied by nibbles` in proofEl[1] + if proofEl[1] <= 32 { + lenKey = 1 + startKey = 1 + } else if proofEl[0] <= 247 { + lenKey = int(proofEl[1] - 128) + startKey = 2 + } else { + lenKey = int(proofEl[2] - 128) + startKey = 3 + } + + return lenKey, startKey +} + +func getExtensionNodeKeyLen(proofEl []byte) byte { + if proofEl[1] <= 32 { + return 1 + } else if proofEl[0] <= 247 { + return proofEl[1] - 128 + } else { + return proofEl[2] - 128 + } +} + +func getExtensionNumberOfNibbles(proofEl []byte) byte { + evenNumberOfNibbles := proofEl[2] == 0 + numberOfNibbles := byte(0) + keyLen := getExtensionNodeKeyLen(proofEl) + if keyLen == 1 { + numberOfNibbles = 1 + } else if keyLen > 1 && evenNumberOfNibbles { + numberOfNibbles = (keyLen - 1) * 2 + } else if keyLen > 1 && !evenNumberOfNibbles { + numberOfNibbles = (keyLen-1)*2 + 1 + } + + return numberOfNibbles +} + +func getExtensionNodeNibbles(proofEl []byte) []byte { + lenKey, startKey := getExtensionLenStartKey(proofEl) + + var nibbles []byte + if proofEl[startKey] != 0 { + nibbles = append(nibbles, proofEl[startKey]-16) + } + for i := 0; i < lenKey-1; i++ { // -1 because the first byte doesn't have any nibbles + b := proofEl[startKey+1+i] + n1 := b / 16 + n2 := b - n1*16 + nibbles = append(nibbles, n1) + nibbles = append(nibbles, n2) + } + + return nibbles +} + +// TODO: remove when Nodes are fully implemented +func prepareExtensionRow(witnessRow, proofEl []byte, setKey bool) { + // storageProof[i]: + // [228,130,0,149,160,114,253,150,133,18,192,156,19,241,162,51,210,24,1,151,16,48,7,177,42,60,49,34,230,254,242,79,132,165,90,75,249] + // Note that the first element (228 in this case) can go much higher - for example, if there + // are 40 nibbles, this would take 20 bytes which would make the first element 248. + + // If only one nibble in key: + // [226,16,160,172,105,12... + // Could also be non-hashed branch: + // [223,16,221,198,132,32,0,0,0,1,198,132,32,0,0,0,1,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128] + + // Extension node with non-hashed branch: + // List contains up to 55 bytes (192 + 55) + // [247,160,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,128,194,32,1,128,194,32,1,128,128,128,128,128,128,128,128,128,128,128,128,128] + + // List contains more than 55 bytes + // [248,58,159,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,128,196,130,32,0,1,128,196,130,32,0,1,128,128,128,128,128,128,128,128,128,128,128,128,128] + + // Note that the extension node can be much shorter than the one above - in case when + // there are less nibbles, so we cannot say that 226 appears as the first byte only + // when there are hashed nodes in the branch and there is only one nibble. + // Branch with two non-hashed nodes (that's the shortest possible branch): + // [217,128,196,130,32,0,1,128,196,130,32,0,1,128,128,128,128,128,128,128,128,128,128,128,128,128] + // Note: branch contains at least 26 bytes. 192 + 26 = 218 + + /* + If proofEl[0] <= 247 (length at most 55, so proofEl[1] doesn't specify the length of the whole + remaining stream, only of the next substream) + If proofEl[1] <= 128: + There is only 1 byte for nibbles (keyLen = 1) and this is proofEl[1]. + Else: + Nibbles are stored in more than 1 byte, proofEl[1] specifies the length of bytes. + Else: + proofEl[1] contains the length of the remaining stream. + proofEl[2] specifies the length of the bytes (for storing nibbles). + Note that we can't have only one nibble in this case. + */ + + if setKey { + witnessRow[0] = proofEl[0] + witnessRow[1] = proofEl[1] + } + + lenKey, startKey := getExtensionLenStartKey(proofEl) + if startKey == 3 { + witnessRow[2] = proofEl[2] + } + + if setKey { + for j := 0; j < lenKey; j++ { + witnessRow[startKey+j] = proofEl[startKey+j] + } + } + + encodedNodeLen := proofEl[startKey+lenKey] + nodeLen := byte(0) + start := branch2start + if encodedNodeLen > 192 { + // we have a list, that means a non-hashed node + nodeLen = encodedNodeLen - 192 + } else if encodedNodeLen == 160 { + // hashed-node + nodeLen = encodedNodeLen - 128 + } + witnessRow[start] = encodedNodeLen + for j := 0; j < int(nodeLen); j++ { + witnessRow[start+1+j] = proofEl[startKey+lenKey+1+j] + } +} + +func prepareExtension(v1, v2, proofEl []byte, setKey bool) []byte { + // storageProof[i]: + // [228,130,0,149,160,114,253,150,133,18,192,156,19,241,162,51,210,24,1,151,16,48,7,177,42,60,49,34,230,254,242,79,132,165,90,75,249] + // Note that the first element (228 in this case) can go much higher - for example, if there + // are 40 nibbles, this would take 20 bytes which would make the first element 248. + + // If only one nibble in key: + // [226,16,160,172,105,12... + // Could also be non-hashed branch: + // [223,16,221,198,132,32,0,0,0,1,198,132,32,0,0,0,1,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128] + + // Extension node with non-hashed branch: + // List contains up to 55 bytes (192 + 55) + // [247,160,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,128,194,32,1,128,194,32,1,128,128,128,128,128,128,128,128,128,128,128,128,128] + + // List contains more than 55 bytes + // [248,58,159,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,128,196,130,32,0,1,128,196,130,32,0,1,128,128,128,128,128,128,128,128,128,128,128,128,128] + + // Note that the extension node can be much shorter than the one above - in case when + // there are less nibbles, so we cannot say that 226 appears as the first byte only + // when there are hashed nodes in the branch and there is only one nibble. + // Branch with two non-hashed nodes (that's the shortest possible branch): + // [217,128,196,130,32,0,1,128,196,130,32,0,1,128,128,128,128,128,128,128,128,128,128,128,128,128] + // Note: branch contains at least 26 bytes. 192 + 26 = 218 + + /* + If proofEl[0] <= 247 (length at most 55, so proofEl[1] doesn't specify the length of the whole + remaining stream, only of the next substream) + If proofEl[1] <= 128: + There is only 1 byte for nibbles (keyLen = 1) and this is proofEl[1]. + Else: + Nibbles are stored in more than 1 byte, proofEl[1] specifies the length of bytes. + Else: + proofEl[1] contains the length of the remaining stream. + proofEl[2] specifies the length of the bytes (for storing nibbles). + Note that we can't have only one nibble in this case. + */ + + var listRlpBytes []byte + listRlpBytes = append(listRlpBytes, proofEl[0]) + + lenKey, startKey := getExtensionLenStartKey(proofEl) + if lenKey != 1 { + // The descriptor now contains the key length RLP in value row: + startKey = startKey - 1 + lenKey = lenKey + 1 + } + + // TODO + if startKey == 3 { + listRlpBytes = append(listRlpBytes, proofEl[1]) + } + + if setKey { + for j := 0; j < lenKey; j++ { + v1[j] = proofEl[startKey+j] + } + } + + encodedNodeLen := proofEl[startKey+lenKey] + nodeLen := byte(0) + if encodedNodeLen > 192 { + // we have a list, that means a non-hashed node + nodeLen = encodedNodeLen - 192 + } else if encodedNodeLen == 160 { + // hashed-node + nodeLen = encodedNodeLen - 128 + } + v2[0] = encodedNodeLen + for j := 0; j < int(nodeLen); j++ { + v2[1+j] = proofEl[startKey+lenKey+1+j] + } + + return listRlpBytes +} diff --git a/mpt-witness-generator/witness/gen_witness_from_infura_blockchain_test.go b/mpt-witness-generator/witness/gen_witness_from_infura_blockchain_test.go new file mode 100644 index 0000000000..93e72ff8e3 --- /dev/null +++ b/mpt-witness-generator/witness/gen_witness_from_infura_blockchain_test.go @@ -0,0 +1,2407 @@ +package witness + +import ( + "fmt" + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/privacy-scaling-explorations/mpt-witness-generator/oracle" + "github.com/privacy-scaling-explorations/mpt-witness-generator/state" +) + +func TestUpdateOneLevel(t *testing.T) { + ks := [...]common.Hash{common.HexToHash("0x12"), common.HexToHash("0x21")} + // hexed keys: + // [3,1,14,12,12,... + // [11,11,8,10,6,... + // We have a branch with children at position 3 and 11. + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + + // This key is turned into odd length (see hexToCompact in encoding.go to see + // odd and even length are handled differently) + v := common.BigToHash(big.NewInt(int64(17))) + addr := common.HexToAddress("0xaaaccf12580138bc2bbceeeaa111df4e42ab81ff") + + trieMod := TrieModification{ + Type: StorageChanged, + Key: ks[0], + Value: v, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("UpdateOneLevel", ks[:], values, []common.Address{addr, addr}, trieModifications) +} + +func TestUpdateOneLevel1(t *testing.T) { + addr := common.HexToAddress("0x50efbf12580138bc263c95757826df4e24eb81c9") + // This address is turned into odd length (see hexToCompact in encoding.go to see + // odd and even length are handled differently) + ks := [...]common.Hash{common.HexToHash("0x12"), common.HexToHash("0x21")} + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: ks[1], + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("UpdateOneLevel1", ks[:], values, []common.Address{addr, addr}, trieModifications) +} + +func TestUpdateOneLevelBigVal(t *testing.T) { + ks := [...]common.Hash{common.HexToHash("0x12"), common.HexToHash("0x21")} + // hexed keys: + // [3,1,14,12,12,... + // [11,11,8,10,6,... + // We have a branch with children at position 3 and 11. + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + + // ks[0] key is turned into odd length (see hexToCompact in encoding.go to see + // odd and even length are handled differently) + // big value so that RLP is longer than 55 bytes + v1 := common.FromHex("0xbbefaa12580138bc263c95757826df4e24eb81c9aaaaaaaaaaaaaaaaaaaaaaaa") + v2 := common.BytesToHash(v1) + addr := common.HexToAddress("0xaaaccf12580138bc2bbceeeaa826df4e42ab81ff") + + trieMod := TrieModification{ + Type: StorageChanged, + Key: ks[0], + Value: v2, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("UpdateOneLevelBigVal", ks[:], values, []common.Address{addr, addr}, trieModifications) +} + +func TestUpdateTwoLevels(t *testing.T) { + ks := [...]common.Hash{common.HexToHash("0x11"), common.HexToHash("0x12"), common.HexToHash("0x21")} // this has three levels + // hexed keys: + // [3,1,14,12,12,... + // [11,11,8,10,6,... + // First we have a branch with children at position 3 and 11. + // The third storage change happens at key: + // [3,10,6,3,5,7,... + // That means leaf at position 3 turns into branch with children at position 1 and 10. + // ks := [...]common.Hash{common.HexToHash("0x12"), common.HexToHash("0x21")} + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + + // This key is turned into even length (see hexToCompact in encoding.go to see + // odd and even length are handled differently) + v := common.BigToHash(big.NewInt(int64(17))) + addr := common.HexToAddress("0xaaaccf12580138bc2bbc957aa826df4e42ab81ff") + + trieMod := TrieModification{ + Type: StorageChanged, + Key: ks[0], + Value: v, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("UpdateTwoLevels", ks[:], values, []common.Address{addr, addr, addr}, trieModifications) +} + +func TestUpdateTwoLevelsBigVal(t *testing.T) { + ks := [...]common.Hash{common.HexToHash("0x11"), common.HexToHash("0x12"), common.HexToHash("0x21")} // this has three levels + // hexed keys: + // [3,1,14,12,12,... + // [11,11,8,10,6,... + // First we have a branch with children at position 3 and 11. + // The third storage change happens at key: + // [3,10,6,3,5,7,... + // That means leaf at position 3 turns into branch with children at position 1 and 10. + // ks := [...]common.Hash{common.HexToHash("0x12"), common.HexToHash("0x21")} + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + + // This key is turned into even length (see hexToCompact in encoding.go to see + // odd and even length are handled differently) + v1 := common.FromHex("0xbbefaa12580138bc263c95757826df4e24eb81c9aaaaaaaaaaaaaaaaaaaaaaaa") + v2 := common.BytesToHash(v1) + addr := common.HexToAddress("0xaaaccf12580138bc2bbc957aa826df4e42ab81ff") + + trieMod := TrieModification{ + Type: StorageChanged, + Key: ks[0], + Value: v2, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("UpdateTwoLevelsBigVal", ks[:], values, []common.Address{addr, addr, addr}, trieModifications) +} + +func TestUpdateThreeLevels(t *testing.T) { + ks := [...]common.Hash{ + common.HexToHash("0x11"), + common.HexToHash("0x12"), + common.HexToHash("0x21"), + common.HexToHash("0x31"), + common.HexToHash("0x32"), + common.HexToHash("0x33"), + common.HexToHash("0x34"), + common.HexToHash("0x35"), + common.HexToHash("0x36"), + common.HexToHash("0x37"), + common.HexToHash("0x38"), // + common.HexToHash("0x39"), + common.HexToHash("0x40"), + common.HexToHash("0x41"), + common.HexToHash("0x42"), + common.HexToHash("0x43"), + common.HexToHash("0x44"), + common.HexToHash("0x45"), + common.HexToHash("0x46"), + } + // ks[10] = 0x38 is at position 3 in root.Children[3].Children[8] + // nibbles + // [9,5,12,5,13,12,14,10,13,14,9,6,0,3,4,7,9,11,1,7,7,11,6,8,9,5,9,0,4,9,4,8,5,13,15,8,10,10,9,7,11,3,9,15,3,5,3,3,0,3,9,10,15,5,15,4,5,6,1,9,9,16] + // terminator flag 16 (last byte) is removed, then it remains len 61 (these are nibbles): + // [9,5,12,5,13,12,14,10,13,14,9,6,0,3,4,7,9,11,1,7,7,11,6,8,9,5,9,0,4,9,4,8,5,13,15,8,10,10,9,7,11,3,9,15,3,5,3,3,0,3,9,10,15,5,15,4,5,6,1,9,9] + + // buf (31 len): + // this is key stored in leaf: + // [57,92,93,206,173,233,96,52,121,177,119,182,137,89,4,148,133,223,138,169,123,57,243,83,48,57,175,95,69,97,153] + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0xaaaccf12580138bc263c95757826df4e42ab81ff") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + v := common.BigToHash(big.NewInt(int64(17))) + + trieMod := TrieModification{ + Type: StorageChanged, + Key: ks[10], + Value: v, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("UpdateThreeLevels", ks[:], values, addresses, trieModifications) +} + +func TestFromNilToValue(t *testing.T) { + ks := [...]common.Hash{ + common.HexToHash("0x11"), + common.HexToHash("0x12"), + common.HexToHash("0x21"), + common.HexToHash("0x31"), + common.HexToHash("0x32"), + common.HexToHash("0x33"), + common.HexToHash("0x34"), + common.HexToHash("0x35"), + common.HexToHash("0x36"), + common.HexToHash("0x37"), + } + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0x50efbf12580138bc263c95757826df4e42ab81ff") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + // This test is similar as above, but the key that is being modified has not been used yet. + + toBeModified := common.HexToHash("0x38") + v := common.BigToHash(big.NewInt(int64(17))) + + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: v, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("FromNilToValue", ks[:], values, addresses, trieModifications) +} + +func TestDelete(t *testing.T) { + ks := [...]common.Hash{ + common.HexToHash("0xaaaabbbbabab"), + common.HexToHash("0xbaaabbbbabab"), + common.HexToHash("0xcaaabbbbabab"), + common.HexToHash("0xdaaabbbbabab"), + } + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0x50efbf12580138bc263c95757826df4e24eb81ff") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + toBeModified := common.HexToHash("0xdaaabbbbabab") + val := common.Hash{} // empty value deletes the key + + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("Delete", ks[:], values, addresses, trieModifications) +} + +func TestUpdateOneLevelEvenAddress(t *testing.T) { + addr := common.HexToAddress("0x25efbf12580138bc263c95757826df4e24eb81c9") + // This address is turned into even length (see hexToCompact in encoding.go to see + // odd and even length are handled differently) + ks := [...]common.Hash{common.HexToHash("0x12"), common.HexToHash("0x21")} + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + // This is a storage slot that will be modified (the list will come from bus-mapping): + toBeModified := ks[1] + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("UpdateOneLevelEvenAddress", ks[:], values, addresses, trieModifications) +} + +func TestAddBranch(t *testing.T) { + ks := [...]common.Hash{common.HexToHash("0x11"), common.HexToHash("0x12")} + // hexed keys: + // [3,1,14,12,12,... + // [11,11,8,10,6,... + // First we have a branch with children at position 3 and 11. + // ks := [...]common.Hash{common.HexToHash("0x12"), common.HexToHash("0x21")} + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0x75acef12a01883c2b3fc57957826df4e24e8baaa") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + // This key is not in the trie yet, its nibbles: + // [3,10,6,3,5,7,... + // That means leaf at position 3 turns into branch with children at position 1 and 10. + toBeModified := common.HexToHash("0x21") + v := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: v, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("AddBranch", ks[:], values, addresses, trieModifications) +} + +func TestAddBranchLong(t *testing.T) { + ks := [...]common.Hash{common.HexToHash("0x11"), common.HexToHash("0x12")} + // hexed keys: + // [3,1,14,12,12,... + // [11,11,8,10,6,... + // First we have a branch with children at position 3 and 11. + // ks := [...]common.Hash{common.HexToHash("0x12"), common.HexToHash("0x21")} + + var values []common.Hash + // big value so that RLP will be longer than 55 bytes for the neighbouring node + v1 := common.FromHex("0xbbefaa12580138bc263c95757826df4e24eb81c9aaaaaaaaaaaaaaaaaaaaaaaa") + v2 := common.BytesToHash(v1) + for i := 0; i < len(ks); i++ { + values = append(values, v2) + } + addr := common.HexToAddress("0x75acef12a01883c2b3fc57957826df4e24e8b19c") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + // This key is not in the trie yet, its nibbles: + // [3,10,6,3,5,7,... + // That means leaf at position 3 turns into branch with children at position 1 and 10. + toBeModified := common.HexToHash("0x21") + v := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: v, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("AddBranchLong", ks[:], values, addresses, trieModifications) +} + +func TestDeleteBranch(t *testing.T) { + h := common.HexToHash("0x11dd2277aa") + + ks := [...]common.Hash{ + common.HexToHash("0xaa"), + common.HexToHash("0xabcc"), + common.HexToHash("0xffdd"), + common.HexToHash("0x11dd"), + common.HexToHash("0x11dd22"), + common.HexToHash("0x11dd2233"), + common.HexToHash("0x11dd2255"), + common.HexToHash("0x11dd2277"), + h, // this leaf turns into a branch + } + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0x75acef12a0188c32b36c57957826df4e24e8b19c") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + toBeModified := h + v := common.Hash{} // empty value deletes the key + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: v, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("DeleteBranch", ks[:], values, addresses, trieModifications) +} + +func TestDeleteBranchLong(t *testing.T) { + h := common.HexToHash("0x11dd2277aa") + + ks := [...]common.Hash{ + common.HexToHash("0xaa"), + common.HexToHash("0xabcc"), + common.HexToHash("0xffdd"), + common.HexToHash("0x11dd"), + common.HexToHash("0x11dd22"), + common.HexToHash("0x11dd2233"), + common.HexToHash("0x11dd2255"), + common.HexToHash("0x11dd2277"), + h, // this leaf turns into a branch + } + + var values []common.Hash + // big value so that RLP will be longer than 55 bytes for the neighbouring node + v1 := common.FromHex("0xbbefaa12580138bc263c95757826df4e24eb81c9aaaaaaaaaaaaaaaaaaaaaaaa") + v2 := common.BytesToHash(v1) + for i := 0; i < len(ks); i++ { + values = append(values, v2) + } + addr := common.HexToAddress("0x75acef12a0188c32b36c57957826df4e24e8b19c") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + toBeModified := h + v := common.Hash{} // empty value deletes the key + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: v, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("DeleteBranchLong", ks[:], values, addresses, trieModifications) +} + +func TestAddBranchTwoLevels(t *testing.T) { + // Test for case when branch is added in the second level. So, instead of having only + // branch1 with some nodes and then one of this nodes is replaced with a branch (that's + // the case of TestAddBranch), we have here branch1 and then inside it another + // branch: branch2. Inside brach2 we have a node which gets replaced by a branch. + // This is to test cases when the key contains odd number of nibbles as well as + // even number of nibbles. + + a := 1 + b := 1 + h := fmt.Sprintf("0xaa%d%d", a, b) + ks := []common.Hash{common.HexToHash(h)} + for i := 0; i < 33; i++ { + // just some values to get the added branch in second level (found out trying different values) + if i%2 == 0 { + a += 1 + } else { + b += 1 + } + if a == 4 && b == 3 { + continue + } + h := fmt.Sprintf("0xaa%d%d", a, b) + ks = append(ks, common.HexToHash(h)) + } + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0x75fbef12a0188c32b36c57957826df4e24e8b19c") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + toBeModified := common.HexToHash("0xaa43") + v := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: v, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("AddBranchTwoLevels", ks[:], values, addresses, trieModifications) +} + +func TestAddBranchTwoLevelsLong(t *testing.T) { + a := 1 + b := 1 + h := fmt.Sprintf("0xaa%d%d", a, b) + ks := []common.Hash{common.HexToHash(h)} + for i := 0; i < 33; i++ { + // just some values to get the added branch in second level (found out trying different values) + if i%2 == 0 { + a += 1 + } else { + b += 1 + } + if a == 4 && b == 3 { + continue + } + h := fmt.Sprintf("0xaa%d%d", a, b) + ks = append(ks, common.HexToHash(h)) + } + + var values []common.Hash + v1 := common.FromHex("0xbbefaa12580138bc263c95757826df4e24eb81c9aaaaaaaaaaaaaaaaaaaaaaaa") + v2 := common.BytesToHash(v1) + for i := 0; i < len(ks); i++ { + values = append(values, v2) + } + addr := common.HexToAddress("0x75fbef1250188c32b63c57957826df4e24e8b19c") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + toBeModified := common.HexToHash("0xaa43") + v := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: v, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("AddBranchTwoLevelsLong", ks[:], values, addresses, trieModifications) +} + +func TestDeleteBranchTwoLevels(t *testing.T) { + a := 1 + b := 1 + h := fmt.Sprintf("0xaa%d%d", a, b) + ks := []common.Hash{common.HexToHash(h)} + for i := 0; i < 33; i++ { + // just some values to get the added branch in second level (found out trying different values) + if i%2 == 0 { + a += 1 + } else { + b += 1 + } + h := fmt.Sprintf("0xaa%d%d", a, b) + ks = append(ks, common.HexToHash(h)) + } + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0x75fbef1250188c32b63c57957826df4e24eb81c9") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + toBeModified := common.HexToHash("0xaa43") + v := common.Hash{} + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: v, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("DeleteBranchTwoLevels", ks[:], values, addresses, trieModifications) +} + +func TestDeleteBranchTwoLevelsLong(t *testing.T) { + a := 1 + b := 1 + h := fmt.Sprintf("0xaa%d%d", a, b) + ks := []common.Hash{common.HexToHash(h)} + for i := 0; i < 33; i++ { + // just some values to get the added branch in second level (found out trying different values) + if i%2 == 0 { + a += 1 + } else { + b += 1 + } + h := fmt.Sprintf("0xaa%d%d", a, b) + ks = append(ks, common.HexToHash(h)) + } + + var values []common.Hash + v1 := common.FromHex("0xbbefaa12580138bc263c95757826df4e24eb81c9aaaaaaaaaaaaaaaaaaaaaaaa") + v2 := common.BytesToHash(v1) + for i := 0; i < len(ks); i++ { + values = append(values, v2) + } + addr := common.HexToAddress("0x75fbef21508183c2b63c57957826df4e24eb81c9") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + toBeModified := common.HexToHash("0xaa43") + v := common.Hash{} + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: v, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("DeleteBranchTwoLevelsLong", ks[:], values, addresses, trieModifications) +} + +func TestExtensionOneKeyByteSel1(t *testing.T) { + ks := [...]common.Hash{ + common.HexToHash("0x11"), + common.HexToHash("0x12"), + common.HexToHash("0x21"), + common.HexToHash("0x31"), + common.HexToHash("0x32"), + common.HexToHash("0x33"), + common.HexToHash("0x34"), + common.HexToHash("0x35"), + common.HexToHash("0x36"), + common.HexToHash("0x37"), + common.HexToHash("0x38"), // + common.HexToHash("0x39"), + common.HexToHash("0x40"), + common.HexToHash("0x42"), + common.HexToHash("0x43"), + common.HexToHash("0x44"), + common.HexToHash("0x45"), + common.HexToHash("0x46"), + common.HexToHash("0x47"), + common.HexToHash("0x48"), + common.HexToHash("0x50"), + common.HexToHash("0x51"), + common.HexToHash("0x52"), + common.HexToHash("0x53"), + common.HexToHash("0x54"), + common.HexToHash("0x55"), + common.HexToHash("0x56"), + + common.HexToHash("0x61"), // extension + } + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0x75fbef21508183c2b63c57957826df4e24eb81c9") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + toBeModified := ks[len(ks)-1] + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("ExtensionOneKeyByteSel1", ks[:], values, addresses, trieModifications) +} + +func TestExtensionAddedOneKeyByteSel1(t *testing.T) { + a := 1 + b := 1 + h := fmt.Sprintf("0x%d%d", a, b) + ks := []common.Hash{common.HexToHash(h)} + for i := 0; i < 33; i++ { + // just some values to get the added branch in second level (found out trying different values) + if i%2 == 0 { + a += 1 + } else { + b += 1 + } + h := fmt.Sprintf("0x%d%d", a, b) + ks = append(ks, common.HexToHash(h)) + } + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0x50efbf12580138bc263c95757826df4e24eb81c9") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + toBeModified := common.HexToHash("0x1818") + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("ExtensionAddedOneKeyByteSel1", ks[:], values, addresses, trieModifications) +} + +func TestExtensionDeletedOneKeyByteSel1(t *testing.T) { + a := 1 + b := 1 + h := fmt.Sprintf("0x%d%d", a, b) + ks := []common.Hash{common.HexToHash(h)} + for i := 0; i < 33; i++ { + // just some values to get the added branch in second level (found out trying different values) + if i%2 == 0 { + a += 1 + } else { + b += 1 + } + h := fmt.Sprintf("0x%d%d", a, b) + ks = append(ks, common.HexToHash(h)) + } + toBeModified := common.HexToHash("0x1818") + ks = append(ks, toBeModified) + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0x50efbf12580138bc263c95757826df4e24eb81c9") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + val := common.Hash{} // empty value deletes the key + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("ExtensionDeletedOneKeyByteSel1", ks[:], values, addresses, trieModifications) +} + +func TestExtensionOneKeyByteSel2(t *testing.T) { + a := 0 + h := fmt.Sprintf("0xca%d", a) + ks := []common.Hash{common.HexToHash(h)} + for i := 0; i < 876; i++ { + a += 1 + h := fmt.Sprintf("0xca%d", a) + ks = append(ks, common.HexToHash(h)) + } + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0x75fbef2150818c32b36c57957226df4e24eb81c9") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + toBeModified := common.HexToHash("0xca644") + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("ExtensionOneKeyByteSel2", ks[:], values, addresses, trieModifications) +} + +func TestExtensionAddedOneKeyByteSel2(t *testing.T) { + a := 0 + h := fmt.Sprintf("0xca%d", a) + ks := []common.Hash{common.HexToHash(h)} + toBeModifiedStr := "0xca644" + toBeModified := common.HexToHash(toBeModifiedStr) + for i := 0; i < 876; i++ { + a += 1 + h := fmt.Sprintf("0xca%d", a) + if h == toBeModifiedStr { + continue + } + ks = append(ks, common.HexToHash(h)) + } + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0x75fbef2150818c32b36c57957226df4e24eb81c9") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("ExtensionAddedOneKeyByteSel2", ks[:], values, addresses, trieModifications) +} + +func TestExtensionDeletedOneKeyByteSel2(t *testing.T) { + a := 0 + h := fmt.Sprintf("0xca%d", a) + ks := []common.Hash{common.HexToHash(h)} + toBeModifiedStr := "0xca644" + toBeModified := common.HexToHash(toBeModifiedStr) + for i := 0; i < 876; i++ { + a += 1 + h := fmt.Sprintf("0xca%d", a) + ks = append(ks, common.HexToHash(h)) + } + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0x75fbef2150818c32b36c57957226df4e24eb81c9") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + val := common.Hash{} // empty value deletes the key + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("ExtensionDeletedOneKeyByteSel2", ks[:], values, addresses, trieModifications) +} + +func TestExtensionTwoKeyBytesSel1(t *testing.T) { + // Extension node which has key longer than 1 (2 in this test). This is needed because RLP takes + // different positions. + // Key length > 1 (130 means there are two bytes for key; 160 means there are 32 hash values after it): + // [228 130 0 149 160 ... + // Key length = 1 (no byte specifying the length of key): + // [226 16 160 ... + a := 0 + h := fmt.Sprintf("0x%d", a) + ks := []common.Hash{common.HexToHash(h)} + for i := 0; i < 176; i++ { + // just some values to get the extension with key length > 1 (found out trying different values) + a += 1 + h := fmt.Sprintf("0x%d", a) + ks = append(ks, common.HexToHash(h)) + } + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0x75fbef21508183c2b63c59757826df4e24eb81c9") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + toBeModified := common.HexToHash("0x172") + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("ExtensionTwoKeyBytesSel1", ks[:], values, addresses, trieModifications) +} + +func TestExtensionAddedTwoKeyBytesSel1(t *testing.T) { + a := 0 + h := fmt.Sprintf("0x%d", a) + ks := []common.Hash{common.HexToHash(h)} + toBeModifiedStr := "0x172" + toBeModified := common.HexToHash(toBeModifiedStr) + for i := 0; i < 176; i++ { + // just some values to get the extension with key length > 1 (found out trying different values) + a += 1 + h := fmt.Sprintf("0x%d", a) + if h == toBeModifiedStr { + continue + } + ks = append(ks, common.HexToHash(h)) + } + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0x75fbef21508183c2b63c59757826df4e24eb81c9") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("ExtensionAddedTwoKeyBytesSel1", ks[:], values, addresses, trieModifications) +} + +func TestExtensionDeletedTwoKeyBytesSel1(t *testing.T) { + a := 0 + h := fmt.Sprintf("0x%d", a) + ks := []common.Hash{common.HexToHash(h)} + toBeModifiedStr := "0x172" + toBeModified := common.HexToHash(toBeModifiedStr) + for i := 0; i < 176; i++ { + // just some values to get the extension with key length > 1 (found out trying different values) + a += 1 + h := fmt.Sprintf("0x%d", a) + ks = append(ks, common.HexToHash(h)) + } + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0x75fbef21508183c2b63c59757826df4e24eb81c9") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + val := common.Hash{} // empty value deletes the key + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("ExtensionDeletedTwoKeyBytesSel1", ks[:], values, addresses, trieModifications) +} + +func TestExtensionTwoKeyBytesSel2(t *testing.T) { + a := 0 + h := fmt.Sprintf("0x2ea%d", a) + ks := []common.Hash{common.HexToHash(h)} + for i := 0; i < 876; i++ { + a += 1 + h := fmt.Sprintf("0x2ea%d", a) + ks = append(ks, common.HexToHash(h)) + } + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0x75fbef2150818c32b36c57957226df4e24eb81c9") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + toBeModified := common.HexToHash("0x2ea772") + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("ExtensionTwoKeyBytesSel2", ks[:], values, addresses, trieModifications) +} + +func TestExtensionAddedTwoKeyBytesSel2(t *testing.T) { + a := 0 + h := fmt.Sprintf("0x2ea%d", a) + ks := []common.Hash{common.HexToHash(h)} + toBeModifiedStr := "0x2ea772" + toBeModified := common.HexToHash(toBeModifiedStr) + for i := 0; i < 876; i++ { + a += 1 + h := fmt.Sprintf("0x2ea%d", a) + if h == toBeModifiedStr { + continue + } + ks = append(ks, common.HexToHash(h)) + } + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0x75fbef2150818c32b36c57957226df4e24eb81c9") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("ExtensionAddedTwoKeyBytesSel2", ks[:], values, addresses, trieModifications) +} + +func TestExtensionDeletedTwoKeyBytesSel2(t *testing.T) { + a := 0 + h := fmt.Sprintf("0x2ea%d", a) + ks := []common.Hash{common.HexToHash(h)} + toBeModifiedStr := "0x2ea772" + toBeModified := common.HexToHash(toBeModifiedStr) + for i := 0; i < 876; i++ { + a += 1 + h := fmt.Sprintf("0x2ea%d", a) + ks = append(ks, common.HexToHash(h)) + } + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0x75fbef2150818c32b36c57957226df4e24eb81c9") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + val := common.Hash{} // empty value deletes the key + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("ExtensionDeletedTwoKeyBytesSel2", ks[:], values, addresses, trieModifications) +} + +func TestExtensionInFirstStorageLevel(t *testing.T) { + ks := []common.Hash{common.HexToHash("0x12")} + + for i := 0; i < 10; i++ { + h := fmt.Sprintf("0x%d", i) + ks = append(ks, common.HexToHash(h)) + } + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0x75fbef2150818c32b36c57957226df4e24eb81c9") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + toBeModified := common.HexToHash("0x1") + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("ExtensionInFirstStorageLevel", ks[:], values, addresses, trieModifications) +} + +func TestExtensionInFirstStorageLevelOneKeyByte(t *testing.T) { + blockNum := 13284469 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x50efbf12580138bc623c95757286df4e24eb81c9") + + statedb.DisableLoadingRemoteAccounts() + + key1 := common.HexToHash("0x12") + val1 := common.BigToHash(big.NewInt(int64(1))) + + statedb.SetState(addr, key1, val1) + + h := fmt.Sprintf("0x%d", 1) + key2 := common.HexToHash(h) + statedb.SetState(addr, key2, val1) + statedb.IntermediateRoot(false) + + toBeModified := common.HexToHash("0x1") + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("ExtensionInFirstStorageLevelOneKeyByte", trieModifications, statedb) +} + +func TestExtensionAddedInFirstStorageLevelOneKeyByte(t *testing.T) { + blockNum := 13284469 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x50efbf12580138bc623c95757286df4e24eb81c9") + + statedb.DisableLoadingRemoteAccounts() + + key1 := common.HexToHash("0x12") + val1 := common.BigToHash(big.NewInt(int64(1))) + + statedb.SetState(addr, key1, val1) + + toBeModified := common.HexToHash("0x1") + // statedb.SetState(addr, toBeModified, val1) + statedb.IntermediateRoot(false) + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("ExtensionAddedInFirstStorageLevelOneKeyByte", trieModifications, statedb) +} + +func TestExtensionInFirstStorageLevelTwoKeyBytes(t *testing.T) { + blockNum := 13284469 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x50efbf12580138bc623c95757286df4e24eb81c9") + + statedb.DisableLoadingRemoteAccounts() + + key1 := common.HexToHash("0x12") + val1 := common.BigToHash(big.NewInt(int64(1))) + + statedb.SetState(addr, key1, val1) + + toBeModified := common.HexToHash("0xa617") + statedb.SetState(addr, toBeModified, val1) + statedb.IntermediateRoot(false) + + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("ExtensionInFirstStorageLevelTwoKeyBytes", trieModifications, statedb) +} + +func TestExtensionAddedInFirstStorageLevelTwoKeyBytes(t *testing.T) { + blockNum := 13284469 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x50efbf12580138bc623c95757286df4e24eb81c9") + + statedb.DisableLoadingRemoteAccounts() + + key1 := common.HexToHash("0x12") + val1 := common.BigToHash(big.NewInt(int64(1))) + + statedb.SetState(addr, key1, val1) + + toBeModified := common.HexToHash("0xa617") + // statedb.SetState(addr, toBeModified, val1) + statedb.IntermediateRoot(false) + + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("ExtensionAddedInFirstStorageLevelTwoKeyBytes", trieModifications, statedb) +} + +func TestExtensionThreeKeyBytesSel2(t *testing.T) { + blockNum := 13284469 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x50feb1f2580138bc623c97557286df4e24eb81c9") + + statedb.DisableLoadingRemoteAccounts() + + for i := 0; i < 14; i++ { + h := fmt.Sprintf("0x%d", i) + key2 := common.HexToHash(h) + val1 := common.BigToHash(big.NewInt(int64(1))) + statedb.SetState(addr, key2, val1) + } + + toBeModified := common.HexToHash("0x13234") + val1 := common.BigToHash(big.NewInt(int64(1))) + statedb.SetState(addr, toBeModified, val1) + + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("ExtensionThreeKeyBytesSel2", trieModifications, statedb) +} + +func TestExtensionAddedThreeKeyBytesSel2(t *testing.T) { + blockNum := 13284469 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x50feb1f2580138bc623c97557286df4e24eb81c9") + + statedb.DisableLoadingRemoteAccounts() + + for i := 0; i < 14; i++ { + h := fmt.Sprintf("0x%d", i) + key2 := common.HexToHash(h) + val1 := common.BigToHash(big.NewInt(int64(1))) + statedb.SetState(addr, key2, val1) + } + + toBeModified := common.HexToHash("0x13234") + + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("ExtensionAddedThreeKeyBytesSel2", trieModifications, statedb) +} + +func TestExtensionDeletedThreeKeyBytesSel2(t *testing.T) { + blockNum := 13284469 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x50feb1f2580138bc623c97557286df4e24eb81c9") + + statedb.DisableLoadingRemoteAccounts() + + for i := 0; i < 14; i++ { + h := fmt.Sprintf("0x%d", i) + key2 := common.HexToHash(h) + val1 := common.BigToHash(big.NewInt(int64(1))) + statedb.SetState(addr, key2, val1) + } + + toBeModified := common.HexToHash("0x13234") + val1 := common.BigToHash(big.NewInt(int64(1))) + statedb.SetState(addr, toBeModified, val1) + + val := common.Hash{} // empty value deletes the key + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("ExtensionDeletedThreeKeyBytesSel2", trieModifications, statedb) +} + +func TestExtensionThreeKeyBytes(t *testing.T) { + blockNum := 13284469 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x50fbe1f25aa0843b623c97557286df4e24eb81c9") + + statedb.DisableLoadingRemoteAccounts() + + for i := 0; i < 140; i++ { + h := fmt.Sprintf("0x%d", i) + key2 := common.HexToHash(h) + val1 := common.BigToHash(big.NewInt(int64(1))) + statedb.SetState(addr, key2, val1) + } + + // Let's get a key which makes extension node at the first level. + // (set the breakpoint in trie.go, line 313) + for i := 0; i < 1000; i++ { + h := fmt.Sprintf("0x2111d%d", i) + key2 := common.HexToHash(h) + val1 := common.BigToHash(big.NewInt(int64(1))) + statedb.SetState(addr, key2, val1) + statedb.IntermediateRoot(false) + + // v := common.Hash{} // empty value deletes the key + // statedb.SetState(addr, key2, v) + } + + toBeModified := common.HexToHash("0x333") + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: toBeModified, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("ExtensionThreeKeyBytes", trieModifications, statedb) +} + +func TestOnlyLeafInStorageProof(t *testing.T) { + blockNum := 14209217 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + statedb.DisableLoadingRemoteAccounts() + + h := fmt.Sprintf("0x%d", 0) + addr := common.HexToAddress(h) + // statedb.IntermediateRoot(false) + statedb.CreateAccount(addr) + + accountProof, _, _, _, err := statedb.GetProof(addr) + fmt.Println(len(accountProof)) + check(err) + + h = fmt.Sprintf("0x2111d%d", 0) + key2 := common.HexToHash(h) + val1 := common.BigToHash(big.NewInt(int64(1))) + statedb.SetState(addr, key2, val1) + statedb.IntermediateRoot(false) + + // storageProof, _, _, _, err := statedb.GetStorageProof(addr, key2) + // check(err) + + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: key2, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("OnlyLeafInStorageProof", trieModifications, statedb) +} + +func TestStorageLeafInFirstLevelAfterPlaceholder(t *testing.T) { + blockNum := 14209217 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + statedb.DisableLoadingRemoteAccounts() + + h := fmt.Sprintf("0x%d", 0) + addr := common.HexToAddress(h) + // statedb.IntermediateRoot(false) + statedb.CreateAccount(addr) + + accountProof, _, _, _, err := statedb.GetProof(addr) + fmt.Println(len(accountProof)) + check(err) + + h1 := fmt.Sprintf("0x2111d%d", 0) + key1 := common.HexToHash(h1) + val1 := common.BigToHash(big.NewInt(int64(1))) + statedb.SetState(addr, key1, val1) + statedb.IntermediateRoot(false) + + // storageProof, _, _, _, err := statedb.GetStorageProof(addr, key2) + // check(err) + + h2 := fmt.Sprintf("0x2111%d", 0) + key2 := common.HexToHash(h2) + + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: key2, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("StorageLeafInFirstLevelAfterPlaceholder", trieModifications, statedb) +} + +func TestLeafAddedToEmptyTrie(t *testing.T) { + blockNum := 14209217 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + statedb.DisableLoadingRemoteAccounts() + + h := fmt.Sprintf("0x%d", 0) + addr := common.HexToAddress(h) + // statedb.IntermediateRoot(false) + statedb.CreateAccount(addr) + + accountProof, _, _, _, err := statedb.GetProof(addr) + fmt.Println(len(accountProof)) + check(err) + + // emptyTrieHash := statedb.StorageTrie(addr).Hash() + // fmt.Println(emptyTrieHash.Bytes()) + + h = fmt.Sprintf("0x2111d%d", 0) + key2 := common.HexToHash(h) + // val1 := common.BigToHash(big.NewInt(int64(1))) + // statedb.SetState(addr, key2, val1) + statedb.IntermediateRoot(false) + + // storageProof, _, _, _, err := statedb.GetStorageProof(addr, key2) + // check(err) + + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: key2, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("LeafAddedToEmptyTrie", trieModifications, statedb) +} + +func TestDeleteToEmptyTrie(t *testing.T) { + blockNum := 14209217 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + statedb.DisableLoadingRemoteAccounts() + + h := fmt.Sprintf("0x%d", 0) + addr := common.HexToAddress(h) + // statedb.IntermediateRoot(false) + statedb.CreateAccount(addr) + + accountProof, _, _, _, err := statedb.GetProof(addr) + fmt.Println(len(accountProof)) + check(err) + + h = fmt.Sprintf("0x2111d%d", 0) + key2 := common.HexToHash(h) + val1 := common.BigToHash(big.NewInt(int64(1))) + statedb.SetState(addr, key2, val1) + statedb.IntermediateRoot(false) + + // storageProof, _, _, _, err := statedb.GetStorageProof(addr, key2) + // check(err) + + val := common.Hash{} // empty value deletes the key + trieMod := TrieModification{ + Type: StorageChanged, + Key: key2, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("DeleteToEmptyTrie", trieModifications, statedb) +} + +func TestUpdateTwoModifications(t *testing.T) { + ks := [...]common.Hash{common.HexToHash("0x12"), common.HexToHash("0x21")} + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0xaaaccf12580138bc2bbceeeaa111df4e42ab81ff") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + v1 := common.BigToHash(big.NewInt(int64(17))) + v2 := common.BigToHash(big.NewInt(int64(17))) + + trieMod1 := TrieModification{ + Type: StorageChanged, + Key: ks[0], + Value: v1, + Address: addr, + } + trieMod2 := TrieModification{ + Type: StorageChanged, + Key: ks[1], + Value: v2, + Address: addr, + } + + trieModifications := []TrieModification{trieMod1, trieMod2} + + updateStateAndPrepareWitness("UpdateTwoModifications", ks[:], values, addresses, trieModifications) +} + +func TestNonceModCShort(t *testing.T) { + blockNum := 14766377 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x68D5a6E78BD8734B7d190cbD98549B72bFa0800B") + + trieMod := TrieModification{ + Type: NonceChanged, + Nonce: 33, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("NonceModCShort", trieModifications, statedb) +} + +func TestNonceModCLong(t *testing.T) { + blockNum := 14766377 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x68D5a6E78BD8734B7d190cbD98549B72bFa0800B") + + trieMod := TrieModification{ + Type: NonceChanged, + Nonce: 142, // for long needs to be >= 128 + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("NonceModCLong", trieModifications, statedb) +} + +func TestBalanceModCShort(t *testing.T) { + blockNum := 14766377 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x68D5a6E78BD8734B7d190cbD98549B72bFa0800B") + + trieMod := TrieModification{ + Type: BalanceChanged, + Balance: big.NewInt(98), + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("BalanceModCShort", trieModifications, statedb) +} + +func TestBalanceModCLong(t *testing.T) { + blockNum := 14766377 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x68D5a6E78BD8734B7d190cbD98549B72bFa0800B") + + trieMod := TrieModification{ + Type: BalanceChanged, + Balance: big.NewInt(439), + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("BalanceModCLong", trieModifications, statedb) +} + +func TestAddAccount(t *testing.T) { + blockNum := 1 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + addr := common.HexToAddress("0xaaaccf12580138bc2bbceeeaa111df4e42ab81ab") + statedb.IntermediateRoot(false) + + trieMod := TrieModification{ + Address: addr, + Type: AccountCreate, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("AddAccount", trieModifications, statedb) +} + +func TestDeleteAccount(t *testing.T) { + blockNum := 1 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + addr := common.HexToAddress("0xaaaccf12580138bc2bbceeeaa111df4e42ab81ab") + statedb.CreateAccount(addr) + statedb.IntermediateRoot(false) + + trieMod := TrieModification{ + Address: addr, + Type: AccountDestructed, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("DeleteAccount", trieModifications, statedb) +} + +func TestImplicitlyCreateAccountWithNonce(t *testing.T) { + // When there is a change in an account that does not exist, a placeholder account leaf is added + // as a witness. The last branch contains information about the leaf at `modified_node` being just + // a placeholder and the circuit ensures that when the leaf is a placeholder, the branch (last branch) + // children at `modified_node` is nil. + blockNum := 1 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + addr := common.HexToAddress("0xaabccf12580138bc2bbceeeaa111df4e42ab81ab") + + trieMod := TrieModification{ + Type: NonceChanged, + Nonce: 142, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("ImplicitlyCreateAccountWithNonce", trieModifications, statedb) +} + +func TestImplicitlyCreateAccountWithBalance(t *testing.T) { + blockNum := 1 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + addr := common.HexToAddress("0xaabccf12580138bc2bbceeeaa111df4e42ab81ab") + + trieMod := TrieModification{ + Type: BalanceChanged, + Balance: big.NewInt(7), + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("ImplicitlyCreateAccountWithBalance", trieModifications, statedb) +} + +func TestImplicitlyCreateAccountWithCodeHash(t *testing.T) { + blockNum := 1 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + addr := common.HexToAddress("0xaabccf12580138bc2bbceeeaa111df4e42ab81ab") + codeHash := []byte{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1} + + trieMod := TrieModification{ + Type: BalanceChanged, + CodeHash: codeHash, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("ImplicitlyCreateAccountWithCodeHash", trieModifications, statedb) +} + +func TestAccountAddPlaceholderBranch(t *testing.T) { + blockNum := 13284469 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + // We need an account that doesn't exist yet. + i := 21 + h := fmt.Sprintf("0x%d", i) + addr := common.HexToAddress(h) + + trieMod := TrieModification{ + Type: BalanceChanged, // implicitly creating account + Balance: big.NewInt(23), + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("AccountAddPlaceholderBranch", trieModifications, statedb) +} + +func TestAccountDeletePlaceholderBranch(t *testing.T) { + blockNum := 13284469 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + i := 21 + h := fmt.Sprintf("0x%d", i) + addr := common.HexToAddress(h) + + statedb.CreateAccount(addr) + + trieMod := TrieModification{ + Type: AccountDestructed, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("AccountDeletePlaceholderBranch", trieModifications, statedb) +} + +func TestAccountAddPlaceholderExtension(t *testing.T) { + blockNum := 13284469 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + // We need an account that doesn't exist yet. + i := 40 + h := fmt.Sprintf("0x%d", i) + addr := common.HexToAddress(h) + + trieMod := TrieModification{ + Type: BalanceChanged, // implicitly creating account + Balance: big.NewInt(23), + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("AccountAddPlaceholderExtension", trieModifications, statedb) +} + +func TestAccountDeletePlaceholderExtension(t *testing.T) { + blockNum := 13284469 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + i := 40 + h := fmt.Sprintf("0x%d", i) + addr := common.HexToAddress(h) + + statedb.CreateAccount(addr) + + trieMod := TrieModification{ + Type: AccountDestructed, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("AccountDeletePlaceholderExtension", trieModifications, statedb) +} + +// Branch has nil at the specified address. +func TestNonExistingAccountNilObject(t *testing.T) { + // At the account address, there is a nil object. + blockNum := 1 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + addr := common.HexToAddress("0xaaaccf12580138bc2bbceeeaa111df4e42ab81ab") + statedb.IntermediateRoot(false) + + trieMod := TrieModification{ + Address: addr, + Type: AccountDoesNotExist, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("NonExistingAccountNilObject", trieModifications, statedb) +} + +// Branch has a leaf at the specified address (not really at the specified address, but at the one +// that partially overlaps with the specified one). +func TestNonExistingAccount(t *testing.T) { + // The leaf is returned that doesn't have the required address - but the two addresses overlaps in all nibbles up to + // to the position in branch. + blockNum := 13284469 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + i := 21 + h := fmt.Sprintf("0x%d", i) + addr := common.HexToAddress(h) + + trieMod := TrieModification{ + Address: addr, + Type: AccountDoesNotExist, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("NonExistingAccount", trieModifications, statedb) +} + +// Account proof after placeholder branch deeper in the trie (branch placeholder not in the +// first or second level). +func TestAccountBranchPlaceholderDeeper(t *testing.T) { + blockNum := 13284469 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + h := fmt.Sprintf("0xa21%d", 0) + addr := common.HexToAddress(h) + // Implicitly create account such that the account from the first level will be + // replaced by a branch. + trieMod := TrieModification{ + Type: BalanceChanged, + Balance: big.NewInt(23), + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitnessSpecial("AccountBranchPlaceholderDeeper", trieModifications, statedb, 0) +} + +func TestLeafInLastLevel(t *testing.T) { + /* + We have an extension node as a root. This extension node key in compact form + is an array of length 32 (160 - 128): 16, 0, 0, ..., 0. + That means 63 nibbles that are all zero: 0 (16 - 16), 0, ..., 0. + The last nibble of key1 (1) and key2 (3) presents the position in branch. + In this case, in a leaf, there is only one key byte: 32. + + storageProof[0] + []uint8 len: 56, cap: 56, [247,160,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,128,194,32,1,128,194,32,1,128,128,128,128,128,128,128,128,128,128,128,128,128] + storageProof[1] + []uint8 len: 22, cap: 22, [213,128,194,32,1,128,194,32,1,128,128,128,128,128,128,128,128,128,128,128,128,128] + storageProof[2] + []uint8 len: 3, cap: 3, [194,32,1] + + Other examples: + last level, long value + []uint8 len: 36, cap: 36, [227,32,161,160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170] + not last level, short value + []uint8 len: 5, cap: 5, [196,130,32,0,1] + + Note: the "normal" leaf looks like: + short: + [226,160,59,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,1] + + long: + [248,67,160,59,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,161,160,... + */ + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x50efbf12580138bc623c95757286df4e24eb81c9") + + statedb.DisableLoadingRemoteAccounts() + + statedb.CreateAccount(addr) + + oracle.PreventHashingInSecureTrie = true // to store the unchanged key + + key1 := common.HexToHash("0x1") + val1 := common.BigToHash(big.NewInt(int64(1))) + + statedb.SetState(addr, key1, val1) + + key2 := common.HexToHash("0x3") + statedb.SetState(addr, key2, val1) + statedb.IntermediateRoot(false) + /* + The two keys are the same except in the last nibble: + key1 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1] + key2 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3] + */ + + storageProof, _, _, _, err := statedb.GetStorageProof(addr, key1) + check(err) + + fmt.Println(storageProof[0]) + + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: key1, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("LeafInLastLevel", trieModifications, statedb) + + oracle.PreventHashingInSecureTrie = false +} + +func TestLeafWithOneNibble(t *testing.T) { + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x50efbf12580138bc623c95757286df4e24eb81c9") + + statedb.DisableLoadingRemoteAccounts() + + statedb.CreateAccount(addr) + + oracle.PreventHashingInSecureTrie = true // to store the unchanged key + + key1 := common.HexToHash("0x10") + val1 := common.BigToHash(big.NewInt(int64(1))) + + statedb.SetState(addr, key1, val1) + + key2 := common.HexToHash("0x30") + statedb.SetState(addr, key2, val1) + statedb.IntermediateRoot(false) + + storageProof, _, _, _, err := statedb.GetStorageProof(addr, key1) + check(err) + + fmt.Println(storageProof[0]) + + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: key1, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("LeafWithOneNibble", trieModifications, statedb) + + oracle.PreventHashingInSecureTrie = false +} + +/* +storageProof[0] +[]uint8 len: 56, cap: 56, [247,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,131,32,100,192,26,10,249,123,103,55,126,227,156,51,43,248,141,13,184,86,199,239,167,52,34,242,212,138,29,106,251,72] +storageProof[1] +[]uint8 len: 46, cap: 46, [237,128,206,140,48,0,0,0,0,0,0,0,0,0,0,0,17,128,206,140,48,0,0,0,0,0,0,0,0,0,0,0,17,128,128,128,128,128,128,128,128,128,128,128,128,128] +storageProof[2] +[]uint8 len: 15, cap: 15, [206,140,48,0,0,0,0,0,0,0,0,0,0,0,17] +*/ +func TestLeafWithMoreNibbles(t *testing.T) { + // non-hashed leaf, leaf not in last level + + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x50efbf12580138bc623c95757286df4e24eb81c9") + + statedb.DisableLoadingRemoteAccounts() + + statedb.CreateAccount(addr) + + oracle.PreventHashingInSecureTrie = true + + // Let us make the extension node shorter than 55 (although this than causes branch to be hashed): + key1 := common.HexToHash("0x100000000000000000000000") + + val1 := common.BigToHash(big.NewInt(int64(17))) + + statedb.SetState(addr, key1, val1) + + key2 := common.HexToHash("0x300000000000000000000000") + statedb.SetState(addr, key2, val1) + statedb.IntermediateRoot(false) + + storageProof, _, _, _, err := statedb.GetStorageProof(addr, key1) + check(err) + + fmt.Println(storageProof[0]) + + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: key1, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("LeafWithMoreNibbles", trieModifications, statedb) + + oracle.PreventHashingInSecureTrie = false +} + +// Note: this requires MockProver with config param 11 +/* +func TestNonHashedBranchInBranch(t *testing.T) { + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x50efbf12580138bc623c95757286df4e24eb81c9") + + statedb.DisableLoadingRemoteAccounts() + + statedb.CreateAccount(addr) + + oracle.PreventHashingInSecureTrie = true // to store the unchanged key + + val1 := common.BigToHash(big.NewInt(int64(1))) + + key1Hex := "0x1000000000000000000000000000000000000000000000000000000000000000" + key2Hex := "0x2000000000000000000000000000000000000000000000000000000000000000" + key1 := common.HexToHash(key1Hex) + key2 := common.HexToHash(key2Hex) + fmt.Println(key2) + + statedb.SetState(addr, key2, val1) + + iters := 57 // making the last branch shorter than 32 bytes + for i := 0; i < iters; i++ { + fmt.Println("====") + fmt.Println(key1) + + statedb.SetState(addr, key1, val1) + + if i == iters - 1 { + break + } + + key1Hex = replaceAtIndex(key1Hex, 49, i + 3) // 49 is 1, 50 is 2, ... + key1 = common.HexToHash(key1Hex) + } + + statedb.IntermediateRoot(false) + + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: key1, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + GenerateProof("NonHashedBranchInBranch", trieModifications, statedb) + + oracle.PreventHashingInSecureTrie = false +} + +func replaceAtIndex(in string, r rune, i int) string { + out := []rune(in) + out[i] = r + return string(out) +} + +// Note: this requires MockProver with config param 11 +func TestNonHashedExtensionNodeInBranch(t *testing.T) { + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x50efbf12580138bc623c95757286df4e24eb81c9") + + statedb.DisableLoadingRemoteAccounts() + + statedb.CreateAccount(addr) + + oracle.PreventHashingInSecureTrie = true // to store the unchanged key + + val1 := common.BigToHash(big.NewInt(int64(1))) + + key1Hex := "0x1000000000000000000000000000000000000000000000000000000000000000" + key2Hex := "0x2000000000000000000000000000000000000000000000000000000000000000" + key1 := common.HexToHash(key1Hex) + key2 := common.HexToHash(key2Hex) + fmt.Println(key2) + + statedb.SetState(addr, key2, val1) + + iters := 58 // make the extension node shorter than 32 + for i := 0; i < iters; i++ { + statedb.SetState(addr, key1, val1) + + if i == iters - 1 { + break + } + + makeExtension := false + if i == iters - 2 { + makeExtension = true + } + + if !makeExtension { + key1Hex = replaceAtIndex(key1Hex, 49, i + 3) + } else { + key1Hex = replaceAtIndex(key1Hex, 49, i + 1 + 3) + } + + key1 = common.HexToHash(key1Hex) + } + + statedb.IntermediateRoot(false) + + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: key1, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + GenerateProof("NonHashedExtensionNodeInBranch", trieModifications, statedb) + + oracle.PreventHashingInSecureTrie = false +} + +// Note: this requires MockProver with config param 11 +func TestNonHashedExtensionNodeInBranchTwoNibbles(t *testing.T) { + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x50efbf12580138bc623c95757286df4e24eb81c9") + + statedb.DisableLoadingRemoteAccounts() + + statedb.CreateAccount(addr) + + oracle.PreventHashingInSecureTrie = true // to store the unchanged key + + val1 := common.BigToHash(big.NewInt(int64(1))) + + key1Hex := "0x1000000000000000000000000000000000000000000000000000000000000000" + key2Hex := "0x2000000000000000000000000000000000000000000000000000000000000000" + key1 := common.HexToHash(key1Hex) + key2 := common.HexToHash(key2Hex) + fmt.Println(key2) + + statedb.SetState(addr, key2, val1) + + iters := 58 // make the extension node shorter than 32 + for i := 0; i < iters; i++ { + statedb.SetState(addr, key1, val1) + + if i == iters - 1 { + break + } + + makeExtension := false + if i == iters - 2 { + makeExtension = true + } + + if !makeExtension { + key1Hex = replaceAtIndex(key1Hex, 49, i + 3) + } else { + key1Hex = replaceAtIndex(key1Hex, 49, i + 2 + 3) // +2 to have two nibbles + } + + key1 = common.HexToHash(key1Hex) + } + + statedb.IntermediateRoot(false) + + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: key1, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + GenerateProof("NonHashedExtensionNodeInBranchTwoNibbles", trieModifications, statedb) + + oracle.PreventHashingInSecureTrie = false +} +*/ + +func TestBranchAfterExtNode(t *testing.T) { + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x40efbf12580138bc623c95757286df4e24eb81c9") + + statedb.DisableLoadingRemoteAccounts() + + statedb.CreateAccount(addr) + + oracle.PreventHashingInSecureTrie = true // to store the unchanged key + + key1Hex := "0x1000000000000000000000000" + key2Hex := "0x2000000000000000000000000" + key1 := common.HexToHash(key1Hex) + key2 := common.HexToHash(key2Hex) + + val1 := common.BigToHash(big.NewInt(int64(111))) + val2 := common.BigToHash(big.NewInt(int64(222))) + + statedb.SetState(addr, key1, val1) + fmt.Println(key1) + + statedb.SetState(addr, key2, val2) + fmt.Println(key2) + + statedb.IntermediateRoot(false) + + key1Hex += "1" + key3 := common.HexToHash(key1Hex) + statedb.SetState(addr, key3, val2) + fmt.Println(key3) + + statedb.IntermediateRoot(false) + + val := common.BigToHash(big.NewInt(int64(17))) + trieMod := TrieModification{ + Type: StorageChanged, + Key: key1, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("BranchAfterExtNode", trieModifications, statedb) + + oracle.PreventHashingInSecureTrie = false +} + +func TestNonExistingStorage(t *testing.T) { + ks := [...]common.Hash{common.HexToHash("0x11"), common.HexToHash("0x12")} + // hexed keys: + // [3,1,14,12,12,... + // [11,11,8,10,6,... + // First we have a branch with children at position 3 and 11. + // ks := [...]common.Hash{common.HexToHash("0x12"), common.HexToHash("0x21")} + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0x75acef12a01883c2b3fc57957826df4e24e8baaa") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + // This key is not in the trie yet, its nibbles: + // [3,10,6,3,5,7,... + trieMod := TrieModification{ + Type: StorageDoesNotExist, + Key: common.HexToHash("0x21"), + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("NonExistingStorage", ks[:], values, addresses, trieModifications) +} + +func TestNonExistingStorageLong(t *testing.T) { + ks := [...]common.Hash{common.HexToHash("0x11"), common.HexToHash("0x12")} + + var values []common.Hash + v1 := common.FromHex("0xbbefaa12580138bc263c95757826df4e24eb81c9aaaaaaaaaaaaaaaaaaaaaaaa") + v2 := common.BytesToHash(v1) + for i := 0; i < len(ks); i++ { + values = append(values, v2) + } + addr := common.HexToAddress("0x75acef12a01883c2b3fc57957826df4e24e8b19c") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + trieMod := TrieModification{ + Type: StorageDoesNotExist, + Key: common.HexToHash("0x21"), + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("NonExistingStorageLong", ks[:], values, addresses, trieModifications) +} + +func TestNonExistingStorageNil(t *testing.T) { + // Nil in branch. + ks := [...]common.Hash{common.HexToHash("0x11"), common.HexToHash("0x12")} + // hexed keys: + // [3,1,14,12,12,... + // [11,11,8,10,6,... + // First we have a branch with children at position 3 and 11. + // ks := [...]common.Hash{common.HexToHash("0x12"), common.HexToHash("0x21")} + + var values []common.Hash + for i := 0; i < len(ks); i++ { + values = append(values, common.BigToHash(big.NewInt(int64(i+1)))) // don't put 0 value because otherwise nothing will be set (if 0 is prev value), see state_object.go line 279 + } + addr := common.HexToAddress("0x75acef12a01883c2b3fc57957826df4e24e8baaa") + var addresses []common.Address + for i := 0; i < len(ks); i++ { + addresses = append(addresses, addr) + } + + // This key is not in the trie yet, its nibbles: + // [3,10,6,3,5,7,... + trieMod := TrieModification{ + Type: StorageDoesNotExist, + Key: common.HexToHash("0x22"), + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + updateStateAndPrepareWitness("NonExistingStorageNil", ks[:], values, addresses, trieModifications) +} diff --git a/mpt-witness-generator/witness/gen_witness_from_local_blockchain_test.go b/mpt-witness-generator/witness/gen_witness_from_local_blockchain_test.go new file mode 100644 index 0000000000..aab3b97734 --- /dev/null +++ b/mpt-witness-generator/witness/gen_witness_from_local_blockchain_test.go @@ -0,0 +1,815 @@ +package witness + +import ( + "fmt" + "math/big" + "os" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/privacy-scaling-explorations/mpt-witness-generator/oracle" + "github.com/privacy-scaling-explorations/mpt-witness-generator/state" +) + +func SkipIfNoGeth(t *testing.T) { + if os.Getenv("NO_GETH") != "" { + t.Skip("Skipping test that requires geth") + } +} + +func TestNonExistingAccountNilObjectInFirstLevel(t *testing.T) { + SkipIfNoGeth(t) + // geth --dev --http --ipcpath ~/Library/Ethereum/geth.ipc + oracle.NodeUrl = oracle.LocalUrl + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + i := 21 + h := fmt.Sprintf("0x%d", i) + // There is one branch in the state trie, but at this address there is only a nil object: + addr := common.HexToAddress(h) + + trieMod := TrieModification{ + Address: addr, + Type: AccountDoesNotExist, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("NonExistingAccountNilObjectInFirstLevel", trieModifications, statedb) + + oracle.NodeUrl = oracle.RemoteUrl +} + +func TestNonExistingAccountInFirstLevel(t *testing.T) { + SkipIfNoGeth(t) + // Only one element in the trie - the account with "wrong" address. + // geth --dev --http --ipcpath ~/Library/Ethereum/geth.ipc + oracle.NodeUrl = oracle.LocalUrl + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + i := 10 + h := fmt.Sprintf("0x%d", i) + addr := common.HexToAddress(h) + + trieMod := TrieModification{ + Type: AccountDoesNotExist, + Balance: big.NewInt(23), + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitnessSpecial("NonExistingAccountInFirstLevel", trieModifications, statedb, 4) + + oracle.NodeUrl = oracle.RemoteUrl +} + +func TestNonExistingAccountAfterFirstLevel(t *testing.T) { + SkipIfNoGeth(t) + // geth --dev --http --ipcpath ~/Library/Ethereum/geth.ipc + oracle.NodeUrl = oracle.LocalUrl + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + i := 22 + h := fmt.Sprintf("0x%d", i) + addr := common.HexToAddress(h) + + trieMod := TrieModification{ + Address: addr, + Type: AccountDoesNotExist, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("NonExistingAccountAfterFirstLevel", trieModifications, statedb) + + oracle.NodeUrl = oracle.RemoteUrl +} + +// Account leaf after one branch. No storage proof. +func TestAccountAfterFirstLevel(t *testing.T) { + SkipIfNoGeth(t) + // geth --dev --http --ipcpath ~/Library/Ethereum/geth.ipc + oracle.NodeUrl = oracle.LocalUrl + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + i := 21 + h := fmt.Sprintf("0x%d", i) + addr := common.HexToAddress(h) + + trieMod := TrieModification{ + Type: BalanceChanged, + Balance: big.NewInt(23), + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("AccountAfterFirstLevel", trieModifications, statedb) + + oracle.NodeUrl = oracle.RemoteUrl +} + +// Account leaf in first level in C proof, placeholder leaf in S proof. No storage proof. +func TestAccountInFirstLevel(t *testing.T) { + SkipIfNoGeth(t) + // geth --dev --http --ipcpath ~/Library/Ethereum/geth.ipc + oracle.NodeUrl = oracle.LocalUrl + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + i := 21 + h := fmt.Sprintf("0x%d", i) + addr := common.HexToAddress(h) + + trieMod := TrieModification{ + Type: NonceChanged, + Balance: big.NewInt(23), + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitnessSpecial("AccountInFirstLevel", trieModifications, statedb, 1) + + oracle.NodeUrl = oracle.RemoteUrl +} + +func TestAccountExtensionInFirstLevel(t *testing.T) { + SkipIfNoGeth(t) + // geth --dev --http --ipcpath ~/Library/Ethereum/geth.ipc + oracle.NodeUrl = oracle.LocalUrl + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + h := fmt.Sprintf("0xa21%d", 0) + addr := common.HexToAddress(h) + found := false + for i := 0; i < 100000; i++ { + h := fmt.Sprintf("0xa21%d", i) + addr = common.HexToAddress(h) + + statedb.CreateAccount(addr) + statedb.IntermediateRoot(false) + + oracle.PrefetchAccount(statedb.Db.BlockNumber, addr, nil) + proof1, _, _, _, err := statedb.GetProof(addr) + check(err) + + for j := 0; j < len(proof1)-1; j++ { + if proof1[j][0] < 248 { // searching extension node + found = true + } + } + + if found { + break + } + } + + trieMod := TrieModification{ + Type: NonceChanged, + Balance: big.NewInt(23), + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitnessSpecial("AccountExtensionInFirstLevel", trieModifications, statedb, 5) + + oracle.NodeUrl = oracle.RemoteUrl +} + +func TestAccountBranchPlaceholder(t *testing.T) { + SkipIfNoGeth(t) + // geth --dev --http --ipcpath ~/Library/Ethereum/geth.ipc + oracle.NodeUrl = oracle.LocalUrl + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + h := fmt.Sprintf("0xab%d", 0) + addr := common.HexToAddress(h) + // Implicitly create account such that the account from the first level will be + // replaced by a branch. + trieMod := TrieModification{ + Type: NonceChanged, + Balance: big.NewInt(23), + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("AccountBranchPlaceholder", trieModifications, statedb) + + oracle.NodeUrl = oracle.RemoteUrl +} + +func TestAccountBranchPlaceholderInFirstLevel(t *testing.T) { + SkipIfNoGeth(t) + // geth --dev --http --ipcpath ~/Library/Ethereum/geth.ipc + oracle.NodeUrl = oracle.LocalUrl + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + /* + for i := 0; i < 100000; i++ { + h := fmt.Sprintf("0xa21%d", i) + addr := common.HexToAddress(h) + + oracle.PrefetchAccount(statedb.Db.BlockNumber, addr, nil) + proof1, _, _, _, err := statedb.GetProof(addr) + check(err) + + statedb.CreateAccount(addr) + statedb.IntermediateRoot(false) + + // addrHash1 := crypto.Keccak256Hash(addr.Bytes()) + // addrHash1[31] = (addrHash1[31] + 1) % 255 // just some change + + // oracle.PrefetchAccount(statedb.Db.BlockNumber, addr1, nil) + // proof11, _, _, err := statedb.GetProofByHash(common.BytesToHash(addrHash1.Bytes())) + + statedb.CreateAccount(addr) + statedb.IntermediateRoot(false) + + proof2, _, _, _, err := statedb.GetProof(addr) + check(err) + if len(proof1) + 1 == len(proof2) && len(proof1) == 1 { + elems, _, err := rlp.SplitList(proof1[len(proof1)-1]) + if err != nil { + fmt.Println("decode error", err) + } + switch c, _ := rlp.CountValues(elems); c { + case 2: + fmt.Println("2") + case 17: + default: + fmt.Println("invalid number of list elements") + } + } + } + */ + + h := fmt.Sprintf("0xab%d", 0) + addr := common.HexToAddress(h) + // Implicitly create account such that the account from the first level will be + // replaced by a branch. + trieMod := TrieModification{ + Type: BalanceChanged, + Balance: big.NewInt(23), + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitnessSpecial("AccountBranchPlaceholderInFirstLevel", trieModifications, statedb, 3) // don't use the same number as in the test above + + oracle.NodeUrl = oracle.RemoteUrl +} + +func TestStorageInFirstAccountInFirstLevel(t *testing.T) { + SkipIfNoGeth(t) + // geth --dev --http --ipcpath ~/Library/Ethereum/geth.ipc + oracle.NodeUrl = oracle.LocalUrl + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + i := 21 + h := fmt.Sprintf("0x%d", i) + addr := common.HexToAddress(h) + + trieMod := TrieModification{ + Type: StorageChanged, + Key: common.HexToHash("0x12"), + Value: common.BigToHash(big.NewInt(int64(17))), + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitnessSpecial("StorageInFirstAccountInFirstLevel", trieModifications, statedb, 1) + + oracle.NodeUrl = oracle.RemoteUrl +} + +func TestExtensionTwoNibblesInEvenLevel(t *testing.T) { + SkipIfNoGeth(t) + // geth --dev --http --ipcpath ~/Library/Ethereum/geth.ipc + oracle.NodeUrl = oracle.LocalUrl + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + h := fmt.Sprintf("0xa21%d", 0) + addr := common.HexToAddress(h) + found := false + for i := 0; i < 100000; i++ { + h := fmt.Sprintf("0xa21%d", i) + addr = common.HexToAddress(h) + + statedb.CreateAccount(addr) + statedb.IntermediateRoot(false) + + oracle.PrefetchAccount(statedb.Db.BlockNumber, addr, nil) + proof1, _, _, _, err := statedb.GetProof(addr) + check(err) + + for j := 0; j < len(proof1)-1; j++ { + if proof1[j][0] == 228 && proof1[j][1] == 130 && j%2 == 0 { + fmt.Println(proof1[j]) + found = true + } + } + + if found { + break + } + } + + trieMod := TrieModification{ + Type: NonceChanged, + Nonce: 33, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("AccountExtensionTwoNibblesInEvenLevel", trieModifications, statedb) + + oracle.NodeUrl = oracle.RemoteUrl +} + +func TestExtensionThreeNibblesInEvenLevel(t *testing.T) { + SkipIfNoGeth(t) + // geth --dev --http --ipcpath ~/Library/Ethereum/geth.ipc + oracle.NodeUrl = oracle.LocalUrl + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + h := fmt.Sprintf("0xa21%d", 0) + addr := common.HexToAddress(h) + found := false + for i := 0; i < 100000; i++ { + h := fmt.Sprintf("0xa21%d", i) + addr = common.HexToAddress(h) + + statedb.CreateAccount(addr) + statedb.IntermediateRoot(false) + + oracle.PrefetchAccount(statedb.Db.BlockNumber, addr, nil) + proof1, _, _, _, err := statedb.GetProof(addr) + check(err) + + for j := 0; j < len(proof1)-1; j++ { + if proof1[j][0] == 228 && proof1[j][1] == 130 && j%2 == 1 { + fmt.Println(proof1[j]) + found = true + } + } + + if found { + break + } + } + + trieMod := TrieModification{ + Type: NonceChanged, + Nonce: 33, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("AccountExtensionThreeNibblesInEvenLevel", trieModifications, statedb) + + oracle.NodeUrl = oracle.RemoteUrl +} + +func TestExtensionThreeNibblesInOddLevel(t *testing.T) { + SkipIfNoGeth(t) + // geth --dev --http --ipcpath ~/Library/Ethereum/geth.ipc + oracle.NodeUrl = oracle.LocalUrl + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + h := fmt.Sprintf("0xa21%d", 0) + addr := common.HexToAddress(h) + found := false + for i := 0; i < 100000; i++ { + h := fmt.Sprintf("0xa21%d", i) + addr = common.HexToAddress(h) + + statedb.CreateAccount(addr) + statedb.IntermediateRoot(false) + + oracle.PrefetchAccount(statedb.Db.BlockNumber, addr, nil) + proof1, _, _, _, err := statedb.GetProof(addr) + check(err) + + for j := 0; j < len(proof1)-1; j++ { + if proof1[j][0] == 228 && proof1[j][1] == 130 && proof1[j][2] != 0 && j%2 == 0 { + fmt.Println(proof1[j]) + found = true + } + } + + if found { + break + } + } + + trieMod := TrieModification{ + Type: NonceChanged, + Nonce: 33, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("AccountExtensionThreeNibblesInOddLevel", trieModifications, statedb) + + oracle.NodeUrl = oracle.RemoteUrl +} + +func TestStorageInFirstLevelNonExisting(t *testing.T) { + SkipIfNoGeth(t) + // geth --dev --http --ipcpath ~/Library/Ethereum/geth.ipc + oracle.NodeUrl = oracle.LocalUrl + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + i := 21 + h := fmt.Sprintf("0x%d", i) + addr := common.HexToAddress(h) + + val1 := common.BigToHash(big.NewInt(int64(1))) + statedb.SetState(addr, common.HexToHash("0x11"), val1) + statedb.IntermediateRoot(false) + + trieMod := TrieModification{ + Type: StorageDoesNotExist, + Key: common.HexToHash("0x12"), + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("StorageInFirstLevelNonExisting", trieModifications, statedb) + + oracle.NodeUrl = oracle.RemoteUrl +} + +func TestStorageInFirstLevelNonExistingLong(t *testing.T) { + SkipIfNoGeth(t) + // geth --dev --http --ipcpath ~/Library/Ethereum/geth.ipc + oracle.NodeUrl = oracle.LocalUrl + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + i := 21 + h := fmt.Sprintf("0x%d", i) + addr := common.HexToAddress(h) + + v1 := common.FromHex("0xbbefaa12580138bc263c95757826df4e24eb81c9aaaaaaaaaaaaaaaaaaaaaaaa") + val1 := common.BytesToHash(v1) + statedb.SetState(addr, common.HexToHash("0x11"), val1) + statedb.IntermediateRoot(false) + + trieMod := TrieModification{ + Type: StorageDoesNotExist, + Key: common.HexToHash("0x12"), + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("StorageInFirstLevelNonExistingLong", trieModifications, statedb) + + oracle.NodeUrl = oracle.RemoteUrl +} + +func ExtNodeInserted(key1, key2, key3 common.Hash, testName string) { + oracle.NodeUrl = oracle.LocalUrl + + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x50efbf12580138bc623c95757286df4e24eb81c9") + + statedb.DisableLoadingRemoteAccounts() + statedb.CreateAccount(addr) + oracle.PreventHashingInSecureTrie = true // to store the unchanged key + + // make the value long to have a hashed branch + v1 := common.FromHex("0xbbefaa12580138bc263c95757826df4e24eb81c9aaaaaaaaaaaaaaaaaaaaaaaa") + val1 := common.BytesToHash(v1) + statedb.SetState(addr, key1, val1) + + statedb.SetState(addr, key2, val1) + statedb.IntermediateRoot(false) + + v1 = common.FromHex("0xbb") + val := common.BytesToHash(v1) + trieMod := TrieModification{ + Type: StorageChanged, + Key: key3, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness(testName, trieModifications, statedb) + + oracle.PreventHashingInSecureTrie = false +} + +func ExtNodeDeleted(key1, key2, key3 common.Hash, testName string) { + oracle.NodeUrl = oracle.LocalUrl + + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x50efbf12580138bc623c95757286df4e24eb81c9") + + statedb.DisableLoadingRemoteAccounts() + statedb.CreateAccount(addr) + oracle.PreventHashingInSecureTrie = true // to store the unchanged key + + // make the value long to have a hashed branch + v1 := common.FromHex("0xbbefaa12580138bc263c95757826df4e24eb81c9aaaaaaaaaaaaaaaaaaaaaaaa") + val1 := common.BytesToHash(v1) + statedb.SetState(addr, key1, val1) + statedb.SetState(addr, key2, val1) + statedb.SetState(addr, key3, val1) + + statedb.IntermediateRoot(false) + + val := common.Hash{} // empty value deletes the key + trieMod := TrieModification{ + Type: StorageChanged, + Key: key3, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness(testName, trieModifications, statedb) + + oracle.PreventHashingInSecureTrie = false +} + +func TestExtNodeInsertedBefore6After1FirstLevel(t *testing.T) { + t.Skip("To be fixed") + key1 := common.HexToHash("0x1234561000000000000000000000000000000000000000000000000000000000") + // key1 bytes: [1 * 16 + 2, 3 * 16 + 4, 5 * 16 + 6, 1 * 16, 0, ..., 0] + + key2 := common.HexToHash("0x1234563000000000000000000000000000000000000000000000000000000000") + // key2 bytes: [1 * 16 + 2, 3 * 16 + 4, 5 * 16 + 6, 3 * 16, 0, ..., 0] + // We now have an extension node with nibbles: [1, 2, 3, 4, 5, 6]. + + // The branch will be inserted at 0x1234, it will have nodes at 4 and 5: + key3 := common.HexToHash("0x1234400000000000000000000000000000000000000000000000000000000000") + + ExtNodeInserted(key1, key2, key3, "ExtNodeInsertedBefore6After1FirstLevel") +} + +/* +func TestExtNodeDeletedBefore6After1FirstLevel(t *testing.T) { + key1 := common.HexToHash("0x1234561000000000000000000000000000000000000000000000000000000000") + // key1 bytes: [1 * 16 + 2, 3 * 16 + 4, 5 * 16 + 6, 1 * 16, 0, ..., 0] + + key2 := common.HexToHash("0x1234563000000000000000000000000000000000000000000000000000000000") + // key2 bytes: [1 * 16 + 2, 3 * 16 + 4, 5 * 16 + 6, 3 * 16, 0, ..., 0] + // We now have an extension node with nibbles: [1, 2, 3, 4, 5, 6]. + + key3 := common.HexToHash("0x1234400000000000000000000000000000000000000000000000000000000000") + + ExtNodeDeleted(key1, key2, key3, "ExtNodeDeletedBefore6After1FirstLevel") +} + +func TestExtNodeInsertedBefore6After2FirstLevel(t *testing.T) { + key1 := common.HexToHash("0x1234561000000000000000000000000000000000000000000000000000000000") + // key1 bytes: [1 * 16 + 2, 3 * 16 + 4, 5 * 16 + 6, 1 * 16, 0, ..., 0] + + key2 := common.HexToHash("0x1234563000000000000000000000000000000000000000000000000000000000") + // key2 bytes: [1 * 16 + 2, 3 * 16 + 4, 5 * 16 + 6, 3 * 16, 0, ..., 0] + + key3 := common.HexToHash("0x1235400000000000000000000000000000000000000000000000000000000000") + // key3 bytes: [1 * 16 + 2, 3 * 16 + 5, 4 * 16 + 0, 0, ..., 0] + + ExtNodeInserted(key1, key2, key3, "ExtNodeInsertedBefore6After2FirstLevel") +} + +func TestExtNodeInsertedBefore6After4FirstLevel(t *testing.T) { + key1 := common.HexToHash("0x1234561000000000000000000000000000000000000000000000000000000000") + // key1 bytes: [1 * 16 + 2, 3 * 16 + 4, 5 * 16 + 6, 1 * 16, 0, ..., 0] + + key2 := common.HexToHash("0x1234563000000000000000000000000000000000000000000000000000000000") + // key2 bytes: [1 * 16 + 2, 3 * 16 + 4, 5 * 16 + 6, 3 * 16, 0, ..., 0] + + key3 := common.HexToHash("0x1635400000000000000000000000000000000000000000000000000000000000") + + ExtNodeInserted(key1, key2, key3, "ExtNodeInsertedBefore6After4FirstLevel") +} + +func TestExtNodeInsertedBefore5After3FirstLevel(t *testing.T) { + key1 := common.HexToHash("0x2345610000000000000000000000000000000000000000000000000000000000") + key2 := common.HexToHash("0x2345630000000000000000000000000000000000000000000000000000000000") + key3 := common.HexToHash("0x2635400000000000000000000000000000000000000000000000000000000000") + + ExtNodeInserted(key1, key2, key3, "ExtNodeInsertedBefore5After3FirstLevel") +} + +func TestExtNodeInsertedBefore5After2FirstLevel(t *testing.T) { + key1 := common.HexToHash("0x2345610000000000000000000000000000000000000000000000000000000000") + key2 := common.HexToHash("0x2345630000000000000000000000000000000000000000000000000000000000") + key3 := common.HexToHash("0x2335400000000000000000000000000000000000000000000000000000000000") + + ExtNodeInserted(key1, key2, key3, "ExtNodeInsertedBefore5After2FirstLevel") +} + +func TestExtNodeInsertedBefore5After1FirstLevel(t *testing.T) { + key1 := common.HexToHash("0x2345610000000000000000000000000000000000000000000000000000000000") + key2 := common.HexToHash("0x2345630000000000000000000000000000000000000000000000000000000000") + key3 := common.HexToHash("0x2343540000000000000000000000000000000000000000000000000000000000") + + ExtNodeInserted(key1, key2, key3, "ExtNodeInsertedBefore5After1FirstLevel") +} + +func TestExtNodeInsertedBefore4After1(t *testing.T) { + oracle.NodeUrl = oracle.LocalUrl + + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x50efbf12580138bc623c95757286df4e24eb81c9") + + statedb.DisableLoadingRemoteAccounts() + + statedb.CreateAccount(addr) + + oracle.PreventHashingInSecureTrie = true // to store the unchanged key + + val0 := common.BigToHash(big.NewInt(int64(1))) + key0 := common.HexToHash("0x1000000000000000000000000000000000000000000000000000000000000000") + statedb.SetState(addr, key0, val0) + + key00 := common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000") + statedb.SetState(addr, key00, val0) + + key1 := common.HexToHash("0x1234561000000000000000000000000000000000000000000000000000000000") + // key1 bytes: [1 * 16 + 2, 3 * 16 + 4, 5 * 16 + 6, 1 * 16, 0, ..., 0] + + // make the value long to have a hashed branch + v1 := common.FromHex("0xbbefaa12580138bc263c95757826df4e24eb81c9aaaaaaaaaaaaaaaaaaaaaaaa") + val1 := common.BytesToHash(v1) + // val1 := common.BigToHash(big.NewInt(int64(1))) + statedb.SetState(addr, key1, val1) + + key2 := common.HexToHash("0x1234563000000000000000000000000000000000000000000000000000000000") + // key2 bytes: [1 * 16 + 2, 3 * 16 + 4, 5 * 16 + 6, 3 * 16, 0, ..., 0] + + // We now have an extension node with nibbles: [3, 4, 5, 6]. + + statedb.SetState(addr, key2, val1) + statedb.IntermediateRoot(false) + + key3 := common.HexToHash("0x1234400000000000000000000000000000000000000000000000000000000000") + // After adding key3 we will have an extension node with nibbles [3, 4] + // and another one with nibbles [5, 6]. + + v1 = common.FromHex("0xbb") + val := common.BytesToHash(v1) + trieMod := TrieModification{ + Type: StorageMod, + Key: key3, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("ExtNodeInsertedBefore4After1", trieModifications, statedb) + + oracle.PreventHashingInSecureTrie = false +} + +func TestExtNodeDeletedBefore4After1(t *testing.T) { + oracle.NodeUrl = oracle.LocalUrl + + blockNum := 0 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + addr := common.HexToAddress("0x50efbf12580138bc623c95757286df4e24eb81c9") + + statedb.DisableLoadingRemoteAccounts() + + statedb.CreateAccount(addr) + + oracle.PreventHashingInSecureTrie = true // to store the unchanged key + + val0 := common.BigToHash(big.NewInt(int64(1))) + key0 := common.HexToHash("0x1000000000000000000000000000000000000000000000000000000000000000") + statedb.SetState(addr, key0, val0) + + key00 := common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000") + statedb.SetState(addr, key00, val0) + + key1 := common.HexToHash("0x1234561000000000000000000000000000000000000000000000000000000000") + + // make the value long to have a hashed branch + v1 := common.FromHex("0xbbefaa12580138bc263c95757826df4e24eb81c9aaaaaaaaaaaaaaaaaaaaaaaa") + val1 := common.BytesToHash(v1) + statedb.SetState(addr, key1, val1) + + key2 := common.HexToHash("0x1234563000000000000000000000000000000000000000000000000000000000") + statedb.SetState(addr, key2, val1) + + key3 := common.HexToHash("0x1234400000000000000000000000000000000000000000000000000000000000") + statedb.SetState(addr, key3, val1) + statedb.IntermediateRoot(false) + + val := common.Hash{} // empty value deletes the key + trieMod := TrieModification{ + Type: StorageMod, + Key: key3, + Value: val, + Address: addr, + } + trieModifications := []TrieModification{trieMod} + + prepareWitness("ExtNodeDeletedBefore4After1", trieModifications, statedb) + + oracle.PreventHashingInSecureTrie = false +} + +func TestExtNodeInNewBranchFirstLevel(t *testing.T) { + key1 := common.HexToHash("0x2345610000000000000000000000000000000000000000000000000000000000") + key2 := common.HexToHash("0x2345630000000000000000000000000000000000000000000000000000000000") + key3 := common.HexToHash("0x6354000000000000000000000000000000000000000000000000000000000000") + + ExtNodeInserted(key1, key2, key3, "ExtNodeInsertedInNewBranchFirstLevel") +} + +func TestExtNodeDeletedBranchDeletedFirstLevel(t *testing.T) { + key1 := common.HexToHash("0x2345610000000000000000000000000000000000000000000000000000000000") + key2 := common.HexToHash("0x2345630000000000000000000000000000000000000000000000000000000000") + key3 := common.HexToHash("0x6354000000000000000000000000000000000000000000000000000000000000") + + ExtNodeDeleted(key1, key2, key3, "ExtNodeDeletedBranchDeletedFirstLevel") +} + +func TestExtNodeInsertedExtShortIsBranchFirstLevel(t *testing.T) { + key1 := common.HexToHash("0x2345610000000000000000000000000000000000000000000000000000000000") + key2 := common.HexToHash("0x2345630000000000000000000000000000000000000000000000000000000000") + key3 := common.HexToHash("0x2345100000000000000000000000000000000000000000000000000000000000") + + ExtNodeInserted(key1, key2, key3, "ExtNodeInsertedExtShortIsBranchFirstLevel") +} + +func TestExtNodeDeletedExtShortIsBranchFirstLevel(t *testing.T) { + key1 := common.HexToHash("0x2345610000000000000000000000000000000000000000000000000000000000") + key2 := common.HexToHash("0x2345630000000000000000000000000000000000000000000000000000000000") + key3 := common.HexToHash("0x2345100000000000000000000000000000000000000000000000000000000000") + + ExtNodeDeleted(key1, key2, key3, "ExtNodeInsertedExtShortIsBranchFirstLevel") +} +*/ diff --git a/mpt-witness-generator/witness/gen_witness_transactions_test.go b/mpt-witness-generator/witness/gen_witness_transactions_test.go new file mode 100644 index 0000000000..442885246c --- /dev/null +++ b/mpt-witness-generator/witness/gen_witness_transactions_test.go @@ -0,0 +1,101 @@ +package witness + +import ( + "fmt" + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/math" + "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/rlp" + "github.com/privacy-scaling-explorations/mpt-witness-generator/trie" + "github.com/privacy-scaling-explorations/mpt-witness-generator/types" +) + +func createTransaction(ind int) *types.Transaction { + key, _ := crypto.GenerateKey() + signer := types.LatestSigner(params.TestChainConfig) + + amount := math.BigPow(2, int64(ind)) + price := big.NewInt(300000) + data := make([]byte, 100) + tx := types.NewTransaction(uint64(ind), common.Address{}, amount, 123457, price, data) + signedTx, err := types.SignTx(tx, signer, key) + if err != nil { + panic(err) + } + + return signedTx +} + +func TestTransactions(t *testing.T) { + t.Skip("failing test") + txs := make([]*types.Transaction, 70) + key, _ := crypto.GenerateKey() + signer := types.LatestSigner(params.TestChainConfig) + + for i := range txs { + amount := math.BigPow(2, int64(i)) + price := big.NewInt(300000) + data := make([]byte, 100) + tx := types.NewTransaction(uint64(i), common.Address{}, amount, 123457, price, data) + signedTx, err := types.SignTx(tx, signer, key) + if err != nil { + panic(err) + } + txs[i] = signedTx + } + + db := rawdb.NewMemoryDatabase() + stackTrie := trie.NewStackTrie(db) + + stackTrie.UpdateAndGetProofs(db, types.Transactions(txs)) + + /* + rowsTransactions, toBeHashedAcc, _ := + convertProofToWitness(statedb, addr, accountProof, accountProof1, aExtNibbles1, aExtNibbles2, accountAddr, aNode, true, tMod.Type == NonExistingAccount, false, isShorterProofLastLeaf) + */ + + fmt.Println("===") +} + +// No update for each step, just final proof. +func TestGetProof(t *testing.T) { + txs := make([]*types.Transaction, 70) + key, _ := crypto.GenerateKey() + signer := types.LatestSigner(params.TestChainConfig) + + for i := range txs { + amount := math.BigPow(2, int64(i)) + price := big.NewInt(300000) + data := make([]byte, 100) + tx := types.NewTransaction(uint64(i), common.Address{}, amount, 123457, price, data) + signedTx, err := types.SignTx(tx, signer, key) + if err != nil { + panic(err) + } + txs[i] = signedTx + } + + db := rawdb.NewMemoryDatabase() + stackTrie := trie.NewStackTrie(db) + + // Update the trie with transactions: + types.DeriveSha(types.Transactions(txs), stackTrie) + + var indexBuf []byte + indexBuf = rlp.AppendUint64(indexBuf[:0], uint64(1)) + + proofS, err := stackTrie.GetProof(db, indexBuf) + if err != nil { + fmt.Println(err) + return + } + + fmt.Println(proofS) + + fmt.Println("===") +} diff --git a/mpt-witness-generator/witness/leaf.go b/mpt-witness-generator/witness/leaf.go new file mode 100644 index 0000000000..39f36be95e --- /dev/null +++ b/mpt-witness-generator/witness/leaf.go @@ -0,0 +1,561 @@ +package witness + +import ( + "math" + + "github.com/ethereum/go-ethereum/common" + "github.com/privacy-scaling-explorations/mpt-witness-generator/trie" +) + +func prepareEmptyNonExistingStorageRow() []byte { + // nonExistingStorageRow is used only for proof that nothing is stored at a particular storage key + nonExistingStorageRow := make([]byte, valueLen) + + return nonExistingStorageRow +} + +func prepareNonExistingStorageRow(leafC, keyNibbles []byte, noLeaf bool) ([]byte, []byte) { + // nonExistingStorageRow is used only for proof that nothing is stored at a particular storage key + nonExistingStorageRow := prepareEmptyNonExistingStorageRow() + + var wrongRlpBytes []byte + wrongRlpBytes = append(wrongRlpBytes, leafC[0]) + start := 2 + if leafC[0] == 248 { + start = 3 + wrongRlpBytes = append(wrongRlpBytes, leafC[1]) + } + keyLenC := int(leafC[start-1]) - 128 + keyRowC := make([]byte, valueLen) + for i := 0; i < keyLenC; i++ { + keyRowC[i] = leafC[start-1+i] + } + + offset := 0 + nibblesNum := (keyLenC - 1) * 2 + + nonExistingStorageRow[0] = leafC[start-1] + if keyRowC[1] != 32 { // odd number of nibbles + nibblesNum = nibblesNum + 1 + nonExistingStorageRow[1] = keyNibbles[64-nibblesNum] + 48 + offset = 1 + } else { + nonExistingStorageRow[1] = 32 + } + // Get the last nibblesNum of address: + remainingNibbles := keyNibbles[64-nibblesNum : 64] // exclude the last one as it is not a nibble + for i := 0; i < keyLenC-1; i++ { + nonExistingStorageRow[2+i] = remainingNibbles[2*i+offset]*16 + remainingNibbles[2*i+1+offset] + } + + return wrongRlpBytes, nonExistingStorageRow +} + +func getNonceBalanceValue(leaf []byte, keyLen int) ([]byte, []byte, int) { + nonceStart := 3 + keyLen + 1 + 1 + 1 + 1 + + var nonceRlpLen byte + var balanceStart int + var nonce []byte + + // If the first nonce byte is > 128, it means it presents (nonce_len - 128), + // if the first nonce byte is <= 128, the actual nonce value is < 128 and is exactly this first byte + // (however, when nonce = 0, the actual value that is stored is 128) + if leaf[nonceStart] <= 128 { + // only one nonce byte + nonceRlpLen = 1 + nonce = leaf[nonceStart : nonceStart+int(nonceRlpLen)] + balanceStart = nonceStart + int(nonceRlpLen) + } else { + nonceRlpLen = leaf[nonceStart] - 128 + nonce = leaf[nonceStart : nonceStart+int(nonceRlpLen)+1] + balanceStart = nonceStart + int(nonceRlpLen) + 1 + } + + var balanceRlpLen byte + var storageStart int + if leaf[balanceStart] <= 128 { + // only one balance byte + balanceRlpLen = 1 + storageStart = balanceStart + int(balanceRlpLen) + } else { + balanceRlpLen = leaf[balanceStart] - 128 + storageStart = balanceStart + int(balanceRlpLen) + 1 + } + + nonceVal := make([]byte, valueLen) + balanceVal := make([]byte, valueLen) + copy(nonceVal, nonce) + var balance []byte + if balanceRlpLen == 1 { + balance = leaf[balanceStart : balanceStart+int(balanceRlpLen)] + } else { + balance = leaf[balanceStart : balanceStart+int(balanceRlpLen)+1] + } + copy(balanceVal, balance) + + return nonceVal, balanceVal, storageStart +} + +func getStorageRootCodeHashValue(leaf []byte, storageStart int) ([]byte, []byte) { + storageRootValue := make([]byte, valueLen) + codeHashValue := make([]byte, valueLen) + storageRlpLen := leaf[storageStart] - 128 + if storageRlpLen != 32 { + panic("Account leaf RLP 3") + } + storage := leaf[storageStart : storageStart+32+1] + for i := 0; i < 33; i++ { + storageRootValue[i] = storage[i] + } + codeHashStart := storageStart + int(storageRlpLen) + 1 + codeHashRlpLen := leaf[codeHashStart] - 128 + if codeHashRlpLen != 32 { + panic("Account leaf RLP 4") + } + codeHash := leaf[codeHashStart : codeHashStart+32+1] + for i := 0; i < 33; i++ { + codeHashValue[i] = codeHash[i] + } + + return storageRootValue, codeHashValue +} + +func prepareAccountLeafNode(addr common.Address, addrh []byte, leafS, leafC, neighbourNode, addressNibbles []byte, isPlaceholder, isSModExtension, isCModExtension bool) Node { + // For non existing account proof there are two cases: + // 1. A leaf is returned that is not at the required address (wrong leaf). + // 2. A branch is returned as the last element of getProof and + // there is nil object at address position. Placeholder account leaf is added in this case. + values := make([][]byte, 12) + + keyLenS := int(leafS[2]) - 128 + keyLenC := int(leafC[2]) - 128 + keyRowS := make([]byte, valueLen) + keyRowC := make([]byte, valueLen) + + for i := 2; i < 3+keyLenS; i++ { + keyRowS[i-2] = leafS[i] + } + for i := 2; i < 3+keyLenC; i++ { + keyRowC[i-2] = leafC[i] + } + + var listRlpBytes [2][]byte + listRlpBytes[0] = make([]byte, 2) + listRlpBytes[1] = make([]byte, 2) + for i := 0; i < 2; i++ { + listRlpBytes[0][i] = leafS[i] + } + for i := 0; i < 2; i++ { + listRlpBytes[1][i] = leafC[i] + } + + var valueRlpBytes [2][]byte + valueRlpBytes[0] = make([]byte, 2) + valueRlpBytes[1] = make([]byte, 2) + + var valueListRlpBytes [2][]byte + valueListRlpBytes[0] = make([]byte, 2) + valueListRlpBytes[1] = make([]byte, 2) + + driftedRlpBytes := []byte{0} + keyDrifted := make([]byte, valueLen) + if neighbourNode != nil { + keyDrifted, _, driftedRlpBytes, _ = prepareStorageLeafInfo(neighbourNode, false, false) + } + + wrongValue := make([]byte, valueLen) + wrongRlpBytes := make([]byte, 2) + + // For non existing account proof, keyRowS (=keyRowC in this case) stores the key of + // the wrong leaf. We store the key of the required leaf (which doesn't exist) + // in nonExistingAccountRow. + + // wrongValue is used only for proof that account doesn't exist + + offset := 0 + nibblesNum := (keyLenC - 1) * 2 + wrongRlpBytes[0] = leafC[0] + wrongRlpBytes[1] = leafC[1] + wrongValue[0] = leafC[2] // length + if leafC[3] != 32 { // odd number of nibbles + nibblesNum = nibblesNum + 1 + wrongValue[1] = addressNibbles[64-nibblesNum] + 48 + offset = 1 + } else { + wrongValue[1] = 32 + } + // Get the last nibblesNum of address: + remainingNibbles := addressNibbles[64-nibblesNum : 64] // exclude the last one as it is not a nibble + for i := 0; i < keyLenC-1; i++ { + wrongValue[2+i] = remainingNibbles[2*i+offset]*16 + remainingNibbles[2*i+1+offset] + } + + rlpStringSecondPartLenS := leafS[3+keyLenS] - 183 + if rlpStringSecondPartLenS != 1 { + panic("Account leaf RLP at this position should be 1 (S)") + } + rlpStringSecondPartLenC := leafC[3+keyLenC] - 183 + if rlpStringSecondPartLenC != 1 { + panic("Account leaf RLP at this position should be 1 (C)") + } + rlpStringLenS := leafS[3+keyLenS+1] + rlpStringLenC := leafC[3+keyLenC+1] + + // [248,112,157,59,158,160,175,159,65,212,107,23,98,208,38,205,150,63,244,2,185,236,246,95,240,224,191,229,27,102,202,231,184,80,248,78 + // In this example RLP, there are first 36 bytes of a leaf. + // 157 means there are 29 bytes for key (157 - 128). + // Positions 32-35: 184, 80, 248, 78. + // 184 - 183 = 1 means length of the second part of a string. + // 80 means length of a string. + // 248 - 247 = 1 means length of the second part of a list. + // 78 means length of a list. + + rlpListSecondPartLenS := leafS[3+keyLenS+1+1] - 247 + if rlpListSecondPartLenS != 1 { + panic("Account leaf RLP 1 (S)") + } + rlpListSecondPartLenC := leafC[3+keyLenC+1+1] - 247 + if rlpListSecondPartLenC != 1 { + panic("Account leaf RLP 1 (C)") + } + + rlpListLenS := leafS[3+keyLenS+1+1+1] + if rlpStringLenS != rlpListLenS+2 { + panic("Account leaf RLP 2 (S)") + } + + rlpListLenC := leafC[3+keyLenC+1+1+1] + if rlpStringLenC != rlpListLenC+2 { + panic("Account leaf RLP 2 (C)") + } + + storageStartS := 0 + storageStartC := 0 + nonceValueS := make([]byte, valueLen) + nonceValueC := make([]byte, valueLen) + balanceValueS := make([]byte, valueLen) + balanceValueC := make([]byte, valueLen) + if !isPlaceholder { + nonceValueS, balanceValueS, storageStartS = getNonceBalanceValue(leafS, keyLenS) + nonceValueC, balanceValueC, storageStartC = getNonceBalanceValue(leafC, keyLenC) + } + + valueRlpBytes[0][0] = leafS[3+keyLenS] + valueRlpBytes[0][1] = leafS[3+keyLenS+1] + + valueRlpBytes[1][0] = leafC[3+keyLenC] + valueRlpBytes[1][1] = leafC[3+keyLenC+1] + + valueListRlpBytes[0][0] = leafS[3+keyLenS+1+1] + valueListRlpBytes[0][1] = leafS[3+keyLenS+1+1+1] + + valueListRlpBytes[1][0] = leafC[3+keyLenC+1+1] + valueListRlpBytes[1][1] = leafC[3+keyLenC+1+1+1] + + storageRootValueS := make([]byte, valueLen) + storageRootValueC := make([]byte, valueLen) + codeHashValueS := make([]byte, valueLen) + codeHashValueC := make([]byte, valueLen) + if !isPlaceholder { + storageRootValueS, codeHashValueS = getStorageRootCodeHashValue(leafS, storageStartS) + storageRootValueC, codeHashValueC = getStorageRootCodeHashValue(leafC, storageStartC) + } + + values[AccountKeyS] = keyRowS + values[AccountKeyC] = keyRowC + values[AccountNonceS] = nonceValueS + values[AccountBalanceS] = balanceValueS + values[AccountStorageS] = storageRootValueS + values[AccountCodehashS] = codeHashValueS + values[AccountNonceC] = nonceValueC + values[AccountBalanceC] = balanceValueC + values[AccountStorageC] = storageRootValueC + values[AccountCodehashC] = codeHashValueC + values[AccountDrifted] = keyDrifted + values[AccountWrong] = wrongValue + + leaf := AccountNode{ + Address: addr, + Key: addrh, + ListRlpBytes: listRlpBytes, + ValueRlpBytes: valueRlpBytes, + ValueListRlpBytes: valueListRlpBytes, + DriftedRlpBytes: driftedRlpBytes, + WrongRlpBytes: wrongRlpBytes, + IsModExtension: [2]bool{isSModExtension, isCModExtension}, + } + keccakData := [][]byte{leafS, leafC, addr.Bytes()} + if neighbourNode != nil { + keccakData = append(keccakData, neighbourNode) + } + node := Node{ + Account: &leaf, + Values: values, + KeccakData: keccakData, + } + + return node +} + +// prepareLeafAndPlaceholderNode prepares a leaf node and its placeholder counterpart +// (used when one of the proofs does not have a leaf). +func prepareLeafAndPlaceholderNode(addr common.Address, addrh []byte, proof1, proof2 [][]byte, storage_key common.Hash, key []byte, nonExistingAccountProof, isAccountProof, isSModExtension, isCModExtension bool) Node { + len1 := len(proof1) + len2 := len(proof2) + + // We don't have a leaf in the shorter proof, but we will add it there + // as a placeholder. + if isAccountProof { + var leafS []byte + var leafC []byte + if len1 > len2 { + leafS = proof1[len1-1] + leafC = proof1[len1-1] // placeholder + } else { + leafC = proof2[len2-1] + leafS = proof2[len2-1] // placeholder + } + + // When generating a proof that account doesn't exist, the length of both proofs is the same (doesn't reach + // this code). + return prepareAccountLeafNode(addr, addrh, leafS, leafC, nil, key, false, isSModExtension, isCModExtension) + } else { + var leaf []byte + isSPlaceholder := false + isCPlaceholder := false + + if len1 > len2 { + leaf = proof1[len1-1] + isCPlaceholder = true + } else { + leaf = proof2[len2-1] + isSPlaceholder = true + } + + return prepareStorageLeafNode(leaf, leaf, nil, storage_key, key, false, isSPlaceholder, isCPlaceholder, isSModExtension, isCModExtension) + } +} + +// getLeafKeyLen returns the leaf key length given the key index (how many key nibbles have +// been used in the branches / extension nodes above the leaf). +func getLeafKeyLen(keyIndex int) int { + return int(math.Floor(float64(64-keyIndex)/float64(2))) + 1 +} + +// setStorageLeafKeyRLP sets the RLP byte that encodes key length of the storage leaf +// to correspond to the number of keys used in the branches / extension nodes above the placeholder leaf. +func setStorageLeafKeyRLP(leaf *[]byte, key []byte, keyIndex int) { + isEven := keyIndex%2 == 0 + remainingNibbles := key[keyIndex:] + keyLen := getLeafKeyLen(keyIndex) + (*leaf)[1] = byte(keyLen) + 128 + if isEven { + (*leaf)[2] = 32 + } else { + (*leaf)[2] = remainingNibbles[0] + 48 + } +} + +func prepareAccountLeafPlaceholderNode(addr common.Address, addrh, key []byte, keyIndex int) Node { + isEven := keyIndex%2 == 0 + keyLen := int(math.Floor(float64(64-keyIndex)/float64(2))) + 1 + remainingNibbles := key[keyIndex:] + offset := 0 + leaf := make([]byte, rowLen) + leaf[0] = 248 + leaf[1] = byte(keyLen) + 73 + leaf[2] = byte(keyLen) + 128 + leaf[3+keyLen] = 184 + leaf[3+keyLen+1+1] = 248 + leaf[3+keyLen+1+1+1] = leaf[3+keyLen+1] - 2 + if isEven { + leaf[3] = 32 + } else { + leaf[3] = remainingNibbles[0] + 48 + offset = 1 + } + for i := 0; i < keyLen-1; i++ { + leaf[4+i] = remainingNibbles[2*i+offset]*16 + remainingNibbles[2*i+1+offset] + } + + node := prepareAccountLeafNode(addr, addrh, leaf, leaf, nil, key, true, false, false) + + node.Account.ValueRlpBytes[0][0] = 184 + node.Account.ValueRlpBytes[0][1] = 70 + node.Account.ValueRlpBytes[1][0] = 184 + node.Account.ValueRlpBytes[1][1] = 70 + + node.Account.ValueListRlpBytes[0][0] = 248 + node.Account.ValueListRlpBytes[0][1] = 68 + node.Account.ValueListRlpBytes[1][0] = 248 + node.Account.ValueListRlpBytes[1][1] = 68 + + node.Values[AccountStorageS][0] = 160 + node.Values[AccountStorageC][0] = 160 + node.Values[AccountCodehashS][0] = 160 + node.Values[AccountCodehashC][0] = 160 + + return node +} + +func prepareStorageLeafPlaceholderNode(storage_key common.Hash, key []byte, keyIndex int) Node { + leaf := make([]byte, rowLen) + setStorageLeafKeyRLP(&leaf, key, keyIndex) + keyLen := getLeafKeyLen(keyIndex) + leaf[0] = 192 + 1 + byte(keyLen) + 1 + + return prepareStorageLeafNode(leaf, leaf, nil, storage_key, key, false, true, true, false, false) +} + +func prepareStorageLeafInfo(row []byte, valueIsZero, isPlaceholder bool) ([]byte, []byte, []byte, []byte) { + var keyRlp []byte + var valueRlp []byte + + var keyRlpLen byte + var valueRlpLen byte + + key := make([]byte, valueLen) + value := make([]byte, valueLen) + + var setValue = func(keyLen, offset byte) { + if !isPlaceholder { + valueRlp = row[keyLen+offset : keyLen+offset+valueRlpLen] + if !valueIsZero { + copy(value, row[keyLen+offset+valueRlpLen:]) + } + } else { + valueRlp = []byte{0} + } + } + + if len(row) < 32 { // the node doesn't get hashed in this case + // 192 + 32 = 224 + if row[1] < 128 { + // last level: [194,32,1] + // or + // only one nibble in a leaf (as soon as the leaf has two nibbles, row[1] will have 128 + length) + // [194,48,1] - this one contains nibble 0 = 48 - 48 + keyRlpLen = 1 + keyLen := byte(1) + keyRlp = row[:keyRlpLen] + copy(key, row[keyRlpLen:keyLen+1]) + valueRlpLen = 1 + offset := byte(1) + // If placeholder, we leave the value to be 0. + setValue(keyLen, offset) + } else { + // [196,130,32,0,1] + /* + keyLen := row[1] - 128 + copy(key, row[:keyLen+2]) + copy(value, row[keyLen+2:]) + */ + keyRlpLen = 1 + keyLen := row[1] - 128 + keyRlp = row[:keyRlpLen] + copy(key, row[keyRlpLen:keyLen+2]) + valueRlpLen = 1 + offset := byte(2) + // If placeholder, we leave the value to be 0. + setValue(keyLen, offset) + } + } else if row[0] == 248 { + // [248,67,160,59,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,161,160,... + keyRlpLen = 2 + keyLen := row[2] - 128 + keyRlp = row[:keyRlpLen] + copy(key, row[keyRlpLen:keyLen+3]) + valueRlpLen = 1 + offset := byte(3) + // there are two RLP meta data bytes which are put in s_rlp1 and s_rlp2, + // value starts in s_advices[0] + setValue(keyLen, offset) + } else { + if row[1] < 128 { + // last level: + // [227,32,161,160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170] + // one nibble: + // [227,48,161,160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170] + key[0] = row[0] + key[1] = row[1] + keyLen := byte(2) + offset := byte(0) + valueRlpLen = 1 + // If placeholder, we leave the value to be 0. + setValue(keyLen, offset) + } else { + // [226,160,59,138,106,70,105,186,37,13,38[227,32,161,160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170] + keyRlpLen = 1 + keyLen := row[1] - 128 + keyRlp = row[:keyRlpLen] + copy(key, row[keyRlpLen:keyLen+2]) + valueRlpLen = 1 + offset := byte(2) + // If placeholder, we leave the value to be 0. + setValue(keyLen, offset) + } + } + + return key, value, keyRlp, valueRlp +} + +func prepareStorageLeafNode(leafS, leafC, neighbourNode []byte, storage_key common.Hash, key []byte, nonExistingStorageProof, isSPlaceholder, isCPlaceholder, isSModExtension, isCModExtension bool) Node { + var rows [][]byte + + keyS, valueS, listRlpBytes1, valueRlpBytes1 := prepareStorageLeafInfo(leafS, false, isSPlaceholder) + + rows = append(rows, keyS) + rows = append(rows, valueS) + + keyC, valueC, listRlpBytes2, valueRlpBytes2 := prepareStorageLeafInfo(leafC, false, isCPlaceholder) + + rows = append(rows, keyC) + rows = append(rows, valueC) + + var listRlpBytes [2][]byte + listRlpBytes[0] = listRlpBytes1 + listRlpBytes[1] = listRlpBytes2 + + var valueRlpBytes [2][]byte + valueRlpBytes[0] = valueRlpBytes1 + valueRlpBytes[1] = valueRlpBytes2 + + driftedRlpBytes := []byte{0} + keyDrifted := make([]byte, valueLen) + if neighbourNode != nil { + keyDrifted, _, driftedRlpBytes, _ = prepareStorageLeafInfo(neighbourNode, false, false) + } + rows = append(rows, keyDrifted) + + var nonExistingStorageRow []byte + var wrongRlpBytes []byte + if nonExistingStorageProof { + noLeaf := false + wrongRlpBytes, nonExistingStorageRow = prepareNonExistingStorageRow(leafC, key, noLeaf) + } else { + nonExistingStorageRow = prepareEmptyNonExistingStorageRow() + } + rows = append(rows, nonExistingStorageRow) + + leaf := StorageNode{ + Address: storage_key, + Key: trie.HexToKeybytes(key), + ListRlpBytes: listRlpBytes, + DriftedRlpBytes: driftedRlpBytes, + WrongRlpBytes: wrongRlpBytes, + ValueRlpBytes: valueRlpBytes, + IsModExtension: [2]bool{isSModExtension, isCModExtension}, + } + keccakData := [][]byte{leafS, leafC, storage_key.Bytes()} + if neighbourNode != nil { + keccakData = append(keccakData, neighbourNode) + } + node := Node{ + Values: rows, + Storage: &leaf, + KeccakData: keccakData, + } + + return node +} diff --git a/mpt-witness-generator/witness/modified_extension_node.go b/mpt-witness-generator/witness/modified_extension_node.go new file mode 100644 index 0000000000..ad4d0073de --- /dev/null +++ b/mpt-witness-generator/witness/modified_extension_node.go @@ -0,0 +1,197 @@ +package witness + +import ( + "github.com/ethereum/go-ethereum/common" + "github.com/privacy-scaling-explorations/mpt-witness-generator/state" + "github.com/privacy-scaling-explorations/mpt-witness-generator/trie" +) + +// prepareModExtensionNode adds rows for a modified extension node before and after modification. +// These rows are added only when an existing extension node gets shortened or elongated (in terms +// of the extension node nibbles) because of another extension node being added or deleted. +// The rows added are somewhat exceptional as otherwise they do not appear. +func prepareModExtensionNode(statedb *state.StateDB, addr common.Address, rows *[][]byte, proof1, proof2, + extNibblesS, extNibblesC [][]byte, + key, neighbourNode []byte, + keyIndex, extensionNodeInd, numberOfNibbles int, + additionalBranch, isAccountProof, nonExistingAccountProof, + isShorterProofLastLeaf bool, branchC16, branchC1 byte, toBeHashed *[][]byte) Node { + len1 := len(proof1) + len2 := len(proof2) + + var longExtNode []byte + if len1 > len2 { + longExtNode = proof2[len2-1] + } else { + longExtNode = proof1[len1-1] + } + + var extNibbles [][]byte + if len1 > len2 { + extNibbles = extNibblesC + } else { + extNibbles = extNibblesS + } + + numberOfNibbles0, extensionRowS, extensionRowC := + prepareExtensionRows(extNibbles, extensionNodeInd, longExtNode, longExtNode, true, false) + + extNodeSelectors := make([]byte, rowLen) + setExtNodeSelectors(extNodeSelectors, longExtNode, int(numberOfNibbles0), branchC16) + extNodeSelectors = append(extNodeSelectors, 24) + + _, extListRlpBytesS, extValuesS := prepareExtensions(extNibbles, extensionNodeInd, longExtNode, longExtNode) + /* + b := []byte{249, 1, 49, 128} // We don't really need a branch info (only extension node). + longNode := prepareBranchNode(b, b, longExtNode, longExtNode, extListRlpBytes, extValues, + key[keyIndex], key[keyIndex], branchC16, branchC1, false, false, true, false, false) + */ + + var extRows [][]byte + // We need to prove the old extension node is in S proof (when ext. node inserted). + extRows = append(extRows, extNodeSelectors) + extRows = append(extRows, extensionRowS) + extRows = append(extRows, extensionRowC) + + *rows = append(*rows, extRows...) + // addForHashing(longExtNode, toBeHashed) + + // Get nibbles of the extension node that gets shortened because of the newly insertd + // extension node: + longNibbles := getExtensionNodeNibbles(longExtNode) + + ind := byte(keyIndex) + byte(numberOfNibbles) // where the old and new extension nodes start to be different + // diffNibble := oldNibbles[ind] + longExtNodeKey := make([]byte, len(key)) + copy(longExtNodeKey, key) + // We would like to retrieve the shortened extension node from the trie via GetProof or + // GetStorageProof (depending whether it is an account proof or storage proof), + // the key where we find its underlying branch is `oldExtNodeKey`. + for j := ind; int(j) < keyIndex+len(longNibbles); j++ { + // keyIndex is where the nibbles of the old and new extension node start + longExtNodeKey[j] = longNibbles[j-byte(keyIndex)] + } + + k := trie.HexToKeybytes(longExtNodeKey) + ky := common.BytesToHash(k) + var proof [][]byte + var err error + if isAccountProof { + proof, _, _, _, err = statedb.GetProof(addr) + } else { + proof, _, _, _, err = statedb.GetStorageProof(addr, ky) + } + check(err) + + // There is no short extension node when `len(longNibbles) - numberOfNibbles = 1`, in this case there + // is simply a branch instead. + shortExtNodeIsBranch := len(longNibbles)-numberOfNibbles == 1 + if shortExtNodeIsBranch { + (*rows)[len(*rows)-branchRows-9][isShortExtNodeBranch] = 1 + } + + var shortExtNode []byte + /* + extNodeSelectors1 := make([]byte, rowLen) + emptyExtRows := prepareEmptyExtensionRows(false, true) + extensionRowS1 := emptyExtRows[0] + extensionRowC1 := emptyExtRows[1] + */ + + var extListRlpBytesC []byte + var extValuesC [][]byte + + if !shortExtNodeIsBranch { + if len2 > len1 { + isItBranch := isBranch(proof[len(proof)-1]) + + // Note that `oldExtNodeKey` has nibbles properly set only up to the end of nibbles, + // this is enough to get the old extension node by `GetProof` or `GetStorageProof` - + // we will get its underlying branch, but sometimes also the leaf in a branch if + // the nibble will correspond to the leaf (we left the nibbles from + // `keyIndex + len(oldNibbles)` the same as the nibbles in the new extension node). + + if isItBranch { // last element in a proof is a branch + shortExtNode = proof[len(proof)-2] + } else { // last element in a proof is a leaf + shortExtNode = proof[len(proof)-3] + } + } else { + // Needed only for len1 > len2 + (*rows)[len(*rows)-branchRows-9][driftedPos] = longNibbles[numberOfNibbles] + + shortNibbles := longNibbles[numberOfNibbles+1:] + compact := trie.HexToCompact(shortNibbles) + longStartBranch := 2 + (longExtNode[1] - 128) // cannot be "short" in terms of having the length at position 0; TODO: extension with length at position 2 not supported (the probability very small) + + if len(shortNibbles) > 1 { + // add RLP2: + compact = append([]byte{128 + byte(len(compact))}, compact...) + } + + shortExtNode = append(compact, longExtNode[longStartBranch:]...) + + // add RLP1: + shortExtNode = append([]byte{192 + byte(len(shortExtNode))}, shortExtNode...) + } + + // Get the nibbles of the shortened extension node: + nibbles := getExtensionNodeNibbles(shortExtNode) + + // Enable `prepareExtensionRows` call: + extNibbles = append(extNibbles, nibbles) + + /* + var numberOfNibbles1 byte + numberOfNibbles1, extensionRowS1, extensionRowC1 = + prepareExtensionRows(extNibbles, extensionNodeInd + 1, shortExtNode, shortExtNode, false, true) + */ + + _, extListRlpBytesC, extValuesC = prepareExtensions(extNibbles, extensionNodeInd+1, shortExtNode, shortExtNode) + /* + shortNode = prepareBranchNode(b, b, shortExtNode, shortExtNode, extListRlpBytes, extValues, + key[keyIndex], key[keyIndex], branchC16, branchC1, false, false, true, false, false) + + setExtNodeSelectors(extNodeSelectors1, shortExtNode, int(numberOfNibbles1), branchC16) + */ + // extNodeSelectors1 = append(extNodeSelectors1, 25) + } /* else { + if len1 > len2 { + // Needed only for len1 > len2 + (*rows)[len(*rows)-branchRows-9][driftedPos] = longNibbles[numberOfNibbles] + } + + extNodeSelectors1 = append(extNodeSelectors1, 25) + } + */ + + // The shortened extension node is needed as a witness to be able to check in a circuit + // that the shortened extension node and newly added leaf (that causes newly inserted + // extension node) are the only nodes in the newly inserted extension node. + /* + *rows = append(*rows, extNodeSelectors1) + *rows = append(*rows, extensionRowS1) + *rows = append(*rows, extensionRowC1) + */ + + listRlpBytes := [2][]byte{extListRlpBytesS, extListRlpBytesC} + modExtensionNode := ModExtensionNode{ + ListRlpBytes: listRlpBytes, + } + + var values [][]byte + extValuesS = append(extValuesS[:1], extValuesS[2:]...) + extValuesC = append(extValuesC[:1], extValuesC[2:]...) + values = append(values, extValuesS...) + values = append(values, extValuesC...) + + keccakData := [][]byte{} + keccakData = append(keccakData, longExtNode) + keccakData = append(keccakData, shortExtNode) + + return Node{ + ModExtension: &modExtensionNode, + Values: values, + KeccakData: keccakData, + } +} diff --git a/mpt-witness-generator/witness/nodes.go b/mpt-witness-generator/witness/nodes.go new file mode 100644 index 0000000000..9377f99649 --- /dev/null +++ b/mpt-witness-generator/witness/nodes.go @@ -0,0 +1,199 @@ +package witness + +import ( + "fmt" + "strings" + + "github.com/ethereum/go-ethereum/common" + "github.com/privacy-scaling-explorations/mpt-witness-generator/oracle" +) + +type BranchNode struct { + ModifiedIndex int + DriftedIndex int + ListRlpBytes [2][]byte +} + +func (n *BranchNode) MarshalJSON() ([]byte, error) { + listRlpBytes1 := base64ToString(n.ListRlpBytes[0]) + listRlpBytes2 := base64ToString(n.ListRlpBytes[1]) + jsonResult := fmt.Sprintf(`{"modified_index": %d, "drifted_index": %d, "list_rlp_bytes":[%s,%s]}`, + n.ModifiedIndex, n.DriftedIndex, listRlpBytes1, listRlpBytes2) + return []byte(jsonResult), nil +} + +type ExtensionNode struct { + ListRlpBytes []byte +} + +func (n *ExtensionNode) MarshalJSON() ([]byte, error) { + listRlpBytes := base64ToString(n.ListRlpBytes) + jsonResult := fmt.Sprintf(`{"list_rlp_bytes":%s}`, listRlpBytes) + return []byte(jsonResult), nil +} + +// When marshalling, []byte encodes as a base64-encoded string. +func base64ToString(bs []byte) string { + var s string + if bs == nil { + f := make([]string, valueLen) + s = "[" + for i := 0; i < len(f); i++ { + if i != len(f)-1 { + s += "0, " + } else { + s += "0]" + } + } + } else { + s = strings.Join(strings.Fields(fmt.Sprintf("%d", bs)), ",") + } + + return s +} + +type StartNode struct { + DisablePreimageCheck bool `json:"disable_preimage_check"` + ProofType string `json:"proof_type"` +} + +type ExtensionBranchNode struct { + IsExtension bool `json:"is_extension"` + // IsModExtension = true for the extension node that gets replaced by a shorter (in terms of nibbles) + // extension node. IsModExtension is not set to true for the newly appeared extension node (nibbles + // of the extension node that caused replacement + nibbles of the newly appeared extension node = + // nibbles of the original extension node). + IsModExtension [2]bool `json:"is_mod_extension"` + IsPlaceholder [2]bool `json:"is_placeholder"` + Extension ExtensionNode `json:"extension"` + Branch BranchNode `json:"branch"` +} + +type ModExtensionNode struct { + ListRlpBytes [2][]byte +} + +func (n *ModExtensionNode) MarshalJSON() ([]byte, error) { + listRlpBytes1 := base64ToString(n.ListRlpBytes[0]) + listRlpBytes2 := base64ToString(n.ListRlpBytes[1]) + jsonResult := fmt.Sprintf(`{"list_rlp_bytes":[%s,%s]}`, listRlpBytes1, listRlpBytes2) + return []byte(jsonResult), nil +} + +type AccountNode struct { + Address common.Address + Key []byte + ListRlpBytes [2][]byte + ValueRlpBytes [2][]byte + ValueListRlpBytes [2][]byte + DriftedRlpBytes []byte + WrongRlpBytes []byte + IsModExtension [2]bool `json:"is_mod_extension"` +} + +func (n *AccountNode) MarshalJSON() ([]byte, error) { + address := base64ToString(n.Address.Bytes()) + key := base64ToString(n.Key) + listRlpBytes1 := base64ToString(n.ListRlpBytes[0]) + listRlpBytes2 := base64ToString(n.ListRlpBytes[1]) + valueRlpBytes1 := base64ToString(n.ValueRlpBytes[0]) + valueRlpBytes2 := base64ToString(n.ValueRlpBytes[1]) + valueListRlpBytes1 := base64ToString(n.ValueListRlpBytes[0]) + valueListRlpBytes2 := base64ToString(n.ValueListRlpBytes[1]) + driftedRlpBytes := base64ToString(n.DriftedRlpBytes) + wrongRlpBytes := base64ToString(n.WrongRlpBytes) + jsonResult := fmt.Sprintf(`{"address":%s, "key":%s, "list_rlp_bytes":[%s,%s], "value_rlp_bytes":[%s,%s], "value_list_rlp_bytes":[%s,%s], "drifted_rlp_bytes":%s, "wrong_rlp_bytes":%s, "is_mod_extension": [%t, %t]}`, + address, key, listRlpBytes1, listRlpBytes2, valueRlpBytes1, valueRlpBytes2, valueListRlpBytes1, valueListRlpBytes2, + driftedRlpBytes, wrongRlpBytes, n.IsModExtension[0], n.IsModExtension[1]) + return []byte(jsonResult), nil +} + +type StorageNode struct { + Address common.Hash `json:"address"` + Key []byte `json:"key"` + ListRlpBytes [2][]byte `json:"list_rlp_bytes"` + ValueRlpBytes [2][]byte `json:"value_rlp_bytes"` + DriftedRlpBytes []byte `json:"drifted_rlp_bytes"` + WrongRlpBytes []byte `json:"wrong_rlp_bytes"` + IsModExtension [2]bool `json:"is_mod_extension"` +} + +func (n *StorageNode) MarshalJSON() ([]byte, error) { + address := base64ToString(n.Address.Bytes()) + key := base64ToString(n.Key) + listRlpBytes1 := base64ToString(n.ListRlpBytes[0]) + listRlpBytes2 := base64ToString(n.ListRlpBytes[1]) + valueRlpBytes1 := base64ToString(n.ValueRlpBytes[0]) + valueRlpBytes2 := base64ToString(n.ValueRlpBytes[1]) + driftedRlpBytes := base64ToString(n.DriftedRlpBytes) + wrongRlpBytes := base64ToString(n.WrongRlpBytes) + jsonResult := fmt.Sprintf(`{"address":%s, "key":%s, "list_rlp_bytes":[%s,%s], "value_rlp_bytes":[%s,%s], "drifted_rlp_bytes":%s, "wrong_rlp_bytes":%s, "is_mod_extension": [%t, %t]}`, + address, key, listRlpBytes1, listRlpBytes2, valueRlpBytes1, valueRlpBytes2, driftedRlpBytes, wrongRlpBytes, n.IsModExtension[0], n.IsModExtension[1]) + return []byte(jsonResult), nil +} + +type JSONableValues [][]byte + +func (u JSONableValues) MarshalJSON() ([]byte, error) { + var result string + if u == nil { + result = "[]" + } else { + result = strings.Join(strings.Fields(fmt.Sprintf("%d", u)), ",") + } + return []byte(result), nil +} + +/* +Note: using pointers for fields to be null when not set (otherwise the field is set to default value +when marshalling). +*/ +type Node struct { + Start *StartNode `json:"start"` + ExtensionBranch *ExtensionBranchNode `json:"extension_branch"` + Account *AccountNode `json:"account"` + Storage *StorageNode `json:"storage"` + ModExtension *ModExtensionNode `json:"mod_extension"` + Values JSONableValues `json:"values"` + KeccakData JSONableValues `json:"keccak_data"` +} + +func GetStartNode(proofType string, sRoot, cRoot common.Hash, specialTest byte) Node { + s := StartNode{ + DisablePreimageCheck: oracle.PreventHashingInSecureTrie || specialTest == 5, + ProofType: proofType, + } + var values [][]byte + var values1 []byte + var values2 []byte + values1 = append(values1, 160) + values1 = append(values1, sRoot.Bytes()...) + values1 = append(values1, 0) + values2 = append(values2, 160) + values2 = append(values2, cRoot.Bytes()...) + values2 = append(values2, 0) + + values = append(values, values1) + values = append(values, values2) + + return Node{ + Start: &s, + Values: values, + } +} + +func GetEndNode() Node { + e := StartNode{ + DisablePreimageCheck: false, + ProofType: "Disabled", + } + + endValues1, endValues2 := make([]byte, valueLen), make([]byte, valueLen) + endValues1[0], endValues2[0] = 160, 160 + endValues := [][]byte{endValues1, endValues2} + + return Node{ + Start: &e, + Values: endValues, + } +} diff --git a/mpt-witness-generator/witness/prepare_witness.go b/mpt-witness-generator/witness/prepare_witness.go new file mode 100644 index 0000000000..f51c566412 --- /dev/null +++ b/mpt-witness-generator/witness/prepare_witness.go @@ -0,0 +1,513 @@ +package witness + +import ( + "fmt" + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/privacy-scaling-explorations/mpt-witness-generator/oracle" + "github.com/privacy-scaling-explorations/mpt-witness-generator/state" + "github.com/privacy-scaling-explorations/mpt-witness-generator/trie" +) + +const branchNodeRLPLen = 2 // we have two positions for RLP meta data +const branch2start = branchNodeRLPLen + 32 +const branchRows = 19 // 1 (init) + 16 (children) + 2 (extension S and C) + +// rowLen - each branch node has 2 positions for RLP meta data and 32 positions for hash +const rowLen = branch2start + 2 + 32 + 1 // +1 is for info about what type of row is it +const valueLen = 34 +const driftedPos = 13 +const isExtensionPos = 14 + +// extension key even or odd is about nibbles - that determines whether the first byte (not +// considering RLP bytes) is 0 or 1 (see encoding.go hexToCompact) +const isExtShortC16Pos = 21 +const isExtShortC1Pos = 22 +const isExtLongEvenC16Pos = 23 +const isExtLongEvenC1Pos = 24 +const isExtLongOddC16Pos = 25 +const isExtLongOddC1Pos = 26 + +// short/long means having one or more than one nibbles +const isSExtLongerThan55Pos = 27 +const isExtNodeSNonHashedPos = 31 + +// nibbles_counter_pos = 33, set in the assign function. +const isShortExtNodeBranch = 36 + +type AccountRowType int64 + +const ( + AccountKeyS AccountRowType = iota + AccountKeyC + AccountNonceS + AccountBalanceS + AccountStorageS + AccountCodehashS + AccountNonceC + AccountBalanceC + AccountStorageC + AccountCodehashC + AccountDrifted + AccountWrong +) + +type ProofType int64 + +const ( + Disabled ProofType = iota + NonceChanged + BalanceChanged + CodeHashChanged + AccountDestructed + AccountDoesNotExist + StorageChanged + StorageDoesNotExist + AccountCreate +) + +type TrieModification struct { + Type ProofType + Key common.Hash + Value common.Hash + Address common.Address + Nonce uint64 + Balance *big.Int + CodeHash []byte +} + +// GetWitness is to be used by external programs to generate the witness. +func GetWitness(nodeUrl string, blockNum int, trieModifications []TrieModification) []Node { + blockNumberParent := big.NewInt(int64(blockNum)) + oracle.NodeUrl = nodeUrl + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + for i := 0; i < len(trieModifications); i++ { + // TODO: remove SetState (using it now just because this particular key might + // not be set and we will obtain empty storageProof) + v := common.BigToHash(big.NewInt(int64(17))) + statedb.SetState(trieModifications[i].Address, trieModifications[i].Key, v) + // TODO: enable GetState to get the preimages - + // GetState calls GetCommittedState which calls PrefetchStorage to get the preimages + // statedb.GetState(addr, keys[i]) + } + + return obtainTwoProofsAndConvertToWitness(trieModifications, statedb, 0) +} + +func obtainAccountProofAndConvertToWitness(i int, tMod TrieModification, tModsLen int, statedb *state.StateDB, specialTest byte) []Node { + statedb.IntermediateRoot(false) + + addr := tMod.Address + addrh := crypto.Keccak256(addr.Bytes()) + accountAddr := trie.KeybytesToHex(addrh) + + // This needs to called before oracle.PrefetchAccount, otherwise oracle.PrefetchAccount + // will cache the proof and won't return it. + // Calling oracle.PrefetchAccount after statedb.SetStateObjectIfExists is needed only + // for cases when statedb.loadRemoteAccountsIntoStateObjects = false. + statedb.SetStateObjectIfExists(tMod.Address) + + oracle.PrefetchAccount(statedb.Db.BlockNumber, tMod.Address, nil) + accountProof, aNeighbourNode1, aExtNibbles1, isLastLeaf1, err := statedb.GetProof(addr) + check(err) + + var nodes []Node + + sRoot := statedb.GetTrie().Hash() + + if tMod.Type == NonceChanged { + statedb.SetNonce(addr, tMod.Nonce) + } else if tMod.Type == BalanceChanged { + statedb.SetBalance(addr, tMod.Balance) + } else if tMod.Type == CodeHashChanged { + statedb.SetCode(addr, tMod.CodeHash) + } else if tMod.Type == AccountCreate { + statedb.CreateAccount(tMod.Address) + } else if tMod.Type == AccountDestructed { + statedb.DeleteAccount(tMod.Address) + } + // No statedb change in case of AccountDoesNotExist. + + statedb.IntermediateRoot(false) + + cRoot := statedb.GetTrie().Hash() + + accountProof1, aNeighbourNode2, aExtNibbles2, isLastLeaf2, err := statedb.GetProof(addr) + check(err) + + if tMod.Type == AccountDoesNotExist && len(accountProof) == 0 { + // If there is only one account in the state trie and we want to prove for some + // other account that it doesn't exist. + // We get the root node (the only account) and put it as the only element of the proof, + // it will act as a "wrong" leaf. + account, err := statedb.GetTrieRootElement() + check(err) + accountProof = make([][]byte, 1) + accountProof[0] = account + accountProof1 = make([][]byte, 1) + accountProof1[0] = account + } + + addrh, accountAddr, accountProof, accountProof1, sRoot, cRoot = modifyAccountProofSpecialTests(addrh, accountAddr, sRoot, cRoot, accountProof, accountProof1, aNeighbourNode2, specialTest) + aNode := aNeighbourNode2 + isShorterProofLastLeaf := isLastLeaf1 + if len(accountProof) > len(accountProof1) { + // delete operation + aNode = aNeighbourNode1 + isShorterProofLastLeaf = isLastLeaf2 + } + + proofType := "NonceChanged" + if tMod.Type == BalanceChanged { + proofType = "BalanceChanged" + } else if tMod.Type == AccountDestructed { + proofType = "AccountDestructed" + } else if tMod.Type == AccountDoesNotExist { + proofType = "AccountDoesNotExist" + } else if tMod.Type == CodeHashChanged { + proofType = "CodeHashExists" // TODO: change when it changes in the circuit + } + + nodes = append(nodes, GetStartNode(proofType, sRoot, cRoot, specialTest)) + + nodesAccount := + convertProofToWitness(statedb, addr, addrh, accountProof, accountProof1, aExtNibbles1, aExtNibbles2, tMod.Key, accountAddr, aNode, true, tMod.Type == AccountDoesNotExist, false, isShorterProofLastLeaf) + nodes = append(nodes, nodesAccount...) + nodes = append(nodes, GetEndNode()) + + return nodes +} + +// obtainTwoProofsAndConvertToWitness obtains the GetProof proof before and after the modification for each +// of the modification. It then converts the two proofs into an MPT circuit witness. Witness is thus +// prepared for each of the modifications and the witnesses are chained together - the final root of +// the previous witness is the same as the start root of the current witness. +func obtainTwoProofsAndConvertToWitness(trieModifications []TrieModification, statedb *state.StateDB, specialTest byte) []Node { + statedb.IntermediateRoot(false) + var nodes []Node + + for i := 0; i < len(trieModifications); i++ { + tMod := trieModifications[i] + if tMod.Type == StorageChanged || tMod.Type == StorageDoesNotExist { + kh := crypto.Keccak256(tMod.Key.Bytes()) + if oracle.PreventHashingInSecureTrie { + kh = tMod.Key.Bytes() + } + keyHashed := trie.KeybytesToHex(kh) + + addr := tMod.Address + addrh := crypto.Keccak256(addr.Bytes()) + accountAddr := trie.KeybytesToHex(addrh) + + oracle.PrefetchAccount(statedb.Db.BlockNumber, tMod.Address, nil) + // oracle.PrefetchStorage(statedb.Db.BlockNumber, addr, tMod.Key, nil) + + if specialTest == 1 { + statedb.CreateAccount(addr) + } + + accountProof, aNeighbourNode1, aExtNibbles1, aIsLastLeaf1, err := statedb.GetProof(addr) + check(err) + storageProof, neighbourNode1, extNibbles1, isLastLeaf1, err := statedb.GetStorageProof(addr, tMod.Key) + check(err) + + sRoot := statedb.GetTrie().Hash() + + if tMod.Type == StorageChanged { + statedb.SetState(addr, tMod.Key, tMod.Value) + statedb.IntermediateRoot(false) + } + + cRoot := statedb.GetTrie().Hash() + + proofType := "StorageChanged" + if tMod.Type == StorageDoesNotExist { + proofType = "StorageDoesNotExist" + } + + accountProof1, aNeighbourNode2, aExtNibbles2, aIsLastLeaf2, err := statedb.GetProof(addr) + check(err) + + storageProof1, neighbourNode2, extNibbles2, isLastLeaf2, err := statedb.GetStorageProof(addr, tMod.Key) + check(err) + + aNode := aNeighbourNode2 + aIsLastLeaf := aIsLastLeaf1 + if len(accountProof) > len(accountProof1) { + // delete operation + aNode = aNeighbourNode1 + aIsLastLeaf = aIsLastLeaf2 + } + + node := neighbourNode2 + isLastLeaf := isLastLeaf1 + if len(storageProof) > len(storageProof1) { + // delete operation + node = neighbourNode1 + isLastLeaf = isLastLeaf2 + } + + if specialTest == 1 { + if len(accountProof1) != 2 { + panic("account should be in the second level (one branch above it)") + } + accountProof, accountProof1, sRoot, cRoot = modifyAccountSpecialEmptyTrie(addrh, accountProof1[len(accountProof1)-1]) + } + + // Needs to be after `specialTest == 1` preparation: + nodes = append(nodes, GetStartNode(proofType, sRoot, cRoot, specialTest)) + + // In convertProofToWitness, we can't use account address in its original form (non-hashed), because + // of the "special" test for which we manually manipulate the "hashed" address and we don't have a preimage. + // TODO: addr is used for calling GetProof for modified extension node only, might be done in a different way + nodesAccount := + convertProofToWitness(statedb, addr, addrh, accountProof, accountProof1, aExtNibbles1, aExtNibbles2, tMod.Key, accountAddr, aNode, true, tMod.Type == AccountDoesNotExist, false, aIsLastLeaf) + nodes = append(nodes, nodesAccount...) + nodesStorage := + convertProofToWitness(statedb, addr, addrh, storageProof, storageProof1, extNibbles1, extNibbles2, tMod.Key, keyHashed, node, false, false, tMod.Type == StorageDoesNotExist, isLastLeaf) + nodes = append(nodes, nodesStorage...) + nodes = append(nodes, GetEndNode()) + } else { + nodes = obtainAccountProofAndConvertToWitness(i, tMod, len(trieModifications), statedb, specialTest) + } + } + + return nodes +} + +// prepareWitness obtains the GetProof proof before and after the modification for each +// of the modification. It then converts the two proofs into an MPT circuit witness for each of +// the modifications and stores it into a file. +func prepareWitness(testName string, trieModifications []TrieModification, statedb *state.StateDB) { + nodes := obtainTwoProofsAndConvertToWitness(trieModifications, statedb, 0) + StoreNodes(testName, nodes) +} + +// prepareWitnessSpecial obtains the GetProof proof before and after the modification for each +// of the modification. It then converts the two proofs into an MPT circuit witness for each of +// the modifications and stores it into a file. It is named special as the flag specialTest +// instructs the function obtainTwoProofsAndConvertToWitness to prepare special trie states, like moving +// the account leaf in the first trie level. +func prepareWitnessSpecial(testName string, trieModifications []TrieModification, statedb *state.StateDB, specialTest byte) { + nodes := obtainTwoProofsAndConvertToWitness(trieModifications, statedb, specialTest) + StoreNodes(testName, nodes) +} + +// updateStateAndPrepareWitness updates the state according to the specified keys and values and then +// prepares a witness for the proof before given modifications and after. +// This function is used when some specific trie state needs to be prepared before the actual modifications +// take place and for which the witness is needed. +func updateStateAndPrepareWitness(testName string, keys, values []common.Hash, addresses []common.Address, + trieModifications []TrieModification) { + blockNum := 13284469 + blockNumberParent := big.NewInt(int64(blockNum)) + blockHeaderParent := oracle.PrefetchBlock(blockNumberParent, true, nil) + database := state.NewDatabase(blockHeaderParent) + statedb, _ := state.New(blockHeaderParent.Root, database, nil) + + statedb.DisableLoadingRemoteAccounts() + + // Set the state needed for the test: + for i := 0; i < len(keys); i++ { + statedb.SetState(addresses[i], keys[i], values[i]) + } + + prepareWitness(testName, trieModifications, statedb) +} + +// convertProofToWitness takes two GetProof proofs (before and after a single modification) and prepares +// a witness for the MPT circuit. Alongside, it prepares the byte streams that need to be hashed +// and inserted into the Keccak lookup table. +func convertProofToWitness(statedb *state.StateDB, addr common.Address, addrh []byte, proof1, proof2, extNibblesS, extNibblesC [][]byte, storage_key common.Hash, key []byte, neighbourNode []byte, + isAccountProof, nonExistingAccountProof, nonExistingStorageProof, isShorterProofLastLeaf bool) []Node { + rows := make([][]byte, 0) + toBeHashed := make([][]byte, 0) + + minLen := len(proof1) + if len(proof2) < minLen { + minLen = len(proof2) + } + + keyIndex := 0 + len1 := len(proof1) + len2 := len(proof2) + + // When a value in the trie is updated, both proofs are of the same length. + // Otherwise, when a value is added (not updated) and there is no node which needs to be changed + // into a branch, one proof has a leaf and one does not have it. + // The third option is when a value is added and the existing leaf is turned into a branch, + // in this case we have an additional branch in C proof (when deleting a value causes + // that a branch with two leaves turns into a leaf, we have an additional branch in S proof). + + additionalBranch := false + if len1 < len2 && len1 > 0 { // len = 0 when trie trie is empty + // Check if the last proof element in the shorter proof is a leaf - + // if it is, then there is an additional branch. + additionalBranch = !isBranch(proof1[len1-1]) + } else if len2 < len1 && len2 > 0 { + additionalBranch = !isBranch(proof2[len2-1]) + } + + upTo := minLen + if (len1 != len2) && additionalBranch { + upTo = minLen - 1 + } + + var isExtension bool + extensionNodeInd := 0 + + var extListRlpBytes []byte + var extValues [][]byte + for i := 0; i < 4; i++ { + extValues = append(extValues, make([]byte, valueLen)) + } + + var nodes []Node + + branchC16 := byte(0) + branchC1 := byte(1) + for i := 0; i < upTo; i++ { + if !isBranch(proof1[i]) { + if i != len1-1 { // extension node + var numberOfNibbles byte + isExtension = true + numberOfNibbles, extListRlpBytes, extValues = prepareExtensions(extNibblesS, extensionNodeInd, proof1[i], proof2[i]) + + keyIndex += int(numberOfNibbles) + extensionNodeInd++ + continue + } + + l := len(proof1) + var node Node + if isAccountProof { + node = prepareAccountLeafNode(addr, addrh, proof1[l-1], proof2[l-1], nil, key, false, false, false) + } else { + node = prepareStorageLeafNode(proof1[l-1], proof2[l-1], nil, storage_key, key, nonExistingStorageProof, false, false, false, false) + } + + nodes = append(nodes, node) + } else { + switchC16 := true // If not extension node, switchC16 = true. + if isExtension { + keyLen := getExtensionNodeKeyLen(proof1[i-1]) + if keyLen == 1 { + switchC16 = false + } else { + if proof1[i-1][2] != 0 { // If even, switch16 = true. + switchC16 = false + } + } + } + if switchC16 { + if branchC16 == 1 { + branchC16 = 0 + branchC1 = 1 + } else { + branchC16 = 1 + branchC1 = 0 + } + } + + var extNode1 []byte = nil + var extNode2 []byte = nil + if isExtension { + extNode1 = proof1[i-1] + extNode2 = proof2[i-1] + } + + bNode := prepareBranchNode(proof1[i], proof2[i], extNode1, extNode2, extListRlpBytes, extValues, + key[keyIndex], key[keyIndex], branchC16, branchC1, false, false, isExtension, false, false) + nodes = append(nodes, bNode) + + keyIndex += 1 + + isExtension = false + } + } + + if len1 != len2 { + if additionalBranch { + leafRow0 := proof1[len1-1] // To compute the drifted position. + if len1 > len2 { + leafRow0 = proof2[len2-1] + } + + isModifiedExtNode, _, numberOfNibbles, branchC16, bNode := addBranchAndPlaceholder(proof1, proof2, extNibblesS, extNibblesC, + leafRow0, key, neighbourNode, + keyIndex, extensionNodeInd, additionalBranch, + isAccountProof, nonExistingAccountProof, isShorterProofLastLeaf, branchC16, branchC1, &toBeHashed) + + nodes = append(nodes, bNode) + + if isAccountProof { + // Add account leaf after branch placeholder: + var node Node + if !isModifiedExtNode { + node = prepareAccountLeafNode(addr, addrh, proof1[len1-1], proof2[len2-1], neighbourNode, key, false, false, false) + } else { + isSModExtension := false + isCModExtension := false + if len2 > len1 { + isSModExtension = true + } else { + isCModExtension = true + } + node = prepareLeafAndPlaceholderNode(addr, addrh, proof1, proof2, storage_key, key, nonExistingAccountProof, isAccountProof, isSModExtension, isCModExtension) + } + nodes = append(nodes, node) + } else { + // Add storage leaf after branch placeholder + var node Node + if !isModifiedExtNode { + node = prepareStorageLeafNode(proof1[len1-1], proof2[len2-1], neighbourNode, storage_key, key, nonExistingStorageProof, false, false, false, false) + } else { + isSModExtension := false + isCModExtension := false + if len2 > len1 { + isSModExtension = true + } else { + isCModExtension = true + } + node = prepareLeafAndPlaceholderNode(addr, addrh, proof1, proof2, storage_key, key, nonExistingAccountProof, isAccountProof, isSModExtension, isCModExtension) + } + nodes = append(nodes, node) + } + + // When a proof element is a modified extension node (new extension node appears at the position + // of the existing extension node), additional rows are added (extension node before and after + // modification). + if isModifiedExtNode { + // TODO + modExtensionNode := prepareModExtensionNode(statedb, addr, &rows, proof1, proof2, extNibblesS, extNibblesC, key, neighbourNode, + keyIndex, extensionNodeInd, numberOfNibbles, additionalBranch, + isAccountProof, nonExistingAccountProof, isShorterProofLastLeaf, branchC16, branchC1, &toBeHashed) + // node = append(nodes, modExtensionNode) + fmt.Println(modExtensionNode) + } + } else { + node := prepareLeafAndPlaceholderNode(addr, addrh, proof1, proof2, storage_key, key, nonExistingAccountProof, isAccountProof, false, false) + nodes = append(nodes, node) + } + } else if isBranch(proof2[len(proof2)-1]) { + // Account proof has drifted leaf as the last row, storage proof has non-existing-storage row + // as the last row. + // When non existing proof and only the branches are returned, we add a placeholder leaf. + // This is to enable the lookup (in account leaf row), most constraints are disabled for these rows. + + if isAccountProof { + node := prepareAccountLeafPlaceholderNode(addr, addrh, key, keyIndex) + nodes = append(nodes, node) + } else { + node := prepareStorageLeafPlaceholderNode(storage_key, key, keyIndex) + nodes = append(nodes, node) + } + } + + return nodes +} diff --git a/mpt-witness-generator/witness/test_tools.go b/mpt-witness-generator/witness/test_tools.go new file mode 100644 index 0000000000..dbb65041cc --- /dev/null +++ b/mpt-witness-generator/witness/test_tools.go @@ -0,0 +1,225 @@ +package witness + +import ( + "fmt" + + "github.com/ethereum/go-ethereum/common" + "github.com/privacy-scaling-explorations/mpt-witness-generator/trie" +) + +// moveAccountFromSecondToFirstLevel moves an account from the second level to the first level (key stored in a leaf +// gets longer). The function is used to enable tests with an account being in the first trie level. +func moveAccountFromSecondToFirstLevel(firstNibble byte, account []byte) []byte { + newAccount := make([]byte, len(account)+1) + newAccount[0] = account[0] + newAccount[1] = account[1] + 1 + newAccount[2] = 161 + newAccount[3] = 32 + // The following code relies on the account being in the second level (and not being + // after an extension node). + newAccount[4] = firstNibble*16 + account[3] - 48 + for i := 0; i < 31; i++ { + newAccount[5+i] = account[4+i] + } + for i := 0; i < int(account[1]-33); i++ { + newAccount[4+32+i] = account[35+i] + } + + return newAccount +} + +// moveAccountFromThirdToSecondLevel moves the account from the third level to the second level (key stored in a leaf +// gets longer). +func moveAccountFromThirdToSecondLevel(addrh []byte, account []byte) []byte { + // account = [248, 105, 160, 32, 77, 78,...] + newAccount := make([]byte, len(account)) + copy(newAccount, account) + // The following code relies on the account being in the third level (and not being + // after an extension node). + posInBranch := addrh[0] % 16 + newAccount[3] = 48 + posInBranch + + return newAccount +} + +// modifyAccountSpecialEmptyTrie prepares an account leaf in the first trie level for C proof and +// a placeholder leaf in S proof. +func modifyAccountSpecialEmptyTrie(addrh []byte, accountProof1Last []byte) ([][]byte, [][]byte, common.Hash, common.Hash) { + firstNibble := addrh[0] / 16 + newAccount := moveAccountFromSecondToFirstLevel(firstNibble, accountProof1Last) + + newAccount1 := make([]byte, len(accountProof1Last)+1) + copy(newAccount1, newAccount) + + accountProof := make([][]byte, 1) + accountProof[0] = newAccount + accountProof1 := make([][]byte, 1) + accountProof1[0] = newAccount1 + + // leaf in S proof is a placeholder, thus newAccount needs to have an empty trie hash + // for the root: + emptyTrieHash := []byte{86, 232, 31, 23, 27, 204, 85, 166, 255, 131, 69, 230, 146, 192, 248, 110, 91, 72, 224, 27, 153, 108, 173, 192, 1, 98, 47, 181, 227, 99, 180, 33} + rootStart := len(newAccount) - 64 - 1 + + for i := 0; i < 32; i++ { + newAccount[rootStart+i] = emptyTrieHash[i] + } + + hasher := trie.NewHasher(false) + sRoot := common.BytesToHash(hasher.HashData(newAccount)) + cRoot := common.BytesToHash(hasher.HashData(newAccount1)) + + return accountProof, accountProof1, sRoot, cRoot +} + +// modifyAccountProofSpecialTests modifies S and C account proofs to serve for special tests - like moving +// the account leaf in the first trie level. +func modifyAccountProofSpecialTests(addrh, accountAddr []byte, sRoot, cRoot common.Hash, accountProof, accountProof1 [][]byte, aNeighbourNode2 []byte, specialTest byte) ([]byte, []byte, [][]byte, [][]byte, common.Hash, common.Hash) { + if specialTest == 1 { + account := accountProof1[len(accountProof1)-1] + if len(accountProof1) != 2 { + panic("account should be in the second level (one branch above it)") + } + firstNibble := addrh[0] / 16 + newAccount := moveAccountFromSecondToFirstLevel(firstNibble, account) + + newAccount1 := make([]byte, len(account)+1) + copy(newAccount1, newAccount) + + // change nonce: + newAccount1[3+33+4] = 1 + + accountProof = make([][]byte, 1) + accountProof[0] = newAccount + accountProof1 = make([][]byte, 1) + accountProof1[0] = newAccount1 + + hasher := trie.NewHasher(false) + sRoot = common.BytesToHash(hasher.HashData(newAccount)) + cRoot = common.BytesToHash(hasher.HashData(newAccount1)) + } else if specialTest == 3 { + if len(accountProof) != 2 && len(accountProof1) != 3 { + panic("account should be in the second level (one branch above it)") + } + accountS := accountProof[len(accountProof)-1] + account1Pos := addrh[0] / 16 + // driftedPos := ((addrh[0] / 16) + 1) % 16 // something else than the first nibble of addrh + driftedPos := byte(0) // TODO: remove hardcoding + // addresses of both account now differ only in the first nibble (this is not needed, + // it is just in this construction) + newAccount := moveAccountFromSecondToFirstLevel(driftedPos, accountS) + + hasher := trie.NewHasher(false) + + firstNibble := accountProof[1][3] - 48 + // [248, 81, 128, 128, ... + branch := accountProof1[len(accountProof1)-2] + branch1 := make([]byte, len(branch)) + for i := 0; i < len(branch1); i++ { + branch1[i] = 128 + } + branch1[0] = branch[0] + branch1[1] = branch[1] + + // drifted leaf (aNeighbourNode2) has one nibble more after moved one level up, we need to recompute the hash + fmt.Println(driftedPos) + aNeighbourNode2[3] = 48 + firstNibble + driftedLeafHash := common.BytesToHash(hasher.HashData(aNeighbourNode2)) + // branch is now one level higher, both leaves are at different positions now + // (one nibble to the left) + + branch1[2+int(driftedPos)] = 160 + for i := 0; i < 32; i++ { + branch1[2+int(driftedPos)+1+i] = driftedLeafHash[i] + } + + accountC3 := accountProof1[len(accountProof1)-1] + newAccountC2 := moveAccountFromThirdToSecondLevel(addrh, accountC3) + + driftedLeafHash2 := common.BytesToHash(hasher.HashData(newAccountC2)) + branch1[2+32+int(account1Pos)] = 160 + for i := 0; i < 32; i++ { + branch1[2+32+int(account1Pos)+1+i] = driftedLeafHash2[i] + } + + // Let us have placeholder branch in the first level + accountProof = make([][]byte, 1) + accountProof[0] = newAccount + accountProof1 = make([][]byte, 2) + accountProof1[0] = branch1 + accountProof1[1] = newAccountC2 + + sRoot = common.BytesToHash(hasher.HashData(accountProof[0])) + cRoot = common.BytesToHash(hasher.HashData(accountProof1[0])) + } else if specialTest == 4 { + // This test simulates having only one account in the state trie: + account := []byte{248, 106, 161, 32, 252, 237, 52, 8, 133, 130, 180, 167, 143, 97, 28, 115, 102, 25, 94, 62, 148, 249, 8, 6, 55, 244, 16, 75, 187, 208, 208, 127, 251, 120, 61, 73, 184, 70, 248, 68, 128, 128, 160, 86, 232, 31, 23, 27, 204, 85, 166, 255, 131, 69, 230, 146, 192, 248, 110, 91, 72, 224, 27, 153, 108, 173, 192, 1, 98, 47, 181, 227, 99, 180, 33, 160, 197, 210, 70, 1, 134, 247, 35, 60, 146, 126, 125, 178, 220, 199, 3, 192, 229, 0, 182, 83, 202, 130, 39, 59, 123, 250, 216, 4, 93, 133, 164, 112} + + // Note: the requested address (for which the account doesn't exist) should have + // a different address as the only one in the trie. + + accountProof = make([][]byte, 1) + accountProof[0] = account + accountProof1 = make([][]byte, 1) + accountProof1[0] = account + + hasher := trie.NewHasher(false) + sRoot = common.BytesToHash(hasher.HashData(accountProof[0])) + cRoot = common.BytesToHash(hasher.HashData(accountProof1[0])) + } else if specialTest == 5 { + ext := []byte{226, 24, 160, 194, 200, 39, 82, 205, 97, 69, 91, 92, 98, 218, 180, 101, 42, 171, 150, 75, 251, 147, 154, 59, 215, 26, 164, 201, 90, 199, 185, 190, 205, 167, 64} + branch := []byte{248, 81, 128, 128, 128, 160, 53, 8, 52, 235, 77, 44, 138, 235, 20, 250, 15, 188, 176, 83, 178, 108, 212, 224, 40, 146, 117, 31, 154, 215, 103, 179, 234, 32, 168, 86, 167, 44, 128, 128, 128, 128, 128, 160, 174, 121, 120, 114, 157, 43, 164, 140, 103, 235, 28, 242, 186, 33, 76, 152, 157, 197, 109, 149, 229, 229, 22, 189, 233, 207, 92, 195, 82, 121, 240, 3, 128, 128, 128, 128, 128, 128, 128} + // The original proof returns `ext` and `branch` in 2. and 3. level. We move them to 1. and 2. level. + + fmt.Println(ext) + fmt.Println(branch) + + newAddrBytes := make([]byte, 32) + newAddrNibbles := make([]byte, 65) + newAddrNibbles[64] = accountAddr[16] + for i := 0; i < 63; i++ { + newAddrNibbles[i] = accountAddr[i+1] + } + newAddrNibbles[63] = accountAddr[0] + + for i := 0; i < 32; i++ { + newAddrBytes[i] = newAddrNibbles[2*i]*16 + newAddrNibbles[2*i+1] + } + + // We need to fix leaf key (adding last nibble): + // Original leaf: + // leaf := []byte{248, 104, 159, 59, 114, 3, 66, 104, 61, 61, 61, 175, 101, 56, 194, 213, 150, 208, 62, 118, 28, 175, 138, 112, 119, 76, 88, 109, 21, 102, 195, 8, 18, 185, 184, 70, 248, 68, 128, 128, 160, 86, 232, 31, 23, 27, 204, 85, 166, 255, 131, 69, 230, 146, 192, 248, 110, 91, 72, 224, 27, 153, 108, 173, 192, 1, 98, 47, 181, 227, 99, 180, 33, 160, 197, 210, 70, 1, 134, 247, 35, 60, 146, 126, 125, 178, 220, 199, 3, 192, 229, 0, 182, 83, 202, 130, 39, 59, 123, 250, 216, 4, 93, 133, 164, 112} + leaf := []byte{248, 105, 160, 32, 59, 114, 3, 66, 104, 61, 61, 61, 175, 101, 56, 194, 213, 150, 208, 62, 118, 28, 175, 138, 112, 119, 76, 88, 109, 21, 102, 195, 8, 18, 185, 184, 70, 248, 68, 128, 128, 160, 86, 232, 31, 23, 27, 204, 85, 166, 255, 131, 69, 230, 146, 192, 248, 110, 91, 72, 224, 27, 153, 108, 173, 192, 1, 98, 47, 181, 227, 99, 180, 33, 160, 197, 210, 70, 1, 134, 247, 35, 60, 146, 126, 125, 178, 220, 199, 3, 192, 229, 0, 182, 83, 202, 130, 39, 59, 123, 250, 216, 4, 93, 133, 164, 112} + for i := 0; i < 31; i++ { + leaf[4+i] = newAddrBytes[i+1] + } + + hasher := trie.NewHasher(false) + // Update leaf hash in branch + newLeafHash := common.BytesToHash(hasher.HashData(leaf)) + branch[2+int(newAddrNibbles[1])] = 160 + for i := 0; i < 32; i++ { + branch[2+int(newAddrNibbles[1])+1+i] = newLeafHash[i] + } + + // Update branch hash in extension node + newBranchHash := common.BytesToHash(hasher.HashData(branch)) + for i := 0; i < 32; i++ { + ext[3+i] = newBranchHash[i] + } + + accountAddr = newAddrNibbles + addrh = newAddrBytes + + accountProof = make([][]byte, 3) + accountProof[0] = ext + accountProof[1] = branch + accountProof[2] = leaf + accountProof1 = accountProof + + sRoot = common.BytesToHash(hasher.HashData(accountProof[0])) + cRoot = common.BytesToHash(hasher.HashData(accountProof1[0])) + } + + return addrh, accountAddr, accountProof, accountProof1, sRoot, cRoot +} diff --git a/mpt-witness-generator/witness/util.go b/mpt-witness-generator/witness/util.go new file mode 100644 index 0000000000..171a223dd7 --- /dev/null +++ b/mpt-witness-generator/witness/util.go @@ -0,0 +1,65 @@ +package witness + +import ( + "encoding/json" + "fmt" + "log" + "os" + "path/filepath" + "strconv" +) + +func check(err error) { + if err != nil { + log.Fatal(err) + } +} + +func MatrixToJson(rows [][]byte) string { + // Had some problems with json.Marshal, so I just prepare json manually. + json := "[" + for i := 0; i < len(rows); i++ { + json += listToJson(rows[i]) + if i != len(rows)-1 { + json += "," + } + } + json += "]" + + return json +} + +func listToJson(row []byte) string { + json := "[" + for j := 0; j < len(row); j++ { + json += strconv.Itoa(int(row[j])) + if j != len(row)-1 { + json += "," + } + } + json += "]" + + return json +} + +func StoreNodes(testName string, nodes []Node) { + name := testName + ".json" + path := "../generated_witnesses/" + name + + // Create the directories if they do not exist yet + err := os.MkdirAll(filepath.Dir(path), 0755) + if err != nil { + log.Fatal(err) + } + + f, err := os.Create(path) + check(err) + defer f.Close() + b, err := json.Marshal(nodes) + if err != nil { + fmt.Println(err) + } + + _, err = f.WriteString(string(b)) + check(err) +} diff --git a/mpt-witness-generator/witness_gen_wrapper.go b/mpt-witness-generator/witness_gen_wrapper.go new file mode 100644 index 0000000000..60b6455fe9 --- /dev/null +++ b/mpt-witness-generator/witness_gen_wrapper.go @@ -0,0 +1,50 @@ +package main + +import "C" +import ( + "encoding/json" + "fmt" + + "github.com/ethereum/go-ethereum/common" + "github.com/privacy-scaling-explorations/mpt-witness-generator/witness" +) + +type Config struct { + NodeUrl string `json:"NodeUrl"` + BlockNum int `json:"BlockNum"` + Addr string `json:"Addr"` + Keys []string `json:"Keys"` + Values []string `json:"Values"` +} + +//export GetWitness +func GetWitness(proofConf *C.char) *C.char { + var config Config + + err := json.Unmarshal([]byte(C.GoString(proofConf)), &config) + fmt.Println(err) + fmt.Println(config) + + trieModifications := []witness.TrieModification{} + + addr := common.HexToAddress(config.Addr) + for i := 0; i < len(config.Keys); i++ { + trieMod := witness.TrieModification{ + Type: witness.StorageChanged, + Key: common.HexToHash(config.Keys[i]), + Value: common.HexToHash(config.Values[i]), + Address: addr, + } + trieModifications = append(trieModifications, trieMod) + } + + proof := witness.GetWitness(config.NodeUrl, config.BlockNum, trieModifications) + b, err := json.Marshal(proof) + if err != nil { + fmt.Println(err) + } + + return C.CString(string(b)) +} + +func main() {} diff --git a/testool/Cargo.toml b/testool/Cargo.toml index 8af5e49e12..ee8e6b0f7b 100644 --- a/testool/Cargo.toml +++ b/testool/Cargo.toml @@ -10,8 +10,8 @@ bus-mapping = { path = "../bus-mapping" } clap = { version = "3.1", features = ["derive"] } env_logger = "0.9" eth-types = { path="../eth-types" } -ethers-core = "0.17.0" -ethers-signers = "0.17.0" +ethers-core = "2.0.7" +ethers-signers = "2.0.7" external-tracer = { path="../external-tracer" } glob = "0.3" handlebars = "4.3" @@ -29,7 +29,7 @@ strum_macros = "0.24" thiserror = "1.0" toml = "0.5" yaml-rust = "0.4.5" -zkevm-circuits = { path="../zkevm-circuits", features=["test"] } +zkevm-circuits = { path="../zkevm-circuits", features=["test-util", "test-circuits"] } rand_chacha = "0.3" rand = "0.8" halo2_proofs = { git = "https://github.com/privacy-scaling-explorations/halo2.git", tag = "v2023_04_20" } @@ -38,4 +38,3 @@ urlencoding = "2.1.2" [features] default = [] -ignore-test-docker = [] diff --git a/testool/README.md b/testool/README.md index f8f84a32b0..4a619374c5 100644 --- a/testool/README.md +++ b/testool/README.md @@ -6,6 +6,14 @@ To use it, just compile with `cargo build --release` and run `../target/release/ This tool at this moment has 2 main functionalities: run raw bytecode and run ethereum tests. + +## Setup docker + +Code is precompiled and kept in the `codehash.txt`` file, if you need to compile more code (mainly because you are updating the testspecs commit), you have to setup docker: + +- `docker build docker/lllc -t lllc` +- `docker build docker/solc -t solc` + ## Run oneliner spec The oneliner spec is invoked by using `--oneliner` parameter diff --git a/testool/src/compiler.rs b/testool/src/compiler.rs index b40f8ecb0d..e6e4912280 100644 --- a/testool/src/compiler.rs +++ b/testool/src/compiler.rs @@ -320,7 +320,7 @@ impl Compiler { #[cfg(test)] mod test { #[test] - #[cfg(not(feature = "ignore-test-docker"))] + #[ignore] fn test_docker_lll() -> anyhow::Result<()> { let out = super::Compiler::new(true, None)?.lll( "[[0]] (+ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 4)", @@ -332,7 +332,7 @@ mod test { Ok(()) } #[test] - #[cfg(not(feature = "ignore-test-docker"))] + #[ignore] fn test_docker_yul() -> anyhow::Result<()> { let out = super::Compiler::new(true, None)?.yul( r#" @@ -355,7 +355,7 @@ mod test { Ok(()) } #[test] - #[cfg(not(feature = "ignore-test-docker"))] + #[ignore] fn test_docker_solidity() -> anyhow::Result<()> { let out = super::Compiler::new(true, None)?.solidity("contract A{}")?; assert_eq!( diff --git a/testool/src/statetest/executor.rs b/testool/src/statetest/executor.rs index d9c7fa7ddf..e46dbdcfeb 100644 --- a/testool/src/statetest/executor.rs +++ b/testool/src/statetest/executor.rs @@ -77,15 +77,19 @@ fn check_post( } if let Some(expected_code) = &expected.code { - let actual_code = if actual.code_hash.is_zero() { - std::borrow::Cow::Owned(Vec::new()) - } else { - std::borrow::Cow::Borrowed(&builder.code_db.0[&actual.code_hash]) - }; - if &actual_code as &[u8] != expected_code.0 { + let actual_code = (!actual.code_hash.is_zero()) + .then(|| { + builder + .code_db + .get_from_h256(&actual.code_hash) + .map(|bytecode| bytecode.code()) + .expect("code exists") + }) + .unwrap_or_default(); + if actual_code != expected_code.0 { return Err(StateTestError::CodeMismatch { expected: expected_code.clone(), - found: Bytes::from(actual_code.to_vec()), + found: Bytes::from(actual_code), }); } } @@ -120,7 +124,7 @@ fn into_traceconfig(st: StateTest) -> (String, TraceConfig, StateTestResult) { } let tx: TypedTransaction = tx.into(); - let sig = wallet.sign_transaction_sync(&tx); + let sig = wallet.sign_transaction_sync(&tx).unwrap(); ( st.id, @@ -229,7 +233,7 @@ pub fn run_test( ..eth_types::Block::default() }; - let wallet: LocalWallet = SigningKey::from_bytes(&st.secret_key).unwrap().into(); + let wallet: LocalWallet = SigningKey::from_slice(&st.secret_key).unwrap().into(); let mut wallets = HashMap::new(); wallets.insert( wallet.address(), diff --git a/testool/src/statetest/json.rs b/testool/src/statetest/json.rs index 7bd35e26b7..c136152cda 100644 --- a/testool/src/statetest/json.rs +++ b/testool/src/statetest/json.rs @@ -107,7 +107,7 @@ impl<'a> JsonStateTestBuilder<'a> { let to = parse::parse_to_address(&test.transaction.to)?; let secret_key = parse::parse_bytes(&test.transaction.secret_key)?; - let from = secret_key_to_address(&SigningKey::from_bytes(&secret_key.to_vec())?); + let from = secret_key_to_address(&SigningKey::from_slice(&secret_key)?); let nonce = parse::parse_u64(&test.transaction.nonce)?; let gas_price = parse::parse_u256(&test.transaction.gas_price)?; diff --git a/testool/src/statetest/spec.rs b/testool/src/statetest/spec.rs index 234867ccda..66aa4d3f54 100644 --- a/testool/src/statetest/spec.rs +++ b/testool/src/statetest/spec.rs @@ -196,7 +196,7 @@ impl StateTest { let value = parse_u256(tx.next().unwrap_or("0"))?; let gas_limit = u64::from_str(tx.next().unwrap_or("10000000"))?; let secret_key = Bytes::from(&[1u8; 32]); - let from = secret_key_to_address(&SigningKey::from_bytes(&secret_key.to_vec())?); + let from = secret_key_to_address(&SigningKey::from_slice(&secret_key)?); let mut pre = HashMap::<Address, Account>::new(); diff --git a/testool/src/statetest/yaml.rs b/testool/src/statetest/yaml.rs index 28bee90c17..cce0a6b516 100644 --- a/testool/src/statetest/yaml.rs +++ b/testool/src/statetest/yaml.rs @@ -107,7 +107,7 @@ impl<'a> YamlStateTestBuilder<'a> { let nonce = Self::parse_u64(&yaml_transaction["nonce"])?; let to = Self::parse_to_address(&yaml_transaction["to"])?; let secret_key = Self::parse_bytes(&yaml_transaction["secretKey"])?; - let from = secret_key_to_address(&SigningKey::from_bytes(&secret_key.to_vec())?); + let from = secret_key_to_address(&SigningKey::from_slice(&secret_key)?); // parse expects (account states before executing the transaction) let mut expects = Vec::new(); diff --git a/testool/test-docker.sh b/testool/test-docker.sh deleted file mode 100755 index 8d93aa660e..0000000000 --- a/testool/test-docker.sh +++ /dev/null @@ -1,3 +0,0 @@ -docker build docker/lllc -t lllc -docker build docker/solc -t solc -cargo test test_docker --features="test-docker" diff --git a/zkevm-circuits/Cargo.toml b/zkevm-circuits/Cargo.toml index 4941c9ace5..437f752cc0 100644 --- a/zkevm-circuits/Cargo.toml +++ b/zkevm-circuits/Cargo.toml @@ -15,8 +15,8 @@ array-init = "2.0.0" bus-mapping = { path = "../bus-mapping" } eth-types = { path = "../eth-types" } gadgets = { path = "../gadgets" } -ethers-core = "0.17.0" -ethers-signers = { version = "0.17.0", optional = true } +ethers-core = "2.0.7" +ethers-signers = { version = "2.0.7", optional = true } mock = { path = "../mock", optional = true } strum = "0.24" strum_macros = "0.24" @@ -35,22 +35,25 @@ num-bigint = { version = "0.4" } rand_chacha = "0.3" snark-verifier = { git = "https://github.com/privacy-scaling-explorations/snark-verifier", tag = "v2023_04_20", default-features = false, features = ["loader_halo2", "system_halo2", "loader_evm"] } cli-table = { version = "0.4", optional = true } +num_enum = "0.5.7" +serde = { version = "1.0.130", features = ["derive"] } +serde_json = "1.0.78" [dev-dependencies] bus-mapping = { path = "../bus-mapping", features = ["test"] } ctor = "0.1.22" -ethers-signers = "0.17.0" +ethers-signers = "2.0.7" hex = "0.4.3" itertools = "0.10.1" mock = { path = "../mock" } pretty_assertions = "1.0.0" -serde = { version = "1.0.130", features = ["derive"] } -serde_json = "1.0.78" [features] default = [] -test = ["ethers-signers", "mock", "bus-mapping/test"] +# We export some test circuits for other crates to consume test-circuits = [] +# Test utilities for testool crate to consume +test-util = ["dep:mock"] warn-unimplemented = ["eth-types/warn-unimplemented"] stats = ["warn-unimplemented", "dep:cli-table"] diff --git a/zkevm-circuits/src/bin/stats/helpers.rs b/zkevm-circuits/src/bin/stats/helpers.rs index 6f91a8c129..12432c9661 100644 --- a/zkevm-circuits/src/bin/stats/helpers.rs +++ b/zkevm-circuits/src/bin/stats/helpers.rs @@ -167,7 +167,7 @@ pub(crate) fn print_circuit_stats_by_states( let bytecode_prefix_op = fn_bytecode_prefix_op(opcode); code.append(&bytecode_prefix_op); code.write_op(opcode); - let opcode_pc = code.code.len() - 1; + let opcode_pc = code.codesize() - 1; // let opcode_step_index = (proxy_code.num_opcodes - 1 + code.num_opcodes) - 1; code.op_stop(); let block: GethData = TestContext::<10, 1>::new( diff --git a/zkevm-circuits/src/bin/stats/main.rs b/zkevm-circuits/src/bin/stats/main.rs index 30c8fc9a27..3acca2d8f6 100644 --- a/zkevm-circuits/src/bin/stats/main.rs +++ b/zkevm-circuits/src/bin/stats/main.rs @@ -10,7 +10,10 @@ use itertools::Itertools; use mock::MOCK_ACCOUNTS; use std::env; use zkevm_circuits::evm_circuit::{ - param::{LOOKUP_CONFIG, N_BYTE_LOOKUPS, N_COPY_COLUMNS, N_PHASE1_COLUMNS, N_PHASE2_COLUMNS}, + param::{ + LOOKUP_CONFIG, N_COPY_COLUMNS, N_PHASE1_COLUMNS, N_PHASE2_COLUMNS, N_U16_LOOKUPS, + N_U8_LOOKUPS, + }, step::ExecutionState, EvmCircuit, }; @@ -148,9 +151,31 @@ fn get_exec_steps_occupancy() { format!("cells").cell().bold(true), format!("top_height").cell().bold(true), format!("used columns (Max: {:?})", $cols).cell().bold(true), - format!("Utilization").cell().bold(true), + format!("Utilization (%)").cell().bold(true), ]); print_stdout(table).unwrap(); + + // consider use stats package, e.g. https://github.com/statrs-dev/statrs to output more insightful result + let raw_statistics_data = report + .iter() + .fold(vec![0; 2], |mut accu, exec| { + accu[0] += exec.$id.available_cells; + accu[1] += exec.$id.used_cells; + accu + }); + + let table = vec![vec![ + format!("{:?}", raw_statistics_data[0]), + format!("{:?}", raw_statistics_data[1]), + format!("{:.1}", (raw_statistics_data[1] as f64/raw_statistics_data[0] as f64) * 100.0), + ]].table().title(vec![ + format!("{:?} total_available_cells", stringify!($id)).cell().bold(true), + format!("{:?} total_used_cells", stringify!($id)).cell().bold(true), + format!("{:?} Utilization (%)", stringify!($id)).cell().bold(true), + ]); + + print_stdout(table).unwrap(); + )* }; } @@ -163,8 +188,10 @@ fn get_exec_steps_occupancy() { N_PHASE2_COLUMNS, storage_perm, N_COPY_COLUMNS, - byte_lookup, - N_BYTE_LOOKUPS, + u8_lookup, + N_U8_LOOKUPS, + u16_lookup, + N_U16_LOOKUPS, fixed_table, LOOKUP_CONFIG[0].1, tx_table, diff --git a/zkevm-circuits/src/bytecode_circuit.rs b/zkevm-circuits/src/bytecode_circuit.rs index 297e3a1622..715e9f0add 100644 --- a/zkevm-circuits/src/bytecode_circuit.rs +++ b/zkevm-circuits/src/bytecode_circuit.rs @@ -1,15 +1,12 @@ //! The bytecode circuit implementation. -/// Bytecode unroller -pub mod bytecode_unroller; /// Bytecode circuit pub mod circuit; -pub(crate) mod param; -#[cfg(any(feature = "test", test, feature = "test-circuits"))] +#[cfg(any(test, feature = "test-circuits"))] mod dev; /// Bytecode circuit tester -#[cfg(any(feature = "test", test))] +#[cfg(test)] mod test; -#[cfg(any(feature = "test", test, feature = "test-circuits"))] +#[cfg(feature = "test-circuits")] pub use dev::BytecodeCircuit as TestBytecodeCircuit; diff --git a/zkevm-circuits/src/bytecode_circuit/bytecode_unroller.rs b/zkevm-circuits/src/bytecode_circuit/bytecode_unroller.rs deleted file mode 100644 index 6c4fb174fc..0000000000 --- a/zkevm-circuits/src/bytecode_circuit/bytecode_unroller.rs +++ /dev/null @@ -1,55 +0,0 @@ -use crate::{ - table::BytecodeFieldTag, - util::{get_push_size, keccak}, -}; -use eth_types::{Field, Word}; -use std::vec; - -/// Public data for the bytecode -#[derive(Clone, Debug, PartialEq)] -pub(crate) struct BytecodeRow<F: Field> { - pub(crate) code_hash: Word, - pub(crate) tag: F, - pub(crate) index: F, - pub(crate) is_code: F, - pub(crate) value: F, -} - -/// Unrolled bytecode -#[derive(Clone, Debug, PartialEq, Default)] -pub struct UnrolledBytecode<F: Field> { - pub(crate) bytes: Vec<u8>, - pub(crate) rows: Vec<BytecodeRow<F>>, -} - -/// Get unrolled bytecode from raw bytes -pub fn unroll<F: Field>(bytes: Vec<u8>) -> UnrolledBytecode<F> { - let code_hash = keccak(&bytes[..]); - let mut rows = vec![BytecodeRow::<F> { - code_hash, - tag: F::from(BytecodeFieldTag::Header as u64), - index: F::ZERO, - is_code: F::ZERO, - value: F::from(bytes.len() as u64), - }]; - // Run over all the bytes - let mut push_rindex = 0; - for (index, byte) in bytes.iter().enumerate() { - // Track which byte is an opcode and which is push data - let is_code = push_rindex == 0; - push_rindex = if is_code { - get_push_size(*byte) - } else { - push_rindex - 1 - }; - - rows.push(BytecodeRow::<F> { - code_hash, - tag: F::from(BytecodeFieldTag::Byte as u64), - index: F::from(index as u64), - is_code: F::from(is_code as u64), - value: F::from(*byte as u64), - }); - } - UnrolledBytecode { bytes, rows } -} diff --git a/zkevm-circuits/src/bytecode_circuit/circuit.rs b/zkevm-circuits/src/bytecode_circuit/circuit.rs index d0540d3126..cb7e779a18 100644 --- a/zkevm-circuits/src/bytecode_circuit/circuit.rs +++ b/zkevm-circuits/src/bytecode_circuit/circuit.rs @@ -2,14 +2,18 @@ use crate::{ evm_circuit::util::{ and, constraint_builder::{BaseConstraintBuilder, ConstrainBuilderCommon}, - not, or, rlc, select, + not, or, select, }, table::{BytecodeFieldTag, BytecodeTable, KeccakTable, LookupTable}, - util::{get_push_size, Challenges, Expr, SubCircuit, SubCircuitConfig}, - witness, + util::{ + self, get_push_size, + word::{empty_code_hash_word_value, Word, Word32, WordExpr}, + Challenges, Expr, SubCircuit, SubCircuitConfig, + }, + witness::{self}, }; -use bus_mapping::state_db::EMPTY_CODE_HASH_LE; -use eth_types::{Field, ToLittleEndian}; +use bus_mapping::state_db::{CodeDB, EMPTY_CODE_HASH_LE}; +use eth_types::{Bytecode, Field}; use gadgets::is_zero::{IsZeroChip, IsZeroInstruction}; use halo2_proofs::{ circuit::{Layouter, Region, Value}, @@ -18,51 +22,133 @@ use halo2_proofs::{ }, poly::Rotation, }; +use itertools::Itertools; use log::trace; -use std::vec; +use std::{iter, ops::Deref, vec}; -use super::{ - bytecode_unroller::{unroll, UnrolledBytecode}, - param::PUSH_TABLE_WIDTH, -}; +const PUSH_TABLE_WIDTH: usize = 2; #[derive(Debug, Clone, Default)] /// Row for assignment -pub struct BytecodeCircuitRow<F: Field> { - offset: usize, - last_row_offset: usize, - code_hash: Value<F>, +pub(crate) struct BytecodeCircuitRow<F: Field> { + pub(crate) code_hash: Word<Value<F>>, tag: F, - index: F, - is_code: F, - value: F, + pub(crate) index: F, + pub(crate) is_code: F, + pub(crate) value: F, push_data_left: u64, value_rlc: Value<F>, length: F, push_data_size: F, } impl<F: Field> BytecodeCircuitRow<F> { - /// enable selector if we are within the range of table size. - pub fn enable(&self) -> bool { - self.offset <= self.last_row_offset - } - - /// Determine if we are at last row of the bytecode table. - pub fn last(&self) -> bool { - self.offset == self.last_row_offset + #[cfg(test)] + pub(crate) fn new(code_hash: Word<Value<F>>, tag: F, index: F, is_code: F, value: F) -> Self { + Self { + code_hash, + tag, + index, + is_code, + value, + push_data_left: 0, + value_rlc: Value::known(F::ZERO), + length: F::ZERO, + push_data_size: F::ZERO, + } } - /// Get offset - pub fn offset(&self) -> usize { - self.offset + /// Padding must be a header, acording to the q_last constraints + fn pad() -> Self { + Self { + code_hash: empty_code_hash_word_value(), + tag: F::from(BytecodeFieldTag::Header as u64), + value_rlc: Value::known(F::ZERO), + ..Default::default() + } } /// Witness to IsZero chip to determine if we are at the last row of a bytecode instance - pub fn diff(&self) -> F { + fn diff(&self) -> F { self.index + F::ONE - self.length } } +#[derive(Clone, Default, Debug)] +pub(crate) struct BytecodeCircuitAssignment<F: Field>(pub(crate) Vec<BytecodeCircuitRow<F>>); + +impl<F: Field> From<Vec<Bytecode>> for BytecodeCircuitAssignment<F> { + fn from(codes: Vec<Bytecode>) -> Self { + let mut rows = vec![]; + for bytecode in codes.iter() { + let code_hash = util::word::Word::from(bytecode.hash()).into_value(); + let code_size = bytecode.codesize(); + let head = BytecodeCircuitRow { + code_hash, + tag: F::from(BytecodeFieldTag::Header as u64), + index: F::ZERO, + is_code: F::ZERO, + value: F::from(code_size as u64), + push_data_left: 0, + value_rlc: Value::known(F::ZERO), + length: F::from(code_size as u64), + push_data_size: F::ZERO, + }; + rows.push(head); + let mut push_data_left = 0; + + for (index, &(value, is_code)) in bytecode.code_vec().iter().enumerate() { + let push_data_size = get_push_size(value); + let value = F::from(value.into()); + + let body = BytecodeCircuitRow { + code_hash, + tag: F::from(BytecodeFieldTag::Byte as u64), + index: F::from(index as u64), + is_code: F::from(is_code.into()), + value, + push_data_left, + value_rlc: Value::unknown(), + length: F::from(code_size as u64), + push_data_size: F::from(push_data_size), + }; + rows.push(body); + push_data_left = if is_code { + push_data_size + } else { + push_data_left - 1 + }; + } + } + Self(rows) + } +} + +impl<F: Field> From<CodeDB> for BytecodeCircuitAssignment<F> { + fn from(code_db: CodeDB) -> Self { + // CodeDB use hash maps, so the bytecodes will be reordered. + code_db.into_iter().collect_vec().into() + } +} + +impl<F: Field> From<Vec<Vec<u8>>> for BytecodeCircuitAssignment<F> { + fn from(codes: Vec<Vec<u8>>) -> Self { + // We don't go through BytecodeCollection struct to preserve bytecode order. + codes + .iter() + .map(|bytes| Bytecode::from(bytes.clone())) + .collect_vec() + .into() + } +} + +impl<F: Field> Deref for BytecodeCircuitAssignment<F> { + type Target = Vec<BytecodeCircuitRow<F>>; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + #[derive(Clone, Debug)] /// Bytecode circuit configuration pub struct BytecodeCircuitConfig<F> { @@ -272,15 +358,13 @@ impl<F: Field> SubCircuitConfig<F> for BytecodeCircuitConfig<F> { meta.query_advice(length, Rotation::cur()), ); - let empty_hash = rlc::expr( - &EMPTY_CODE_HASH_LE.map(|v| Expression::Constant(F::from(v as u64))), - challenges.evm_word(), - ); + let empty_hash_word: Word<Expression<F>> = + Word32::new(*EMPTY_CODE_HASH_LE).to_expr().to_word(); - cb.require_equal( + cb.require_equal_word( "assert cur.hash == EMPTY_HASH", - meta.query_advice(bytecode_table.code_hash, Rotation::cur()), - empty_hash, + bytecode_table.code_hash.query_advice(meta, Rotation::cur()), + empty_hash_word, ); cb.gate(and::expr(vec![ @@ -318,10 +402,12 @@ impl<F: Field> SubCircuitConfig<F> for BytecodeCircuitConfig<F> { 1.expr(), ); - cb.require_equal( + cb.require_equal_word( "next.hash == cur.hash", - meta.query_advice(bytecode_table.code_hash, Rotation::next()), - meta.query_advice(bytecode_table.code_hash, Rotation::cur()), + bytecode_table + .code_hash + .query_advice(meta, Rotation::next()), + bytecode_table.code_hash.query_advice(meta, Rotation::cur()), ); cb.require_equal( @@ -361,10 +447,12 @@ impl<F: Field> SubCircuitConfig<F> for BytecodeCircuitConfig<F> { meta.query_advice(bytecode_table.index, Rotation::cur()) + 1.expr(), ); - cb.require_equal( + cb.require_equal_word( "next.hash == cur.hash", - meta.query_advice(bytecode_table.code_hash, Rotation::next()), - meta.query_advice(bytecode_table.code_hash, Rotation::cur()), + bytecode_table + .code_hash + .query_advice(meta, Rotation::next()), + bytecode_table.code_hash.query_advice(meta, Rotation::cur()), ); cb.require_equal( @@ -427,7 +515,7 @@ impl<F: Field> SubCircuitConfig<F> for BytecodeCircuitConfig<F> { ])) }); meta.lookup_any( - "keccak256_table_lookup(cur.value_rlc, cur.length, cur.hash)", + "keccak256_table_lookup(cur.value_rlc, cur.length, cur.hash_word)", |meta| { let enable = and::expr(vec![ meta.query_fixed(q_enable, Rotation::cur()), @@ -479,13 +567,12 @@ impl<F: Field> BytecodeCircuitConfig<F> { &self, layouter: &mut impl Layouter<F>, size: usize, - witness: &[UnrolledBytecode<F>], - overwrite: &UnrolledBytecode<F>, + witness: &BytecodeCircuitAssignment<F>, challenges: &Challenges<Value<F>>, - fail_fast: bool, ) -> Result<(), Error> { // Subtract the unusable rows from the size assert!(size > self.minimum_rows); + let last_row_offset = size - self.minimum_rows + 1; trace!( @@ -494,193 +581,73 @@ impl<F: Field> BytecodeCircuitConfig<F> { self.minimum_rows, last_row_offset ); - + if witness.len() > last_row_offset { + // The last_row_offset-th row must be reserved for padding. + // so we have "last_row_offset rows" usable + log::error!( + "the witness has size {}, but only {} rows usable. Some witness will not be assigned", + witness.len(), + last_row_offset + ); + } layouter.assign_region( || "assign bytecode", |mut region| { // annotate columns self.annotate_circuit(&mut region); - let mut offset = 0; - for bytecode in witness.iter() { - self.assign_bytecode( - &mut region, - bytecode, - challenges, - &mut offset, - last_row_offset, - fail_fast, - )?; - } - - // Padding - for idx in offset..=last_row_offset { - self.set_padding_row(&mut region, challenges, idx, last_row_offset)?; - } - - // Overwrite the witness assignment by using the values in the `overwrite` - // parameter. This is used to explicitly set intermediate witness values for - // negative tests. - let mut value_rlc = challenges.keccak_input().map(|_| F::ZERO); - for (offset, row) in overwrite.rows.iter().enumerate() { - for (name, column, value) in [ - ("tag", self.bytecode_table.tag, row.tag), - ("index", self.bytecode_table.index, row.index), - ("is_code", self.bytecode_table.is_code, row.is_code), - ("value", self.bytecode_table.value, row.value), - ("length", self.length, F::from(overwrite.bytes.len() as u64)), - ] { - region.assign_advice( - || format!("assign {} {}", name, offset), - column, - offset, - || Value::known(value), - )?; - } - - if row.tag == F::ONE { + let mut value_rlc = Value::known(F::ZERO); + // Chain the witness rows with as many padding rows as we like. + // We take only the first "last_row_offset" rows. + for (offset, row) in witness + .iter() + .chain(iter::repeat(&BytecodeCircuitRow::pad())) + .take(last_row_offset) + .enumerate() + { + let mut row = row.clone(); + // unfortunately this is the only place we can set the RLC. + // The RLC of the padding rows are unaffected. As they are always with the + // Header tag, the RLC value for them are always zero. + if row.tag == F::from(BytecodeFieldTag::Byte as u64) { value_rlc.as_mut().zip(challenges.keccak_input()).map( |(value_rlc, challenge)| { *value_rlc = *value_rlc * challenge + row.value }, ); } else { - value_rlc = challenges.keccak_input().map(|_| F::ZERO); - } - - let code_hash = challenges - .evm_word() - .map(|challenge| rlc::value(&row.code_hash.to_le_bytes(), challenge)); - for (name, column, value) in [ - ("code_hash", self.bytecode_table.code_hash, code_hash), - ("value_rlc", self.value_rlc, value_rlc), - ] { - region.assign_advice( - || format!("assign {} {}", name, offset), - column, - offset, - || value, - )?; + value_rlc = Value::known(F::ZERO); } + row.value_rlc = value_rlc; + self.set_row(&mut region, offset, last_row_offset, &row)?; } - Ok(()) - }, - ) - } - fn assign_bytecode( - &self, - region: &mut Region<'_, F>, - bytecode: &UnrolledBytecode<F>, - challenges: &Challenges<Value<F>>, - offset: &mut usize, - last_row_offset: usize, - fail_fast: bool, - ) -> Result<(), Error> { - // Run over all the bytes - let mut push_data_left = 0; - let mut next_push_data_left = 0; - let mut push_data_size = 0; - let mut value_rlc = challenges.keccak_input().map(|_| F::ZERO); - let length = F::from(bytecode.bytes.len() as u64); - - // Code hash with challenge is calculated only using the first row of the - // bytecode (header row), the rest of the code_hash in other rows are ignored. - let code_hash = challenges - .evm_word() - .map(|challenge| rlc::value(&bytecode.rows[0].code_hash.to_le_bytes(), challenge)); - - for (idx, row) in bytecode.rows.iter().enumerate() { - if fail_fast && *offset > last_row_offset { - log::error!( - "Bytecode Circuit: offset={} > last_row_offset={}", - offset, - last_row_offset - ); - return Err(Error::Synthesis); - } - - // Track which byte is an opcode and which is push - // data - if idx > 0 { - let is_code = push_data_left == 0; - - push_data_size = get_push_size(row.value.get_lower_128() as u8); - - next_push_data_left = if is_code { - push_data_size - } else { - push_data_left - 1 - }; - - value_rlc - .as_mut() - .zip(challenges.keccak_input()) - .map(|(value_rlc, challenge)| *value_rlc = *value_rlc * challenge + row.value); - } - - // Set the data for this row - if *offset < last_row_offset { - let row = BytecodeCircuitRow { - offset: *offset, + // Last row must be a padding row + self.set_row( + &mut region, last_row_offset, - code_hash, - tag: row.tag, - index: row.index, - is_code: row.is_code, - value: row.value, - push_data_left, - value_rlc, - length, - push_data_size: F::from(push_data_size), - }; - self.set_row(region, row.clone())?; - - trace!("bytecode.set_row({:?})", row); - - *offset += 1; - push_data_left = next_push_data_left - } - if *offset == last_row_offset { - self.set_padding_row(region, challenges, *offset, last_row_offset)?; - } - } + last_row_offset, + &BytecodeCircuitRow::pad(), + )?; - Ok(()) + Ok(()) + }, + ) } - fn set_padding_row( + fn set_row( &self, region: &mut Region<'_, F>, - challenges: &Challenges<Value<F>>, offset: usize, last_row_offset: usize, + row: &BytecodeCircuitRow<F>, ) -> Result<(), Error> { - let empty_hash = challenges - .evm_word() - .map(|challenge| rlc::value(EMPTY_CODE_HASH_LE.as_ref(), challenge)); - - self.set_row( - region, - BytecodeCircuitRow { - offset, - last_row_offset, - code_hash: empty_hash, - tag: F::from(BytecodeFieldTag::Header as u64), - value_rlc: Value::known(F::ZERO), - ..Default::default() - }, - ) - } - - fn set_row(&self, region: &mut Region<'_, F>, row: BytecodeCircuitRow<F>) -> Result<(), Error> { - let offset = row.offset; // q_enable region.assign_fixed( || format!("assign q_enable {}", offset), self.q_enable, offset, - || Value::known(F::from(row.enable().into())), + || Value::known(F::from((offset <= last_row_offset).into())), )?; // q_first @@ -696,7 +663,7 @@ impl<F: Field> BytecodeCircuitConfig<F> { || format!("assign q_last {}", offset), self.q_last, offset, - || Value::known(F::from(row.last().into())), + || Value::known(F::from((offset == last_row_offset).into())), )?; // Advices @@ -720,17 +687,20 @@ impl<F: Field> BytecodeCircuitConfig<F> { || Value::known(value), )?; } - for (name, column, value) in [ - ("code_hash", self.bytecode_table.code_hash, row.code_hash), - ("value_rlc", self.value_rlc, row.value_rlc), - ] { - region.assign_advice( - || format!("assign {} {}", name, offset), - column, - offset, - || value, - )?; - } + + region.assign_advice( + || format!("assign value_rlc {}", offset), + self.value_rlc, + offset, + || row.value_rlc, + )?; + + row.code_hash.assign_advice( + region, + || format!("assign code_hash {}", offset), + self.bytecode_table.code_hash, + offset, + )?; self.push_data_left_is_zero.assign( region, @@ -764,9 +734,9 @@ impl<F: Field> BytecodeCircuitConfig<F> { /// load fixed tables pub(crate) fn load_aux_tables(&self, layouter: &mut impl Layouter<F>) -> Result<(), Error> { // push table: BYTE -> NUM_PUSHED: - // [0, OpcodeId::PUSH1] -> 0 - // [OpcodeId::PUSH1, OpcodeId::PUSH32] -> [1..32] - // [OpcodeId::PUSH32, 256] -> 0 + // byte < OpcodeId::PUSH1 => 0 + // byte >= OpcodeId::PUSH1 && byte <= OpcodeId::PUSH32 => [1..32] + // byte > OpcodeId::PUSH32 && byte < 256 => 0 layouter.assign_region( || "push table", |mut region| { @@ -795,33 +765,23 @@ impl<F: Field> BytecodeCircuitConfig<F> { /// BytecodeCircuit #[derive(Clone, Default, Debug)] pub struct BytecodeCircuit<F: Field> { + pub(crate) bytecodes: CodeDB, /// Unrolled bytecodes - pub bytecodes: Vec<UnrolledBytecode<F>>, + pub(crate) rows: BytecodeCircuitAssignment<F>, /// Circuit size pub size: usize, - /// Overwrite - pub overwrite: UnrolledBytecode<F>, } impl<F: Field> BytecodeCircuit<F> { /// new BytecodeCircuitTester - pub fn new(bytecodes: Vec<UnrolledBytecode<F>>, size: usize) -> Self { - BytecodeCircuit { + pub fn new(bytecodes: CodeDB, size: usize) -> Self { + let rows: BytecodeCircuitAssignment<F> = bytecodes.clone().into(); + Self { bytecodes, + rows, size, - overwrite: Default::default(), } } - - /// Creates bytecode circuit from block and bytecode_size. - pub fn new_from_block_sized(block: &witness::Block<F>, bytecode_size: usize) -> Self { - let bytecodes: Vec<UnrolledBytecode<F>> = block - .bytecodes - .values() - .map(|b| unroll(b.bytes.clone())) - .collect(); - Self::new(bytecodes, bytecode_size) - } } impl<F: Field> SubCircuit<F> for BytecodeCircuit<F> { @@ -834,18 +794,13 @@ impl<F: Field> SubCircuit<F> for BytecodeCircuit<F> { } fn new_from_block(block: &witness::Block<F>) -> Self { - let bytecode_size = block.circuits_params.max_bytecode; - Self::new_from_block_sized(block, bytecode_size) + Self::new(block.bytecodes.clone(), block.circuits_params.max_bytecode) } /// Return the minimum number of rows required to prove the block fn min_num_rows_block(block: &witness::Block<F>) -> (usize, usize) { ( - block - .bytecodes - .values() - .map(|bytecode| bytecode.bytes.len() + 1) - .sum(), + block.bytecodes.num_rows_required_for_bytecode_table(), block.circuits_params.max_bytecode, ) } @@ -858,13 +813,6 @@ impl<F: Field> SubCircuit<F> for BytecodeCircuit<F> { layouter: &mut impl Layouter<F>, ) -> Result<(), Error> { config.load_aux_tables(layouter)?; - config.assign_internal( - layouter, - self.size, - &self.bytecodes, - &self.overwrite, - challenges, - false, - ) + config.assign_internal(layouter, self.size, &self.rows, challenges) } } diff --git a/zkevm-circuits/src/bytecode_circuit/dev.rs b/zkevm-circuits/src/bytecode_circuit/dev.rs index 178aecc90d..71ccb42c00 100644 --- a/zkevm-circuits/src/bytecode_circuit/dev.rs +++ b/zkevm-circuits/src/bytecode_circuit/dev.rs @@ -10,6 +10,7 @@ use halo2_proofs::{ circuit::{Layouter, SimpleFloorPlanner}, plonk::{Circuit, ConstraintSystem, Error}, }; +use itertools::Itertools; impl<F: Field> Circuit<F> for BytecodeCircuit<F> { type Config = (BytecodeCircuitConfig<F>, Challenges); @@ -49,7 +50,12 @@ impl<F: Field> Circuit<F> for BytecodeCircuit<F> { config.keccak_table.dev_load( &mut layouter, - self.bytecodes.iter().map(|b| &b.bytes), + &self + .bytecodes + .clone() + .into_iter() + .map(|b| b.code()) + .collect_vec(), &challenges, )?; self.synthesize_sub(&config, &challenges, &mut layouter)?; diff --git a/zkevm-circuits/src/bytecode_circuit/param.rs b/zkevm-circuits/src/bytecode_circuit/param.rs deleted file mode 100644 index d23f281759..0000000000 --- a/zkevm-circuits/src/bytecode_circuit/param.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub const HASH_WIDTH: usize = 32; -pub const KECCAK_WIDTH: usize = 3; -pub const PUSH_TABLE_WIDTH: usize = 2; diff --git a/zkevm-circuits/src/bytecode_circuit/test.rs b/zkevm-circuits/src/bytecode_circuit/test.rs index c765aec905..68fc65a212 100644 --- a/zkevm-circuits/src/bytecode_circuit/test.rs +++ b/zkevm-circuits/src/bytecode_circuit/test.rs @@ -1,14 +1,14 @@ -#![allow(unused_imports)] use crate::{ - bytecode_circuit::{bytecode_unroller::*, circuit::BytecodeCircuit}, - table::BytecodeFieldTag, - util::{is_push, keccak, unusable_rows, Challenges, SubCircuit}, + bytecode_circuit::circuit::BytecodeCircuit, + util::{log2_ceil, unusable_rows, SubCircuit}, }; -use bus_mapping::evm::OpcodeId; -use eth_types::{Bytecode, Field, Word}; +use bus_mapping::{evm::OpcodeId, state_db::CodeDB}; +use eth_types::Field; use halo2_proofs::{arithmetic::Field as Halo2Field, dev::MockProver, halo2curves::bn256::Fr}; use log::error; +use super::circuit::BytecodeCircuitRow; + #[test] fn bytecode_circuit_unusable_rows() { assert_eq!( @@ -18,186 +18,102 @@ fn bytecode_circuit_unusable_rows() { } impl<F: Field> BytecodeCircuit<F> { - /// Verify that the selected bytecode fulfills the circuit - pub fn verify_raw(k: u32, bytecodes: Vec<Vec<u8>>) { - let unrolled: Vec<_> = bytecodes.iter().map(|b| unroll(b.clone())).collect(); - Self::verify(k, unrolled, true); + fn mut_rows(&mut self, mut mut_func: impl FnMut(&mut Vec<BytecodeCircuitRow<F>>)) -> Self { + mut_func(&mut self.rows.0); + self.clone() } - pub(crate) fn verify(k: u32, bytecodes: Vec<UnrolledBytecode<F>>, success: bool) { - let circuit = BytecodeCircuit::<F>::new(bytecodes, 2usize.pow(k)); - - let prover = MockProver::<F>::run(k, &circuit, Vec::new()).unwrap(); - let result = prover.verify(); - if let Err(failures) = &result { - for failure in failures.iter() { - error!("{}", failure); - } - } - assert_eq!(result.is_ok(), success); + fn from_bytes(bytecodes: impl Into<CodeDB>, k: u32) -> Self { + Self::new(bytecodes.into(), 2usize.pow(k)) } -} - -/// Test bytecode circuit with unrolled bytecode -pub fn test_bytecode_circuit_unrolled<F: Field>( - k: u32, - bytecodes: Vec<UnrolledBytecode<F>>, - success: bool, -) { - let circuit = BytecodeCircuit::<F>::new(bytecodes, 2usize.pow(k)); - let prover = MockProver::<F>::run(k, &circuit, Vec::new()).unwrap(); - let result = prover.verify_par(); - if let Err(failures) = &result { - for failure in failures.iter() { - error!("{}", failure); - } - } - let error_msg = if success { "valid" } else { "invalid" }; - assert_eq!(result.is_ok(), success, "proof must be {}", error_msg); -} - -/// Verify unrolling code -#[test] -fn bytecode_unrolling() { - let k = 10; - let mut rows = vec![]; - let mut bytecode = Bytecode::default(); - // First add all non-push bytes, which should all be seen as code - for byte in 0u8..=255u8 { - if !is_push(byte) { - bytecode.write(byte, true); - rows.push(BytecodeRow { - code_hash: Word::zero(), - tag: Fr::from(BytecodeFieldTag::Byte as u64), - index: Fr::from(rows.len() as u64), - is_code: Fr::from(true as u64), - value: Fr::from(byte as u64), - }); - } - } - // Now add the different push ops - for n in 1..=32 { - let data_byte = OpcodeId::PUSH32.as_u8(); - bytecode.push( - n, - Word::from_little_endian(&vec![data_byte; n as usize][..]), - ); - rows.push(BytecodeRow { - code_hash: Word::zero(), - tag: Fr::from(BytecodeFieldTag::Byte as u64), - index: Fr::from(rows.len() as u64), - is_code: Fr::from(true as u64), - value: Fr::from(OpcodeId::PUSH1.as_u64() + ((n - 1) as u64)), - }); - for _ in 0..n { - rows.push(BytecodeRow { - code_hash: Word::zero(), - tag: Fr::from(BytecodeFieldTag::Byte as u64), - index: Fr::from(rows.len() as u64), - is_code: Fr::from(false as u64), - value: Fr::from(data_byte as u64), - }); + fn verify(&self, success: bool) { + let prover = MockProver::<F>::run(log2_ceil(self.size), self, Vec::new()).unwrap(); + let result = prover.verify_par(); + if success { + if let Err(failures) = &result { + for failure in failures.iter() { + error!("{}", failure); + } + } } + let error_msg = if success { "valid" } else { "invalid" }; + assert_eq!(result.is_ok(), success, "proof must be {}", error_msg); } - // Set the code_hash of the complete bytecode in the rows - let code_hash = keccak(&bytecode.to_vec()[..]); - for row in rows.iter_mut() { - row.code_hash = code_hash; - } - rows.insert( - 0, - BytecodeRow { - code_hash, - tag: Fr::from(BytecodeFieldTag::Header as u64), - index: Fr::ZERO, - is_code: Fr::ZERO, - value: Fr::from(bytecode.to_vec().len() as u64), - }, - ); - // Unroll the bytecode - let unrolled = unroll(bytecode.to_vec()); - // Check if the bytecode was unrolled correctly - assert_eq!( - UnrolledBytecode { - bytes: bytecode.to_vec(), - rows, - }, - unrolled, - ); - // Verify the unrolling in the circuit - test_bytecode_circuit_unrolled::<Fr>(k, vec![unrolled], true); } /// Tests a fully empty circuit #[test] fn bytecode_empty() { let k = 9; - test_bytecode_circuit_unrolled::<Fr>(k, vec![unroll(vec![])], true); + BytecodeCircuit::<Fr>::from_bytes(vec![vec![]], k).verify(true); } #[test] fn bytecode_simple() { let k = 9; - let bytecodes = vec![unroll(vec![7u8]), unroll(vec![6u8]), unroll(vec![5u8])]; - test_bytecode_circuit_unrolled::<Fr>(k, bytecodes, true); + let bytecodes = vec![vec![7u8], vec![6u8], vec![5u8]]; + BytecodeCircuit::<Fr>::from_bytes(bytecodes, k).verify(true); } /// Tests a fully full circuit #[test] fn bytecode_full() { let k = 9; - test_bytecode_circuit_unrolled::<Fr>(k, vec![unroll(vec![7u8; 2usize.pow(k) - 8])], true); + BytecodeCircuit::<Fr>::from_bytes(vec![vec![7u8; 2usize.pow(k) - 8]], k).verify(true); } #[test] fn bytecode_last_row_with_byte() { let k = 9; // Last row must be a padding row, so we have one row less for actual bytecode - test_bytecode_circuit_unrolled::<Fr>(k, vec![unroll(vec![7u8; 2usize.pow(k) - 7])], false); + BytecodeCircuit::<Fr>::from_bytes(vec![vec![7u8; 2usize.pow(k) - 7]], k).verify(false); } /// Tests a circuit with incomplete bytecode #[test] fn bytecode_incomplete() { let k = 9; - test_bytecode_circuit_unrolled::<Fr>(k, vec![unroll(vec![7u8; 2usize.pow(k) + 1])], false); + BytecodeCircuit::<Fr>::from_bytes(vec![vec![7u8; 2usize.pow(k) + 1]], k).verify(false); } /// Tests multiple bytecodes in a single circuit #[test] fn bytecode_push() { let k = 9; - test_bytecode_circuit_unrolled::<Fr>( - k, + BytecodeCircuit::<Fr>::from_bytes( vec![ - unroll(vec![]), - unroll(vec![OpcodeId::PUSH32.as_u8()]), - unroll(vec![OpcodeId::PUSH32.as_u8(), OpcodeId::ADD.as_u8()]), - unroll(vec![OpcodeId::ADD.as_u8(), OpcodeId::PUSH32.as_u8()]), - unroll(vec![ + vec![], + vec![OpcodeId::PUSH32.as_u8()], + vec![OpcodeId::PUSH32.as_u8(), OpcodeId::ADD.as_u8()], + vec![OpcodeId::ADD.as_u8(), OpcodeId::PUSH32.as_u8()], + vec![ OpcodeId::ADD.as_u8(), OpcodeId::PUSH32.as_u8(), OpcodeId::ADD.as_u8(), - ]), + ], ], - true, - ); + k, + ) + .verify(true); } /// Test invalid code_hash data #[test] fn bytecode_invalid_hash_data() { let k = 9; - let bytecode = vec![8u8, 2, 3, 8, 9, 7, 128]; - let unrolled = unroll(bytecode); - test_bytecode_circuit_unrolled::<Fr>(k, vec![unrolled.clone()], true); + let bytecodes = vec![vec![8u8, 2, 3, 8, 9, 7, 128]]; // Change the code_hash on the first position (header row) { - let mut invalid = unrolled; - invalid.rows[0].code_hash += Word::one(); - log::trace!("bytecode_invalid_hash_data: Change the code_hash on the first position"); - test_bytecode_circuit_unrolled::<Fr>(k, vec![invalid], false); + BytecodeCircuit::<Fr>::from_bytes(bytecodes, k) + .mut_rows(|rows| { + let code_hash = rows[0].code_hash; + rows[0].code_hash = code_hash.map(|limb| limb.map(|limb| limb + Fr::one())); + log::trace!( + "bytecode_invalid_hash_data: Change the code_hash on the first position" + ); + }) + .verify(false); } // TODO: other rows code_hash are ignored by the witness generation, to // test other rows invalid code_hash, we would need to inject an evil @@ -206,25 +122,26 @@ fn bytecode_invalid_hash_data() { /// Test invalid index #[test] -#[ignore] fn bytecode_invalid_index() { let k = 9; - let bytecode = vec![8u8, 2, 3, 8, 9, 7, 128]; - let unrolled = unroll(bytecode); - test_bytecode_circuit_unrolled::<Fr>(k, vec![unrolled.clone()], true); + let bytecodes = vec![vec![8u8, 2, 3, 8, 9, 7, 128]]; // Start the index at 1 { - let mut invalid = unrolled.clone(); - for row in invalid.rows.iter_mut() { - row.index += Fr::ONE; - } - test_bytecode_circuit_unrolled::<Fr>(k, vec![invalid], false); + BytecodeCircuit::<Fr>::from_bytes(bytecodes.clone(), k) + .mut_rows(|rows| { + for row in rows.iter_mut() { + row.index += Fr::ONE; + } + }) + .verify(false); } // Don't increment an index once { - let mut invalid = unrolled; - invalid.rows.last_mut().unwrap().index -= Fr::ONE; - test_bytecode_circuit_unrolled::<Fr>(k, vec![invalid], false); + BytecodeCircuit::<Fr>::from_bytes(bytecodes, k) + .mut_rows(|rows| { + rows.last_mut().unwrap().index -= Fr::ONE; + }) + .verify(false); } } @@ -232,26 +149,30 @@ fn bytecode_invalid_index() { #[test] fn bytecode_invalid_byte_data() { let k = 9; - let bytecode = vec![8u8, 2, 3, 8, 9, 7, 128]; - let unrolled = unroll(bytecode); - test_bytecode_circuit_unrolled::<Fr>(k, vec![unrolled.clone()], true); + let bytecodes = vec![vec![8u8, 2, 3, 8, 9, 7, 128]]; // Change the first byte { - let mut invalid = unrolled.clone(); - invalid.rows[1].value = Fr::from(9u64); - test_bytecode_circuit_unrolled::<Fr>(k, vec![invalid], false); + BytecodeCircuit::<Fr>::from_bytes(bytecodes.clone(), k) + .mut_rows(|rows| { + rows[1].value = Fr::from(9u64); + }) + .verify(false); } // Change a byte on another position { - let mut invalid = unrolled.clone(); - invalid.rows[5].value = Fr::from(6u64); - test_bytecode_circuit_unrolled::<Fr>(k, vec![invalid], false); + BytecodeCircuit::<Fr>::from_bytes(bytecodes.clone(), k) + .mut_rows(|rows| { + rows[5].value = Fr::from(6u64); + }) + .verify(false); } // Set a byte value out of range { - let mut invalid = unrolled; - invalid.rows[3].value = Fr::from(256u64); - test_bytecode_circuit_unrolled::<Fr>(k, vec![invalid], false); + BytecodeCircuit::<Fr>::from_bytes(bytecodes, k) + .mut_rows(|rows| { + rows[3].value = Fr::from(256u64); + }) + .verify(false); } } @@ -259,7 +180,7 @@ fn bytecode_invalid_byte_data() { #[test] fn bytecode_invalid_is_code() { let k = 9; - let bytecode = vec![ + let bytecodes = vec![vec![ OpcodeId::ADD.as_u8(), OpcodeId::PUSH1.as_u8(), OpcodeId::PUSH1.as_u8(), @@ -267,59 +188,57 @@ fn bytecode_invalid_is_code() { OpcodeId::PUSH7.as_u8(), OpcodeId::ADD.as_u8(), OpcodeId::PUSH6.as_u8(), - ]; - let unrolled = unroll(bytecode); - test_bytecode_circuit_unrolled::<Fr>(k, vec![unrolled.clone()], true); + ]]; + BytecodeCircuit::<Fr>::from_bytes(bytecodes.clone(), k).verify(true); // Mark the 3rd byte as code (is push data from the first PUSH1) { - let mut invalid = unrolled.clone(); - invalid.rows[3].is_code = Fr::ONE; - test_bytecode_circuit_unrolled::<Fr>(k, vec![invalid], false); + BytecodeCircuit::<Fr>::from_bytes(bytecodes.clone(), k) + .mut_rows(|rows| { + rows[3].is_code = Fr::ONE; + }) + .verify(false); } // Mark the 4rd byte as data (is code) { - let mut invalid = unrolled.clone(); - invalid.rows[4].is_code = Fr::ZERO; - test_bytecode_circuit_unrolled::<Fr>(k, vec![invalid], false); + BytecodeCircuit::<Fr>::from_bytes(bytecodes.clone(), k) + .mut_rows(|rows| { + rows[4].is_code = Fr::ZERO; + }) + .verify(false); } // Mark the 7th byte as code (is data for the PUSH7) { - let mut invalid = unrolled; - invalid.rows[7].is_code = Fr::ONE; - test_bytecode_circuit_unrolled::<Fr>(k, vec![invalid], false); + BytecodeCircuit::<Fr>::from_bytes(bytecodes, k) + .mut_rows(|rows| { + rows[7].is_code = Fr::ONE; + }) + .verify(false); } } #[test] -#[should_panic] -#[allow(clippy::clone_on_copy)] fn bytecode_soundness_bug_1() { let k = 9; - let bytecode = vec![1, 2, 3, 4]; - let bytecode_len = bytecode.len(); - let unrolled = unroll(bytecode); - let unrolled_len = unrolled.rows.len(); - let code_hash = unrolled.rows[0].code_hash.clone(); - let mut index = bytecode_len as u64; - let size = 100; - let minimum_rows = 8; - - let mut overwrite = unrolled.clone(); - for i in 0..size - minimum_rows + 3 { - if i >= unrolled_len { - overwrite.rows.push(BytecodeRow { - code_hash: code_hash.clone(), - tag: Fr::ONE, - index: Fr::from(index), - is_code: Fr::ONE, - value: Fr::from((i % 10 + 1) as u64), - }); - index += 1; - } - } - let mut circuit = BytecodeCircuit::<Fr>::new(vec![unrolled], size); - circuit.overwrite = overwrite; - - let prover = MockProver::<Fr>::run(k, &circuit, Vec::new()).unwrap(); - prover.assert_satisfied_par(); + let bytecodes = vec![vec![1, 2, 3, 4]]; + + let bytecode_len = bytecodes[0].len(); + BytecodeCircuit::<Fr>::from_bytes(bytecodes, k) + .mut_rows(|rows| { + let code_hash = rows[0].code_hash; + let mut index = bytecode_len as u64; + let size = 100; + let minimum_rows = 8; + let len = rows.len(); + for i in len..size - minimum_rows { + rows.push(BytecodeCircuitRow::new( + code_hash, + Fr::ONE, + Fr::from(index), + Fr::ONE, + Fr::from((i % 10 + 1) as u64), + )); + index += 1; + } + }) + .verify(false); } diff --git a/zkevm-circuits/src/circuit_tools.rs b/zkevm-circuits/src/circuit_tools.rs new file mode 100644 index 0000000000..2c8535d22e --- /dev/null +++ b/zkevm-circuits/src/circuit_tools.rs @@ -0,0 +1,8 @@ +//! Circuit utilities +#![allow(missing_docs)] +#[macro_use] +pub mod constraint_builder; +pub mod cached_region; +pub mod cell_manager; +pub mod gadgets; +pub mod memory; diff --git a/zkevm-circuits/src/circuit_tools/cached_region.rs b/zkevm-circuits/src/circuit_tools/cached_region.rs new file mode 100644 index 0000000000..d530f41fc7 --- /dev/null +++ b/zkevm-circuits/src/circuit_tools/cached_region.rs @@ -0,0 +1,229 @@ +use crate::circuit_tools::cell_manager::Cell; +use eth_types::Field; +use halo2_proofs::{ + circuit::{AssignedCell, Region, Value}, + plonk::{Advice, Any, Assigned, Column, Error, Expression, Fixed}, + poly::Rotation, +}; +use std::{ + collections::HashMap, + hash::{Hash, Hasher}, +}; + +use super::{cell_manager::CellType, constraint_builder::ConstraintBuilder}; + +pub trait ChallengeSet<F: Field> { + fn indexed(&self) -> Vec<&Value<F>>; +} + +impl<F: Field, V: AsRef<[Value<F>]>> ChallengeSet<F> for V { + fn indexed(&self) -> Vec<&Value<F>> { + self.as_ref().iter().collect() + } +} + +pub struct CachedRegion<'r, 'b, F: Field> { + region: &'r mut Region<'b, F>, + pub advice: HashMap<(usize, usize), F>, + pub fixed: HashMap<(usize, usize), F>, + disable_description: bool, + regions: Vec<(usize, usize)>, + pub key_r: F, + pub keccak_r: F, +} + +impl<'r, 'b, F: Field> CachedRegion<'r, 'b, F> { + pub(crate) fn new(region: &'r mut Region<'b, F>, keccak_r: F) -> Self { + Self { + region, + advice: HashMap::new(), + fixed: HashMap::new(), + disable_description: false, + regions: Vec::new(), + key_r: keccak_r, + keccak_r, + } + } + + pub(crate) fn set_disable_description(&mut self, disable_description: bool) { + self.disable_description = disable_description; + } + + pub(crate) fn push_region(&mut self, offset: usize, region_id: usize) { + self.regions.push((offset, region_id)); + } + + pub(crate) fn pop_region(&mut self) { + // Nothing to do + } + + pub(crate) fn assign_stored_expressions<C: CellType, S: ChallengeSet<F>>( + &mut self, + cb: &ConstraintBuilder<F, C>, + challenges: &S, + ) -> Result<(), Error> { + for (offset, region_id) in self.regions.clone() { + for stored_expression in cb.get_stored_expressions(region_id).iter() { + // println!("stored expression: {}", stored_expression.name); + stored_expression.assign(self, challenges, offset)?; + } + } + Ok(()) + } + + /// Assign an advice column value (witness). + pub fn assign_advice<'v, V, VR, A, AR>( + &'v mut self, + annotation: A, + column: Column<Advice>, + offset: usize, + to: V, + ) -> Result<AssignedCell<VR, F>, Error> + where + V: Fn() -> Value<VR> + 'v, + for<'vr> Assigned<F>: From<&'vr VR>, + A: Fn() -> AR, + AR: Into<String>, + { + // Actually set the value + let res = self.region.assign_advice(annotation, column, offset, &to); + // Cache the value + // Note that the `value_field` in `AssignedCell` might be `Value::unkonwn` if + // the column has different phase than current one, so we call to `to` + // again here to cache the value. + if res.is_ok() { + to().map(|f: VR| { + let existing = self + .advice + .insert((column.index(), offset), Assigned::from(&f).evaluate()); + assert!(existing.is_none()); + existing + }); + } + res + } + + pub fn name_column<A, AR, T>(&mut self, annotation: A, column: T) + where + A: Fn() -> AR, + AR: Into<String>, + T: Into<Column<Any>>, + { + self.region + .name_column(|| annotation().into(), column.into()); + } + + pub fn assign_fixed<'v, V, VR, A, AR>( + &'v mut self, + annotation: A, + column: Column<Fixed>, + offset: usize, + to: V, + ) -> Result<AssignedCell<VR, F>, Error> + where + V: Fn() -> Value<VR> + 'v, + for<'vr> Assigned<F>: From<&'vr VR>, + A: Fn() -> AR, + AR: Into<String>, + { + // Actually set the value + let res = self.region.assign_fixed(annotation, column, offset, &to); + // Cache the value + // Note that the `value_field` in `AssignedCell` might be `Value::unkonwn` if + // the column has different phase than current one, so we call to `to` + // again here to cache the value. + if res.is_ok() { + to().map(|f: VR| { + let existing = self + .fixed + .insert((column.index(), offset), Assigned::from(&f).evaluate()); + assert!(existing.is_none()); + existing + }); + } + res + } + + pub fn get_fixed(&self, row_index: usize, column_index: usize, rotation: Rotation) -> F { + let zero = F::ZERO; + *self + .fixed + .get(&(column_index, row_index + rotation.0 as usize)) + .unwrap_or(&zero) + } + + pub fn get_advice(&self, row_index: usize, column_index: usize, rotation: Rotation) -> F { + let zero = F::ZERO; + *self + .advice + .get(&(column_index, row_index + rotation.0 as usize)) + .unwrap_or(&zero) + } + + /// Constrains a cell to have a constant value. + /// + /// Returns an error if the cell is in a column where equality has not been + /// enabled. + pub fn constrain_constant<VR>( + &mut self, + cell: AssignedCell<F, F>, + constant: VR, + ) -> Result<(), Error> + where + VR: Into<Assigned<F>>, + { + self.region.constrain_constant(cell.cell(), constant.into()) + } +} + +#[derive(Debug, Clone)] +pub struct StoredExpression<F, C: CellType> { + pub(crate) name: String, + pub(crate) cell: Cell<F>, + pub(crate) cell_type: C, + pub(crate) expr: Expression<F>, + pub(crate) expr_id: String, +} + +impl<F, C: CellType> Hash for StoredExpression<F, C> { + fn hash<H: Hasher>(&self, state: &mut H) { + self.expr_id.hash(state); + self.cell_type.hash(state); + } +} + +impl<F: Field, C: CellType> StoredExpression<F, C> { + pub fn assign<S: ChallengeSet<F>>( + &self, + region: &mut CachedRegion<'_, '_, F>, + challenges: &S, + offset: usize, + ) -> Result<Value<F>, Error> { + let value = self.expr.evaluate( + &|scalar| Value::known(scalar), + &|_| unimplemented!("selector column"), + &|fixed_query| { + Value::known(region.get_fixed( + offset, + fixed_query.column_index(), + fixed_query.rotation(), + )) + }, + &|advice_query| { + Value::known(region.get_advice( + offset, + advice_query.column_index(), + advice_query.rotation(), + )) + }, + &|_| unimplemented!("instance column"), + &|challenge| *challenges.indexed()[challenge.index()], + &|a| -a, + &|a, b| a + b, + &|a, b| a * b, + &|a, scalar| a * Value::known(scalar), + ); + self.cell.assign_value(region, offset, value)?; + Ok(value) + } +} diff --git a/zkevm-circuits/src/circuit_tools/cell_manager.rs b/zkevm-circuits/src/circuit_tools/cell_manager.rs new file mode 100644 index 0000000000..699dd1e7f4 --- /dev/null +++ b/zkevm-circuits/src/circuit_tools/cell_manager.rs @@ -0,0 +1,399 @@ +//! Cell manager +use crate::{ + circuit_tools::cached_region::CachedRegion, + util::{query_expression, word::Word, Expr}, +}; + +use crate::table::LookupTable; +use eth_types::Field; +use halo2_proofs::{ + circuit::{AssignedCell, Value}, + plonk::{ + Advice, Any, Column, ConstraintSystem, Error, Expression, FirstPhase, SecondPhase, + ThirdPhase, VirtualCells, + }, + poly::Rotation, +}; +use std::{cmp::Ordering, collections::BTreeMap, fmt::Debug, hash::Hash}; + +#[derive(Clone, Debug, Default)] +pub(crate) struct Cell<F> { + // expression for constraint + expression: Option<Expression<F>>, + pub column: Option<Column<Advice>>, + // relative position to selector for synthesis + pub rotation: usize, +} + +impl<F: Field> Cell<F> { + pub(crate) fn new(meta: &mut VirtualCells<F>, column: Column<Advice>, rotation: usize) -> Self { + Self { + expression: Some(meta.query_advice(column, Rotation(rotation as i32))), + column: Some(column), + rotation, + } + } + + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + value: F, + ) -> Result<AssignedCell<F, F>, Error> { + region.assign_advice( + || { + format!( + "Cell column: {:?} and rotation: {}", + self.column, self.rotation + ) + }, + self.column.unwrap(), + offset + self.rotation, + || Value::known(value), + ) + } + + pub(crate) fn assign_value( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + value: Value<F>, + ) -> Result<AssignedCell<F, F>, Error> { + region.assign_advice( + || { + format!( + "Cell column: {:?} and rotation: {}", + self.column.unwrap(), + self.rotation + ) + }, + self.column.unwrap(), + offset + self.rotation, + || value, + ) + } + + pub(crate) fn column(&self) -> Column<Advice> { + self.column.unwrap() + } + + pub(crate) fn rotation(&self) -> usize { + self.rotation + } + + pub(crate) fn rot(&self, meta: &mut VirtualCells<F>, rot: usize) -> Expression<F> { + meta.query_advice(self.column.unwrap(), Rotation((self.rotation + rot) as i32)) + } + + pub(crate) fn identifier(&self) -> String { + self.expr().identifier() + } +} + +impl<F: Field> Expr<F> for Cell<F> { + fn expr(&self) -> Expression<F> { + self.expression.as_ref().unwrap().clone() + } +} + +impl<F: Field> Expr<F> for &Cell<F> { + fn expr(&self) -> Expression<F> { + self.expression.as_ref().unwrap().clone() + } +} + +pub(crate) type WordCell<F> = Word<Cell<F>>; + +impl<F: Field> WordCell<F> { + pub fn expr(&self) -> Word<Expression<F>> { + Word::new([self.lo().expr(), self.hi().expr()]) + } +} + +#[derive(Clone, Debug)] +pub struct CellConfig<C: CellType> { + pub cell_type: C, + pub num_columns: usize, + pub phase: u8, + pub is_permute: bool, +} + +impl<C: CellType> From<(C, usize, u8, bool)> for CellConfig<C> { + fn from((cell_type, num_columns, phase, is_permute): (C, usize, u8, bool)) -> Self { + Self { + cell_type, + num_columns, + phase, + is_permute, + } + } +} + +impl<C: CellType> CellConfig<C> { + pub fn init_columns<F: Field>(&self, meta: &mut ConstraintSystem<F>) -> Vec<Column<Advice>> { + let mut columns = Vec::with_capacity(self.num_columns); + for _ in 0..self.num_columns { + let tmp = match self.phase { + 1 => meta.advice_column_in(FirstPhase), + 2 => meta.advice_column_in(SecondPhase), + 3 => meta.advice_column_in(ThirdPhase), + _ => unreachable!(), + }; + columns.push(tmp); + } + if self.is_permute { + let _ = columns + .iter() + .map(|c| meta.enable_equality(*c)) + .collect::<Vec<()>>(); + } + columns + } +} + +pub trait CellType: + Clone + Copy + Debug + PartialEq + Eq + PartialOrd + Ord + Hash + Default +{ + fn byte_type() -> Option<Self>; + + // The phase that given `Expression` becomes evaluateable. + fn expr_phase<F: Field>(expr: &Expression<F>) -> u8 { + use Expression::*; + match expr { + Challenge(challenge) => challenge.phase() + 1, + Advice(query) => query.phase(), + Constant(_) | Selector(_) | Fixed(_) | Instance(_) => 0, + Negated(a) | Expression::Scaled(a, _) => Self::expr_phase(a), + Sum(a, b) | Product(a, b) => std::cmp::max(Self::expr_phase(a), Self::expr_phase(b)), + } + } + + /// Return the storage phase of phase + fn storage_for_phase(phase: u8) -> Self; + + /// Return the storage cell of the expression + fn storage_for_expr<F: Field>(expr: &Expression<F>) -> Self { + Self::storage_for_phase(Self::expr_phase::<F>(expr)) + } +} + +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum DefaultCellType { + StoragePhase1, + StoragePhase2, + StoragePhase3, +} + +impl Default for DefaultCellType { + fn default() -> Self { + Self::StoragePhase1 + } +} + +impl CellType for DefaultCellType { + fn byte_type() -> Option<Self> { + Some(DefaultCellType::StoragePhase1) + } + + fn storage_for_phase(phase: u8) -> Self { + // println!("phase: {}", phase); + match phase { + 1 => DefaultCellType::StoragePhase1, + 2 => DefaultCellType::StoragePhase2, + 3 => DefaultCellType::StoragePhase3, + _ => unreachable!(), + } + } +} + +#[derive(Clone, Debug)] +pub(crate) struct CellColumn<F, C: CellType> { + pub(crate) column: Column<Advice>, + index: usize, + pub(crate) cell_type: C, + height: usize, + cells: Vec<Cell<F>>, + pub(crate) expr: Expression<F>, +} + +impl<F: Field, C: CellType> PartialEq for CellColumn<F, C> { + fn eq(&self, other: &Self) -> bool { + self.index == other.index + && self.cell_type == other.cell_type + && self.height == other.height + } +} + +impl<F: Field, C: CellType> Eq for CellColumn<F, C> {} + +impl<F: Field, C: CellType> PartialOrd for CellColumn<F, C> { + fn partial_cmp(&self, other: &Self) -> Option<Ordering> { + self.height.partial_cmp(&other.height) + } +} + +impl<F: Field, C: CellType> Ord for CellColumn<F, C> { + fn cmp(&self, other: &Self) -> Ordering { + self.height.cmp(&other.height) + } +} + +impl<F: Field, C: CellType> Expr<F> for CellColumn<F, C> { + fn expr(&self) -> Expression<F> { + self.expr.clone() + } +} + +#[derive(Clone, Debug)] +pub struct CellManager<F, C: CellType> { + configs: Vec<CellConfig<C>>, + columns: Vec<CellColumn<F, C>>, + height: usize, + height_limit: usize, +} + +impl<F: Field, C: CellType> CellManager<F, C> { + pub(crate) fn new( + meta: &mut ConstraintSystem<F>, + configs: Vec<(C, usize, u8, bool)>, + offset: usize, + max_height: usize, + ) -> Self { + let configs = configs + .into_iter() + .map(|c| c.into()) + .collect::<Vec<CellConfig<C>>>(); + + let mut columns = Vec::new(); + for config in configs.iter() { + let cols = config.init_columns(meta); + for col in cols.iter() { + let mut cells = Vec::new(); + for r in 0..max_height { + query_expression(meta, |meta| { + cells.push(Cell::new(meta, *col, offset + r)); + }); + } + columns.push(CellColumn { + column: *col, + index: columns.len(), + cell_type: config.cell_type, + height: 0, + expr: cells[0].expr(), + cells, + }); + } + } + Self { + configs, + columns, + height: max_height, + height_limit: max_height, + } + } + + pub(crate) fn query_cells(&mut self, cell_type: C, count: usize) -> Vec<Cell<F>> { + let mut cells = Vec::with_capacity(count); + while cells.len() < count { + let column_idx = self.next_column(cell_type); + let column = &mut self.columns[column_idx]; + cells.push(column.cells[column.height].clone()); + column.height += 1; + } + cells + } + + pub(crate) fn query_cell(&mut self, cell_type: C) -> Cell<F> { + self.query_cells(cell_type, 1)[0].clone() + } + + pub(crate) fn reset(&mut self, height_limit: usize) { + assert!(height_limit <= self.height); + self.height_limit = height_limit; + for column in self.columns.iter_mut() { + column.height = 0; + } + } + + fn next_column(&self, cell_type: C) -> usize { + let mut best_index: Option<usize> = None; + let mut best_height = self.height; + for column in self.columns.iter() { + if column.cell_type == cell_type && column.height < best_height { + best_index = Some(column.index); + best_height = column.height; + } + } + if best_height >= self.height_limit { + best_index = None; + } + match best_index { + Some(index) => index, + None => unreachable!("not enough cells for query: {:?}", cell_type), + } + } + + pub(crate) fn get_height(&self) -> usize { + self.columns + .iter() + .map(|column| column.height) + .max() + .unwrap() + } + + /// Returns a map of CellType -> (width, height, num_cells) + pub(crate) fn get_stats(&self) -> BTreeMap<C, (usize, usize, usize)> { + let mut data = BTreeMap::new(); + for column in self.columns.iter() { + let (mut count, mut height, mut num_cells) = + data.get(&column.cell_type).unwrap_or(&(0, 0, 0)); + count += 1; + height = height.max(column.height); + num_cells += column.height; + data.insert(column.cell_type, (count, height, num_cells)); + } + data + } + + pub(crate) fn columns(&self) -> &[CellColumn<F, C>] { + &self.columns + } + + pub(crate) fn get_typed_columns(&self, cell_type: C) -> Vec<CellColumn<F, C>> { + let mut columns = Vec::new(); + for column in self.columns.iter() { + if column.cell_type == cell_type { + columns.push(column.clone()); + } + } + columns + } +} + +/// LookupTable created dynamically and stored in an advice column +#[derive(Clone, Debug)] +pub struct DynamicLookupTable { + /// Table + pub table: Column<Advice>, +} + +impl DynamicLookupTable { + /// Construct a new BlockTable + pub fn from<F: Field, C: CellType>(cm: &CellManager<F, C>, cell_type: C) -> Self { + let table_columns = cm.get_typed_columns(cell_type); + assert_eq!(table_columns.len(), 1); + Self { + table: table_columns[0].column, + } + } +} + +impl<F: Field> LookupTable<F> for DynamicLookupTable { + fn columns(&self) -> Vec<Column<Any>> { + vec![self.table.into()] + } + + fn annotations(&self) -> Vec<String> { + vec![String::from("generated")] + } +} diff --git a/zkevm-circuits/src/circuit_tools/constraint_builder.rs b/zkevm-circuits/src/circuit_tools/constraint_builder.rs new file mode 100644 index 0000000000..1d5e6e0783 --- /dev/null +++ b/zkevm-circuits/src/circuit_tools/constraint_builder.rs @@ -0,0 +1,1706 @@ +//! Circuit utilities +use std::{ + collections::HashMap, + ops::{Add, Mul}, + vec, +}; + +use crate::{ + evm_circuit::util::rlc, + table::LookupTable, + util::{word::Word, Expr}, +}; +use eth_types::Field; +use gadgets::util::{and, sum, Scalar}; +use halo2_proofs::{ + plonk::{ConstraintSystem, Expression}, + poly::Rotation, +}; +use itertools::Itertools; + +use super::{ + cached_region::StoredExpression, + cell_manager::{Cell, CellManager, CellType, WordCell}, +}; + +fn get_condition_expr<F: Field>(conditions: &Vec<Expression<F>>) -> Expression<F> { + if conditions.is_empty() { + 1.expr() + } else { + and::expr(conditions) + } +} + +/// Data for dynamic lookup +#[derive(Clone, Debug)] +pub struct DynamicData<F> { + /// Desciption + pub description: &'static str, + /// Condition under which the lookup needs to be done + pub condition: Expression<F>, + /// The values to lookup + pub values: Vec<Expression<F>>, + /// region + pub region_id: usize, + /// If is fixed, use static table for lookup + pub is_fixed: bool, + /// Use rlc + pub compress: bool, +} + +/// Constraint builder +#[derive(Clone)] +pub struct ConstraintBuilder<F, C: CellType> { + /// Constraints to be returned to meta + constraints: Vec<(&'static str, Expression<F>)>, + /// Max global degree of constraints + max_global_degree: usize, + /// Max local degree of constraints inside the current region + max_degree: usize, + /// conditions for constraints + conditions: Vec<Expression<F>>, + /// The lookups generated during synthesis + /// assembles runtime access to RAM + pub dynamic_lookups: HashMap<C, Vec<DynamicData<F>>>, + /// The tables written during synthesis + /// write to RAM + pub dynamic_tables: HashMap<C, Vec<DynamicData<F>>>, + /// All stored expressions + pub stored_expressions: HashMap<usize, Vec<StoredExpression<F, C>>>, + /// CellManager + pub cell_manager: Option<CellManager<F, C>>, + /// Disable macro-generated description for constraints & lookups + /// for graph display + pub disable_description: bool, + /// region id + pub region_id: usize, + /// lookup input challenge + pub lookup_challenge: Option<Expression<F>>, + /// state contect + pub state_context: Vec<Expression<F>>, + /// state constraints start + pub state_constraints_start: usize, + /// Lookups + pub lookups: HashMap<C, Vec<DynamicData<F>>>, +} + +impl<F: Field, C: CellType> ConstraintBuilder<F, C> { + pub(crate) fn new( + max_degree: usize, + cell_manager: Option<CellManager<F, C>>, + lookup_challenge: Option<Expression<F>>, + ) -> Self { + ConstraintBuilder { + constraints: Vec::new(), + max_global_degree: max_degree, + max_degree, + conditions: Vec::new(), + dynamic_lookups: HashMap::new(), + dynamic_tables: HashMap::new(), + cell_manager, + disable_description: false, + stored_expressions: HashMap::new(), + region_id: 0, + lookup_challenge, + state_context: Vec::new(), + state_constraints_start: 0, + lookups: HashMap::new(), + } + } + + pub(crate) fn set_cell_manager(&mut self, cell_manager: CellManager<F, C>) { + self.cell_manager = Some(cell_manager); + } + + pub(crate) fn set_max_degree(&mut self, max_degree: usize) { + self.max_global_degree = max_degree; + } + + pub(crate) fn push_region(&mut self, region_id: usize) { + assert!(region_id != 0); + self.region_id = region_id; + self.state_context = self.conditions.clone(); + self.max_degree = self.max_global_degree - self.get_condition_expr().degree(); + self.conditions.clear(); + self.state_constraints_start = self.constraints.len(); + } + + pub(crate) fn pop_region(&mut self) { + let condition = get_condition_expr(&self.state_context); + for idx in self.state_constraints_start..self.constraints.len() { + self.constraints[idx].1 = condition.expr() * self.constraints[idx].1.clone(); + } + for (_, values) in self.dynamic_lookups.iter_mut() { + for value in values { + if value.region_id == self.region_id { + value.condition = condition.expr() * value.condition.expr(); + } + } + } + for (_key, values) in self.dynamic_tables.iter_mut() { + for value in values { + if value.region_id == self.region_id { + value.condition = condition.expr() * value.condition.expr(); + } + } + } + self.conditions = self.state_context.clone(); + self.max_degree = self.max_global_degree - self.get_condition_expr().degree(); + self.region_id = 0; + } + + pub(crate) fn set_disable_description(&mut self, disable_description: bool) { + self.disable_description = disable_description; + } + + pub(crate) fn require_zero(&mut self, name: &'static str, constraint: Expression<F>) { + self.add_constraint(name, constraint); + } + + pub(crate) fn require_equal( + &mut self, + name: &'static str, + lhs: Expression<F>, + rhs: Expression<F>, + ) { + self.add_constraint(name, lhs - rhs); + } + + pub(crate) fn require_boolean(&mut self, name: &'static str, value: Expression<F>) { + self.add_constraint(name, value.clone() * (1.expr() - value)); + } + + pub(crate) fn require_in_set( + &mut self, + name: &'static str, + value: Expression<F>, + set: Vec<Expression<F>>, + ) { + self.add_constraint( + name, + set.iter() + .fold(1.expr(), |acc, item| acc * (value.clone() - item.clone())), + ); + } + + pub(crate) fn condition<R>( + &mut self, + condition: Expression<F>, + constraint: impl FnOnce(&mut Self) -> R, + ) -> R { + self.push_condition(condition); + let ret = constraint(self); + self.pop_condition(); + ret + } + + pub(crate) fn push_condition(&mut self, condition: Expression<F>) { + self.conditions.push(condition); + } + + pub(crate) fn pop_condition(&mut self) { + self.conditions.pop(); + } + + pub(crate) fn add_constraints(&mut self, constraints: Vec<(&'static str, Expression<F>)>) { + for (name, constraint) in constraints { + self.add_constraint(name, constraint); + } + } + + pub(crate) fn add_constraint(&mut self, name: &'static str, constraint: Expression<F>) { + if self.max_global_degree == 0 { + return; + } + let constraint = match self.get_condition() { + Some(condition) => condition * constraint, + None => constraint, + }; + let constraint = self.split_expression(name, constraint); + self.validate_degree(constraint.degree(), name); + self.constraints.push((name, constraint)); + } + + // Query + + pub(crate) fn query_bool(&mut self) -> Cell<F> { + let cell = self.query_default(); + self.require_boolean("Constrain cell to be a bool", cell.expr()); + cell + } + + pub(crate) fn query_default(&mut self) -> Cell<F> { + self.query_cells_dyn(C::default(), 1) + .get(0) + .expect("No cell found") + .clone() + } + + pub(crate) fn query_one(&mut self, cell_type: C) -> Cell<F> { + self.query_cells_dyn(cell_type, 1).first().unwrap().clone() + } + + pub(crate) fn query_bytes<const N: usize>(&mut self) -> [Cell<F>; N] { + self.query_cells_dyn( + C::byte_type().expect("No byte type for this CellManager"), + N, + ) + .try_into() + .unwrap() + } + + pub(crate) fn query_cells_dyn(&mut self, cell_type: C, count: usize) -> Vec<Cell<F>> { + self.cell_manager + .as_mut() + .expect("Cell manager not set") + .query_cells(cell_type, count) + } + + pub(crate) fn query_cell_with_type(&mut self, cell_type: C) -> Cell<F> { + self.query_cells_dyn(cell_type, 1).first().unwrap().clone() + } + + // default query_word is 2 limbs. Each limb is not guaranteed to be 128 bits. + pub(crate) fn query_word_unchecked(&mut self) -> WordCell<F> { + Word::new(self.query_cells_dyn(C::default(), 2).try_into().unwrap()) + } + + pub(crate) fn validate_degree(&self, degree: usize, name: &'static str) { + if self.max_global_degree > 0 && self.region_id != 0 { + debug_assert!( + degree <= self.max_degree, + "Expression {} degree too high: {} > {}", + name, + degree, + self.max_degree, + ); + } + } + + pub(crate) fn build_constraints(&self) -> Vec<(&'static str, Expression<F>)> { + self.constraints.clone() + } + + pub(crate) fn build_lookups( + &self, + meta: &mut ConstraintSystem<F>, + cell_managers: Vec<CellManager<F, C>>, + tables: Vec<(C, &dyn LookupTable<F>)>, + ) { + for cm in cell_managers { + for (cell_type, table) in &tables { + for col in cm.get_typed_columns(*cell_type) { + let name = format!("{:?}", cell_type); + meta.lookup_any(Box::leak(name.into_boxed_str()), |meta| { + vec![( + col.expr, + rlc::expr( + &table.table_exprs(meta), + self.lookup_challenge.clone().unwrap(), + ), + )] + }); + } + } + } + } + + pub(crate) fn build_dynamic_lookups( + &mut self, + meta: &mut ConstraintSystem<F>, + lookup_names: &[C], + fixed_table: Vec<(C, &dyn LookupTable<F>)>, + ) { + let lookups = self.dynamic_lookups.clone(); + for lookup_name in lookup_names.iter() { + if let Some(lookups) = lookups.get(lookup_name) { + for lookup in lookups.iter() { + meta.lookup_any(lookup.description, |meta| { + // Fixed lookup is a direct lookup into the pre-difined fixed tables + // i.e. cond * (v1, v2, v3) => (t1, t2, t3) + // equivalent to the vanilla lookup operation of Halo2. + // Dynamic lookup applies condition to the advice values stored at + // configuration time i.e. cond * (v1, v2, v3) => + // cond * (t1, t2, t3) the dynamic lookup in a ifx! + // branch would become trivial 0 => 0 + // when the elsex! branch evaluates to true + + let table = if lookup.is_fixed { + let table_cols = fixed_table + .iter() + .find(|(name, _)| name == lookup_name) + .unwrap() + .1 + .columns(); + table_cols + .iter() + .map(|col| meta.query_any(*col, Rotation(0))) + .collect() + } else { + self.get_dynamic_table_values(*lookup_name) + }; + + let mut values: Vec<_> = lookup + .values + .iter() + .map(|value| value.expr() * lookup.condition.clone()) + .collect(); + // align the length of values and table + assert!(table.len() >= values.len()); + while values.len() < table.len() { + values.push(0.expr()); + } + + // Perform rlc if specified + // i.e. (v1*r + v2*r^2 + v3*r^3) => (t1*r + t2*r^2 + t3*r^3) + // lastly is_split had been fulfilled at insertion time + + let ret = if lookup.compress { + vec![( + rlc::expr(&values, self.lookup_challenge.clone().unwrap()), + rlc::expr(&table, self.lookup_challenge.clone().unwrap()), + )] + } else { + values + .iter() + .zip(table.iter()) + .map(|(v, t)| (v.expr(), t.expr())) + .collect() + }; + ret + }); + } + } else { + unreachable!("lookup not found: {:?}", lookup_name); + } + } + } + + pub(crate) fn get_condition(&self) -> Option<Expression<F>> { + if self.conditions.is_empty() { + None + } else { + Some(and::expr(self.conditions.iter())) + } + } + + pub(crate) fn get_condition_expr(&self) -> Expression<F> { + self.get_condition().unwrap_or_else(|| 1.expr()) + } + + pub(crate) fn store_dynamic_table( + &mut self, + description: &'static str, + tag: C, + values: Vec<Expression<F>>, + compress: bool, + store: bool, + ) { + let condition = self.get_condition_expr(); + let mut values = if compress { + vec![rlc::expr(&values, self.lookup_challenge.clone().unwrap())] + } else { + values + }; + if store { + values.iter_mut().for_each(|v| { + *v = self.split_expression( + Box::leak(format!("compression value - {:?}", tag).into_boxed_str()), + v.clone(), + ) + }); + // values = vec![self.store_expression(description, values[0].expr(), tag)]; + } + let lookup = DynamicData { + description, + condition, + values, + region_id: self.region_id, + // cannot be is_fixed + is_fixed: false, + compress: false, + }; + if let Some(table_data) = self.dynamic_tables.get_mut(&tag) { + table_data.push(lookup); + } else { + self.dynamic_tables.insert(tag, vec![lookup]); + } + } + + pub(crate) fn add_dynamic_lookup( + &mut self, + description: &'static str, + tag: C, + values: Vec<Expression<F>>, + is_fixed: bool, + compress: bool, + store: bool, + ) { + let condition = self.get_condition_expr(); + let mut values = if compress { + vec![rlc::expr(&values, self.lookup_challenge.clone().unwrap())] + } else { + values + }; + if store { + values.iter_mut().for_each(|v| { + *v = self.split_expression( + Box::leak(format!("compression value - {:?}", tag).into_boxed_str()), + v.clone(), + ) + }); + } + let lookup = DynamicData { + description, + condition, + values, + region_id: self.region_id, + is_fixed, + compress, + }; + if let Some(lookup_data) = self.dynamic_lookups.get_mut(&tag) { + lookup_data.push(lookup); + } else { + self.dynamic_lookups.insert(tag, vec![lookup]); + } + } + + pub(crate) fn add_lookup( + &mut self, + description: &str, + cell_type: C, + values: Vec<Expression<F>>, + ) { + let condition = self.get_condition_expr(); + let values = values + .iter() + .map(|value| condition.expr() * value.expr()) + .collect_vec(); + let compressed_expr = self.split_expression( + "compression", + rlc::expr(&values, self.lookup_challenge.clone().unwrap().expr()), + ); + self.store_expression(description, compressed_expr, cell_type); + + let lookup = DynamicData { + description: Box::leak(description.to_string().into_boxed_str()), + condition, + values, + region_id: self.region_id, + is_fixed: true, + compress: true, + }; + if let Some(lookup_data) = self.lookups.get_mut(&cell_type) { + lookup_data.push(lookup); + } else { + self.lookups.insert(cell_type, vec![lookup]); + } + } + + pub(crate) fn get_stored_expressions(&self, region_id: usize) -> Vec<StoredExpression<F, C>> { + self.stored_expressions + .get(®ion_id) + .cloned() + .unwrap_or_default() + } + + pub(crate) fn get_dynamic_table(&self, tag: C) -> (Expression<F>, Vec<Expression<F>>) { + let table_values = self + .dynamic_tables + .get(&tag) + .unwrap_or_else(|| panic!("Dynamic table {:?} not found", tag)); + merge_values_unsafe( + table_values + .iter() + .map(|table| (table.condition.clone(), table.values.clone())) + .collect::<Vec<_>>(), + ) + } + + pub(crate) fn get_dynamic_table_values(&self, tag: C) -> Vec<Expression<F>> { + let condition_and_values = self.get_dynamic_table(tag); + condition_and_values + .1 + .iter() + .map(|value| value.expr() * condition_and_values.0.expr()) + .collect::<Vec<_>>() + } + + pub(crate) fn generate_lookup_table_checks(&mut self, tag: C) { + let table_values = self + .dynamic_tables + .get(&tag) + .unwrap_or_else(|| panic!("Dynamic table {:?} not found", tag)) + .clone(); + let selectors = table_values + .into_iter() + .map(|value| { + let sel = value.condition.expr(); + self.require_boolean("lookup table condition needs to be boolean", sel.clone()); + sel + }) + .collect::<Vec<_>>(); + let selector = sum::expr(&selectors); + self.require_boolean( + "lookup table conditions sum needs to be boolean", + selector.expr(), + ); + } + + pub(crate) fn store_expression( + &mut self, + name: &str, + expr: Expression<F>, + cell_type: C, + ) -> Expression<F> { + // Check if we already stored the expression somewhere + let stored_expression = self.find_stored_expression(&expr, cell_type); + match stored_expression { + Some(stored_expression) => stored_expression.cell.expr(), + None => { + // Require the stored value to equal the value of the expression + let cell = self.query_one(cell_type); + let name = format!("{} (stored expression)", name); + self.constraints.push(( + Box::leak(name.clone().into_boxed_str()), + cell.expr() - expr.clone(), + )); + self.stored_expressions + .entry(self.region_id) + .or_insert_with(Vec::new) + .push(StoredExpression { + name, + cell: cell.clone(), + cell_type, + expr_id: expr.identifier(), + expr, + }); + cell.expr() + } + } + } + + pub(crate) fn find_stored_expression( + &self, + expr: &Expression<F>, + cell_type: C, + ) -> Option<&StoredExpression<F, C>> { + let expr_id = expr.identifier(); + if let Some(stored_expressions) = self.stored_expressions.get(&self.region_id) { + stored_expressions + .iter() + .find(|&e| e.cell_type == cell_type && e.expr_id == expr_id) + } else { + None + } + } + + fn split_expression(&mut self, name: &'static str, expr: Expression<F>) -> Expression<F> { + if expr.degree() > self.max_degree && self.region_id != 0 { + match expr { + Expression::Negated(poly) => { + Expression::Negated(Box::new(self.split_expression(name, *poly))) + } + Expression::Scaled(poly, v) => { + Expression::Scaled(Box::new(self.split_expression(name, *poly)), v) + } + Expression::Sum(a, b) => { + let a = self.split_expression(name, *a); + let b = self.split_expression(name, *b); + a + b + } + Expression::Product(a, b) => { + let (mut a, mut b) = (*a, *b); + while a.degree() + b.degree() > self.max_degree { + let mut split = |expr: Expression<F>| { + if expr.degree() > self.max_degree { + self.split_expression(name, expr) + } else { + let cell_type = C::storage_for_expr(&expr); + self.store_expression(name, expr, cell_type) + } + }; + if a.degree() >= b.degree() { + a = split(a); + } else { + b = split(b); + } + } + a * b + } + _ => expr.clone(), + } + } else { + expr.clone() + } + } + + pub(crate) fn print_stats(&self) { + let mut expressions = self.constraints.clone(); + expressions.sort_by(|a, b| a.1.degree().cmp(&b.1.degree())); + for (name, expr) in expressions.iter() { + println!("'{}': {}", name, expr.degree()); + } + } +} + +pub(crate) fn merge_lookups<F: Field, C: CellType>( + cb: &mut ConstraintBuilder<F, C>, + lookups: Vec<DynamicData<F>>, +) -> (Expression<F>, Vec<Expression<F>>) { + merge_values( + cb, + lookups + .iter() + .map(|lookup| (lookup.condition.clone(), lookup.values.clone())) + .collect::<Vec<_>>(), + ) +} + +pub(crate) fn merge_values<F: Field, C: CellType>( + cb: &mut ConstraintBuilder<F, C>, + values: Vec<(Expression<F>, Vec<Expression<F>>)>, +) -> (Expression<F>, Vec<Expression<F>>) { + let selector = sum::expr(values.iter().map(|(condition, _)| condition.expr())); + crate::circuit!([meta, cb], { + require!(selector => bool); + }); + merge_values_unsafe(values) +} + +pub(crate) fn merge_values_unsafe<F: Field>( + values: Vec<(Expression<F>, Vec<Expression<F>>)>, +) -> (Expression<F>, Vec<Expression<F>>) { + if values.is_empty() { + return (0.expr(), Vec::new()); + } + let selector = sum::expr(values.iter().map(|(condition, _)| condition.expr())); + // Merge + let max_length = values.iter().map(|(_, values)| values.len()).max().unwrap(); + let mut merged_values = vec![0.expr(); max_length]; + let default_value = 0.expr(); + for (idx, value) in merged_values.iter_mut().enumerate() { + *value = sum::expr(values.iter().map(|(condition, values)| { + condition.expr() * values.get(idx).unwrap_or(&default_value).expr() + })); + } + (selector, merged_values) +} + +/// General trait to convert to a vec +pub trait ToVec<T: Clone> { + /// Converts a tuple to a vector + fn to_vec(&self) -> Vec<T>; +} + +impl<T: Clone> ToVec<T> for Vec<T> { + fn to_vec(&self) -> Vec<T> { + self.clone() + } +} + +impl<T: Clone> ToVec<T> for [T] { + fn to_vec(&self) -> Vec<T> { + self.to_owned() + } +} + +impl<T: Clone> ToVec<T> for &[T] { + fn to_vec(&self) -> Vec<T> { + <&[T]>::clone(self).to_owned() + } +} + +macro_rules! impl_to_vec { + (($($t:ty),*), ($($v:ident),*)) => { + impl<T: Clone> ToVec<T> for ($($t,)*) { + fn to_vec(&self) -> Vec<T> { + let ($($v,)*) = self; + vec![$($v.clone()),*] + } + } + }; +} + +impl_to_vec!((T, T), (a, b)); +impl_to_vec!((T, T, T), (a, b, c)); +impl_to_vec!((T, T, T, T), (a, b, c, d)); +impl_to_vec!((T, T, T, T, T), (a, b, c, d, e)); +impl_to_vec!((T, T, T, T, T, T), (a, b, c, d, e, f)); +impl_to_vec!((T, T, T, T, T, T, T), (a, b, c, d, e, f, g)); +impl_to_vec!((T, T, T, T, T, T, T, T), (a, b, c, d, e, f, g, h)); +impl_to_vec!((T, T, T, T, T, T, T, T, T), (a, b, c, d, e, f, g, h, i)); +impl_to_vec!( + (T, T, T, T, T, T, T, T, T, T), + (a, b, c, d, e, f, g, h, i, j) +); +impl_to_vec!( + (T, T, T, T, T, T, T, T, T, T, T), + (a, b, c, d, e, f, g, h, i, j, k) +); +impl_to_vec!( + (T, T, T, T, T, T, T, T, T, T, T, T), + (a, b, c, d, e, f, g, h, i, j, k, l) +); +impl_to_vec!( + (T, T, T, T, T, T, T, T, T, T, T, T, T), + (a, b, c, d, e, f, g, h, i, j, k, l, m) +); +impl_to_vec!( + (T, T, T, T, T, T, T, T, T, T, T, T, T, T), + (a, b, c, d, e, f, g, h, i, j, k, l, m, n) +); + +/// Trait that generates a vector of expressions +pub trait ExprVec<F> { + /// Returns a vector of the expressions from itself + fn to_expr_vec(&self) -> Vec<Expression<F>>; +} + +impl<F: Field> ExprVec<F> for std::ops::Range<isize> { + fn to_expr_vec(&self) -> Vec<Expression<F>> { + self.clone().map(|e| e.expr()).collect::<Vec<_>>() + } +} + +impl<F: Field, E: Expr<F>> ExprVec<F> for Vec<E> { + fn to_expr_vec(&self) -> Vec<Expression<F>> { + self.iter().map(|e| e.expr()).collect::<Vec<_>>() + } +} + +impl<F: Field, E: Expr<F>> ExprVec<F> for [E] { + fn to_expr_vec(&self) -> Vec<Expression<F>> { + self.iter().map(|e| e.expr()).collect::<Vec<_>>() + } +} + +impl<F: Field, E: Expr<F>> ExprVec<F> for &[E] { + fn to_expr_vec(&self) -> Vec<Expression<F>> { + self.iter().map(|e| e.expr()).collect::<Vec<_>>() + } +} + +impl<F: Field, E: Expr<F> + Clone> ExprVec<F> for Word<E> { + fn to_expr_vec(&self) -> Vec<Expression<F>> { + vec![self.lo().expr(), self.hi().expr()] + } +} + +/// Implementation trait `ExprVec` for type able to be casted to an +/// Expression +#[macro_export] +macro_rules! impl_expr_vec { + ($type:ty) => { + impl<F: eth_types::Field> ExprVec<F> for $type { + #[inline] + fn to_expr_vec(&self) -> Vec<Expression<F>> { + vec![self.expr()] + } + } + }; +} + +impl_expr_vec!(bool); +impl_expr_vec!(u8); +impl_expr_vec!(i32); +impl_expr_vec!(u64); +impl_expr_vec!(usize); +impl_expr_vec!(isize); +impl_expr_vec!(Expression<F>); +impl_expr_vec!(Cell<F>); + +/// Newtype wrapper for `Vec<Expression<F>>` +#[derive(Clone)] +pub struct ExpressionVec<F: Field>(pub Vec<Expression<F>>); + +impl<F: Field> Add for ExpressionVec<F> { + type Output = ExpressionVec<F>; + + fn add(self, rhs: ExpressionVec<F>) -> Self::Output { + ExpressionVec( + self.0 + .iter() + .zip(rhs.0.iter()) + .map(|(a, b)| a.expr() + b.expr()) + .collect(), + ) + } +} + +impl<F: Field> Mul for ExpressionVec<F> { + type Output = ExpressionVec<F>; + + fn mul(self, rhs: ExpressionVec<F>) -> Self::Output { + ExpressionVec( + self.0 + .iter() + .zip(rhs.0.iter()) + .map(|(a, b)| a.expr() * b.expr()) + .collect(), + ) + } +} + +/// Trait for doing math on Expressions, no matter the type they are stored in +pub trait ExprResult<F> { + /// Adds two values together + fn add(&self, other: &Self) -> Self; + /// Multiply with a scalar + fn mul(&self, other: &Expression<F>) -> Self; +} + +impl<F: Field> ExprResult<F> for () { + fn add(&self, _other: &Self) -> Self {} + fn mul(&self, _other: &Expression<F>) -> Self {} +} + +impl<F: Field> ExprResult<F> for Vec<Expression<F>> { + fn add(&self, other: &Self) -> Self { + (ExpressionVec(self.clone()) + ExpressionVec(other.clone())).0 + } + fn mul(&self, other: &Expression<F>) -> Self { + (ExpressionVec(self.clone()) * ExpressionVec(vec![other.clone(); self.len()])).0 + } +} + +impl<F: Field> ExprResult<F> for Expression<F> { + fn add(&self, other: &Self) -> Self { + vec![self.clone()].add(&vec![other.clone()])[0].clone() + } + fn mul(&self, other: &Expression<F>) -> Self { + vec![self.clone()].mul(other)[0].clone() + } +} + +/// Implement `ExprResult` for tupples +#[macro_export] +macro_rules! impl_expr_result { + ($($type:ty),*) => { + impl<F: eth_types::Field> ExprResult<F> for ($($type),*) { + fn add(&self, other: &Self) -> Self { + self.to_vec().add(&other.to_vec()).into_iter().collect_tuple().unwrap() + } + fn mul(&self, other: &Expression<F>) -> Self { + self.to_vec().mul(other).into_iter().collect_tuple().unwrap() + } + } + }; +} + +impl_expr_result!(Expression<F>, Expression<F>); +impl_expr_result!(Expression<F>, Expression<F>, Expression<F>); +impl_expr_result!(Expression<F>, Expression<F>, Expression<F>, Expression<F>); +impl_expr_result!( + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F> +); +impl_expr_result!( + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F> +); +impl_expr_result!( + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F> +); +impl_expr_result!( + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F> +); +impl_expr_result!( + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F> +); +impl_expr_result!( + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F> +); +impl_expr_result!( + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F>, + Expression<F> +); + +/// Trait around RLC +pub trait RLCable<F: Field> { + /// Returns the RLC of itself + fn rlc(&self, r: &Expression<F>) -> Expression<F>; + /// Returns the RLC of the reverse of itself + fn rlc_rev(&self, r: &Expression<F>) -> Expression<F>; +} + +impl<F: Field, E: ExprVec<F> + ?Sized> RLCable<F> for E { + fn rlc(&self, r: &Expression<F>) -> Expression<F> { + rlc::expr(&self.to_expr_vec(), r.expr()) + } + + fn rlc_rev(&self, r: &Expression<F>) -> Expression<F> { + rlc::expr( + &self.to_expr_vec().iter().rev().cloned().collect_vec(), + r.expr(), + ) + } +} + +/// Trait around RLC +pub trait RLCChainable<F> { + /// Returns the RLC of itself with a starting rlc/multiplier + fn rlc_chain(&self, other: Expression<F>) -> Expression<F>; +} + +impl<F: Field> RLCChainable<F> for (Expression<F>, Expression<F>) { + fn rlc_chain(&self, other: Expression<F>) -> Expression<F> { + self.0.expr() + self.1.expr() * other.expr() + } +} + +/// Trait around RLC +pub trait RLCChainableRev<F> { + /// Returns the RLC of itself with a starting rlc/multiplier + fn rlc_chain_rev(&self, other: (Expression<F>, Expression<F>)) -> Expression<F>; +} + +impl<F: Field> RLCChainableRev<F> for Expression<F> { + fn rlc_chain_rev(&self, other: (Expression<F>, Expression<F>)) -> Expression<F> { + self.expr() * other.1.expr() + other.0.expr() + } +} + +/// Trait around RLC +pub trait RLCableValue<F> { + /// Returns the RLC of itself + fn rlc_value(&self, r: F) -> F; + /// Returns the RLC of the reverse of itself + fn rlc_value_rev(&self, r: F) -> F; +} + +impl<F: Field> RLCableValue<F> for Vec<u8> { + fn rlc_value(&self, r: F) -> F { + rlc::value(self, r) + } + fn rlc_value_rev(&self, r: F) -> F { + rlc::value(&self.iter().rev().cloned().collect_vec(), r) + } +} + +impl<F: Field> RLCableValue<F> for [u8] { + fn rlc_value(&self, r: F) -> F { + rlc::value(self, r) + } + fn rlc_value_rev(&self, r: F) -> F { + rlc::value(&self.iter().rev().cloned().collect_vec(), r) + } +} + +/// Trait around RLC +pub trait RLCChainableValue<F, S, I> { + /// Returns the RLC of itself with a starting rlc/multiplier + fn rlc_chain_value(&self, values: I, r: F) -> (F, F); +} + +impl<F: Field, S: Scalar<F>, I: IntoIterator<Item = S>> RLCChainableValue<F, S, I> for (F, F) { + fn rlc_chain_value(&self, values: I, r: F) -> (F, F) { + let mut rlc = self.0; + let mut mult = self.1; + for value in values.into_iter().map(|byte| byte.scalar()) { + rlc += value * mult; + mult *= r; + } + (rlc, mult) + } +} +/// require_parser +#[macro_export] +macro_rules! require_parser { + { + $cb:expr, + lhs = ($($lhs:tt)*) + rest = (== $($rhs:tt)*) + } => { + let description = $crate::concat_with_preamble!( + stringify!($($lhs)*), + " == ", + stringify!($($rhs)*) + ); + $crate::_require!($cb, description, $($lhs)* => $($rhs)*) + }; + + { + $cb:expr, + lhs = ($($lhs:tt)*) + rest = ($next:tt $($rest:tt)*) + } => { + $crate::require_parser! { + $cb, + lhs = ($($lhs)* $next) + rest = ($($rest)*) + } + }; +} + +/// _require2 +#[macro_export] +macro_rules! _require2 { + ($cb:expr, $($rest:tt)*) => {{ + $crate::require_parser! { + $cb, + lhs = () + rest = ($($rest)*) + } + }}; +} + +/// Creates a dummy constraint builder that cannot be used to add constraints. +#[macro_export] +macro_rules! _cb { + () => {{ + use $crate::circuit_tools::cell_manager::DefaultCellType; + ConstraintBuilder::<F, DefaultCellType>::new(0, None, None) + }}; +} + +/// Concats arguments with preamble consisting of the originating file and line. +#[macro_export] +macro_rules! concat_with_preamble { + ($($args:expr),* $(,)?) => {{ + concat!( + file!(), + ":", + line!(), + ": ", + $( + $args, + )* + ) + }}; +} + +/// Can be used to mark a specific branch as unreachable +#[macro_export] +macro_rules! _unreachablex { + ($cb:expr $(,$descr:expr)?) => {{ + let descr = concat_with_preamble!( + "unreachable executed", + $( + ": ", + $descr, + )* + ); + _require!($cb, descr, true => false) + }}; +} + +/// _require +#[macro_export] +macro_rules! _require { + ($cb:expr, $lhs:expr => bool) => {{ + let description = concat_with_preamble!( + stringify!($lhs), + " => ", + "bool", + ); + $cb.require_boolean(description, $lhs.expr()); + }}; + + ($cb:expr, $lhs:expr => $rhs:expr) => {{ + let description = concat_with_preamble!( + stringify!($lhs), + " => ", + stringify!($rhs) + ); + _require!($cb, description, $lhs => $rhs) + }}; + + ($cb:expr, $descr:expr, $lhs:expr => $rhs:expr) => {{ + let lhs = $lhs.to_expr_vec(); + let rhs = $rhs.to_expr_vec(); + if lhs.len() == rhs.len() { + for (lhs, rhs) in lhs.iter().zip(rhs.iter()) { + $cb.require_equal( + Box::leak($descr.to_string().into_boxed_str()), + lhs.expr(), + rhs.expr(), + ); + } + } else if lhs.len() == 1 && rhs.len() > 1 { + $cb.require_in_set( + Box::leak($descr.to_string().into_boxed_str()), + lhs[0].expr(), + rhs.clone(), + ); + } else { + unreachable!() + } + }}; + + // Lookup using a tuple + ($cb:expr, ($($v:expr),+) => @$tag:expr) => {{ + let description = concat_with_preamble!( + "(", + $( + stringify!($v), + ", ", + )* + ") => @", + stringify!($tag), + ); + $cb.add_lookup( + description, + $tag, + vec![$($v.expr(),)*], + ); + }}; + ($cb:expr, $descr:expr, ($($v:expr),+) => @$tag:expr) => {{ + $cb.add_lookup( + Box::leak($descr.into_boxed_str()), + $tag, + vec![$($v.expr(),)*], + ); + }}; + + // Lookup using an array + ($cb:expr, $values:expr => @$tag:expr) => {{ + let description = concat_with_preamble!( + stringify!($values), + " => @", + stringify!($tag), + ); + $cb.add_lookup( + description, + $tag, + $values.clone(), + ); + }}; + ($cb:expr, $descr:expr, $values:expr => @$tag:expr) => {{ + $cb.add_lookup( + Box::leak($descr.to_string().into_boxed_str()), + $tag, + $values.clone(), + ); + }}; + + // Lookup using a tuple + ($cb:expr, ($($v:expr),+) => @$tag:expr, $is_fixed:expr, $compress:expr, $is_split:expr) => {{ + let description = concat_with_preamble!( + "(", + $( + stringify!($v), + ", ", + )* + ") => @", + stringify!($tag), + ); + $cb.add_dynamic_lookup( + description, + $tag, + vec![$($v.expr(),)*], + $is_fixed, + $compress, + $is_split, + ); + }}; + ($cb:expr, $descr:expr, ($($v:expr),+) => @$tag:expr, $is_fixed:expr, $compress:expr, $is_split:expr) => {{ + $cb.add_dynamic_lookup( + Box::leak($descr.into_boxed_str()), + $tag, + vec![$($v.expr(),)*], + $is_fixed, + $compress, + $is_split, + ); + }}; + + + // Lookup using an array + ($cb:expr, $values:expr => @$tag:expr, $is_fixed:expr, $compress:expr, $is_split:expr) => {{ + let description = concat_with_preamble!( + stringify!($values), + " => @", + stringify!($tag), + ); + $cb.add_dynamic_lookup( + description, + $tag, + $values.clone(), + $is_fixed, + $compress, + $is_split, + ); + }}; + ($cb:expr, $descr:expr, $values:expr => @$tag:expr, $is_fixed:expr, $compress:expr, $is_split:expr) => {{ + $cb.add_dynamic_lookup( + Box::leak($descr.into_boxed_str()), + $tag, + $values.clone(), + $is_fixed, + $compress, + $is_split, + ); + }}; + + // Put values in a lookup table using a tuple + ($cb:expr, @$tag:expr => ($($v:expr),+)) => {{ + let description = concat_with_preamble!( + "@", + stringify!($tag), + " => (", + $( + stringify!($v), + ", ", + )* + ")", + ); + $cb.store_dynamic_table( + description, + $tag, + vec![$($v.expr(),)*], + false, + false, + ); + }}; + // Put values in a lookup table using an array + ($cb:expr, @$tag:expr => $values:expr) => {{ + let description = concat_with_preamble!( + "@", + stringify!($tag), + " => (", + stringify!($values), + ")", + ); + $cb.store_dynamic_table( + description, + $tag, + $values, + false, + false, + ); + }}; + + // Put values in a lookup table using a tuple + ($cb:expr, @$tag:expr => ($($v:expr),+), $compress:expr, $is_split:expr) => {{ + let description = concat_with_preamble!( + "@", + stringify!($tag), + " => (", + $( + stringify!($v), + ", ", + )* + ")", + ); + $cb.store_dynamic_table( + description, + $tag, + vec![$($v.expr(),)*], + $compress, + $is_split, + ); + }}; + // Put values in a lookup table using an array + ($cb:expr, @$tag:expr => $values:expr, $compress:expr, $is_split:expr) => {{ + let description = concat_with_preamble!( + "@", + stringify!($tag), + " => (", + stringify!($values), + ")", + ); + $cb.store_dynamic_table( + description, + $tag, + $values, + $compress, + $is_split, + ); + }}; +} + +/// matchx +/// Supports `_` which works the same as in the normal `match`: if none of the +/// other arms are active the `_` arm will be executed and so can be used to +/// return some default values or could also be marked as unreachable (using the +/// unreachablex! macro). +#[macro_export] +macro_rules! _matchx { + ($cb:expr, $($condition:expr => $when:expr),* $(, _ => $catch_all:expr)? $(,)?) => {{ + let mut conditions = Vec::new(); + let mut cases = Vec::new(); + $( + $cb.push_condition($condition.expr()); + let ret = $when.clone(); + $cb.pop_condition(); + cases.push(($condition.expr(), ret)); + conditions.push($condition.expr()); + )* + + $( + let catch_all_condition = not::expr(sum::expr(&conditions)); + $cb.push_condition(catch_all_condition.expr()); + let ret = $catch_all; + $cb.pop_condition(); + cases.push((catch_all_condition.expr(), ret)); + conditions.push(catch_all_condition.expr()); + )* + + // All conditions need to be boolean + for condition in conditions.iter() { + _require!($cb, condition => bool); + } + // Exactly 1 case needs to be enabled + _require!($cb, sum::expr(&conditions) => 1); + + // Apply the conditions to all corresponding values + let mut res = cases[0].1.mul(&cases[0].0.expr()); + for pair in cases.iter().skip(1) { + res = <_ as ExprResult<F>>::add(&res, &pair.1.mul(&pair.0.expr())); + } + res + }}; +} + +/// ifx +#[macro_export] +macro_rules! _ifx { + ($cb:expr, $($condition:expr),* => $when_true:block $(elsex $when_false:block)?) => {{ + let condition = and::expr([$($condition.expr()),*]); + + $cb.push_condition(condition.expr()); + let ret_true = $when_true; + $cb.pop_condition(); + + #[allow(unused_assignments, unused_mut)] + let mut ret = ret_true.mul(&condition.expr()); + $( + // In if/else cases, the condition needs to be boolean + _require!($cb, condition => bool); + + $cb.push_condition(not::expr(condition.expr())); + let ret_false = $when_false; + $cb.pop_condition(); + + ret = <_ as ExprResult<F>>::add(&ret_true.mul(&condition), &ret_false.mul(¬::expr(condition.expr()))); + )* + ret + }}; +} + +/// matchw - Resembles matchx so that the witness generation can look like the +/// circuit code. +#[macro_export] +macro_rules! matchw { + ($($condition:expr => $when:expr),* $(, _ => $catch_all:expr)? $(,)?) => {{ + if false { + unreachable!() + } + $(else if $condition { + $when + } + )* + else { + $( + $catch_all + )* + unreachable!() + } + }}; +} + +/// assign advice +#[macro_export] +macro_rules! assign { + // Column + ($region:expr, ($column:expr, $offset:expr) => $value:expr) => {{ + use halo2_proofs::circuit::Value; + let description = + $crate::concat_with_preamble!(stringify!($column), " => ", stringify!($value)); + let value: F = $value; + $region.assign_advice(|| description, $column, $offset, || Value::known(value)) + }}; + ($region:expr, ($column:expr, $offset:expr) => $annotation:expr, $value:expr) => {{ + use halo2_proofs::circuit::Value; + let value: F = $value; + $region.name_column(|| $annotation, $column); + $region.assign_advice(|| "", $column, $offset, || Value::known(value)) + }}; + // Cell + ($region:expr, $cell:expr, $offset:expr => $value:expr) => {{ + use halo2_proofs::circuit::Value; + let description = + $crate::concat_with_preamble!(stringify!($cell), " => ", stringify!($value)); + let value: F = $value; + $region.assign_advice( + || description, + $cell.column(), + $offset + $cell.rotation(), + || Value::known(value), + ) + }}; + ($region:expr, $cell:expr, $offset:expr => $annotation:expr, $value:expr) => {{ + use halo2_proofs::circuit::Value; + let value: F = $value; + $region.assign_advice( + || $annotation, + $cell.column(), + $offset + $cell.rotation(), + || Value::known(value), + ) + }}; +} + +/// assign fixed +#[macro_export] +macro_rules! assignf { + ($region:expr, ($column:expr, $offset:expr) => $value:expr) => {{ + let description = + $crate::concat_with_preamble!(stringify!($column), " => ", stringify!($value)); + let value: F = $value; + $region.assign_fixed(|| description, $column, $offset, || Value::known(value)) + }}; +} + +/// Circuit builder macros +/// Nested macro's can't do repetition <https://github.com/rust-lang/rust/issues/35853> +/// so we expose a couple of permutations here manually. +#[macro_export] +macro_rules! circuit { + ([$meta:expr, $cb:expr], $content:block) => {{ + #[allow(unused_imports)] + use $crate::{concat_with_preamble, _require, _matchx, _ifx, _unreachablex}; + #[allow(unused_imports)] + use gadgets::util::{and, not, or, sum, Expr}; + #[allow(unused_imports)] + use $crate::circuit_tools::constraint_builder::{ExprVec, ExprResult}; + + #[allow(unused_macros)] + macro_rules! f { + ($column:expr, $rot:expr) => {{ + $meta.query_fixed($column.clone(), Rotation($rot as i32)) + }}; + ($column:expr) => {{ + $meta.query_fixed($column.clone(), Rotation::cur()) + }}; + } + + #[allow(unused_macros)] + macro_rules! a { + ($column:expr, $rot:expr) => {{ + $meta.query_advice($column.clone(), Rotation($rot as i32)) + }}; + ($column:expr) => {{ + $meta.query_advice($column.clone(), Rotation::cur()) + }}; + } + + #[allow(unused_macros)] + macro_rules! x { + ($column:expr, $rot:expr) => {{ + $meta.query_any($column.clone(), Rotation($rot as i32)) + }}; + ($column:expr) => {{ + $meta.query_any($column.clone(), Rotation::cur()) + }}; + } + + #[allow(unused_macros)] + macro_rules! not { + ($expr:expr) => {{ + gadgets::util::not::expr($expr.expr()) + }}; + } + + #[allow(unused_macros)] + macro_rules! invert { + ($expr:expr) => {{ + Expression::Constant(F::from($expr as u64).invert().unwrap()) + }}; + } + + #[allow(unused_macros)] + macro_rules! require { + ($lhs:expr => bool) => {{ + _require!($cb, $lhs => bool); + }}; + + ($lhs:expr => $rhs:expr) => {{ + _require!($cb, $lhs => $rhs); + }}; + + ($name:expr, $lhs:expr => $rhs:expr) => {{ + _require!($cb, $name, $lhs => $rhs); + }}; + + (($a:expr) => @$tag:expr) => {{ + _require!($cb, ($a) => @$tag); + }}; + + (($a:expr, $b:expr) => @$tag:expr) => {{ + _require!($cb, ($a, $b) => @$tag); + }}; + + (($a:expr, $b:expr, $c:expr) => @$tag:expr) => {{ + _require!($cb, ($a, $b, $c) => @$tag); + }}; + + (($a:expr, $b:expr, $c:expr, $d:expr) => @$tag:expr) => {{ + _require!($cb, ($a, $b, $c, $d) => @$tag); + }}; + + ($values:expr => @$tag:expr) => {{ + _require!($cb, $values => @$tag); + }}; + + ($descr:expr, $values:expr => @$tag:expr) => {{ + _require!($cb, $descr, $values => @$tag); + }}; + + (($a:expr) => @$tag:expr, $is_fixed:expr, $compress:expr, $is_split:expr) => {{ + _require!($cb, ($a) => @$tag, $is_fixed, $compress, $is_split); + }}; + + (($a:expr, $b:expr) => @$tag:expr, $is_fixed:expr, $compress:expr, $is_split:expr) => {{ + _require!($cb, ($a, $b) => @$tag, $is_fixed, $compress, $is_split); + }}; + + (($a:expr, $b:expr, $c:expr) => @$tag:expr, $is_fixed:expr, $compress:expr, $is_split:expr) => {{ + _require!($cb, ($a, $b, $c) => @$tag, $is_fixed, $compress, $is_split); + }}; + + (($a:expr, $b:expr, $c:expr, $d:expr) => @$tag:expr, $is_fixed:expr, $compress:expr, $is_split:expr) => {{ + _require!($cb, ($a, $b, $c, $d) => @$tag, $is_fixed, $compress, $is_split); + }}; + + ($values:expr => @$tag:expr, $is_fixed:expr, $compress:expr, $is_split:expr) => {{ + _require!($cb, $values => @$tag, $is_fixed, $compress, $is_split); + }}; + + ($descr:expr, $values:expr => @$tag:expr, $is_fixed:expr, $compress:expr, $is_split:expr) => {{ + _require!($cb, $descr, $values => @$tag, $is_fixed, $compress, $is_split); + }}; + + (@$tag:expr => ($a:expr, $b:expr, $c:expr)) => {{ + _require!($cb, @$tag => ($a, $b, $c)); + }}; + + (@$tag:expr => $values:expr) => {{ + _require!($cb, @$tag => $values); + }}; + } + + #[allow(unused_macros)] + macro_rules! ifx { + ($condition:expr => $when_true:block elsex $when_false:block) => {{ + _ifx!($cb, $condition => $when_true elsex $when_false) + }}; + ($condition_a:expr, $condition_b:expr => $when_true:block elsex $when_false:block) => {{ + _ifx!($cb, $condition_a, $condition_b => $when_true elsex $when_false) + }}; + ($condition_a:expr, $condition_b:expr, $condition_c:expr => $when_true:block elsex $when_false:block) => {{ + _ifx!($cb, $condition_a, $condition_b, $condition_c => $when_true elsex $when_false) + }}; + ($condition_a:expr, $condition_b:expr, $condition_c:expr, $condition_d:expr => $when_true:block elsex $when_false:block) => {{ + _ifx!($cb, $condition_a, $condition_b, $condition_c, $condition_d => $when_true elsex $when_false) + }}; + + ($condition:expr => $when_true:block) => {{ + _ifx!($cb, $condition => $when_true) + }}; + ($condition_a:expr, $condition_b:expr => $when_true:block) => {{ + _ifx!($cb, $condition_a, $condition_b => $when_true) + }}; + ($condition_a:expr, $condition_b:expr, $condition_c:expr => $when_true:block) => {{ + _ifx!($cb, $condition_a, $condition_b, $condition_c => $when_true) + }}; + ($condition_a:expr, $condition_b:expr, $condition_c:expr, $condition_d:expr => $when_true:block) => {{ + _ifx!($cb, $condition_a, $condition_b, $condition_c, $condition_d => $when_true) + }}; + ($condition_a:expr, $condition_b:expr, $condition_c:expr, $condition_d:expr, $condition_e:expr => $when_true:block) => {{ + _ifx!($cb, $condition_a, $condition_b, $condition_c, $condition_d, $condition_e => $when_true) + }}; + } + + #[allow(unused_macros)] + macro_rules! matchx { + ($condition_a:expr => $when_a:expr,) => {{ + _matchx!($cb, $condition_a => $when_a) + }}; + ($condition_a:expr => $when_a:expr, $condition_b:expr => $when_b:expr,) => {{ + _matchx!($cb, $condition_a => $when_a, $condition_b => $when_b) + }}; + ($condition_a:expr => $when_a:expr, $condition_b:expr => $when_b:expr, $condition_c:expr => $when_c:expr,) => {{ + _matchx!($cb, $condition_a => $when_a, $condition_b => $when_b, $condition_c => $when_c) + }}; + ($condition_a:expr => $when_a:expr, $condition_b:expr => $when_b:expr, $condition_c:expr => $when_c:expr, $condition_d:expr => $when_d:expr,) => {{ + _matchx!($cb, $condition_a => $when_a, $condition_b => $when_b, $condition_c => $when_c, $condition_d => $when_d,) + }}; + + ($condition_a:expr => $when_a:expr, _ => $catch_all:expr,) => {{ + _matchx!($cb, $condition_a => $when_a, _ => $catch_all,) + }}; + ($condition_a:expr => $when_a:expr, $condition_b:expr => $when_b:expr, _ => $catch_all:expr,) => {{ + _matchx!($cb, $condition_a => $when_a, $condition_b => $when_b, _ => $catch_all,) + }}; + ($condition_a:expr => $when_a:expr, $condition_b:expr => $when_b:expr, $condition_c:expr => $when_c:expr, _ => $catch_all:expr,) => {{ + _matchx!($cb, $condition_a => $when_a, $condition_b => $when_b, $condition_c => $when_c, _ => $catch_all,) + }}; + ($condition_a:expr => $when_a:expr, $condition_b:expr => $when_b:expr, $condition_c:expr => $when_c:expr, $condition_d:expr => $when_d:expr, _ => $catch_all:expr,) => {{ + _matchx!($cb, $condition_a => $when_a, $condition_b => $when_b, $condition_c => $when_c, $condition_d => $when_d, _ => $catch_all,) + }}; + } + + #[allow(unused_macros)] + macro_rules! unreachablex { + () => {{ + _unreachablex!($cb) + }}; + ($arg:expr) => {{ + _unreachablex!($cb, $arg) + }}; + } + + $content + }}; +} diff --git a/zkevm-circuits/src/circuit_tools/gadgets.rs b/zkevm-circuits/src/circuit_tools/gadgets.rs new file mode 100644 index 0000000000..88fab3995d --- /dev/null +++ b/zkevm-circuits/src/circuit_tools/gadgets.rs @@ -0,0 +1,240 @@ +//! Circuit gadgets +use eth_types::Field; +use gadgets::util::{and, Expr}; +use halo2_proofs::{ + circuit::Value, + plonk::{Error, Expression}, +}; + +use crate::{ + evm_circuit::util::{from_bytes, pow_of_two, transpose_val_ret}, + util::word::{Word, WordExpr}, +}; + +use super::{ + cached_region::CachedRegion, + cell_manager::{Cell, CellType}, + constraint_builder::ConstraintBuilder, +}; + +/// Returns `1` when `value == 0`, and returns `0` otherwise. +#[derive(Clone, Debug, Default)] +pub struct IsZeroGadget<F> { + inverse: Option<Cell<F>>, + is_zero: Option<Expression<F>>, +} + +impl<F: Field> IsZeroGadget<F> { + pub(crate) fn construct<C: CellType>( + cb: &mut ConstraintBuilder<F, C>, + value: Expression<F>, + ) -> Self { + circuit!([meta, cb], { + let inverse = cb.query_cell_with_type(CellType::storage_for_expr(&value)); + + let is_zero = 1.expr() - (value.expr() * inverse.expr()); + // `value != 0` => check `inverse = a.invert()`: value * (1 - value * inverse) + require!(value * is_zero.clone() => 0); + // `value == 0` => check `inverse = 0`: `inverse â‹… (1 - value * inverse)` + require!(inverse.expr() * is_zero.expr() => 0); + + Self { + inverse: Some(inverse), + is_zero: Some(is_zero), + } + }) + } + + pub(crate) fn expr(&self) -> Expression<F> { + self.is_zero.as_ref().unwrap().clone() + } + + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + value: F, + ) -> Result<F, Error> { + let inverse = value.invert().unwrap_or(F::ZERO); + self.inverse + .as_ref() + .unwrap() + .assign(region, offset, inverse)?; + Ok(if value.is_zero().into() { + F::ONE + } else { + F::ZERO + }) + } +} + +/// Returns `1` when `lhs == rhs`, and returns `0` otherwise. +#[derive(Clone, Debug, Default)] +pub struct IsEqualGadget<F> { + is_zero: IsZeroGadget<F>, +} + +impl<F: Field> IsEqualGadget<F> { + pub(crate) fn construct<C: CellType>( + cb: &mut ConstraintBuilder<F, C>, + lhs: Expression<F>, + rhs: Expression<F>, + ) -> Self { + let is_zero = IsZeroGadget::construct(cb, lhs - rhs); + + Self { is_zero } + } + + pub(crate) fn expr(&self) -> Expression<F> { + self.is_zero.expr() + } + + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + lhs: F, + rhs: F, + ) -> Result<F, Error> { + self.is_zero.assign(region, offset, lhs - rhs) + } +} + +/// Returns `1` when `lhs == rhs`, and returns `0` otherwise. +#[derive(Clone, Debug, Default)] +pub struct IsEqualWordGadget<F> { + is_equal_lo: IsEqualGadget<F>, + is_equal_hi: IsEqualGadget<F>, +} + +impl<F: Field> IsEqualWordGadget<F> { + pub(crate) fn construct<C: CellType>( + cb: &mut ConstraintBuilder<F, C>, + lhs: &Word<Expression<F>>, + rhs: &Word<Expression<F>>, + ) -> Self { + let (lhs_lo, lhs_hi) = lhs.to_word().to_lo_hi(); + let (rhs_lo, rhs_hi) = rhs.to_word().to_lo_hi(); + let is_equal_lo = IsEqualGadget::construct(cb, lhs_lo, rhs_lo); + let is_equal_hi = IsEqualGadget::construct(cb, lhs_hi, rhs_hi); + + Self { + is_equal_lo, + is_equal_hi, + } + } + + pub(crate) fn expr(&self) -> Expression<F> { + and::expr([self.is_equal_lo.expr(), self.is_equal_hi.expr()]) + } + + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + lhs: Word<F>, + rhs: Word<F>, + ) -> Result<F, Error> { + let (lhs_lo, lhs_hi) = lhs.to_lo_hi(); + let (rhs_lo, rhs_hi) = rhs.to_lo_hi(); + self.is_equal_lo.assign(region, offset, lhs_lo, rhs_lo)?; + self.is_equal_hi.assign(region, offset, lhs_hi, rhs_hi)?; + Ok(F::from(2)) + } + + pub(crate) fn assign_value( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + lhs: Value<Word<F>>, + rhs: Value<Word<F>>, + ) -> Result<Value<F>, Error> { + transpose_val_ret( + lhs.zip(rhs) + .map(|(lhs, rhs)| self.assign(region, offset, lhs, rhs)), + ) + } + + pub(crate) fn assign_u256( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + lhs: eth_types::Word, + rhs: eth_types::Word, + ) -> Result<F, Error> { + self.assign(region, offset, Word::from(lhs), Word::from(rhs)) + } +} + +/// Returns `1` when `lhs < rhs`, and returns `0` otherwise. +/// lhs and rhs `< 256**N_BYTES` +/// `N_BYTES` is required to be `<= MAX_N_BYTES_INTEGER` to prevent overflow: +/// values are stored in a single field element and two of these are added +/// together. +/// The equation that is enforced is `lhs - rhs == diff - (lt * range)`. +/// Because all values are `<= 256**N_BYTES` and `lt` is boolean, `lt` can only +/// be `1` when `lhs < rhs`. +#[derive(Clone, Debug, Default)] +pub struct LtGadget<F, const N_BYTES: usize> { + lt: Option<Cell<F>>, // `1` when `lhs < rhs`, `0` otherwise. + diff: Option<[Cell<F>; N_BYTES]>, /* The byte values of `diff`. + * `diff` equals `lhs - rhs` if `lhs >= rhs`, + * `lhs - rhs + range` otherwise. */ + range: F, // The range of the inputs, `256**N_BYTES` +} + +impl<F: Field, const N_BYTES: usize> LtGadget<F, N_BYTES> { + pub(crate) fn construct<C: CellType>( + cb: &mut ConstraintBuilder<F, C>, + lhs: Expression<F>, + rhs: Expression<F>, + ) -> Self { + let lt = cb.query_bool(); + let diff = cb.query_bytes(); + let range = pow_of_two(N_BYTES * 8); + + // The equation we require to hold: `lhs - rhs == diff - (lt * range)`. + cb.require_equal( + "lhs - rhs == diff - (lt â‹… range)", + lhs - rhs, + from_bytes::expr(&diff) - (lt.expr() * range), + ); + + Self { + lt: Some(lt), + diff: Some(diff), + range, + } + } + + pub(crate) fn expr(&self) -> Expression<F> { + self.lt.as_ref().unwrap().expr() + } + + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + lhs: F, + rhs: F, + ) -> Result<(F, Vec<u8>), Error> { + // Set `lt` + let lt = lhs < rhs; + self.lt + .as_ref() + .unwrap() + .assign(region, offset, if lt { F::ONE } else { F::ZERO })?; + // Set the bytes of diff + let diff = (lhs - rhs) + (if lt { self.range } else { F::ZERO }); + let diff_bytes = diff.to_repr(); + for (idx, diff) in self.diff.as_ref().unwrap().iter().enumerate() { + diff.assign(region, offset, F::from(diff_bytes[idx] as u64))?; + } + + Ok((if lt { F::ONE } else { F::ZERO }, diff_bytes.to_vec())) + } + + pub(crate) fn diff_bytes(&self) -> Vec<Cell<F>> { + self.diff.as_ref().unwrap().to_vec() + } +} diff --git a/zkevm-circuits/src/circuit_tools/memory.rs b/zkevm-circuits/src/circuit_tools/memory.rs new file mode 100644 index 0000000000..112ef6d6ed --- /dev/null +++ b/zkevm-circuits/src/circuit_tools/memory.rs @@ -0,0 +1,277 @@ +//! Memory +use crate::util::{query_expression, Expr}; +use eth_types::Field; +use halo2_proofs::{ + circuit::Value, + plonk::{Advice, Column, ConstraintSystem, Error, Expression}, + poly::Rotation, +}; +use std::ops::{Index, IndexMut}; + +use super::{ + cached_region::CachedRegion, cell_manager::CellType, constraint_builder::ConstraintBuilder, +}; + +#[derive(Clone, Debug, Default)] +pub(crate) struct Memory<F, C> { + columns: Vec<Column<Advice>>, + banks: Vec<MemoryBank<F, C>>, +} + +impl<F: Field, C: CellType> Memory<F, C> { + pub(crate) fn new(columns: Vec<Column<Advice>>) -> Self { + Self { + columns, + banks: Vec::new(), + } + } + + pub(crate) fn allocate( + &mut self, + meta: &mut ConstraintSystem<F>, + tag: C, + table_tag: C, + ) -> &MemoryBank<F, C> { + self.banks.push(MemoryBank::new( + meta, + self.columns[self.banks.len()], + tag, + table_tag, + )); + self.banks.last().unwrap() + } + + pub(crate) fn get(&self, tag: C) -> &MemoryBank<F, C> { + for bank in self.banks.iter() { + if bank.tag() == tag { + return bank; + } + } + unreachable!() + } + + pub(crate) fn get_mut(&mut self, tag: C) -> &mut MemoryBank<F, C> { + for bank in self.banks.iter_mut() { + if bank.tag() == tag { + return bank; + } + } + unreachable!() + } + + pub(crate) fn get_columns(&self) -> Vec<Column<Advice>> { + self.columns.clone() + } + + pub(crate) fn build_constraints( + &self, + cb: &mut ConstraintBuilder<F, C>, + is_first_row: Expression<F>, + ) { + for bank in self.banks.iter() { + bank.build_constraints(cb, is_first_row.expr()); + // cb.generate_lookup_table_checks(bank.tag()); + } + } + + pub(crate) fn clear_witness_data(&mut self) { + for bank in self.banks.iter_mut() { + bank.clear_witness_data(); + } + } + + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + height: usize, + ) -> Result<(), Error> { + for bank in self.banks.iter() { + bank.assign(region, height)?; + } + Ok(()) + } + + pub(crate) fn tags(&self) -> Vec<C> { + self.banks.iter().map(|bank| bank.tag()).collect() + } +} + +impl<F: Field, C: CellType> Index<C> for Memory<F, C> { + type Output = MemoryBank<F, C>; + + fn index(&self, tag: C) -> &Self::Output { + for bank in self.banks.iter() { + if bank.tag() == tag { + return bank; + } + } + unreachable!() + } +} + +impl<F: Field, C: CellType> IndexMut<C> for Memory<F, C> { + fn index_mut(&mut self, tag: C) -> &mut Self::Output { + for bank in self.banks.iter_mut() { + if bank.tag() == tag { + return bank; + } + } + unreachable!() + } +} + +#[derive(Clone, Debug)] +pub(crate) struct MemoryBank<F, C> { + column: Column<Advice>, + tag: C, + table_tag: C, + cur: Expression<F>, + next: Expression<F>, + store_offsets: Vec<usize>, + stored_values: Vec<Vec<F>>, +} + +impl<F: Field, C: CellType> MemoryBank<F, C> { + pub(crate) fn new( + meta: &mut ConstraintSystem<F>, + column: Column<Advice>, + tag: C, + table_tag: C, + ) -> Self { + let mut cur = 0.expr(); + let mut next = 0.expr(); + query_expression(meta, |meta| { + cur = meta.query_advice(column, Rotation::cur()); + next = meta.query_advice(column, Rotation::next()); + }); + Self { + column, + tag, + table_tag, + cur, + next, + store_offsets: Vec::new(), + stored_values: Vec::new(), + } + } + + pub(crate) fn key(&self) -> Expression<F> { + self.cur.expr() + } + + pub(crate) fn load( + &self, + description: &'static str, + cb: &mut ConstraintBuilder<F, C>, + offset: Expression<F>, + values: &[Expression<F>], + ) { + self.load_with_key(description, cb, self.key() - offset, values); + } + + pub(crate) fn load_with_key( + &self, + description: &'static str, + cb: &mut ConstraintBuilder<F, C>, + key: Expression<F>, + values: &[Expression<F>], + ) { + cb.add_lookup(description, self.tag(), self.insert_key(key, values)); + } + + pub(crate) fn store( + &self, + cb: &mut ConstraintBuilder<F, C>, + values: &[Expression<F>], + ) -> Expression<F> { + let key = self.key() + 1.expr(); + self.store_with_key(cb, key.expr(), values); + key + } + + pub(crate) fn store_with_key( + &self, + cb: &mut ConstraintBuilder<F, C>, + key: Expression<F>, + values: &[Expression<F>], + ) { + cb.add_lookup( + "memory store", + self.table_tag(), + self.insert_key(key, values), + ); + } + + pub(crate) fn witness_store(&mut self, offset: usize, values: &[F]) { + self.stored_values.push(values.to_vec()); + self.store_offsets.push(offset); + } + + pub(crate) fn witness_load(&self, offset: usize) -> Vec<F> { + self.stored_values[self.stored_values.len() - 1 - offset].clone() + } + + pub(crate) fn clear_witness_data(&mut self) { + self.store_offsets.clear(); + } + + pub(crate) fn build_constraints( + &self, + cb: &mut ConstraintBuilder<F, C>, + is_first_row: Expression<F>, + ) { + let lookups = cb.lookups.get(&self.table_tag()).unwrap(); + let lookups = lookups + .iter() + .filter(|l| l.region_id == cb.region_id) + .collect::<Vec<_>>(); + let condition = lookups + .iter() + .fold(0.expr(), |acc, c| acc + c.condition.expr()); + crate::circuit!([meta, cb], { + ifx! {is_first_row => { + require!(self.cur.expr() => 0); + }} + let description = format!("Dynamic lookup table {:?}", self.tag()); + require!(condition => bool); + require!(description, self.next => self.cur.expr() + condition.expr()); + }); + } + + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + height: usize, + ) -> Result<(), Error> { + // Pad to the full circuit (necessary for reads) + let mut store_offsets = self.store_offsets.clone(); + store_offsets.push(height); + + // TODO(Brecht): partial updates + let mut offset = 0; + for (store_index, &stored_offset) in store_offsets.iter().enumerate() { + while offset <= stored_offset { + region.assign_advice( + || "assign memory index".to_string(), + self.column, + offset, + || Value::known(F::from(store_index as u64)), + )?; + offset += 1; + } + } + Ok(()) + } + + pub(crate) fn tag(&self) -> C { + self.tag + } + + pub(crate) fn table_tag(&self) -> C { + self.table_tag + } + + pub(crate) fn insert_key<V: Clone>(&self, key: V, values: &[V]) -> Vec<V> { + [vec![key], values.to_owned()].concat().to_vec() + } +} diff --git a/zkevm-circuits/src/copy_circuit.rs b/zkevm-circuits/src/copy_circuit.rs index a0e5e51a54..7e9cc18759 100644 --- a/zkevm-circuits/src/copy_circuit.rs +++ b/zkevm-circuits/src/copy_circuit.rs @@ -3,42 +3,49 @@ //! etc. pub(crate) mod util; -#[cfg(any(feature = "test", test, feature = "test-circuits"))] +#[cfg(any(test, feature = "test-circuits"))] mod dev; #[cfg(test)] mod test; -#[cfg(any(feature = "test", test, feature = "test-circuits"))] +#[cfg(feature = "test-circuits")] pub use dev::CopyCircuit as TestCopyCircuit; +use crate::{ + evm_circuit::util::constraint_builder::{BaseConstraintBuilder, ConstrainBuilderCommon}, + table::{ + BytecodeFieldTag, BytecodeTable, CopyTable, LookupTable, RwTable, TxContextFieldTag, + TxTable, + }, + util::{Challenges, SubCircuit, SubCircuitConfig}, + witness, + witness::{RwMap, Transaction}, +}; use bus_mapping::{ circuit_input_builder::{CopyDataType, CopyEvent}, operation::Target, + state_db::CodeDB, }; -use eth_types::{Field, Word}; - +use eth_types::Field; use gadgets::{ - binary_number::BinaryNumberChip, + binary_number::{BinaryNumberChip, BinaryNumberConfig}, less_than::{LtChip, LtConfig, LtInstruction}, util::{and, not, or, Expr}, }; use halo2_proofs::{ circuit::{Layouter, Region, Value}, - plonk::{Advice, Column, ConstraintSystem, Error, Expression, Fixed, SecondPhase, Selector}, + plonk::{ + Advice, Column, ConstraintSystem, Error, Expression, Fixed, SecondPhase, Selector, + VirtualCells, + }, poly::Rotation, }; use itertools::Itertools; -use std::{collections::HashMap, marker::PhantomData}; +use std::marker::PhantomData; -use crate::{ - evm_circuit::util::constraint_builder::{BaseConstraintBuilder, ConstrainBuilderCommon}, - table::{ - BytecodeFieldTag, BytecodeTable, CopyTable, LookupTable, RwTable, TxContextFieldTag, - TxTable, - }, - util::{Challenges, SubCircuit, SubCircuitConfig}, - witness, - witness::{Bytecode, RwMap, Transaction}, -}; +// Rows to enable but not use, that can be queried safely by the last event. +const UNUSED_ROWS: usize = 2; +// Rows to disable, so they do not query into Halo2 reserved rows. +const DISABLED_ROWS: usize = 2; /// The rw table shared between evm circuit and state circuit #[derive(Clone, Debug)] @@ -162,6 +169,8 @@ impl<F: Field> SubCircuitConfig<F> for CopyCircuitConfig<F> { ]), ); + constrain_must_terminate(&mut cb, meta, q_enable, &tag); + let not_last_two_rows = 1.expr() - meta.query_advice(is_last, Rotation::cur()) - meta.query_advice(is_last, Rotation::next()); @@ -171,10 +180,10 @@ impl<F: Field> SubCircuitConfig<F> for CopyCircuitConfig<F> { meta, ))), |cb| { - cb.require_equal( + cb.require_equal_word( "rows[0].id == rows[2].id", - meta.query_advice(id, Rotation::cur()), - meta.query_advice(id, Rotation(2)), + id.map(|limb| meta.query_advice(limb, Rotation::cur())), + id.map(|limb| meta.query_advice(limb, Rotation(2))), ); cb.require_equal( "rows[0].tag == rows[2].tag", @@ -341,17 +350,20 @@ impl<F: Field> SubCircuitConfig<F> for CopyCircuitConfig<F> { meta.query_advice(rw_counter, Rotation::cur()), not::expr(meta.query_selector(q_step)), Target::Memory.expr(), - meta.query_advice(id, Rotation::cur()), // call_id - meta.query_advice(addr, Rotation::cur()), // memory address - 0.expr(), - 0.expr(), - meta.query_advice(value, Rotation::cur()), - 0.expr(), - 0.expr(), - 0.expr(), + meta.query_advice(id.lo(), Rotation::cur()), // call_id + meta.query_advice(addr, Rotation::cur()), // memory address + 0.expr(), // field tag + 0.expr(), // storage_key_lo + 0.expr(), // storage_key_hi + meta.query_advice(value, Rotation::cur()), // value_lo + 0.expr(), // value_hi + 0.expr(), // value_prev_lo + 0.expr(), // value_prev_hi + 0.expr(), // init_val_lo + 0.expr(), // init_val_hi ] .into_iter() - .zip(rw_table.table_exprs(meta).into_iter()) + .zip_eq(rw_table.table_exprs(meta).into_iter()) .map(|(arg, table)| (cond.clone() * arg, table)) .collect() }); @@ -363,17 +375,20 @@ impl<F: Field> SubCircuitConfig<F> for CopyCircuitConfig<F> { meta.query_advice(rw_counter, Rotation::cur()), 1.expr(), Target::TxLog.expr(), - meta.query_advice(id, Rotation::cur()), // tx_id - meta.query_advice(addr, Rotation::cur()), // byte_index || field_tag || log_id - 0.expr(), - 0.expr(), - meta.query_advice(value, Rotation::cur()), - 0.expr(), - 0.expr(), - 0.expr(), + meta.query_advice(id.lo(), Rotation::cur()), // tx_id + meta.query_advice(addr, Rotation::cur()), // byte_index || field_tag || log_id + 0.expr(), // field tag + 0.expr(), // storage_key_lo + 0.expr(), // storage_key_hi + meta.query_advice(value, Rotation::cur()), // value_lo + 0.expr(), // value_hi + 0.expr(), // value_prev_lo + 0.expr(), // value_prev_hi + 0.expr(), // init_val_lo + 0.expr(), // init_val_hi ] .into_iter() - .zip(rw_table.table_exprs(meta).into_iter()) + .zip_eq(rw_table.table_exprs(meta).into_iter()) .map(|(arg, table)| (cond.clone() * arg, table)) .collect() }); @@ -383,14 +398,15 @@ impl<F: Field> SubCircuitConfig<F> for CopyCircuitConfig<F> { * tag.value_equals(CopyDataType::Bytecode, Rotation::cur())(meta) * not::expr(meta.query_advice(is_pad, Rotation::cur())); vec![ - meta.query_advice(id, Rotation::cur()), + meta.query_advice(id.lo(), Rotation::cur()), + meta.query_advice(id.hi(), Rotation::cur()), BytecodeFieldTag::Byte.expr(), meta.query_advice(addr, Rotation::cur()), meta.query_advice(is_code, Rotation::cur()), meta.query_advice(value, Rotation::cur()), ] .into_iter() - .zip(bytecode_table.table_exprs(meta).into_iter()) + .zip_eq(bytecode_table.table_exprs(meta).into_iter()) .map(|(arg, table)| (cond.clone() * arg, table)) .collect() }); @@ -400,7 +416,8 @@ impl<F: Field> SubCircuitConfig<F> for CopyCircuitConfig<F> { * tag.value_equals(CopyDataType::TxCalldata, Rotation::cur())(meta) * not::expr(meta.query_advice(is_pad, Rotation::cur())); vec![ - meta.query_advice(id, Rotation::cur()), + meta.query_advice(id.lo(), Rotation::cur()), /* For transaction ID we use lo + * limb only */ TxContextFieldTag::CallData.expr(), meta.query_advice(addr, Rotation::cur()), meta.query_advice(value, Rotation::cur()), @@ -411,6 +428,39 @@ impl<F: Field> SubCircuitConfig<F> for CopyCircuitConfig<F> { .collect() }); + meta.create_gate("id_hi === 0 when Momory", |meta| { + let mut cb = BaseConstraintBuilder::default(); + + let cond = tag.value_equals(CopyDataType::Memory, Rotation::cur())(meta) + * not::expr(meta.query_advice(is_pad, Rotation::cur())); + cb.condition(cond, |cb| { + cb.require_zero("id_hi === 0", meta.query_advice(id.hi(), Rotation::cur())) + }); + cb.gate(meta.query_fixed(q_enable, Rotation::cur())) + }); + + meta.create_gate("id_hi === 0 when TxLog", |meta| { + let mut cb = BaseConstraintBuilder::default(); + + let cond = tag.value_equals(CopyDataType::TxLog, Rotation::cur())(meta) + * not::expr(meta.query_advice(is_pad, Rotation::cur())); + cb.condition(cond, |cb| { + cb.require_zero("id_hi === 0", meta.query_advice(id.hi(), Rotation::cur())) + }); + cb.gate(meta.query_fixed(q_enable, Rotation::cur())) + }); + + meta.create_gate("id_hi === 0 when TxCalldata", |meta| { + let mut cb = BaseConstraintBuilder::default(); + + let cond = tag.value_equals(CopyDataType::TxCalldata, Rotation::cur())(meta) + * not::expr(meta.query_advice(is_pad, Rotation::cur())); + cb.condition(cond, |cb| { + cb.require_zero("id_hi === 0", meta.query_advice(id.hi(), Rotation::cur())) + }); + cb.gate(meta.query_fixed(q_enable, Rotation::cur())) + }); + Self { q_step, is_last, @@ -428,6 +478,29 @@ impl<F: Field> SubCircuitConfig<F> for CopyCircuitConfig<F> { } } +/// Verify that is_last goes to 1 at some point. +pub fn constrain_must_terminate<F: Field>( + cb: &mut BaseConstraintBuilder<F>, + meta: &mut VirtualCells<'_, F>, + q_enable: Column<Fixed>, + tag: &BinaryNumberConfig<CopyDataType, 3>, +) { + // If an event has started (tag != Padding on reader and writer rows), require q_enable=1 at the + // next step. This prevents querying rows where constraints are disabled. + // + // The tag is then copied to the next step by "rows[0].tag == rows[2].tag". Eventually, + // q_enable=0. By that point the tag must have switched to Padding, which is only possible with + // is_last=1. This guarantees that all the final conditions are checked. + let is_event = tag.value(Rotation::cur())(meta) - tag.constant_expr::<F>(CopyDataType::Padding); + cb.condition(is_event, |cb| { + cb.require_equal( + "the next step is enabled", + meta.query_fixed(q_enable, Rotation(2)), + 1.expr(), + ); + }); +} + impl<F: Field> CopyCircuitConfig<F> { /// Assign an individual copy event to the Copy Circuit. pub fn assign_copy_event( @@ -526,11 +599,11 @@ impl<F: Field> CopyCircuitConfig<F> { ) -> Result<(), Error> { let copy_rows_needed = copy_events.iter().map(|c| c.bytes.len() * 2).sum::<usize>(); - // The `+ 2` is used to take into account the two extra empty copy rows needed - // to satisfy the query at `Rotation(2)` performed inside of the - // `rows[2].value == rows[0].value * r + rows[1].value` requirement in the RLC - // Accumulation gate. - assert!(copy_rows_needed + 2 <= max_copy_rows); + assert!( + copy_rows_needed + DISABLED_ROWS + UNUSED_ROWS <= max_copy_rows, + "copy rows not enough {copy_rows_needed} + 4 vs {max_copy_rows}" + ); + let filler_rows = max_copy_rows - copy_rows_needed - DISABLED_ROWS; let tag_chip = BinaryNumberChip::construct(self.copy_table.tag); let lt_chip = LtChip::construct(self.addr_lt_addr_end); @@ -557,12 +630,14 @@ impl<F: Field> CopyCircuitConfig<F> { )?; } - for _ in 0..max_copy_rows - copy_rows_needed - 2 { - self.assign_padding_row(&mut region, &mut offset, false, &tag_chip, <_chip)?; + for _ in 0..filler_rows { + self.assign_padding_row(&mut region, &mut offset, true, &tag_chip, <_chip)?; } + assert_eq!(offset % 2, 0, "enabled rows must come in pairs"); - self.assign_padding_row(&mut region, &mut offset, true, &tag_chip, <_chip)?; - self.assign_padding_row(&mut region, &mut offset, true, &tag_chip, <_chip)?; + for _ in 0..DISABLED_ROWS { + self.assign_padding_row(&mut region, &mut offset, false, &tag_chip, <_chip)?; + } Ok(()) }, @@ -573,22 +648,20 @@ impl<F: Field> CopyCircuitConfig<F> { &self, region: &mut Region<F>, offset: &mut usize, - is_last_two: bool, + enabled: bool, tag_chip: &BinaryNumberChip<F, CopyDataType, 3>, lt_chip: &LtChip<F, 8>, ) -> Result<(), Error> { - if !is_last_two { - // q_enable - region.assign_fixed( - || "q_enable", - self.q_enable, - *offset, - || Value::known(F::ONE), - )?; - // q_step - if *offset % 2 == 0 { - self.q_step.enable(region, *offset)?; - } + // q_enable + region.assign_fixed( + || "q_enable", + self.q_enable, + *offset, + || Value::known(if enabled { F::ONE } else { F::ZERO }), + )?; + // q_step + if enabled && *offset % 2 == 0 { + self.q_step.enable(region, *offset)?; } // is_first @@ -607,8 +680,14 @@ impl<F: Field> CopyCircuitConfig<F> { )?; // id region.assign_advice( - || format!("assign id {}", *offset), - self.copy_table.id, + || format!("assign id lo {}", *offset), + self.copy_table.id.lo(), + *offset, + || Value::known(F::ZERO), + )?; + region.assign_advice( + || format!("assign id hi {}", *offset), + self.copy_table.id.hi(), *offset, || Value::known(F::ZERO), )?; @@ -707,7 +786,7 @@ pub struct ExternalData { /// StateCircuit -> rws pub rws: RwMap, /// BytecodeCircuit -> bytecodes - pub bytecodes: HashMap<Word, Bytecode>, + pub bytecodes: CodeDB, } /// Copy Circuit diff --git a/zkevm-circuits/src/copy_circuit/dev.rs b/zkevm-circuits/src/copy_circuit/dev.rs index 996b12b07a..cd5b4c2a5c 100644 --- a/zkevm-circuits/src/copy_circuit/dev.rs +++ b/zkevm-circuits/src/copy_circuit/dev.rs @@ -57,21 +57,18 @@ impl<F: Field> Circuit<F> for CopyCircuit<F> { &self.external_data.txs, self.external_data.max_txs, self.external_data.max_calldata, - &challenge_values, )?; config.0.rw_table.load( &mut layouter, &self.external_data.rws.table_assignments(), self.external_data.max_rws, - challenge_values.evm_word(), )?; - config.0.bytecode_table.load( - &mut layouter, - self.external_data.bytecodes.values(), - &challenge_values, - )?; + config + .0 + .bytecode_table + .load(&mut layouter, self.external_data.bytecodes.clone())?; self.synthesize_sub(&config.0, &challenge_values, &mut layouter) } } diff --git a/zkevm-circuits/src/copy_circuit/util.rs b/zkevm-circuits/src/copy_circuit/util.rs index 87d5056949..24cce0f3f4 100644 --- a/zkevm-circuits/src/copy_circuit/util.rs +++ b/zkevm-circuits/src/copy_circuit/util.rs @@ -1,22 +1,12 @@ -use crate::evm_circuit::util::rlc; +use crate::util::word::Word; use bus_mapping::circuit_input_builder::NumberOrHash; use eth_types::Field; use halo2_proofs::circuit::Value; /// Encode the type `NumberOrHash` into a field element -pub fn number_or_hash_to_field<F: Field>(v: &NumberOrHash, challenge: Value<F>) -> Value<F> { +pub fn number_or_hash_to_word<F: Field>(v: &NumberOrHash) -> Word<Value<F>> { match v { - NumberOrHash::Number(n) => Value::known(F::from(*n as u64)), - NumberOrHash::Hash(h) => { - // since code hash in the bytecode table is represented in - // the little-endian form, we reverse the big-endian bytes - // of H256. - let le_bytes = { - let mut b = h.to_fixed_bytes(); - b.reverse(); - b - }; - challenge.map(|challenge| rlc::value(&le_bytes, challenge)) - } + NumberOrHash::Number(n) => Word::from(*n as u64).into_value(), + NumberOrHash::Hash(h) => Word::from(*h).into_value(), } } diff --git a/zkevm-circuits/src/evm_circuit.rs b/zkevm-circuits/src/evm_circuit.rs index 529dfc93af..e330550eb7 100644 --- a/zkevm-circuits/src/evm_circuit.rs +++ b/zkevm-circuits/src/evm_circuit.rs @@ -1,6 +1,5 @@ //! The EVM circuit implementation. -#![allow(missing_docs)] use halo2_proofs::{ circuit::{Layouter, SimpleFloorPlanner, Value}, plonk::*, @@ -12,10 +11,10 @@ pub mod step; pub mod table; pub(crate) mod util; -#[cfg(any(feature = "test", test))] +#[cfg(test)] pub(crate) mod test; use self::step::HasExecutionState; -#[cfg(any(feature = "test", test, feature = "test-circuits"))] +#[cfg(feature = "test-circuits")] pub use self::EvmCircuit as TestEvmCircuit; pub use crate::witness; @@ -23,6 +22,7 @@ use crate::{ evm_circuit::param::{MAX_STEP_HEIGHT, STEP_STATE_HEIGHT}, table::{ BlockTable, BytecodeTable, CopyTable, ExpTable, KeccakTable, LookupTable, RwTable, TxTable, + UXTable, }, util::{Challenges, SubCircuit, SubCircuitConfig}, }; @@ -38,7 +38,9 @@ use witness::Block; #[derive(Clone, Debug)] pub struct EvmCircuitConfig<F> { fixed_table: [Column<Fixed>; 4], - byte_table: [Column<Fixed>; 1], + u8_table: UXTable<8>, + u16_table: UXTable<16>, + /// The execution config pub execution: Box<ExecutionConfig<F>>, // External tables tx_table: TxTable, @@ -68,6 +70,10 @@ pub struct EvmCircuitConfigArgs<F: Field> { pub keccak_table: KeccakTable, /// ExpTable pub exp_table: ExpTable, + /// U8Table + pub u8_table: UXTable<8>, + /// U16Table + pub u16_table: UXTable<16>, } impl<F: Field> SubCircuitConfig<F> for EvmCircuitConfig<F> { @@ -85,15 +91,17 @@ impl<F: Field> SubCircuitConfig<F> for EvmCircuitConfig<F> { copy_table, keccak_table, exp_table, + u8_table, + u16_table, }: Self::ConfigArgs, ) -> Self { let fixed_table = [(); 4].map(|_| meta.fixed_column()); - let byte_table = [(); 1].map(|_| meta.fixed_column()); let execution = Box::new(ExecutionConfig::configure( meta, challenges, &fixed_table, - &byte_table, + &u8_table, + &u16_table, &tx_table, &rw_table, &bytecode_table, @@ -103,7 +111,8 @@ impl<F: Field> SubCircuitConfig<F> for EvmCircuitConfig<F> { &exp_table, )); - meta.annotate_lookup_any_column(byte_table[0], || "byte_range"); + u8_table.annotate_columns(meta); + u16_table.annotate_columns(meta); fixed_table.iter().enumerate().for_each(|(idx, &col)| { meta.annotate_lookup_any_column(col, || format!("fix_table_{}", idx)) }); @@ -114,10 +123,13 @@ impl<F: Field> SubCircuitConfig<F> for EvmCircuitConfig<F> { copy_table.annotate_columns(meta); keccak_table.annotate_columns(meta); exp_table.annotate_columns(meta); + u8_table.annotate_columns(meta); + u16_table.annotate_columns(meta); Self { fixed_table, - byte_table, + u8_table, + u16_table, execution, tx_table, rw_table, @@ -153,25 +165,6 @@ impl<F: Field> EvmCircuitConfig<F> { }, ) } - - /// Load byte table - pub fn load_byte_table(&self, layouter: &mut impl Layouter<F>) -> Result<(), Error> { - layouter.assign_region( - || "byte table", - |mut region| { - for offset in 0..256 { - region.assign_fixed( - || "", - self.byte_table[0], - offset, - || Value::known(F::from(offset as u64)), - )?; - } - - Ok(()) - }, - ) - } } /// Tx Circuit for verifying transaction signatures @@ -190,16 +183,19 @@ impl<F: Field> EvmCircuit<F> { fixed_table_tags: FixedTableTag::iter().collect(), } } - - pub fn new_dev(block: Block<F>, fixed_table_tags: Vec<FixedTableTag>) -> Self { + #[cfg(any(test, feature = "test-circuits"))] + /// Construct the EvmCircuit with only subset of Fixed table tags required by tests to save + /// testing time + pub(crate) fn get_test_circuit_from_block(block: Block<F>) -> Self { + let fixed_table_tags = detect_fixed_table_tags(&block); Self { block: Some(block), fixed_table_tags, } } - + #[cfg(any(test, feature = "test-circuits"))] /// Calculate which rows are "actually" used in the circuit - pub fn get_active_rows(block: &Block<F>) -> (Vec<usize>, Vec<usize>) { + pub(crate) fn get_active_rows(block: &Block<F>) -> (Vec<usize>, Vec<usize>) { let max_offset = Self::get_num_rows_required(block); // some gates are enabled on all rows let gates_row_ids = (0..max_offset).collect(); @@ -207,8 +203,9 @@ impl<F: Field> EvmCircuit<F> { let lookup_row_ids = (0..max_offset).collect(); (gates_row_ids, lookup_row_ids) } - - pub fn get_num_rows_required(block: &Block<F>) -> usize { + /// Get the minimum number of rows required to process the block + /// If unspecified, then compute it + pub(crate) fn get_num_rows_required(block: &Block<F>) -> usize { let evm_rows = block.circuits_params.max_evm_rows; if evm_rows == 0 { Self::get_min_num_rows_required(block) @@ -217,11 +214,11 @@ impl<F: Field> EvmCircuit<F> { block.circuits_params.max_evm_rows + 1 } } - - pub fn get_min_num_rows_required(block: &Block<F>) -> usize { + /// Compute the minimum number of rows required to process the block + fn get_min_num_rows_required(block: &Block<F>) -> usize { let mut num_rows = 0; for transaction in &block.txs { - for step in &transaction.steps { + for step in transaction.steps() { num_rows += step.execution_state().get_step_height(); } } @@ -270,7 +267,6 @@ impl<F: Field> SubCircuit<F> for EvmCircuit<F> { let block = self.block.as_ref().unwrap(); config.load_fixed_table(layouter, self.fixed_table_tags.clone())?; - config.load_byte_table(layouter)?; config.execution.assign_block(layouter, block, challenges) } } @@ -278,7 +274,7 @@ impl<F: Field> SubCircuit<F> for EvmCircuit<F> { /// create fixed_table_tags needed given witness block pub(crate) fn detect_fixed_table_tags<F: Field>(block: &Block<F>) -> Vec<FixedTableTag> { let need_bitwise_lookup = block.txs.iter().any(|tx| { - tx.steps.iter().any(|step| { + tx.steps().iter().any(|step| { matches!( step.opcode(), Some(OpcodeId::AND) @@ -298,7 +294,7 @@ pub(crate) fn detect_fixed_table_tags<F: Field>(block: &Block<F>) -> Vec<FixedTa .collect() } -#[cfg(any(feature = "test", test))] +#[cfg(any(feature = "test-util", test))] pub(crate) mod cached { use super::*; use halo2_proofs::halo2curves::bn256::Fr; @@ -350,8 +346,8 @@ pub(crate) mod cached { } impl EvmCircuitCached { - pub fn get_test_cicuit_from_block(block: Block<Fr>) -> Self { - Self(EvmCircuit::<Fr>::get_test_cicuit_from_block(block)) + pub(crate) fn get_test_circuit_from_block(block: Block<Fr>) -> Self { + Self(EvmCircuit::<Fr>::get_test_circuit_from_block(block)) } } } @@ -375,6 +371,8 @@ impl<F: Field> Circuit<F> for EvmCircuit<F> { let copy_table = CopyTable::construct(meta, q_copy_table); let keccak_table = KeccakTable::construct(meta); let exp_table = ExpTable::construct(meta); + let u8_table = UXTable::construct(meta); + let u16_table = UXTable::construct(meta); let challenges = Challenges::construct(meta); let challenges_expr = challenges.exprs(meta); @@ -390,6 +388,8 @@ impl<F: Field> Circuit<F> for EvmCircuit<F> { copy_table, keccak_table, exp_table, + u8_table, + u16_table, }, ), challenges, @@ -411,27 +411,26 @@ impl<F: Field> Circuit<F> for EvmCircuit<F> { &block.txs, block.circuits_params.max_txs, block.circuits_params.max_calldata, - &challenges, )?; block.rws.check_rw_counter_sanity(); config.rw_table.load( &mut layouter, &block.rws.table_assignments(), block.circuits_params.max_rws, - challenges.evm_word(), )?; config .bytecode_table - .load(&mut layouter, block.bytecodes.values(), &challenges)?; - config - .block_table - .load(&mut layouter, &block.context, challenges.evm_word())?; + .load(&mut layouter, block.bytecodes.clone())?; + config.block_table.load(&mut layouter, &block.context)?; config.copy_table.load(&mut layouter, block, &challenges)?; config .keccak_table .dev_load(&mut layouter, &block.sha3_inputs, &challenges)?; config.exp_table.load(&mut layouter, block)?; + config.u8_table.load(&mut layouter)?; + config.u16_table.load(&mut layouter)?; + self.synthesize_sub(&config, &challenges, &mut layouter) } } @@ -499,7 +498,7 @@ mod evm_circuit_stats { let block = block_convert::<Fr>(&builder).unwrap(); let k = block.get_test_degree(); - let circuit = EvmCircuit::<Fr>::get_test_cicuit_from_block(block); + let circuit = EvmCircuit::<Fr>::get_test_circuit_from_block(block); let prover1 = MockProver::<Fr>::run(k, &circuit, vec![]).unwrap(); let code = bytecode! { @@ -520,7 +519,7 @@ mod evm_circuit_stats { .unwrap(); let block = block_convert::<Fr>(&builder).unwrap(); let k = block.get_test_degree(); - let circuit = EvmCircuit::<Fr>::get_test_cicuit_from_block(block); + let circuit = EvmCircuit::<Fr>::get_test_circuit_from_block(block); let prover2 = MockProver::<Fr>::run(k, &circuit, vec![]).unwrap(); assert_eq!(prover1.fixed(), prover2.fixed()); diff --git a/zkevm-circuits/src/evm_circuit/execution.rs b/zkevm-circuits/src/evm_circuit/execution.rs index 8def043c10..4261c76b9a 100644 --- a/zkevm-circuits/src/evm_circuit/execution.rs +++ b/zkevm-circuits/src/evm_circuit/execution.rs @@ -1,8 +1,8 @@ use super::{ param::{ BLOCK_TABLE_LOOKUPS, BYTECODE_TABLE_LOOKUPS, COPY_TABLE_LOOKUPS, EXP_TABLE_LOOKUPS, - FIXED_TABLE_LOOKUPS, KECCAK_TABLE_LOOKUPS, N_BYTE_LOOKUPS, N_COPY_COLUMNS, - N_PHASE1_COLUMNS, RW_TABLE_LOOKUPS, TX_TABLE_LOOKUPS, + FIXED_TABLE_LOOKUPS, KECCAK_TABLE_LOOKUPS, N_COPY_COLUMNS, N_PHASE1_COLUMNS, N_U16_LOOKUPS, + N_U8_LOOKUPS, RW_TABLE_LOOKUPS, TX_TABLE_LOOKUPS, }, step::HasExecutionState, util::{instrumentation::Instrument, CachedRegion, StoredExpression}, @@ -16,7 +16,7 @@ use crate::{ constraint_builder::{ BaseConstraintBuilder, ConstrainBuilderCommon, EVMConstraintBuilder, }, - rlc, + evaluate_expression, rlc, }, witness::{Block, Call, ExecStep, Transaction}, }, @@ -67,13 +67,19 @@ mod dummy; mod dup; mod end_block; mod end_tx; +mod error_code_store; +mod error_invalid_creation_code; mod error_invalid_jump; mod error_invalid_opcode; +mod error_oog_account_access; mod error_oog_call; mod error_oog_constant; +mod error_oog_create; +mod error_oog_dynamic_memory; mod error_oog_exp; mod error_oog_log; mod error_oog_memory_copy; +mod error_oog_sha3; mod error_oog_sload_sstore; mod error_oog_static_memory; mod error_return_data_oo_bound; @@ -115,14 +121,13 @@ mod sstore; mod stop; mod swap; -use self::sha3::Sha3Gadget; +use self::{block_ctx::BlockCtxGadget, sha3::Sha3Gadget}; use add_sub::AddSubGadget; use addmod::AddModGadget; use address::AddressGadget; use balance::BalanceGadget; use begin_tx::BeginTxGadget; use bitwise::BitwiseGadget; -use block_ctx::{BlockCtxU160Gadget, BlockCtxU256Gadget, BlockCtxU64Gadget}; use blockhash::BlockHashGadget; use byte::ByteGadget; use calldatacopy::CallDataCopyGadget; @@ -140,14 +145,21 @@ use dummy::DummyGadget; use dup::DupGadget; use end_block::EndBlockGadget; use end_tx::EndTxGadget; +use error_code_store::ErrorCodeStoreGadget; +use error_invalid_creation_code::ErrorInvalidCreationCodeGadget; use error_invalid_jump::ErrorInvalidJumpGadget; use error_invalid_opcode::ErrorInvalidOpcodeGadget; +use error_oog_account_access::ErrorOOGAccountAccessGadget; use error_oog_call::ErrorOOGCallGadget; use error_oog_constant::ErrorOOGConstantGadget; +use error_oog_create::ErrorOOGCreateGadget; +use error_oog_dynamic_memory::ErrorOOGDynamicMemoryGadget; use error_oog_exp::ErrorOOGExpGadget; use error_oog_log::ErrorOOGLogGadget; use error_oog_memory_copy::ErrorOOGMemoryCopyGadget; +use error_oog_sha3::ErrorOOGSha3Gadget; use error_oog_sload_sstore::ErrorOOGSloadSstoreGadget; +use error_oog_static_memory::ErrorOOGStaticMemoryGadget; use error_return_data_oo_bound::ErrorReturnDataOutOfBoundGadget; use error_stack::ErrorStackGadget; use error_write_protection::ErrorWriteProtectionGadget; @@ -224,6 +236,7 @@ pub struct ExecutionConfig<F> { step: Step<F>, pub(crate) height_map: HashMap<ExecutionState, usize>, stored_expressions_map: HashMap<ExecutionState, Vec<StoredExpression<F>>>, + debug_expressions_map: HashMap<ExecutionState, Vec<(String, Expression<F>)>>, instrument: Instrument, // internal state gadgets begin_tx_gadget: Box<BeginTxGadget<F>>, @@ -285,37 +298,33 @@ pub struct ExecutionConfig<F> { stop_gadget: Box<StopGadget<F>>, swap_gadget: Box<SwapGadget<F>>, blockhash_gadget: Box<BlockHashGadget<F>>, - block_ctx_u64_gadget: Box<BlockCtxU64Gadget<F>>, - block_ctx_u160_gadget: Box<BlockCtxU160Gadget<F>>, - block_ctx_u256_gadget: Box<BlockCtxU256Gadget<F>>, + block_ctx_gadget: Box<BlockCtxGadget<F>>, // error gadgets error_oog_call: Box<ErrorOOGCallGadget<F>>, error_oog_constant: Box<ErrorOOGConstantGadget<F>>, error_oog_exp: Box<ErrorOOGExpGadget<F>>, error_oog_memory_copy: Box<ErrorOOGMemoryCopyGadget<F>>, error_oog_sload_sstore: Box<ErrorOOGSloadSstoreGadget<F>>, - error_oog_static_memory_gadget: - Box<DummyGadget<F, 0, 0, { ExecutionState::ErrorOutOfGasStaticMemoryExpansion }>>, + error_oog_static_memory_gadget: Box<ErrorOOGStaticMemoryGadget<F>>, error_stack: Box<ErrorStackGadget<F>>, error_write_protection: Box<ErrorWriteProtectionGadget<F>>, - error_oog_dynamic_memory_gadget: - Box<DummyGadget<F, 0, 0, { ExecutionState::ErrorOutOfGasDynamicMemoryExpansion }>>, + error_oog_dynamic_memory_gadget: Box<ErrorOOGDynamicMemoryGadget<F>>, error_oog_log: Box<ErrorOOGLogGadget<F>>, - error_oog_account_access: - Box<DummyGadget<F, 0, 0, { ExecutionState::ErrorOutOfGasAccountAccess }>>, - error_oog_sha3: Box<DummyGadget<F, 0, 0, { ExecutionState::ErrorOutOfGasSHA3 }>>, + error_oog_sha3: Box<ErrorOOGSha3Gadget<F>>, + error_oog_account_access: Box<ErrorOOGAccountAccessGadget<F>>, error_oog_ext_codecopy: Box<DummyGadget<F, 0, 0, { ExecutionState::ErrorOutOfGasEXTCODECOPY }>>, - error_oog_create2: Box<DummyGadget<F, 0, 0, { ExecutionState::ErrorOutOfGasCREATE2 }>>, + error_oog_create: Box<ErrorOOGCreateGadget<F>>, error_oog_self_destruct: Box<DummyGadget<F, 0, 0, { ExecutionState::ErrorOutOfGasSELFDESTRUCT }>>, - error_oog_code_store: Box<DummyGadget<F, 0, 0, { ExecutionState::ErrorOutOfGasCodeStore }>>, + error_oog_code_store: Box<ErrorCodeStoreGadget<F>>, error_invalid_jump: Box<ErrorInvalidJumpGadget<F>>, error_invalid_opcode: Box<ErrorInvalidOpcodeGadget<F>>, + #[allow(dead_code, reason = "under active development")] error_depth: Box<DummyGadget<F, 0, 0, { ExecutionState::ErrorDepth }>>, + #[allow(dead_code, reason = "under active development")] error_contract_address_collision: Box<DummyGadget<F, 0, 0, { ExecutionState::ErrorContractAddressCollision }>>, - error_invalid_creation_code: - Box<DummyGadget<F, 0, 0, { ExecutionState::ErrorInvalidCreationCode }>>, + error_invalid_creation_code: Box<ErrorInvalidCreationCodeGadget<F>>, error_return_data_out_of_bound: Box<ErrorReturnDataOutOfBoundGadget<F>>, } @@ -326,7 +335,8 @@ impl<F: Field> ExecutionConfig<F> { meta: &mut ConstraintSystem<F>, challenges: Challenges<Expression<F>>, fixed_table: &dyn LookupTable<F>, - byte_table: &dyn LookupTable<F>, + u8_table: &dyn LookupTable<F>, + u16_table: &dyn LookupTable<F>, tx_table: &dyn LookupTable<F>, rw_table: &dyn LookupTable<F>, bytecode_table: &dyn LookupTable<F>, @@ -454,6 +464,7 @@ impl<F: Field> ExecutionConfig<F> { }); let mut stored_expressions_map = HashMap::new(); + let mut debug_expressions_map = HashMap::new(); macro_rules! configure_gadget { () => { @@ -475,6 +486,7 @@ impl<F: Field> ExecutionConfig<F> { &step_curr, &mut height_map, &mut stored_expressions_map, + &mut debug_expressions_map, &mut instrument, )) })() @@ -552,9 +564,7 @@ impl<F: Field> ExecutionConfig<F> { sstore_gadget: configure_gadget!(), stop_gadget: configure_gadget!(), swap_gadget: configure_gadget!(), - block_ctx_u64_gadget: configure_gadget!(), - block_ctx_u160_gadget: configure_gadget!(), - block_ctx_u256_gadget: configure_gadget!(), + block_ctx_gadget: configure_gadget!(), // error gadgets error_oog_constant: configure_gadget!(), error_oog_static_memory_gadget: configure_gadget!(), @@ -568,7 +578,7 @@ impl<F: Field> ExecutionConfig<F> { error_oog_sha3: configure_gadget!(), error_oog_ext_codecopy: configure_gadget!(), error_oog_exp: configure_gadget!(), - error_oog_create2: configure_gadget!(), + error_oog_create: configure_gadget!(), error_oog_self_destruct: configure_gadget!(), error_oog_code_store: configure_gadget!(), error_invalid_jump: configure_gadget!(), @@ -582,13 +592,15 @@ impl<F: Field> ExecutionConfig<F> { step: step_curr, height_map, stored_expressions_map, + debug_expressions_map, instrument, }; Self::configure_lookup( meta, fixed_table, - byte_table, + u8_table, + u16_table, tx_table, rw_table, bytecode_table, @@ -619,6 +631,7 @@ impl<F: Field> ExecutionConfig<F> { step_curr: &Step<F>, height_map: &mut HashMap<ExecutionState, usize>, stored_expressions_map: &mut HashMap<ExecutionState, Vec<StoredExpression<F>>>, + debug_expressions_map: &mut HashMap<ExecutionState, Vec<(String, Expression<F>)>>, instrument: &mut Instrument, ) -> G { // Configure the gadget with the max height first so we can find out the actual @@ -659,6 +672,7 @@ impl<F: Field> ExecutionConfig<F> { step_next, height_map, stored_expressions_map, + debug_expressions_map, instrument, G::NAME, G::EXECUTION_STATE, @@ -680,6 +694,7 @@ impl<F: Field> ExecutionConfig<F> { step_next: &Step<F>, height_map: &mut HashMap<ExecutionState, usize>, stored_expressions_map: &mut HashMap<ExecutionState, Vec<StoredExpression<F>>>, + debug_expressions_map: &mut HashMap<ExecutionState, Vec<(String, Expression<F>)>>, instrument: &mut Instrument, name: &'static str, execution_state: ExecutionState, @@ -697,6 +712,7 @@ impl<F: Field> ExecutionConfig<F> { instrument.on_gadget_built(execution_state, &cb); + let debug_expressions = cb.debug_expressions.clone(); let (constraints, stored_expressions, _, meta) = cb.build(); debug_assert!( !height_map.contains_key(&execution_state), @@ -709,6 +725,7 @@ impl<F: Field> ExecutionConfig<F> { "execution state already configured" ); stored_expressions_map.insert(execution_state, stored_expressions); + debug_expressions_map.insert(execution_state, debug_expressions); // Enforce the logic for this opcode let sel_step: &dyn Fn(&mut VirtualCells<F>) -> Expression<F> = @@ -803,7 +820,8 @@ impl<F: Field> ExecutionConfig<F> { fn configure_lookup( meta: &mut ConstraintSystem<F>, fixed_table: &dyn LookupTable<F>, - byte_table: &dyn LookupTable<F>, + u8_table: &dyn LookupTable<F>, + u16_table: &dyn LookupTable<F>, tx_table: &dyn LookupTable<F>, rw_table: &dyn LookupTable<F>, bytecode_table: &dyn LookupTable<F>, @@ -821,6 +839,8 @@ impl<F: Field> ExecutionConfig<F> { meta.lookup_any(Box::leak(name.into_boxed_str()), |meta| { let table_expressions = match table { Table::Fixed => fixed_table, + Table::U8 => u8_table, + Table::U16 => u16_table, Table::Tx => tx_table, Table::Rw => rw_table, Table::Bytecode => bytecode_table, @@ -837,15 +857,6 @@ impl<F: Field> ExecutionConfig<F> { }); } } - for column in cell_manager.columns().iter() { - if let CellType::LookupByte = column.cell_type { - let column_expr = column.expr(meta); - meta.lookup_any("Byte lookup", |meta| { - let byte_table_expression = byte_table.table_exprs(meta)[0].clone(); - vec![(column_expr, byte_table_expression)] - }); - } - } } /// Assign columns related to step counter @@ -895,6 +906,8 @@ impl<F: Field> ExecutionConfig<F> { block: &Block<F>, challenges: &Challenges<Value<F>>, ) -> Result<(), Error> { + // Track number of calls to `layouter.assign_region` as layouter assignment passes. + let mut assign_pass = 0; layouter.assign_region( || "Execution step", |mut region| { @@ -909,7 +922,7 @@ impl<F: Field> ExecutionConfig<F> { let last_call = block .txs .last() - .map(|tx| tx.calls[0].clone()) + .map(|tx| tx.calls()[0].clone()) .unwrap_or_else(Call::default); let end_block_not_last = &block.end_block_not_last; let end_block_last = &block.end_block_last; @@ -918,9 +931,9 @@ impl<F: Field> ExecutionConfig<F> { .txs .iter() .flat_map(|tx| { - tx.steps + tx.steps() .iter() - .map(move |step| (tx, &tx.calls[step.call_index], step)) + .map(move |step| (tx, &tx.calls()[step.call_index], step)) }) .chain(std::iter::once((&dummy_tx, &last_call, end_block_not_last))) .peekable(); @@ -948,6 +961,7 @@ impl<F: Field> ExecutionConfig<F> { height, next.copied(), challenges, + assign_pass, )?; // q_step logic @@ -984,6 +998,7 @@ impl<F: Field> ExecutionConfig<F> { end_block_not_last, height, challenges, + assign_pass, )?; for row_idx in offset..last_row { @@ -1006,6 +1021,7 @@ impl<F: Field> ExecutionConfig<F> { height, None, challenges, + assign_pass, )?; self.assign_q_step(&mut region, offset, height)?; // enable q_step_last @@ -1027,6 +1043,7 @@ impl<F: Field> ExecutionConfig<F> { || Value::known(F::ZERO), )?; + assign_pass += 1; Ok(()) }, ) @@ -1044,7 +1061,8 @@ impl<F: Field> ExecutionConfig<F> { ("EVM_lookup_exp", EXP_TABLE_LOOKUPS), ("EVM_adv_phase2", N_PHASE2_COLUMNS), ("EVM_copy", N_COPY_COLUMNS), - ("EVM_lookup_byte", N_BYTE_LOOKUPS), + ("EVM_lookup_u8", N_U8_LOOKUPS), + ("EVM_lookup_u16", N_U16_LOOKUPS), ("EVM_adv_phase1", N_PHASE1_COLUMNS), ]; let mut group_index = 0; @@ -1077,6 +1095,7 @@ impl<F: Field> ExecutionConfig<F> { step: &ExecStep, height: usize, challenges: &Challenges<Value<F>>, + assign_pass: usize, ) -> Result<(), Error> { if offset_end <= offset_begin { return Ok(()); @@ -1093,7 +1112,16 @@ impl<F: Field> ExecutionConfig<F> { 1, offset_begin, ); - self.assign_exec_step_int(region, offset_begin, block, transaction, call, step)?; + self.assign_exec_step_int( + region, + offset_begin, + block, + transaction, + call, + step, + false, + assign_pass, + )?; region.replicate_assignment_for_range( || format!("repeat {:?} rows", step.execution_state()), @@ -1116,6 +1144,7 @@ impl<F: Field> ExecutionConfig<F> { height: usize, next: Option<(&Transaction, &Call, &ExecStep)>, challenges: &Challenges<Value<F>>, + assign_pass: usize, ) -> Result<(), Error> { if !matches!(step.execution_state(), ExecutionState::EndBlock) { log::trace!( @@ -1149,12 +1178,24 @@ impl<F: Field> ExecutionConfig<F> { transaction_next, call_next, step_next, + true, + assign_pass, )?; } - self.assign_exec_step_int(region, offset, block, transaction, call, step) + self.assign_exec_step_int( + region, + offset, + block, + transaction, + call, + step, + false, + assign_pass, + ) } + #[allow(clippy::too_many_arguments)] fn assign_exec_step_int( &self, region: &mut CachedRegion<'_, '_, F>, @@ -1163,6 +1204,12 @@ impl<F: Field> ExecutionConfig<F> { transaction: &Transaction, call: &Call, step: &ExecStep, + // Set to true when we're assigning the next step before the current step to have + // next step assignments for evaluation of the stored expressions in current step that + // depend on the next step. + is_next: bool, + // Layouter assignment pass + assign_pass: usize, ) -> Result<(), Error> { self.step .assign_exec_step(region, offset, block, call, step)?; @@ -1221,9 +1268,7 @@ impl<F: Field> ExecutionConfig<F> { ExecutionState::SAR => assign_exec_step!(self.sar_gadget), ExecutionState::SCMP => assign_exec_step!(self.signed_comparator_gadget), ExecutionState::SDIV_SMOD => assign_exec_step!(self.sdiv_smod_gadget), - ExecutionState::BLOCKCTXU64 => assign_exec_step!(self.block_ctx_u64_gadget), - ExecutionState::BLOCKCTXU160 => assign_exec_step!(self.block_ctx_u160_gadget), - ExecutionState::BLOCKCTXU256 => assign_exec_step!(self.block_ctx_u256_gadget), + ExecutionState::BLOCKCTX => assign_exec_step!(self.block_ctx_gadget), ExecutionState::BLOCKHASH => assign_exec_step!(self.blockhash_gadget), ExecutionState::SELFBALANCE => assign_exec_step!(self.selfbalance_gadget), // dummy gadgets @@ -1273,14 +1318,14 @@ impl<F: Field> ExecutionConfig<F> { ExecutionState::ErrorOutOfGasEXP => { assign_exec_step!(self.error_oog_exp) } - ExecutionState::ErrorOutOfGasCREATE2 => { - assign_exec_step!(self.error_oog_create2) + ExecutionState::ErrorOutOfGasCREATE => { + assign_exec_step!(self.error_oog_create) } ExecutionState::ErrorOutOfGasSELFDESTRUCT => { assign_exec_step!(self.error_oog_self_destruct) } - ExecutionState::ErrorOutOfGasCodeStore => { + ExecutionState::ErrorCodeStore => { assign_exec_step!(self.error_oog_code_store) } ExecutionState::ErrorStack => { @@ -1308,19 +1353,32 @@ impl<F: Field> ExecutionConfig<F> { // Fill in the witness values for stored expressions let assigned_stored_expressions = self.assign_stored_expressions(region, offset, step)?; + // Both `SimpleFloorPlanner` and `V1` do two passes; we only enter here once (on the second + // pass). + if !is_next && assign_pass == 1 { + // We only want to print at the latest possible Phase. Currently halo2 implements 3 + // phases. The `lookup_input` randomness is calculated after SecondPhase, so we print + // the debug expressions only once when we're at third phase, when `lookup_input` has + // a `Value::known`. This gets called for every `synthesize` call that the Layouter + // does. + region.challenges().lookup_input().assert_if_known(|_| { + self.print_debug_expressions(region, offset, step); + true + }); - // enable with `RUST_LOG=debug` - if log::log_enabled!(log::Level::Debug) { - let is_padding_step = matches!(step.execution_state(), ExecutionState::EndBlock) - && step.rw_indices_len() == 0; - if !is_padding_step { - // expensive function call - Self::check_rw_lookup( - &assigned_stored_expressions, - step, - block, - region.challenges(), - ); + // enable with `RUST_LOG=debug` + if log::log_enabled!(log::Level::Debug) { + let is_padding_step = matches!(step.execution_state(), ExecutionState::EndBlock) + && step.rw_indices_len() == 0; + if !is_padding_step { + // expensive function call + Self::check_rw_lookup( + &assigned_stored_expressions, + step, + block, + region.challenges(), + ); + } } } Ok(()) @@ -1347,17 +1405,39 @@ impl<F: Field> ExecutionConfig<F> { Ok(assigned_stored_expressions) } + fn print_debug_expressions( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + step: &ExecStep, + ) { + for (name, expression) in self + .debug_expressions_map + .get(&step.execution_state()) + .unwrap_or_else(|| panic!("Execution state unknown: {:?}", step.execution_state())) + { + let value = evaluate_expression(expression, region, offset); + let mut value_string = "unknown".to_string(); + value.assert_if_known(|f| { + value_string = format!("{:?}", f); + true + }); + println!( + "Debug expression \"{}\"={} [offset={}, step={:?}, expr={:?}]", + name, value_string, offset, step.exec_state, expression + ); + } + } + fn check_rw_lookup( assigned_stored_expressions: &[(String, F)], step: &ExecStep, block: &Block<F>, challenges: &Challenges<Value<F>>, ) { - let mut evm_randomness = F::ZERO; - challenges.evm_word().map(|v| evm_randomness = v); let mut lookup_randomness = F::ZERO; challenges.lookup_input().map(|v| lookup_randomness = v); - if evm_randomness.is_zero_vartime() || lookup_randomness.is_zero_vartime() { + if lookup_randomness.is_zero_vartime() { // challenges not ready return; } @@ -1394,10 +1474,7 @@ impl<F: Field> ExecutionConfig<F> { let rlc_assignments: BTreeSet<_> = (0..step.rw_indices_len()) .map(|index| block.get_rws(step, index)) - .map(|rw| { - rw.table_assignment_aux(evm_randomness) - .rlc(lookup_randomness) - }) + .map(|rw| rw.table_assignment().unwrap().rlc(lookup_randomness)) .fold(BTreeSet::<F>::new(), |mut set, value| { set.insert(value); set @@ -1484,8 +1561,8 @@ impl<F: Field> ExecutionConfig<F> { } let rw = block.get_rws(step, idx); - let table_assignments = rw.table_assignment_aux(evm_randomness); - let rlc = table_assignments.rlc(lookup_randomness); + let table_assignments = rw.table_assignment(); + let rlc = table_assignments.unwrap().rlc(lookup_randomness); if rlc != assigned_rw_value.1 { log::error!( "incorrect rw witness. lookup input name: \"{}\"\nassigned={:?}\nrlc ={:?}\n{}th rw of step {:?}, rw: {:?}", diff --git a/zkevm-circuits/src/evm_circuit/execution/add_sub.rs b/zkevm-circuits/src/evm_circuit/execution/add_sub.rs index 94065d66d8..3f58266d58 100644 --- a/zkevm-circuits/src/evm_circuit/execution/add_sub.rs +++ b/zkevm-circuits/src/evm_circuit/execution/add_sub.rs @@ -6,11 +6,14 @@ use crate::{ common_gadget::SameContextGadget, constraint_builder::{EVMConstraintBuilder, StepStateTransition, Transition::Delta}, math_gadget::{AddWordsGadget, PairSelectGadget}, - select, CachedRegion, + CachedRegion, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{Word, WordExpr}, + Expr, + }, }; use bus_mapping::evm::OpcodeId; use eth_types::Field; @@ -35,9 +38,9 @@ impl<F: Field> ExecutionGadget<F> for AddSubGadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { let opcode = cb.query_cell(); - let a = cb.query_word_rlc(); - let b = cb.query_word_rlc(); - let c = cb.query_word_rlc(); + let a = cb.query_word32(); + let b = cb.query_word32(); + let c = cb.query_word32(); let add_words = AddWordsGadget::construct(cb, [a.clone(), b.clone()], c.clone()); // Swap a and c if opcode is SUB @@ -50,9 +53,10 @@ impl<F: Field> ExecutionGadget<F> for AddSubGadget<F> { // ADD: Pop a and b from the stack, push c on the stack // SUB: Pop c and b from the stack, push a on the stack - cb.stack_pop(select::expr(is_sub.expr().0, c.expr(), a.expr())); - cb.stack_pop(b.expr()); - cb.stack_push(select::expr(is_sub.expr().0, a.expr(), c.expr())); + + cb.stack_pop(Word::select(is_sub.expr().0, c.to_word(), a.to_word())); + cb.stack_pop(b.to_word()); + cb.stack_push(Word::select(is_sub.expr().0, a.to_word(), c.to_word())); // State transition let step_state_transition = StepStateTransition { diff --git a/zkevm-circuits/src/evm_circuit/execution/addmod.rs b/zkevm-circuits/src/evm_circuit/execution/addmod.rs index 5ae1f1b5f5..cdac3a2a7a 100644 --- a/zkevm-circuits/src/evm_circuit/execution/addmod.rs +++ b/zkevm-circuits/src/evm_circuit/execution/addmod.rs @@ -9,42 +9,45 @@ use crate::{ Transition::Delta, }, math_gadget::{ - AddWordsGadget, CmpWordsGadget, IsZeroGadget, MulAddWords512Gadget, + AddWordsGadget, CmpWordsGadget, IsZeroWordGadget, MulAddWords512Gadget, MulAddWordsGadget, }, - not, CachedRegion, Word, + not, CachedRegion, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{Word, Word32Cell, WordExpr}, + Expr, + }, }; use bus_mapping::evm::OpcodeId; -use eth_types::{Field, ToLittleEndian, U256, U512}; -use halo2_proofs::plonk::Error; +use eth_types::{Field, U256, U512}; +use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] pub(crate) struct AddModGadget<F> { same_context: SameContextGadget<F>, - a: Word<F>, - b: Word<F>, - r: Word<F>, - n: Word<F>, + a: Word32Cell<F>, + b: Word32Cell<F>, + r: Word32Cell<F>, + n: Word32Cell<F>, - k: Word<F>, - d: Word<F>, - a_reduced: Word<F>, + k: Word32Cell<F>, + d: Word32Cell<F>, + a_reduced: Word32Cell<F>, muladd_k_n_areduced: MulAddWordsGadget<F>, sum_areduced_b: AddWordsGadget<F, 2, false>, - sum_areduced_b_overflow: Word<F>, + sum_areduced_b_overflow: Word32Cell<F>, muladd_d_n_r: MulAddWords512Gadget<F>, - n_is_zero: IsZeroGadget<F>, - cmp_r_n: CmpWordsGadget<F>, - cmp_areduced_n: CmpWordsGadget<F>, + n_is_zero: IsZeroWordGadget<F, Word32Cell<F>>, + cmp_r_n: CmpWordsGadget<F, Word32Cell<F>, Word32Cell<F>>, + cmp_areduced_n: CmpWordsGadget<F, Word32Cell<F>, Word32Cell<F>>, } impl<F: Field> ExecutionGadget<F> for AddModGadget<F> { @@ -56,20 +59,21 @@ impl<F: Field> ExecutionGadget<F> for AddModGadget<F> { let opcode = cb.query_cell(); // values got from stack (original r is modified if n==0) - let a = cb.query_word_rlc(); - let b = cb.query_word_rlc(); - let n = cb.query_word_rlc(); - let r = cb.query_word_rlc(); + let a = cb.query_word32(); + let b = cb.query_word32(); + let n = cb.query_word32(); + let r = cb.query_word32(); // auxiliar witness - let k = cb.query_word_rlc(); - let a_reduced = cb.query_word_rlc(); - let d = cb.query_word_rlc(); + let k = cb.query_word32(); + let a_reduced = cb.query_word32(); + let d = cb.query_word32(); - let n_is_zero = IsZeroGadget::construct(cb, n.clone().expr()); + let n_is_zero = IsZeroWordGadget::construct(cb, &n); // 1. check k * N + a_reduced == a without overflow - let muladd_k_n_areduced = MulAddWordsGadget::construct(cb, [&k, &n, &a_reduced, &a]); + let muladd_k_n_areduced = + MulAddWordsGadget::construct(cb, [&k, &n.clone(), &a_reduced, &a]); cb.require_zero( "k * N + a_reduced does not overflow", muladd_k_n_areduced.overflow(), @@ -77,24 +81,25 @@ impl<F: Field> ExecutionGadget<F> for AddModGadget<F> { // 2. check d * N + r == a_reduced + b, only checking carry if n != 0 let sum_areduced_b = { - let sum = cb.query_word_rlc(); + let sum = cb.query_word32(); AddWordsGadget::construct(cb, [a_reduced.clone(), b.clone()], sum) }; - let sum_areduced_b_overflow = cb.query_word_rlc(); + let sum_areduced_b_overflow = cb.query_word32(); let muladd_d_n_r = MulAddWords512Gadget::construct( cb, [&d, &n, &sum_areduced_b_overflow, sum_areduced_b.sum()], Some(&r), ); - cb.require_equal( + cb.require_equal_word( "check a_reduced + b 512 bit carry if n != 0", - sum_areduced_b_overflow.expr(), - sum_areduced_b.carry().clone().unwrap().expr() * not::expr(n_is_zero.expr()), + sum_areduced_b_overflow.to_word(), + Word::from_lo_unchecked(sum_areduced_b.carry().clone().unwrap().expr()) + .mul_selector(not::expr(n_is_zero.expr())), ); - let cmp_r_n = CmpWordsGadget::construct(cb, &r, &n); - let cmp_areduced_n = CmpWordsGadget::construct(cb, &a_reduced, &n); + let cmp_r_n = CmpWordsGadget::construct(cb, r.clone(), n.clone()); + let cmp_areduced_n = CmpWordsGadget::construct(cb, a_reduced.clone(), n.clone()); // 3. r < n and a_reduced < n if n > 0 cb.require_zero( @@ -104,10 +109,14 @@ impl<F: Field> ExecutionGadget<F> for AddModGadget<F> { // pop/push values // take care that if n==0 pushed value for r should be zero also - cb.stack_pop(a.expr()); - cb.stack_pop(b.expr()); - cb.stack_pop(n.expr()); - cb.stack_push(r.expr() * not::expr(n_is_zero.expr())); + cb.stack_pop(a.to_word()); + cb.stack_pop(b.to_word()); + cb.stack_pop(n.clone().to_word()); + cb.stack_push( + r.clone() + .to_word() + .mul_selector(not::expr(n_is_zero.expr())), + ); // State transition let step_state_transition = StepStateTransition { @@ -153,9 +162,9 @@ impl<F: Field> ExecutionGadget<F> for AddModGadget<F> { let [mut r, n, b, a] = [3, 2, 1, 0].map(|index| block.get_rws(step, index).stack_value()); // assing a,b & n stack values - self.a.assign(region, offset, Some(a.to_le_bytes()))?; - self.b.assign(region, offset, Some(b.to_le_bytes()))?; - self.n.assign(region, offset, Some(n.to_le_bytes()))?; + self.a.assign_u256(region, offset, a)?; + self.b.assign_u256(region, offset, b)?; + self.n.assign_u256(region, offset, n)?; // compute a_reduced,k,d,a_reduced_plus_b,a_reduced_plus_b_overflow,r values let a_reduced; @@ -187,11 +196,10 @@ impl<F: Field> ExecutionGadget<F> for AddModGadget<F> { // rest of values and gadgets - self.r.assign(region, offset, Some(r.to_le_bytes()))?; - self.k.assign(region, offset, Some(k.to_le_bytes()))?; - self.d.assign(region, offset, Some(d.to_le_bytes()))?; - self.a_reduced - .assign(region, offset, Some(a_reduced.to_le_bytes()))?; + self.r.assign_u256(region, offset, r)?; + self.k.assign_u256(region, offset, k)?; + self.d.assign_u256(region, offset, d)?; + self.a_reduced.assign_u256(region, offset, a_reduced)?; self.muladd_k_n_areduced .assign(region, offset, [k, n, a_reduced, a])?; @@ -199,11 +207,8 @@ impl<F: Field> ExecutionGadget<F> for AddModGadget<F> { self.sum_areduced_b .assign(region, offset, [a_reduced, b], a_reduced_plus_b)?; - self.sum_areduced_b_overflow.assign( - region, - offset, - Some(a_reduced_plus_b_overflow.to_le_bytes()), - )?; + self.sum_areduced_b_overflow + .assign_u256(region, offset, a_reduced_plus_b_overflow)?; self.muladd_d_n_r.assign( region, offset, @@ -215,7 +220,7 @@ impl<F: Field> ExecutionGadget<F> for AddModGadget<F> { self.cmp_areduced_n.assign(region, offset, a_reduced, n)?; self.n_is_zero - .assign_value(region, offset, region.word_rlc(n))?; + .assign_value(region, offset, Value::known(Word::from(n)))?; Ok(()) } diff --git a/zkevm-circuits/src/evm_circuit/execution/address.rs b/zkevm-circuits/src/evm_circuit/execution/address.rs index 13ef41aa42..95e9ecf8fc 100644 --- a/zkevm-circuits/src/evm_circuit/execution/address.rs +++ b/zkevm-circuits/src/evm_circuit/execution/address.rs @@ -1,26 +1,28 @@ use crate::{ evm_circuit::{ execution::ExecutionGadget, - param::N_BYTES_ACCOUNT_ADDRESS, step::ExecutionState, util::{ common_gadget::SameContextGadget, constraint_builder::{EVMConstraintBuilder, StepStateTransition, Transition::Delta}, - from_bytes, CachedRegion, RandomLinearCombination, + CachedRegion, }, witness::{Block, Call, ExecStep, Transaction}, }, table::CallContextFieldTag, - util::Expr, + util::{ + word::{WordCell, WordExpr}, + Expr, + }, }; use bus_mapping::evm::OpcodeId; -use eth_types::{Field, ToAddress, ToLittleEndian}; +use eth_types::{Field, ToAddress}; use halo2_proofs::plonk::Error; #[derive(Clone, Debug)] pub(crate) struct AddressGadget<F> { same_context: SameContextGadget<F>, - address: RandomLinearCombination<F, N_BYTES_ACCOUNT_ADDRESS>, + address: WordCell<F>, } impl<F: Field> ExecutionGadget<F> for AddressGadget<F> { @@ -29,17 +31,12 @@ impl<F: Field> ExecutionGadget<F> for AddressGadget<F> { const EXECUTION_STATE: ExecutionState = ExecutionState::ADDRESS; fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { - let address = cb.query_word_rlc(); + let address = cb.query_word_unchecked(); // Lookup callee address in call context. - cb.call_context_lookup( - false.expr(), - None, - CallContextFieldTag::CalleeAddress, - from_bytes::expr(&address.cells), - ); + cb.call_context_lookup_read(None, CallContextFieldTag::CalleeAddress, address.to_word()); - cb.stack_push(address.expr()); + cb.stack_push(address.to_word()); let step_state_transition = StepStateTransition { rw_counter: Delta(2.expr()), @@ -72,15 +69,8 @@ impl<F: Field> ExecutionGadget<F> for AddressGadget<F> { let address = block.get_rws(step, 1).stack_value(); debug_assert_eq!(call.address, address.to_address()); - self.address.assign( - region, - offset, - Some( - address.to_le_bytes()[..N_BYTES_ACCOUNT_ADDRESS] - .try_into() - .unwrap(), - ), - )?; + self.address + .assign_h160(region, offset, address.to_address())?; Ok(()) } diff --git a/zkevm-circuits/src/evm_circuit/execution/balance.rs b/zkevm-circuits/src/evm_circuit/execution/balance.rs index f392ad2508..cefc1e8a78 100644 --- a/zkevm-circuits/src/evm_circuit/execution/balance.rs +++ b/zkevm-circuits/src/evm_circuit/execution/balance.rs @@ -1,7 +1,6 @@ use crate::{ evm_circuit::{ execution::ExecutionGadget, - param::N_BYTES_ACCOUNT_ADDRESS, step::ExecutionState, util::{ common_gadget::SameContextGadget, @@ -9,28 +8,30 @@ use crate::{ ConstrainBuilderCommon, EVMConstraintBuilder, ReversionInfo, StepStateTransition, Transition::Delta, }, - from_bytes, - math_gadget::IsZeroGadget, - not, select, CachedRegion, Cell, Word, + math_gadget::IsZeroWordGadget, + not, select, AccountAddress, CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, table::{AccountFieldTag, CallContextFieldTag}, - util::Expr, + util::{ + word::{Word, Word32Cell, WordCell, WordExpr}, + Expr, + }, }; -use eth_types::{evm_types::GasCost, Field, ToLittleEndian}; +use eth_types::{evm_types::GasCost, Field, ToAddress, ToWord}; use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] pub(crate) struct BalanceGadget<F> { same_context: SameContextGadget<F>, - address_word: Word<F>, + address: AccountAddress<F>, reversion_info: ReversionInfo<F>, tx_id: Cell<F>, is_warm: Cell<F>, - code_hash: Cell<F>, - not_exists: IsZeroGadget<F>, - balance: Cell<F>, + code_hash: WordCell<F>, + not_exists: IsZeroWordGadget<F, WordCell<F>>, + balance: Word32Cell<F>, } impl<F: Field> ExecutionGadget<F> for BalanceGadget<F> { @@ -39,34 +40,41 @@ impl<F: Field> ExecutionGadget<F> for BalanceGadget<F> { const EXECUTION_STATE: ExecutionState = ExecutionState::BALANCE; fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { - let address_word = cb.query_word_rlc(); - let address = from_bytes::expr(&address_word.cells[..N_BYTES_ACCOUNT_ADDRESS]); - cb.stack_pop(address_word.expr()); + let address = cb.query_account_address(); + cb.stack_pop(address.to_word()); let tx_id = cb.call_context(None, CallContextFieldTag::TxId); let mut reversion_info = cb.reversion_info_read(None); let is_warm = cb.query_bool(); - cb.account_access_list_write( + cb.account_access_list_write_unchecked( tx_id.expr(), - address.expr(), + address.to_word(), 1.expr(), is_warm.expr(), Some(&mut reversion_info), ); - let code_hash = cb.query_cell_phase2(); + let code_hash = cb.query_word_unchecked(); // For non-existing accounts the code_hash must be 0 in the rw_table. - cb.account_read(address.expr(), AccountFieldTag::CodeHash, code_hash.expr()); - let not_exists = IsZeroGadget::construct(cb, code_hash.expr()); + cb.account_read( + address.to_word(), + AccountFieldTag::CodeHash, + code_hash.to_word(), + ); + let not_exists = IsZeroWordGadget::construct(cb, &code_hash); let exists = not::expr(not_exists.expr()); - let balance = cb.query_cell_phase2(); + let balance = cb.query_word32(); cb.condition(exists.expr(), |cb| { - cb.account_read(address.expr(), AccountFieldTag::Balance, balance.expr()); + cb.account_read( + address.to_word(), + AccountFieldTag::Balance, + balance.to_word(), + ); }); cb.condition(not_exists.expr(), |cb| { - cb.require_zero("balance is zero when non_exists", balance.expr()); + cb.require_zero_word("balance is zero when non_exists", balance.to_word()); }); - cb.stack_push(balance.expr()); + cb.stack_push(balance.to_word()); let gas_cost = select::expr( is_warm.expr(), @@ -88,7 +96,7 @@ impl<F: Field> ExecutionGadget<F> for BalanceGadget<F> { Self { same_context, - address_word, + address, reversion_info, tx_id, is_warm, @@ -110,11 +118,11 @@ impl<F: Field> ExecutionGadget<F> for BalanceGadget<F> { self.same_context.assign_exec_step(region, offset, step)?; let address = block.get_rws(step, 0).stack_value(); - self.address_word - .assign(region, offset, Some(address.to_le_bytes()))?; + self.address + .assign_h160(region, offset, address.to_address())?; self.tx_id - .assign(region, offset, Value::known(F::from(tx.id as u64)))?; + .assign(region, offset, Value::known(F::from(tx.id)))?; self.reversion_info.assign( region, @@ -127,18 +135,17 @@ impl<F: Field> ExecutionGadget<F> for BalanceGadget<F> { self.is_warm .assign(region, offset, Value::known(F::from(is_warm as u64)))?; - let code_hash = block.get_rws(step, 5).account_value_pair().0; + let code_hash = block.get_rws(step, 5).account_codehash_pair().0; self.code_hash - .assign(region, offset, region.word_rlc(code_hash))?; + .assign_u256(region, offset, code_hash.to_word())?; self.not_exists - .assign_value(region, offset, region.word_rlc(code_hash))?; + .assign_value(region, offset, Value::known(Word::from(code_hash)))?; let balance = if code_hash.is_zero() { eth_types::Word::zero() } else { - block.get_rws(step, 6).account_value_pair().0 + block.get_rws(step, 6).account_balance_pair().0 }; - self.balance - .assign(region, offset, region.word_rlc(balance))?; + self.balance.assign_u256(region, offset, balance)?; Ok(()) } @@ -152,7 +159,7 @@ mod test { use mock::{generate_mock_call_bytecode, test_ctx::TestContext, MockCallBytecodeParams}; lazy_static! { - static ref TEST_ADDRESS: Address = address!("0xaabbccddee000000000000000000000000000000"); + static ref TEST_ADDRESS: Address = address!("0xaabbccddeeffdeadbeef00000000000000000000"); } #[test] diff --git a/zkevm-circuits/src/evm_circuit/execution/begin_tx.rs b/zkevm-circuits/src/evm_circuit/execution/begin_tx.rs index e49e77cd89..4be0115c63 100644 --- a/zkevm-circuits/src/evm_circuit/execution/begin_tx.rs +++ b/zkevm-circuits/src/evm_circuit/execution/begin_tx.rs @@ -1,7 +1,7 @@ use crate::{ evm_circuit::{ execution::ExecutionGadget, - param::{N_BYTES_ACCOUNT_ADDRESS, N_BYTES_GAS, N_BYTES_U64, N_BYTES_WORD}, + param::{N_BYTES_ACCOUNT_ADDRESS, N_BYTES_GAS, N_BYTES_U64}, step::ExecutionState, util::{ and, @@ -12,50 +12,55 @@ use crate::{ }, is_precompiled, math_gadget::{ - ConstantDivisionGadget, ContractCreateGadget, IsEqualGadget, IsZeroGadget, + ConstantDivisionGadget, ContractCreateGadget, IsEqualWordGadget, IsZeroWordGadget, MulWordByU64Gadget, RangeCheckGadget, }, - not, or, select, CachedRegion, Cell, StepRws, Word, + not, or, select, AccountAddress, CachedRegion, Cell, StepRws, }, witness::{Block, Call, ExecStep, Transaction}, }, table::{ AccountFieldTag, BlockContextFieldTag, CallContextFieldTag, TxFieldTag as TxContextFieldTag, }, - util::Expr, + util::{ + word::{Word, Word32Cell, WordCell, WordExpr}, + Expr, + }, +}; +use bus_mapping::state_db::CodeDB; +use eth_types::{evm_types::GasCost, keccak256, Field, ToWord, U256}; +use halo2_proofs::{ + circuit::Value, + plonk::{Error, Expression}, }; -use eth_types::{evm_types::GasCost, Field, ToLittleEndian, ToScalar}; -use ethers_core::utils::{get_contract_address, keccak256}; -use gadgets::util::expr_from_bytes; -use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] pub(crate) struct BeginTxGadget<F> { + // tx_id is query in current scope. The range should be determined here tx_id: Cell<F>, tx_nonce: Cell<F>, tx_gas: Cell<F>, - tx_gas_price: Word<F>, + tx_gas_price: Word32Cell<F>, mul_gas_fee_by_gas: MulWordByU64Gadget<F>, - tx_caller_address: Cell<F>, - tx_caller_address_is_zero: IsZeroGadget<F>, - tx_callee_address: Cell<F>, - call_callee_address: Cell<F>, + tx_caller_address: WordCell<F>, + tx_caller_address_is_zero: IsZeroWordGadget<F, WordCell<F>>, + tx_callee_address: WordCell<F>, + call_callee_address: AccountAddress<F>, tx_is_create: Cell<F>, - tx_value: Word<F>, tx_call_data_length: Cell<F>, tx_call_data_gas_cost: Cell<F>, tx_call_data_word_length: ConstantDivisionGadget<F, N_BYTES_U64>, reversion_info: ReversionInfo<F>, sufficient_gas_left: RangeCheckGadget<F, N_BYTES_GAS>, transfer_with_gas_fee: TransferWithGasFeeGadget<F>, - phase2_code_hash: Cell<F>, - is_empty_code_hash: IsEqualGadget<F>, - caller_nonce_hash_bytes: [Cell<F>; N_BYTES_WORD], + code_hash: WordCell<F>, + is_empty_code_hash: IsEqualWordGadget<F, Word<Expression<F>>, Word<Expression<F>>>, + caller_nonce_hash_bytes: Word32Cell<F>, create: ContractCreateGadget<F, false>, - callee_not_exists: IsZeroGadget<F>, + callee_not_exists: IsZeroWordGadget<F, WordCell<F>>, is_caller_callee_equal: Cell<F>, // EIP-3651 (Warm COINBASE) - coinbase: Cell<F>, + coinbase: WordCell<F>, // Caller, callee and a list addresses are added to the access list before // coinbase, and may be duplicate. // <https://github.com/ethereum/go-ethereum/blob/604e215d1bb070dff98fb76aa965064c74e3633f/core/state/statedb.go#LL1119C9-L1119C9> @@ -71,47 +76,52 @@ impl<F: Field> ExecutionGadget<F> for BeginTxGadget<F> { // Use rw_counter of the step which triggers next call as its call_id. let call_id = cb.curr.state.rw_counter.clone(); - let tx_id = cb.query_cell(); - cb.call_context_lookup( - 1.expr(), + let tx_id = cb.query_cell(); // already constrain `if step_first && tx_id = 1` and `tx_id += 1` at EndTx + + cb.debug_expression("tx_id", tx_id.expr()); + cb.call_context_lookup_write( Some(call_id.expr()), CallContextFieldTag::TxId, - tx_id.expr(), + Word::from_lo_unchecked(tx_id.expr()), ); // rwc_delta += 1 - let mut reversion_info = cb.reversion_info_write(None); // rwc_delta += 2 - cb.call_context_lookup( - 1.expr(), + let mut reversion_info = cb.reversion_info_write_unchecked(None); // rwc_delta += 2 + cb.call_context_lookup_write( Some(call_id.expr()), CallContextFieldTag::IsSuccess, - reversion_info.is_persistent(), + Word::from_lo_unchecked(reversion_info.is_persistent()), ); // rwc_delta += 1 + cb.debug_expression(format!("call_id {}", 3), call_id.expr()); + + let [tx_nonce, tx_gas, tx_is_create, tx_call_data_length, tx_call_data_gas_cost] = [ + TxContextFieldTag::Nonce, + TxContextFieldTag::Gas, + TxContextFieldTag::IsCreate, + TxContextFieldTag::CallDataLength, + TxContextFieldTag::CallDataGasCost, + ] + .map(|field_tag| cb.tx_context(tx_id.expr(), field_tag, None)); + let [tx_gas_price, tx_value] = [TxContextFieldTag::GasPrice, TxContextFieldTag::Value] + .map(|field_tag| cb.tx_context_as_word32(tx_id.expr(), field_tag, None)); + + let [tx_caller_address, tx_callee_address] = [ + TxContextFieldTag::CallerAddress, + TxContextFieldTag::CalleeAddress, + ] + .map(|field_tag| cb.tx_context_as_word(tx_id.expr(), field_tag, None)); - let [tx_nonce, tx_gas, tx_caller_address, tx_callee_address, tx_is_create, tx_call_data_length, tx_call_data_gas_cost] = - [ - TxContextFieldTag::Nonce, - TxContextFieldTag::Gas, - TxContextFieldTag::CallerAddress, - TxContextFieldTag::CalleeAddress, - TxContextFieldTag::IsCreate, - TxContextFieldTag::CallDataLength, - TxContextFieldTag::CallDataGasCost, - ] - .map(|field_tag| cb.tx_context(tx_id.expr(), field_tag, None)); - let tx_caller_address_is_zero = IsZeroGadget::construct(cb, tx_caller_address.expr()); + let tx_caller_address_is_zero = IsZeroWordGadget::construct(cb, &tx_caller_address); cb.require_equal( "CallerAddress != 0 (not a padding tx)", tx_caller_address_is_zero.expr(), false.expr(), ); - let [tx_gas_price, tx_value] = [TxContextFieldTag::GasPrice, TxContextFieldTag::Value] - .map(|field_tag| cb.tx_context_as_word(tx_id.expr(), field_tag, None)); - let call_callee_address = cb.query_cell(); + let call_callee_address = cb.query_account_address(); cb.condition(not::expr(tx_is_create.expr()), |cb| { - cb.require_equal( + cb.require_equal_word( "Tx to non-zero address", - tx_callee_address.expr(), - call_callee_address.expr(), + tx_callee_address.to_word(), + call_callee_address.to_word(), ); }); @@ -123,10 +133,10 @@ impl<F: Field> ExecutionGadget<F> for BeginTxGadget<F> { // Increase caller's nonce. // (tx caller's nonce always increases even tx ends with error) cb.account_write( - tx_caller_address.expr(), + tx_caller_address.to_word(), AccountFieldTag::Nonce, - tx_nonce.expr() + 1.expr(), - tx_nonce.expr(), + Word::from_lo_unchecked(tx_nonce.expr() + 1.expr()), + Word::from_lo_unchecked(tx_nonce.expr()), None, ); // rwc_delta += 1 @@ -161,17 +171,17 @@ impl<F: Field> ExecutionGadget<F> for BeginTxGadget<F> { let sufficient_gas_left = RangeCheckGadget::construct(cb, gas_left.clone()); // Prepare access list of caller and callee - cb.account_access_list_write( + cb.account_access_list_write_unchecked( tx_id.expr(), - tx_caller_address.expr(), + tx_caller_address.to_word(), 1.expr(), 0.expr(), None, ); // rwc_delta += 1 let is_caller_callee_equal = cb.query_bool(); - cb.account_access_list_write( + cb.account_access_list_write_unchecked( tx_id.expr(), - tx_callee_address.expr(), + tx_callee_address.to_word(), 1.expr(), // No extra constraint being used here. // Correctness will be enforced in build_tx_access_list_account_constraints @@ -180,22 +190,26 @@ impl<F: Field> ExecutionGadget<F> for BeginTxGadget<F> { ); // rwc_delta += 1 // Query coinbase address. - let coinbase = cb.query_cell(); + let coinbase = cb.query_word_unchecked(); let is_coinbase_warm = cb.query_bool(); - cb.block_lookup(BlockContextFieldTag::Coinbase.expr(), None, coinbase.expr()); - cb.account_access_list_write( + cb.block_lookup( + BlockContextFieldTag::Coinbase.expr(), + None, + coinbase.to_word(), + ); + cb.account_access_list_write_unchecked( tx_id.expr(), - coinbase.expr(), + coinbase.to_word(), 1.expr(), is_coinbase_warm.expr(), None, ); // rwc_delta += 1 // Read code_hash of callee - let phase2_code_hash = cb.query_cell_phase2(); + let code_hash = cb.query_word_unchecked(); let is_empty_code_hash = - IsEqualGadget::construct(cb, phase2_code_hash.expr(), cb.empty_code_hash_rlc()); - let callee_not_exists = IsZeroGadget::construct(cb, phase2_code_hash.expr()); + IsEqualWordGadget::construct(cb, &code_hash.to_word(), &cb.empty_code_hash()); + let callee_not_exists = IsZeroWordGadget::construct(cb, &code_hash); // no_callee_code is true when the account exists and has empty // code hash, or when the account doesn't exist (which we encode with // code_hash = 0). @@ -204,17 +218,17 @@ impl<F: Field> ExecutionGadget<F> for BeginTxGadget<F> { // TODO: And not precompile cb.condition(not::expr(tx_is_create.expr()), |cb| { cb.account_read( - tx_callee_address.expr(), + tx_callee_address.to_word(), AccountFieldTag::CodeHash, - phase2_code_hash.expr(), + code_hash.to_word(), ); // rwc_delta += 1 }); // Transfer value from caller to callee, creating account if necessary. let transfer_with_gas_fee = TransferWithGasFeeGadget::construct( cb, - tx_caller_address.expr(), - tx_callee_address.expr(), + tx_caller_address.to_word(), + tx_callee_address.to_word(), not::expr(callee_not_exists.expr()), or::expr([tx_is_create.expr(), callee_not_exists.expr()]), tx_value.clone(), @@ -222,18 +236,24 @@ impl<F: Field> ExecutionGadget<F> for BeginTxGadget<F> { &mut reversion_info, ); - let caller_nonce_hash_bytes = array_init::array_init(|_| cb.query_byte()); + let caller_nonce_hash_bytes = cb.query_word32(); let create = ContractCreateGadget::construct(cb); - cb.require_equal( + cb.require_equal_word( "tx caller address equivalence", - tx_caller_address.expr(), + tx_caller_address.to_word(), create.caller_address(), ); cb.condition(tx_is_create.expr(), |cb| { - cb.require_equal( + cb.require_equal_word( "call callee address equivalence", - call_callee_address.expr(), - expr_from_bytes(&caller_nonce_hash_bytes[0..N_BYTES_ACCOUNT_ADDRESS]), + call_callee_address.to_word(), + AccountAddress::<F>::new( + caller_nonce_hash_bytes.limbs[0..N_BYTES_ACCOUNT_ADDRESS] + .to_vec() + .try_into() + .unwrap(), + ) + .to_word(), ); }); cb.require_equal( @@ -244,48 +264,53 @@ impl<F: Field> ExecutionGadget<F> for BeginTxGadget<F> { // 1. Handle contract creation transaction. cb.condition(tx_is_create.expr(), |cb| { - let output_rlc = cb.word_rlc::<N_BYTES_WORD>( - caller_nonce_hash_bytes - .iter() - .map(Expr::expr) - .collect::<Vec<_>>() - .try_into() - .unwrap(), + cb.keccak_table_lookup( + create.input_rlc(cb), + create.input_length(), + caller_nonce_hash_bytes.to_word(), ); - cb.keccak_table_lookup(create.input_rlc(cb), create.input_length(), output_rlc); cb.account_write( - call_callee_address.expr(), + call_callee_address.to_word(), AccountFieldTag::Nonce, - 1.expr(), - 0.expr(), + Word::one(), + Word::zero(), Some(&mut reversion_info), ); for (field_tag, value) in [ - (CallContextFieldTag::Depth, 1.expr()), - (CallContextFieldTag::CallerAddress, tx_caller_address.expr()), + (CallContextFieldTag::Depth, Word::one()), + ( + CallContextFieldTag::CallerAddress, + tx_caller_address.to_word(), + ), ( CallContextFieldTag::CalleeAddress, - call_callee_address.expr(), + call_callee_address.to_word(), ), - (CallContextFieldTag::CallDataOffset, 0.expr()), + (CallContextFieldTag::CallDataOffset, Word::zero()), ( CallContextFieldTag::CallDataLength, - tx_call_data_length.expr(), + Word::from_lo_unchecked(tx_call_data_length.expr()), + ), + (CallContextFieldTag::Value, tx_value.to_word()), + (CallContextFieldTag::IsStatic, Word::zero()), + (CallContextFieldTag::LastCalleeId, Word::zero()), + ( + CallContextFieldTag::LastCalleeReturnDataOffset, + Word::zero(), + ), + ( + CallContextFieldTag::LastCalleeReturnDataLength, + Word::zero(), ), - (CallContextFieldTag::Value, tx_value.expr()), - (CallContextFieldTag::IsStatic, 0.expr()), - (CallContextFieldTag::LastCalleeId, 0.expr()), - (CallContextFieldTag::LastCalleeReturnDataOffset, 0.expr()), - (CallContextFieldTag::LastCalleeReturnDataLength, 0.expr()), - (CallContextFieldTag::IsRoot, 1.expr()), - (CallContextFieldTag::IsCreate, 1.expr()), + (CallContextFieldTag::IsRoot, Word::one()), + (CallContextFieldTag::IsCreate, Word::one()), ( CallContextFieldTag::CodeHash, - cb.curr.state.code_hash.expr(), + cb.curr.state.code_hash.to_word(), ), ] { - cb.call_context_lookup(true.expr(), Some(call_id.expr()), field_tag, value); + cb.call_context_lookup_write(Some(call_id.expr()), field_tag, value); } cb.require_step_state_transition(StepStateTransition { @@ -317,7 +342,7 @@ impl<F: Field> ExecutionGadget<F> for BeginTxGadget<F> { call_id: To(call_id.expr()), is_root: To(true.expr()), is_create: To(tx_is_create.expr()), - code_hash: To(cb.curr.state.code_hash.expr()), + code_hash: To(cb.curr.state.code_hash.to_word()), gas_left: To(gas_left.clone()), // There are a + 1 reversible writes: // - a TransferWithGasFeeGadget @@ -370,24 +395,39 @@ impl<F: Field> ExecutionGadget<F> for BeginTxGadget<F> { |cb| { // Setup first call's context. for (field_tag, value) in [ - (CallContextFieldTag::Depth, 1.expr()), - (CallContextFieldTag::CallerAddress, tx_caller_address.expr()), - (CallContextFieldTag::CalleeAddress, tx_callee_address.expr()), - (CallContextFieldTag::CallDataOffset, 0.expr()), + (CallContextFieldTag::Depth, Word::one()), + ( + CallContextFieldTag::CallerAddress, + tx_caller_address.to_word(), + ), + ( + CallContextFieldTag::CalleeAddress, + tx_callee_address.to_word(), + ), + (CallContextFieldTag::CallDataOffset, Word::zero()), ( CallContextFieldTag::CallDataLength, - tx_call_data_length.expr(), + Word::from_lo_unchecked(tx_call_data_length.expr()), + ), + (CallContextFieldTag::Value, tx_value.to_word()), + (CallContextFieldTag::IsStatic, Word::zero()), + (CallContextFieldTag::LastCalleeId, Word::zero()), + ( + CallContextFieldTag::LastCalleeReturnDataOffset, + Word::zero(), + ), + ( + CallContextFieldTag::LastCalleeReturnDataLength, + Word::zero(), + ), + (CallContextFieldTag::IsRoot, Word::one()), + ( + CallContextFieldTag::IsCreate, + Word::from_lo_unchecked(tx_is_create.expr()), ), - (CallContextFieldTag::Value, tx_value.expr()), - (CallContextFieldTag::IsStatic, 0.expr()), - (CallContextFieldTag::LastCalleeId, 0.expr()), - (CallContextFieldTag::LastCalleeReturnDataOffset, 0.expr()), - (CallContextFieldTag::LastCalleeReturnDataLength, 0.expr()), - (CallContextFieldTag::IsRoot, 1.expr()), - (CallContextFieldTag::IsCreate, tx_is_create.expr()), - (CallContextFieldTag::CodeHash, phase2_code_hash.expr()), + (CallContextFieldTag::CodeHash, code_hash.to_word()), ] { - cb.call_context_lookup(true.expr(), Some(call_id.expr()), field_tag, value); + cb.call_context_lookup_write(Some(call_id.expr()), field_tag, value); } cb.require_step_state_transition(StepStateTransition { @@ -419,7 +459,7 @@ impl<F: Field> ExecutionGadget<F> for BeginTxGadget<F> { call_id: To(call_id.expr()), is_root: To(true.expr()), is_create: To(tx_is_create.expr()), - code_hash: To(phase2_code_hash.expr()), + code_hash: To(code_hash.to_word()), gas_left: To(gas_left), reversible_write_counter: To(transfer_with_gas_fee.reversible_w_delta()), log_id: To(0.expr()), @@ -439,14 +479,13 @@ impl<F: Field> ExecutionGadget<F> for BeginTxGadget<F> { tx_callee_address, call_callee_address, tx_is_create, - tx_value, tx_call_data_length, tx_call_data_gas_cost, tx_call_data_word_length, reversion_info, sufficient_gas_left, transfer_with_gas_fee, - phase2_code_hash, + code_hash, is_empty_code_hash, caller_nonce_hash_bytes, create, @@ -466,7 +505,7 @@ impl<F: Field> ExecutionGadget<F> for BeginTxGadget<F> { call: &Call, step: &ExecStep, ) -> Result<(), Error> { - let gas_fee = tx.gas_price * tx.gas; + let gas_fee = tx.gas_price * tx.gas(); let zero = eth_types::Word::zero(); let mut rws = StepRws::new(block, step); @@ -474,79 +513,63 @@ impl<F: Field> ExecutionGadget<F> for BeginTxGadget<F> { let is_coinbase_warm = rws.next().tx_access_list_value_pair().1; let mut callee_code_hash = zero; - if !is_precompiled(&tx.callee_address) && !tx.is_create { - callee_code_hash = rws.next().account_value_pair().1; + if !is_precompiled(&tx.to_or_contract_addr()) && !tx.is_create() { + callee_code_hash = rws.next().account_codehash_pair().1; } - let callee_exists = - is_precompiled(&tx.callee_address) || (!tx.is_create && !callee_code_hash.is_zero()); - let caller_balance_sub_fee_pair = rws.next().account_value_pair(); - let must_create = tx.is_create; + let callee_exists = is_precompiled(&tx.to_or_contract_addr()) + || (!tx.is_create() && !callee_code_hash.is_zero()); + let caller_balance_sub_fee_pair = rws.next().account_balance_pair(); + let must_create = tx.is_create(); if (!callee_exists && !tx.value.is_zero()) || must_create { - callee_code_hash = rws.next().account_value_pair().1; + callee_code_hash = rws.next().account_codehash_pair().1; } let mut caller_balance_sub_value_pair = (zero, zero); let mut callee_balance_pair = (zero, zero); if !tx.value.is_zero() { - caller_balance_sub_value_pair = rws.next().account_value_pair(); - callee_balance_pair = rws.next().account_value_pair(); + caller_balance_sub_value_pair = rws.next().account_balance_pair(); + callee_balance_pair = rws.next().account_balance_pair(); }; self.tx_id - .assign(region, offset, Value::known(F::from(tx.id as u64)))?; + .assign(region, offset, Value::known(F::from(tx.id)))?; self.tx_nonce - .assign(region, offset, Value::known(F::from(tx.nonce)))?; + .assign(region, offset, Value::known(F::from(tx.nonce.as_u64())))?; self.tx_gas - .assign(region, offset, Value::known(F::from(tx.gas)))?; + .assign(region, offset, Value::known(F::from(tx.gas())))?; self.tx_gas_price - .assign(region, offset, Some(tx.gas_price.to_le_bytes()))?; + .assign_u256(region, offset, tx.gas_price)?; self.mul_gas_fee_by_gas - .assign(region, offset, tx.gas_price, tx.gas, gas_fee)?; - let caller_address = tx - .caller_address - .to_scalar() - .expect("unexpected Address -> Scalar conversion failure"); - let callee_address = tx - .callee_address - .to_scalar() - .expect("unexpected Address -> Scalar conversion failure"); + .assign(region, offset, tx.gas_price, tx.gas(), gas_fee)?; self.tx_caller_address - .assign(region, offset, Value::known(caller_address))?; - self.tx_caller_address_is_zero - .assign(region, offset, caller_address)?; - self.tx_callee_address - .assign(region, offset, Value::known(callee_address))?; - self.call_callee_address.assign( + .assign_h160(region, offset, tx.from)?; + self.tx_caller_address_is_zero.assign_u256( region, offset, - Value::known( - if tx.is_create { - get_contract_address(tx.caller_address, tx.nonce) - } else { - tx.callee_address - } - .to_scalar() - .expect("unexpected Address -> Scalar conversion failure"), - ), + U256::from_big_endian(&tx.from.to_fixed_bytes()), )?; + self.tx_callee_address + .assign_h160(region, offset, tx.to_or_contract_addr())?; + self.call_callee_address + .assign_h160(region, offset, tx.to_or_contract_addr())?; self.is_caller_callee_equal.assign( region, offset, - Value::known(F::from((caller_address == callee_address) as u64)), + Value::known(F::from((tx.from == tx.to_or_contract_addr()) as u64)), )?; self.tx_is_create - .assign(region, offset, Value::known(F::from(tx.is_create as u64)))?; + .assign(region, offset, Value::known(F::from(tx.is_create().into())))?; self.tx_call_data_length.assign( region, offset, - Value::known(F::from(tx.call_data_length as u64)), + Value::known(F::from(tx.call_data.len() as u64)), )?; self.tx_call_data_gas_cost.assign( region, offset, - Value::known(F::from(tx.call_data_gas_cost)), + Value::known(F::from(tx.call_data_gas_cost())), )?; self.tx_call_data_word_length - .assign(region, offset, tx.call_data_length as u128 + 31)?; + .assign(region, offset, tx.call_data.len() as u128 + 31)?; self.reversion_info.assign( region, offset, @@ -554,7 +577,7 @@ impl<F: Field> ExecutionGadget<F> for BeginTxGadget<F> { call.is_persistent, )?; self.sufficient_gas_left - .assign(region, offset, F::from(tx.gas - step.gas_cost))?; + .assign(region, offset, F::from(tx.gas() - step.gas_cost))?; self.transfer_with_gas_fee.assign( region, offset, @@ -564,53 +587,41 @@ impl<F: Field> ExecutionGadget<F> for BeginTxGadget<F> { tx.value, gas_fee, )?; - self.phase2_code_hash - .assign(region, offset, region.word_rlc(callee_code_hash))?; - self.is_empty_code_hash.assign_value( + self.code_hash + .assign_u256(region, offset, callee_code_hash)?; + self.is_empty_code_hash.assign_u256( region, offset, - region.word_rlc(callee_code_hash), - region.empty_code_hash_rlc(), + callee_code_hash, + CodeDB::empty_code_hash().to_word(), )?; self.callee_not_exists - .assign_value(region, offset, region.word_rlc(callee_code_hash))?; + .assign_u256(region, offset, callee_code_hash)?; let untrimmed_contract_addr = { let mut stream = ethers_core::utils::rlp::RlpStream::new(); stream.begin_list(2); - stream.append(&tx.caller_address); - stream.append(ð_types::U256::from(tx.nonce)); + stream.append(&tx.from); + stream.append(&tx.nonce.to_word()); let rlp_encoding = stream.out().to_vec(); keccak256(&rlp_encoding) }; - for (c, v) in self - .caller_nonce_hash_bytes - .iter() - .rev() - .zip(untrimmed_contract_addr.iter()) - { - c.assign(region, offset, Value::known(F::from(*v as u64)))?; - } + self.caller_nonce_hash_bytes.assign_u256( + region, + offset, + U256::from_big_endian(&untrimmed_contract_addr), + )?; self.create.assign( region, offset, - tx.caller_address, - tx.nonce, + tx.from, + tx.nonce.as_u64(), Some(callee_code_hash), None, )?; - self.coinbase.assign( - region, - offset, - Value::known( - block - .context - .coinbase - .to_scalar() - .expect("unexpected Address -> Scalar conversion failure"), - ), - )?; + self.coinbase + .assign_h160(region, offset, block.context.coinbase)?; self.is_coinbase_warm.assign( region, offset, diff --git a/zkevm-circuits/src/evm_circuit/execution/bitwise.rs b/zkevm-circuits/src/evm_circuit/execution/bitwise.rs index eef97570fb..947ee2a7dd 100644 --- a/zkevm-circuits/src/evm_circuit/execution/bitwise.rs +++ b/zkevm-circuits/src/evm_circuit/execution/bitwise.rs @@ -6,21 +6,24 @@ use crate::{ util::{ common_gadget::SameContextGadget, constraint_builder::{EVMConstraintBuilder, StepStateTransition, Transition::Delta}, - CachedRegion, Word, + CachedRegion, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{Word32Cell, WordExpr}, + Expr, + }, }; -use eth_types::{evm_types::OpcodeId, Field, ToLittleEndian}; +use eth_types::{evm_types::OpcodeId, Field}; use halo2_proofs::plonk::Error; #[derive(Clone, Debug)] pub(crate) struct BitwiseGadget<F> { same_context: SameContextGadget<F>, - a: Word<F>, - b: Word<F>, - c: Word<F>, + a: Word32Cell<F>, + b: Word32Cell<F>, + c: Word32Cell<F>, } impl<F: Field> ExecutionGadget<F> for BitwiseGadget<F> { @@ -31,13 +34,13 @@ impl<F: Field> ExecutionGadget<F> for BitwiseGadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { let opcode = cb.query_cell(); - let a = cb.query_word_rlc(); - let b = cb.query_word_rlc(); - let c = cb.query_word_rlc(); + let a = cb.query_word32(); + let b = cb.query_word32(); + let c = cb.query_word32(); - cb.stack_pop(a.expr()); - cb.stack_pop(b.expr()); - cb.stack_push(c.expr()); + cb.stack_pop(a.to_word()); + cb.stack_pop(b.to_word()); + cb.stack_push(c.to_word()); // Because opcode AND, OR, and XOR are continuous, so we can make the // FixedTableTag of them also continuous, and use the opcode delta from @@ -50,9 +53,9 @@ impl<F: Field> ExecutionGadget<F> for BitwiseGadget<F> { Lookup::Fixed { tag: tag.clone(), values: [ - a.cells[idx].expr(), - b.cells[idx].expr(), - c.cells[idx].expr(), + a.limbs[idx].expr(), + b.limbs[idx].expr(), + c.limbs[idx].expr(), ], }, ); @@ -88,9 +91,9 @@ impl<F: Field> ExecutionGadget<F> for BitwiseGadget<F> { self.same_context.assign_exec_step(region, offset, step)?; let [a, b, c] = [0, 1, 2].map(|index| block.get_rws(step, index).stack_value()); - self.a.assign(region, offset, Some(a.to_le_bytes()))?; - self.b.assign(region, offset, Some(b.to_le_bytes()))?; - self.c.assign(region, offset, Some(c.to_le_bytes()))?; + self.a.assign_u256(region, offset, a)?; + self.b.assign_u256(region, offset, b)?; + self.c.assign_u256(region, offset, c)?; Ok(()) } diff --git a/zkevm-circuits/src/evm_circuit/execution/block_ctx.rs b/zkevm-circuits/src/evm_circuit/execution/block_ctx.rs index f53b0c96b1..f3026c5202 100644 --- a/zkevm-circuits/src/evm_circuit/execution/block_ctx.rs +++ b/zkevm-circuits/src/evm_circuit/execution/block_ctx.rs @@ -1,34 +1,40 @@ use crate::{ evm_circuit::{ - execution::ExecutionGadget, - param::{N_BYTES_ACCOUNT_ADDRESS, N_BYTES_U64, N_BYTES_WORD}, step::ExecutionState, util::{ common_gadget::SameContextGadget, constraint_builder::{EVMConstraintBuilder, StepStateTransition, Transition::Delta}, - from_bytes, CachedRegion, RandomLinearCombination, + CachedRegion, }, witness::{Block, Call, ExecStep, Transaction}, }, table::BlockContextFieldTag, - util::Expr, + util::{ + word::{WordCell, WordExpr}, + Expr, + }, }; use bus_mapping::evm::OpcodeId; -use eth_types::{Field, ToLittleEndian}; +use eth_types::Field; use halo2_proofs::plonk::Error; +use super::ExecutionGadget; + #[derive(Clone, Debug)] -pub(crate) struct BlockCtxGadget<F, const N_BYTES: usize> { +pub(crate) struct BlockCtxGadget<F> { same_context: SameContextGadget<F>, - value: RandomLinearCombination<F, N_BYTES>, + value: WordCell<F>, } -impl<F: Field, const N_BYTES: usize> BlockCtxGadget<F, N_BYTES> { - fn construct(cb: &mut EVMConstraintBuilder<F>) -> Self { - let value = cb.query_word_rlc(); +impl<F: Field> ExecutionGadget<F> for BlockCtxGadget<F> { + const NAME: &'static str = "BlockCTX"; + + const EXECUTION_STATE: ExecutionState = ExecutionState::BLOCKCTX; + + fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { + let value = cb.query_word_unchecked(); // block table lookup below - // Push the const generic parameter N_BYTES value to the stack - cb.stack_push(value.expr()); + cb.stack_push(value.to_word()); // Get op's FieldTag let opcode = cb.query_cell(); @@ -37,12 +43,7 @@ impl<F: Field, const N_BYTES: usize> BlockCtxGadget<F, N_BYTES> { // Lookup block table with block context ops // TIMESTAMP/NUMBER/GASLIMIT, COINBASE and DIFFICULTY/BASEFEE - let value_expr = if N_BYTES == N_BYTES_WORD { - value.expr() - } else { - from_bytes::expr(&value.cells) - }; - cb.block_lookup(blockctx_tag, None, value_expr); + cb.block_lookup(blockctx_tag, None, value.to_word()); // State transition let step_state_transition = StepStateTransition { @@ -59,109 +60,6 @@ impl<F: Field, const N_BYTES: usize> BlockCtxGadget<F, N_BYTES> { value, } } -} - -#[derive(Clone, Debug)] -pub(crate) struct BlockCtxU64Gadget<F> { - value_u64: BlockCtxGadget<F, N_BYTES_U64>, -} - -impl<F: Field> ExecutionGadget<F> for BlockCtxU64Gadget<F> { - const NAME: &'static str = "BlockCTXU64"; - - const EXECUTION_STATE: ExecutionState = ExecutionState::BLOCKCTXU64; - - fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { - let value_u64 = BlockCtxGadget::construct(cb); - - Self { value_u64 } - } - - fn assign_exec_step( - &self, - region: &mut CachedRegion<'_, '_, F>, - offset: usize, - block: &Block<F>, - _: &Transaction, - _: &Call, - step: &ExecStep, - ) -> Result<(), Error> { - self.value_u64 - .same_context - .assign_exec_step(region, offset, step)?; - - let value = block.get_rws(step, 0).stack_value(); - - self.value_u64.value.assign( - region, - offset, - Some(u64::try_from(value).unwrap().to_le_bytes()), - )?; - - Ok(()) - } -} - -#[derive(Clone, Debug)] -pub(crate) struct BlockCtxU160Gadget<F> { - value_u160: BlockCtxGadget<F, N_BYTES_ACCOUNT_ADDRESS>, -} - -impl<F: Field> ExecutionGadget<F> for BlockCtxU160Gadget<F> { - const NAME: &'static str = "BlockCTXU160"; - - const EXECUTION_STATE: ExecutionState = ExecutionState::BLOCKCTXU160; - - fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { - let value_u160 = BlockCtxGadget::construct(cb); - - Self { value_u160 } - } - - fn assign_exec_step( - &self, - region: &mut CachedRegion<'_, '_, F>, - offset: usize, - block: &Block<F>, - _: &Transaction, - _: &Call, - step: &ExecStep, - ) -> Result<(), Error> { - self.value_u160 - .same_context - .assign_exec_step(region, offset, step)?; - - let value = block.get_rws(step, 0).stack_value(); - - self.value_u160.value.assign( - region, - offset, - Some( - value.to_le_bytes()[..N_BYTES_ACCOUNT_ADDRESS] - .try_into() - .unwrap(), - ), - )?; - - Ok(()) - } -} - -#[derive(Clone, Debug)] -pub(crate) struct BlockCtxU256Gadget<F> { - value_u256: BlockCtxGadget<F, N_BYTES_WORD>, -} - -impl<F: Field> ExecutionGadget<F> for BlockCtxU256Gadget<F> { - const NAME: &'static str = "BLOCKCTXU256"; - - const EXECUTION_STATE: ExecutionState = ExecutionState::BLOCKCTXU256; - - fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { - let value_u256 = BlockCtxGadget::construct(cb); - - Self { value_u256 } - } fn assign_exec_step( &self, @@ -172,15 +70,11 @@ impl<F: Field> ExecutionGadget<F> for BlockCtxU256Gadget<F> { _: &Call, step: &ExecStep, ) -> Result<(), Error> { - self.value_u256 - .same_context - .assign_exec_step(region, offset, step)?; + self.same_context.assign_exec_step(region, offset, step)?; let value = block.get_rws(step, 0).stack_value(); - self.value_u256 - .value - .assign(region, offset, Some(value.to_le_bytes()))?; + self.value.assign_u256(region, offset, value)?; Ok(()) } diff --git a/zkevm-circuits/src/evm_circuit/execution/blockhash.rs b/zkevm-circuits/src/evm_circuit/execution/blockhash.rs index 78d140494f..8097169646 100644 --- a/zkevm-circuits/src/evm_circuit/execution/blockhash.rs +++ b/zkevm-circuits/src/evm_circuit/execution/blockhash.rs @@ -16,11 +16,11 @@ use crate::{ witness::{Block, Call, ExecStep, Transaction}, }, table::BlockContextFieldTag, - util::Expr, + util::word::WordExpr, }; use bus_mapping::evm::OpcodeId; -use eth_types::{Field, ToLittleEndian, ToScalar}; -use gadgets::util::not; +use eth_types::{Field, ToScalar}; +use gadgets::util::{not, Expr}; use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] @@ -28,7 +28,7 @@ pub(crate) struct BlockHashGadget<F> { same_context: SameContextGadget<F>, block_number: WordByteCapGadget<F, N_BYTES_U64>, current_block_number: Cell<F>, - block_hash: Word<F>, + block_hash: Word<Cell<F>>, diff_lt: LtGadget<F, N_BYTES_U64>, } @@ -42,13 +42,13 @@ impl<F: Field> ExecutionGadget<F> for BlockHashGadget<F> { cb.block_lookup( BlockContextFieldTag::Number.expr(), None, - current_block_number.expr(), + Word::from_lo_unchecked(current_block_number.expr()), ); let block_number = WordByteCapGadget::construct(cb, current_block_number.expr()); - cb.stack_pop(block_number.original_word()); + cb.stack_pop(block_number.original_word().to_word()); - let block_hash = cb.query_word_rlc(); + let block_hash = cb.query_word_unchecked(); let diff_lt = LtGadget::construct( cb, @@ -62,18 +62,18 @@ impl<F: Field> ExecutionGadget<F> for BlockHashGadget<F> { cb.block_lookup( BlockContextFieldTag::BlockHash.expr(), Some(block_number.valid_value()), - block_hash.expr(), + block_hash.to_word(), ); }); cb.condition(not::expr(is_valid), |cb| { - cb.require_zero( + cb.require_zero_word( "Invalid block number for block hash lookup", - block_hash.expr(), + block_hash.to_word(), ); }); - cb.stack_push(block_hash.expr()); + cb.stack_push(block_hash.to_word()); let step_state_transition = StepStateTransition { rw_counter: Delta(2.expr()), @@ -116,11 +116,8 @@ impl<F: Field> ExecutionGadget<F> for BlockHashGadget<F> { self.current_block_number .assign(region, offset, Value::known(current_block_number))?; - self.block_hash.assign( - region, - offset, - Some(block.get_rws(step, 1).stack_value().to_le_bytes()), - )?; + self.block_hash + .assign_u256(region, offset, block.get_rws(step, 1).stack_value())?; self.diff_lt.assign( region, diff --git a/zkevm-circuits/src/evm_circuit/execution/byte.rs b/zkevm-circuits/src/evm_circuit/execution/byte.rs index a21c0570e8..532c7c61da 100644 --- a/zkevm-circuits/src/evm_circuit/execution/byte.rs +++ b/zkevm-circuits/src/evm_circuit/execution/byte.rs @@ -6,11 +6,14 @@ use crate::{ common_gadget::SameContextGadget, constraint_builder::{EVMConstraintBuilder, StepStateTransition, Transition::Delta}, math_gadget::{IsEqualGadget, IsZeroGadget}, - sum, CachedRegion, Word, + sum, CachedRegion, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{Word, Word32Cell, WordExpr}, + Expr, + }, }; use array_init::array_init; use bus_mapping::evm::OpcodeId; @@ -20,8 +23,8 @@ use halo2_proofs::plonk::Error; #[derive(Clone, Debug)] pub(crate) struct ByteGadget<F> { same_context: SameContextGadget<F>, - index: Word<F>, - value: Word<F>, + index: Word32Cell<F>, + value: Word32Cell<F>, is_msb_sum_zero: IsZeroGadget<F>, is_byte_selected: [IsEqualGadget<F>; 32], } @@ -32,14 +35,14 @@ impl<F: Field> ExecutionGadget<F> for ByteGadget<F> { const EXECUTION_STATE: ExecutionState = ExecutionState::BYTE; fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { - let index = cb.query_word_rlc(); - let value = cb.query_word_rlc(); + let index = cb.query_word32(); + let value = cb.query_word32(); // If any of the non-LSB bytes of the index word are non-zero we never // need to copy any bytes. So just sum all the non-LSB byte // values here and then check if it's non-zero so we can use // that as an additional condition when to copy the byte value. - let is_msb_sum_zero = IsZeroGadget::construct(cb, sum::expr(&index.cells[1..32])); + let is_msb_sum_zero = IsZeroGadget::construct(cb, sum::expr(&index.limbs[1..32])); // Now we just need to check that `result[0]` is the sum of all copied // bytes. We go byte by byte and check if `idx == index[0]`. @@ -50,11 +53,11 @@ impl<F: Field> ExecutionGadget<F> for ByteGadget<F> { let is_byte_selected = array_init(|idx| { // Check if this byte is selected looking only at the LSB of the // index word - IsEqualGadget::construct(cb, index.cells[0].expr(), (31 - idx).expr()) + IsEqualGadget::construct(cb, index.limbs[0].expr(), (31 - idx).expr()) }); // Sum all possible selected bytes - let selected_byte = value.cells.iter().zip(is_byte_selected.iter()).fold( + let selected_byte = value.limbs.iter().zip(is_byte_selected.iter()).fold( 0.expr(), |acc, (cell, is_selected)| { acc + is_selected.expr() * is_msb_sum_zero.expr() * cell.expr() @@ -65,9 +68,9 @@ impl<F: Field> ExecutionGadget<F> for ByteGadget<F> { // push the selected byte on the stack // We can push the selected byte here directly because // it only uses the LSB of a word. - cb.stack_pop(index.expr()); - cb.stack_pop(value.expr()); - cb.stack_push(selected_byte); + cb.stack_pop(index.to_word()); + cb.stack_pop(value.to_word()); + cb.stack_push(Word::from_lo_unchecked(selected_byte)); // State transition let step_state_transition = StepStateTransition { @@ -101,21 +104,22 @@ impl<F: Field> ExecutionGadget<F> for ByteGadget<F> { self.same_context.assign_exec_step(region, offset, step)?; // Inputs/Outputs - let index = block.get_rws(step, 0).stack_value().to_le_bytes(); - let value = block.get_rws(step, 1).stack_value().to_le_bytes(); - self.index.assign(region, offset, Some(index))?; - self.value.assign(region, offset, Some(value))?; + let index = block.get_rws(step, 0).stack_value(); + let value = block.get_rws(step, 1).stack_value(); + let index_bytes = index.to_le_bytes(); + self.index.assign_u256(region, offset, index)?; + self.value.assign_u256(region, offset, value)?; // Set `is_msb_sum_zero` self.is_msb_sum_zero - .assign(region, offset, sum::value(&index[1..32]))?; + .assign(region, offset, sum::value(&index_bytes[1..32]))?; // Set `is_byte_selected` for i in 0..32 { self.is_byte_selected[i].assign( region, offset, - F::from(index[0] as u64), + F::from(index_bytes[0] as u64), F::from((31 - i) as u64), )?; } diff --git a/zkevm-circuits/src/evm_circuit/execution/calldatacopy.rs b/zkevm-circuits/src/evm_circuit/execution/calldatacopy.rs index 747eb1e704..f7d9a76240 100644 --- a/zkevm-circuits/src/evm_circuit/execution/calldatacopy.rs +++ b/zkevm-circuits/src/evm_circuit/execution/calldatacopy.rs @@ -9,13 +9,19 @@ use crate::{ ConstrainBuilderCommon, EVMConstraintBuilder, StepStateTransition, Transition::{Delta, To}, }, - memory_gadget::{MemoryAddressGadget, MemoryCopierGasGadget, MemoryExpansionGadget}, + memory_gadget::{ + CommonMemoryAddressGadget, MemoryAddressGadget, MemoryCopierGasGadget, + MemoryExpansionGadget, + }, not, select, CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, table::CallContextFieldTag, - util::Expr, + util::{ + word::{Word, WordExpr}, + Expr, + }, }; use bus_mapping::{circuit_input_builder::CopyDataType, evm::OpcodeId}; use eth_types::{evm_types::GasCost, Field, ToScalar}; @@ -48,24 +54,27 @@ impl<F: Field> ExecutionGadget<F> for CallDataCopyGadget<F> { let call_data_length = cb.query_cell(); let call_data_offset = cb.query_cell(); - let length = cb.query_word_rlc(); - let memory_offset = cb.query_cell_phase2(); + let length = cb.query_memory_address(); + let memory_offset = cb.query_word_unchecked(); let data_offset = WordByteCapGadget::construct(cb, call_data_length.expr()); // Pop memory_offset, data_offset, length from stack - cb.stack_pop(memory_offset.expr()); - cb.stack_pop(data_offset.original_word()); - cb.stack_pop(length.expr()); + cb.stack_pop(memory_offset.to_word()); + cb.stack_pop(data_offset.original_word().to_word()); + cb.stack_pop(length.to_word()); // Lookup the calldata_length and caller_address in Tx context table or // Call context table cb.condition(cb.curr.state.is_root.expr(), |cb| { - cb.call_context_lookup(false.expr(), None, CallContextFieldTag::TxId, src_id.expr()); - cb.call_context_lookup( - false.expr(), + cb.call_context_lookup_read( + None, + CallContextFieldTag::TxId, + Word::from_lo_unchecked(src_id.expr()), + ); + cb.call_context_lookup_read( None, CallContextFieldTag::CallDataLength, - call_data_length.expr(), + Word::from_lo_unchecked(call_data_length.expr()), ); cb.require_zero( "call_data_offset == 0 in the root call", @@ -73,23 +82,20 @@ impl<F: Field> ExecutionGadget<F> for CallDataCopyGadget<F> { ); }); cb.condition(1.expr() - cb.curr.state.is_root.expr(), |cb| { - cb.call_context_lookup( - false.expr(), + cb.call_context_lookup_read( None, CallContextFieldTag::CallerId, - src_id.expr(), + Word::from_lo_unchecked(src_id.expr()), ); - cb.call_context_lookup( - false.expr(), + cb.call_context_lookup_read( None, CallContextFieldTag::CallDataLength, - call_data_length.expr(), + Word::from_lo_unchecked(call_data_length.expr()), ); - cb.call_context_lookup( - false.expr(), + cb.call_context_lookup_read( None, CallContextFieldTag::CallDataOffset, - call_data_offset.expr(), + Word::from_lo_unchecked(call_data_offset.expr()), ); }); @@ -121,9 +127,9 @@ impl<F: Field> ExecutionGadget<F> for CallDataCopyGadget<F> { let src_addr_end = call_data_offset.expr() + call_data_length.expr(); cb.copy_table_lookup( - src_id.expr(), + Word::from_lo_unchecked(src_id.expr()), src_tag, - cb.curr.state.call_id.expr(), + Word::from_lo_unchecked(cb.curr.state.call_id.expr()), CopyDataType::Memory.expr(), src_addr, src_addr_end, @@ -183,16 +189,24 @@ impl<F: Field> ExecutionGadget<F> for CallDataCopyGadget<F> { let memory_address = self .memory_address .assign(region, offset, memory_offset, length)?; - let src_id = if call.is_root { tx.id } else { call.caller_id }; - self.src_id.assign( - region, - offset, - Value::known(F::from(u64::try_from(src_id).unwrap())), - )?; + let src_id = if call.is_root { + tx.id + } else { + call.caller_id as u64 + }; + self.src_id + .assign(region, offset, Value::known(F::from(src_id)))?; // Call data length and call data offset let (call_data_length, call_data_offset) = if call.is_root { - (tx.call_data_length as u64, 0_u64) + ( + if tx.is_create() { + 0 + } else { + tx.call_data.len() as u64 + }, + 0_u64, + ) } else { (call.call_data_length, call.call_data_offset) }; diff --git a/zkevm-circuits/src/evm_circuit/execution/calldataload.rs b/zkevm-circuits/src/evm_circuit/execution/calldataload.rs index 555a105667..ff0890bb8f 100644 --- a/zkevm-circuits/src/evm_circuit/execution/calldataload.rs +++ b/zkevm-circuits/src/evm_circuit/execution/calldataload.rs @@ -22,7 +22,10 @@ use crate::{ witness::{Block, Call, ExecStep, Transaction}, }, table::{CallContextFieldTag, TxContextFieldTag}, - util::Expr, + util::{ + word::{Word, Word32, WordExpr}, + Expr, + }, }; use super::ExecutionGadget; @@ -65,22 +68,20 @@ impl<F: Field> ExecutionGadget<F> for CallDataLoadGadget<F> { let call_data_offset = cb.query_cell(); let data_offset = WordByteCapGadget::construct(cb, call_data_length.expr()); - cb.stack_pop(data_offset.original_word()); + cb.stack_pop(data_offset.original_word().to_word()); cb.condition( and::expr([data_offset.not_overflow(), cb.curr.state.is_root.expr()]), |cb| { - cb.call_context_lookup( - false.expr(), + cb.call_context_lookup_read( None, CallContextFieldTag::TxId, - src_id.expr(), + Word::from_lo_unchecked(src_id.expr()), ); - cb.call_context_lookup( - false.expr(), + cb.call_context_lookup_read( None, CallContextFieldTag::CallDataLength, - call_data_length.expr(), + Word::from_lo_unchecked(call_data_length.expr()), ); cb.require_equal( "if is_root then call_data_offset == 0", @@ -96,23 +97,20 @@ impl<F: Field> ExecutionGadget<F> for CallDataLoadGadget<F> { not::expr(cb.curr.state.is_root.expr()), ]), |cb| { - cb.call_context_lookup( - false.expr(), + cb.call_context_lookup_read( None, CallContextFieldTag::CallerId, - src_id.expr(), + Word::from_lo_unchecked(src_id.expr()), ); - cb.call_context_lookup( - false.expr(), + cb.call_context_lookup_read( None, CallContextFieldTag::CallDataLength, - call_data_length.expr(), + Word::from_lo_unchecked(call_data_length.expr()), ); - cb.call_context_lookup( - false.expr(), + cb.call_context_lookup_read( None, CallContextFieldTag::CallDataOffset, - call_data_offset.expr(), + Word::from_lo_unchecked(call_data_offset.expr()), ); }, ); @@ -143,7 +141,7 @@ impl<F: Field> ExecutionGadget<F> for CallDataLoadGadget<F> { src_id.expr(), TxContextFieldTag::CallData, Some(src_addr.expr() + idx.expr()), - buffer_reader.byte(idx), + Word::from_lo_unchecked(buffer_reader.byte(idx)), ); }, ); @@ -174,13 +172,13 @@ impl<F: Field> ExecutionGadget<F> for CallDataLoadGadget<F> { // Add a lookup constraint for the 32-bytes that should have been pushed // to the stack. let calldata_word: [Expression<F>; N_BYTES_WORD] = calldata_word.try_into().unwrap(); - let calldata_word = cb.word_rlc(calldata_word); - cb.require_zero( + let calldata_word = Word32::new(calldata_word); + cb.require_zero_word( "Stack push result must be 0 if stack pop offset is Uint64 overflow", - data_offset.overflow() * calldata_word.expr(), + calldata_word.to_word().mul_selector(data_offset.overflow()), ); - cb.stack_push(calldata_word); + cb.stack_push(calldata_word.to_word()); let step_state_transition = StepStateTransition { rw_counter: Delta(cb.rw_counter_offset()), @@ -215,12 +213,24 @@ impl<F: Field> ExecutionGadget<F> for CallDataLoadGadget<F> { // Assign to the buffer reader gadget. let (src_id, call_data_offset, call_data_length) = if call.is_root { - (tx.id, 0, tx.call_data_length as u64) + ( + tx.id, + 0, + if tx.is_create() { + 0 + } else { + tx.call_data.len() as u64 + }, + ) } else { - (call.caller_id, call.call_data_offset, call.call_data_length) + ( + call.caller_id as u64, + call.call_data_offset, + call.call_data_length, + ) }; self.src_id - .assign(region, offset, Value::known(F::from(src_id as u64)))?; + .assign(region, offset, Value::known(F::from(src_id)))?; self.call_data_length .assign(region, offset, Value::known(F::from(call_data_length)))?; self.call_data_offset @@ -247,7 +257,7 @@ impl<F: Field> ExecutionGadget<F> for CallDataLoadGadget<F> { for (i, byte) in calldata_bytes.iter_mut().enumerate() { if call.is_root { // Fetch from tx call data. - if src_addr + (i as u64) < tx.call_data_length as u64 { + if src_addr + (i as u64) < call_data_length { *byte = tx.call_data[src_addr as usize + i]; } } else { @@ -261,14 +271,8 @@ impl<F: Field> ExecutionGadget<F> for CallDataLoadGadget<F> { } } - self.buffer_reader.assign( - region, - offset, - src_addr, - src_addr_end, - &calldata_bytes, - &[true; N_BYTES_WORD], - )?; + self.buffer_reader + .assign(region, offset, src_addr, src_addr_end, &calldata_bytes)?; Ok(()) } diff --git a/zkevm-circuits/src/evm_circuit/execution/calldatasize.rs b/zkevm-circuits/src/evm_circuit/execution/calldatasize.rs index 05f0de56a0..311365feb3 100644 --- a/zkevm-circuits/src/evm_circuit/execution/calldatasize.rs +++ b/zkevm-circuits/src/evm_circuit/execution/calldatasize.rs @@ -1,26 +1,28 @@ use crate::{ evm_circuit::{ execution::ExecutionGadget, - param::N_BYTES_CALLDATASIZE, step::ExecutionState, util::{ common_gadget::SameContextGadget, constraint_builder::{EVMConstraintBuilder, StepStateTransition, Transition::Delta}, - from_bytes, CachedRegion, RandomLinearCombination, + CachedRegion, }, witness::{Block, Call, ExecStep, Transaction}, }, table::CallContextFieldTag, - util::Expr, + util::{ + word::{WordCell, WordExpr}, + Expr, + }, }; use bus_mapping::evm::OpcodeId; -use eth_types::{Field, ToLittleEndian}; +use eth_types::Field; use halo2_proofs::plonk::Error; #[derive(Clone, Debug)] pub(crate) struct CallDataSizeGadget<F> { same_context: SameContextGadget<F>, - call_data_size: RandomLinearCombination<F, N_BYTES_CALLDATASIZE>, + call_data_size: WordCell<F>, } impl<F: Field> ExecutionGadget<F> for CallDataSizeGadget<F> { @@ -32,16 +34,15 @@ impl<F: Field> ExecutionGadget<F> for CallDataSizeGadget<F> { let opcode = cb.query_cell(); // Add lookup constraint in the call context for the calldatasize field. - let call_data_size = cb.query_word_rlc(); - cb.call_context_lookup( - false.expr(), + let call_data_size = cb.query_word_unchecked(); + cb.call_context_lookup_read( None, CallContextFieldTag::CallDataLength, - from_bytes::expr(&call_data_size.cells), + call_data_size.to_word(), ); // The calldatasize should be pushed to the top of the stack. - cb.stack_push(call_data_size.expr()); + cb.stack_push(call_data_size.to_word()); let step_state_transition = StepStateTransition { rw_counter: Delta(2.expr()), @@ -72,15 +73,8 @@ impl<F: Field> ExecutionGadget<F> for CallDataSizeGadget<F> { let call_data_size = block.get_rws(step, 1).stack_value(); - self.call_data_size.assign( - region, - offset, - Some( - call_data_size.to_le_bytes()[..N_BYTES_CALLDATASIZE] - .try_into() - .unwrap(), - ), - )?; + self.call_data_size + .assign_u64(region, offset, call_data_size.as_u64())?; Ok(()) } diff --git a/zkevm-circuits/src/evm_circuit/execution/caller.rs b/zkevm-circuits/src/evm_circuit/execution/caller.rs index a57b97dc8e..d1c6819e5e 100644 --- a/zkevm-circuits/src/evm_circuit/execution/caller.rs +++ b/zkevm-circuits/src/evm_circuit/execution/caller.rs @@ -1,27 +1,28 @@ use crate::{ evm_circuit::{ execution::ExecutionGadget, - param::N_BYTES_ACCOUNT_ADDRESS, step::ExecutionState, util::{ common_gadget::SameContextGadget, constraint_builder::{EVMConstraintBuilder, StepStateTransition, Transition::Delta}, - from_bytes, CachedRegion, RandomLinearCombination, + CachedRegion, }, witness::{Block, Call, ExecStep, Transaction}, }, table::CallContextFieldTag, - util::Expr, + util::{ + word::{WordCell, WordExpr}, + Expr, + }, }; use bus_mapping::evm::OpcodeId; -use eth_types::{Field, ToLittleEndian}; +use eth_types::Field; use halo2_proofs::plonk::Error; #[derive(Clone, Debug)] pub(crate) struct CallerGadget<F> { same_context: SameContextGadget<F>, - // Using RLC to match against rw_table->stack_op value - caller_address: RandomLinearCombination<F, N_BYTES_ACCOUNT_ADDRESS>, + caller_address: WordCell<F>, } impl<F: Field> ExecutionGadget<F> for CallerGadget<F> { @@ -30,18 +31,17 @@ impl<F: Field> ExecutionGadget<F> for CallerGadget<F> { const EXECUTION_STATE: ExecutionState = ExecutionState::CALLER; fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { - let caller_address = cb.query_word_rlc(); + let caller_address = cb.query_word_unchecked(); // Lookup rw_table -> call_context with caller address - cb.call_context_lookup( - false.expr(), + cb.call_context_lookup_read( None, // cb.curr.state.call_id CallContextFieldTag::CallerAddress, - from_bytes::expr(&caller_address.cells), + caller_address.to_word(), ); // Push the value to the stack - cb.stack_push(caller_address.expr()); + cb.stack_push(caller_address.to_word()); // State transition let opcode = cb.query_cell(); @@ -73,15 +73,7 @@ impl<F: Field> ExecutionGadget<F> for CallerGadget<F> { let caller = block.get_rws(step, 1).stack_value(); - self.caller_address.assign( - region, - offset, - Some( - caller.to_le_bytes()[..N_BYTES_ACCOUNT_ADDRESS] - .try_into() - .unwrap(), - ), - )?; + self.caller_address.assign_u256(region, offset, caller)?; Ok(()) } diff --git a/zkevm-circuits/src/evm_circuit/execution/callop.rs b/zkevm-circuits/src/evm_circuit/execution/callop.rs index cb272bcd3d..e8127202a7 100644 --- a/zkevm-circuits/src/evm_circuit/execution/callop.rs +++ b/zkevm-circuits/src/evm_circuit/execution/callop.rs @@ -1,17 +1,23 @@ -use crate::evm_circuit::{ - execution::ExecutionGadget, - param::{N_BYTES_GAS, N_BYTES_U64}, - step::ExecutionState, - util::{ - and, - common_gadget::{CommonCallGadget, TransferGadget}, - constraint_builder::{ - ConstrainBuilderCommon, EVMConstraintBuilder, ReversionInfo, StepStateTransition, - Transition::{Delta, To}, +use crate::{ + evm_circuit::{ + execution::ExecutionGadget, + param::{N_BYTES_GAS, N_BYTES_U64}, + step::ExecutionState, + util::{ + and, + common_gadget::{CommonCallGadget, TransferGadget}, + constraint_builder::{ + ConstrainBuilderCommon, EVMConstraintBuilder, ReversionInfo, StepStateTransition, + Transition::{Delta, To}, + }, + math_gadget::{ + ConstantDivisionGadget, IsZeroGadget, LtGadget, LtWordGadget, MinMaxGadget, + }, + memory_gadget::{CommonMemoryAddressGadget, MemoryAddressGadget}, + not, or, select, CachedRegion, Cell, StepRws, }, - math_gadget::{ConstantDivisionGadget, IsZeroGadget, LtGadget, LtWordGadget, MinMaxGadget}, - not, or, select, CachedRegion, Cell, Word, }, + util::word::{Word, WordCell, WordExpr}, }; use crate::{ @@ -20,7 +26,7 @@ use crate::{ util::Expr, }; use bus_mapping::evm::OpcodeId; -use eth_types::{evm_types::GAS_STIPEND_CALL_WITH_VALUE, Field, ToLittleEndian, ToScalar, U256}; +use eth_types::{evm_types::GAS_STIPEND_CALL_WITH_VALUE, Field, ToAddress, U256}; use halo2_proofs::{circuit::Value, plonk::Error}; /// Gadget for call related opcodes. It supports `OpcodeId::CALL`, @@ -36,18 +42,18 @@ pub(crate) struct CallOpGadget<F> { is_staticcall: IsZeroGadget<F>, tx_id: Cell<F>, reversion_info: ReversionInfo<F>, - current_callee_address: Cell<F>, - current_caller_address: Cell<F>, + current_callee_address: WordCell<F>, + current_caller_address: WordCell<F>, is_static: Cell<F>, depth: Cell<F>, - call: CommonCallGadget<F, true>, - current_value: Word<F>, + call: CommonCallGadget<F, MemoryAddressGadget<F>, true>, + current_value: WordCell<F>, is_warm: Cell<F>, is_warm_prev: Cell<F>, callee_reversion_info: ReversionInfo<F>, transfer: TransferGadget<F>, // current handling Call* opcode's caller balance - caller_balance_word: Word<F>, + caller_balance: WordCell<F>, // check if insufficient balance case is_insufficient_balance: LtWordGadget<F>, is_depth_ok: LtGadget<F, N_BYTES_U64>, @@ -75,58 +81,58 @@ impl<F: Field> ExecutionGadget<F> for CallOpGadget<F> { let tx_id = cb.call_context(None, CallContextFieldTag::TxId); let mut reversion_info = cb.reversion_info_read(None); - let [is_static, depth, current_callee_address] = [ - CallContextFieldTag::IsStatic, - CallContextFieldTag::Depth, - CallContextFieldTag::CalleeAddress, - ] - .map(|field_tag| cb.call_context(None, field_tag)); + let [is_static, depth] = [CallContextFieldTag::IsStatic, CallContextFieldTag::Depth] + .map(|field_tag| cb.call_context(None, field_tag)); + let current_callee_address = + cb.call_context_read_as_word(None, CallContextFieldTag::CalleeAddress); let (current_caller_address, current_value) = cb.condition(is_delegatecall.expr(), |cb| { ( - cb.call_context(None, CallContextFieldTag::CallerAddress), - cb.call_context_as_word(None, CallContextFieldTag::Value), + cb.call_context_read_as_word(None, CallContextFieldTag::CallerAddress), + cb.call_context_read_as_word(None, CallContextFieldTag::Value), ) }); - let call_gadget = CommonCallGadget::construct( - cb, - is_call.expr(), - is_callcode.expr(), - is_delegatecall.expr(), - is_staticcall.expr(), - ); + let call_gadget: CommonCallGadget<F, MemoryAddressGadget<F>, true> = + CommonCallGadget::construct( + cb, + is_call.expr(), + is_callcode.expr(), + is_delegatecall.expr(), + is_staticcall.expr(), + ); cb.condition(not::expr(is_call.expr() + is_callcode.expr()), |cb| { - cb.require_zero( + cb.require_zero_word( "for non call/call code, value is zero", - call_gadget.value.expr(), + call_gadget.value.to_word(), ); }); - let caller_address = select::expr( + let caller_address = Word::select( is_delegatecall.expr(), - current_caller_address.expr(), - current_callee_address.expr(), + current_caller_address.to_word(), + current_callee_address.to_word(), ); - let callee_address = select::expr( + let callee_address = Word::select( is_callcode.expr() + is_delegatecall.expr(), - current_callee_address.expr(), - call_gadget.callee_address_expr(), + current_callee_address.to_word(), + call_gadget.callee_address(), ); // Add callee to access list let is_warm = cb.query_bool(); let is_warm_prev = cb.query_bool(); - cb.account_access_list_write( + cb.account_access_list_write_unchecked( tx_id.expr(), - call_gadget.callee_address_expr(), + call_gadget.callee_address(), is_warm.expr(), is_warm_prev.expr(), Some(&mut reversion_info), ); // Propagate rw_counter_end_of_reversion and is_persistent - let mut callee_reversion_info = cb.reversion_info_write(Some(callee_call_id.expr())); + let mut callee_reversion_info = + cb.reversion_info_write_unchecked(Some(callee_call_id.expr())); cb.require_equal( "callee_is_persistent == is_persistent â‹… is_success", callee_reversion_info.is_persistent(), @@ -140,21 +146,21 @@ impl<F: Field> ExecutionGadget<F> for CallOpGadget<F> { ); }); - cb.condition(call_gadget.has_value.clone(), |cb| { + cb.condition(is_call.expr() * call_gadget.has_value.clone(), |cb| { cb.require_zero( "CALL with value must not be in static call stack", is_static.expr(), ); }); - let caller_balance_word = cb.query_word_rlc(); + let caller_balance = cb.query_word_unchecked(); cb.account_read( - caller_address.expr(), + caller_address.to_word(), AccountFieldTag::Balance, - caller_balance_word.expr(), + caller_balance.to_word(), ); let is_insufficient_balance = - LtWordGadget::construct(cb, &caller_balance_word, &call_gadget.value); + LtWordGadget::construct(cb, &caller_balance.to_word(), &call_gadget.value.to_word()); // depth < 1025 let is_depth_ok = LtGadget::construct(cb, depth.expr(), 1025.expr()); @@ -175,20 +181,17 @@ impl<F: Field> ExecutionGadget<F> for CallOpGadget<F> { // skip the transfer (this is necessary for non-existing accounts, which // will not be crated when value is 0 and so the callee balance lookup // would be invalid). - let transfer = cb.condition( - is_call.expr() * not::expr(is_insufficient_balance.expr()), - |cb| { - TransferGadget::construct( - cb, - caller_address.expr(), - callee_address.expr(), - not::expr(call_gadget.callee_not_exists.expr()), - 0.expr(), - call_gadget.value.clone(), - &mut callee_reversion_info, - ) - }, - ); + let transfer = cb.condition(is_call.expr() * is_precheck_ok.expr(), |cb| { + TransferGadget::construct( + cb, + caller_address.to_word(), + callee_address.to_word(), + not::expr(call_gadget.callee_not_exists.expr()), + 0.expr(), + call_gadget.value.clone(), + &mut callee_reversion_info, + ) + }); // For CALLCODE opcode, verify caller balance is greater than or equal to stack // `value` in successful case. that is `is_insufficient_balance` is false. @@ -226,16 +229,22 @@ impl<F: Field> ExecutionGadget<F> for CallOpGadget<F> { let stack_pointer_delta = select::expr(is_call.expr() + is_callcode.expr(), 6.expr(), 5.expr()); let memory_expansion = call_gadget.memory_expansion.clone(); + + // handle calls to accounts with no code. cb.condition( and::expr(&[no_callee_code.expr(), is_precheck_ok.expr()]), |cb| { // Save caller's call state - for field_tag in [ + cb.call_context_lookup_write( + None, CallContextFieldTag::LastCalleeId, + Word::from_lo_unchecked(callee_call_id.expr()), + ); + for field_tag in [ CallContextFieldTag::LastCalleeReturnDataOffset, CallContextFieldTag::LastCalleeReturnDataLength, ] { - cb.call_context_lookup(true.expr(), None, field_tag, 0.expr()); + cb.call_context_lookup_write(None, field_tag, Word::zero()); } // For CALL opcode, it has an extra stack pop `value` (+1) and if the value is @@ -248,8 +257,7 @@ impl<F: Field> ExecutionGadget<F> for CallOpGadget<F> { // caller address and value (+2). // // No extra lookups for STATICCALL opcode. - let transfer_rwc_delta = - is_call.expr() * not::expr(transfer.value_is_zero.expr()) * 2.expr(); + let transfer_rwc_delta = is_call.expr() * transfer.reversible_w_delta(); let rw_counter_delta = 21.expr() + is_call.expr() * 1.expr() + transfer_rwc_delta.clone() @@ -272,15 +280,19 @@ impl<F: Field> ExecutionGadget<F> for CallOpGadget<F> { }, ); - // handle is_insufficient_balance step transition + // handle is_insufficient_balance or !is_depth_ok step transition cb.condition(not::expr(is_precheck_ok.expr()), |cb| { // Save caller's call state - for field_tag in [ + cb.call_context_lookup_write( + None, CallContextFieldTag::LastCalleeId, + Word::from_lo_unchecked(callee_call_id.expr()), + ); + for field_tag in [ CallContextFieldTag::LastCalleeReturnDataOffset, CallContextFieldTag::LastCalleeReturnDataLength, ] { - cb.call_context_lookup(true.expr(), None, field_tag, 0.expr()); + cb.call_context_lookup_write(None, field_tag, Word::zero()); } cb.require_step_state_transition(StepStateTransition { @@ -323,54 +335,76 @@ impl<F: Field> ExecutionGadget<F> for CallOpGadget<F> { cb.curr.state.reversible_write_counter.expr() + 1.expr(), ), ] { - cb.call_context_lookup(true.expr(), None, field_tag, value); + cb.call_context_lookup_write(None, field_tag, Word::from_lo_unchecked(value)); } // Setup next call's context. let cd_address = call_gadget.cd_address.clone(); let rd_address = call_gadget.rd_address.clone(); for (field_tag, value) in [ - (CallContextFieldTag::CallerId, cb.curr.state.call_id.expr()), - (CallContextFieldTag::TxId, tx_id.expr()), - (CallContextFieldTag::Depth, depth.expr() + 1.expr()), + ( + CallContextFieldTag::CallerId, + Word::from_lo_unchecked(cb.curr.state.call_id.expr()), + ), + ( + CallContextFieldTag::TxId, + Word::from_lo_unchecked(tx_id.expr()), + ), + ( + CallContextFieldTag::Depth, + Word::from_lo_unchecked(depth.expr() + 1.expr()), + ), (CallContextFieldTag::CallerAddress, caller_address), (CallContextFieldTag::CalleeAddress, callee_address), - (CallContextFieldTag::CallDataOffset, cd_address.offset()), - (CallContextFieldTag::CallDataLength, cd_address.length()), - (CallContextFieldTag::ReturnDataOffset, rd_address.offset()), - (CallContextFieldTag::ReturnDataLength, rd_address.length()), + ( + CallContextFieldTag::CallDataOffset, + Word::from_lo_unchecked(cd_address.offset()), + ), + ( + CallContextFieldTag::CallDataLength, + Word::from_lo_unchecked(cd_address.length()), + ), + ( + CallContextFieldTag::ReturnDataOffset, + Word::from_lo_unchecked(rd_address.offset()), + ), + ( + CallContextFieldTag::ReturnDataLength, + Word::from_lo_unchecked(rd_address.length()), + ), ( CallContextFieldTag::Value, - select::expr( + Word::select( is_delegatecall.expr(), - current_value.expr(), - call_gadget.value.expr(), + current_value.to_word(), + call_gadget.value.to_word(), ), ), ( CallContextFieldTag::IsSuccess, - call_gadget.is_success.expr(), + Word::from_lo_unchecked(call_gadget.is_success.expr()), ), ( CallContextFieldTag::IsStatic, - or::expr([is_static.expr(), is_staticcall.expr()]), + Word::from_lo_unchecked(or::expr([is_static.expr(), is_staticcall.expr()])), + ), + (CallContextFieldTag::LastCalleeId, Word::zero()), + ( + CallContextFieldTag::LastCalleeReturnDataOffset, + Word::zero(), ), - (CallContextFieldTag::LastCalleeId, 0.expr()), - (CallContextFieldTag::LastCalleeReturnDataOffset, 0.expr()), - (CallContextFieldTag::LastCalleeReturnDataLength, 0.expr()), - (CallContextFieldTag::IsRoot, 0.expr()), - (CallContextFieldTag::IsCreate, 0.expr()), + ( + CallContextFieldTag::LastCalleeReturnDataLength, + Word::zero(), + ), + (CallContextFieldTag::IsRoot, Word::zero()), + (CallContextFieldTag::IsCreate, Word::zero()), ( CallContextFieldTag::CodeHash, - call_gadget.phase2_callee_code_hash.expr(), + call_gadget.callee_code_hash.to_word(), ), ] { - cb.call_context_lookup( - true.expr(), - Some(callee_call_id.expr()), - field_tag, - value, - ); + cb.call_context_lookup_write(Some(callee_call_id.expr()), field_tag, value); } // Give gas stipend if value is not zero @@ -399,7 +433,7 @@ impl<F: Field> ExecutionGadget<F> for CallOpGadget<F> { call_id: To(callee_call_id.expr()), is_root: To(false.expr()), is_create: To(false.expr()), - code_hash: To(call_gadget.phase2_callee_code_hash.expr()), + code_hash: To(call_gadget.callee_code_hash.to_word()), gas_left: To(callee_gas_left), // For CALL opcode, `transfer` invocation has two account write if value is not // zero. @@ -427,7 +461,7 @@ impl<F: Field> ExecutionGadget<F> for CallOpGadget<F> { is_warm_prev, callee_reversion_info, transfer, - caller_balance_word, + caller_balance, is_insufficient_balance, is_depth_ok, one_64th_gas, @@ -448,60 +482,60 @@ impl<F: Field> ExecutionGadget<F> for CallOpGadget<F> { let is_call = opcode == OpcodeId::CALL; let is_callcode = opcode == OpcodeId::CALLCODE; let is_delegatecall = opcode == OpcodeId::DELEGATECALL; - let [tx_id, is_static, depth, current_callee_address] = - [0, 3, 4, 5].map(|index| block.get_rws(step, index).call_context_value()); - let is_error_depth = depth.low_u64() > 1024; + let mut rws = StepRws::new(block, step); + let tx_id = rws.next().call_context_value(); + rws.next(); // RwCounterEndOfReversion + rws.next(); // IsPersistent + + let is_static = rws.next().call_context_value(); + let depth = rws.next().call_context_value(); + let current_callee_address = rws.next().call_context_value(); + + let is_valid_depth = depth.low_u64() < 1025; self.is_depth_ok .assign(region, offset, F::from(depth.low_u64()), F::from(1025))?; // This offset is used to change the index offset of `step.rw_indices`. // Since both CALL and CALLCODE have an extra stack pop `value`, and // opcode DELEGATECALL has two extra call context lookups - current // caller address and current value. - let mut rw_offset = 0; let [current_caller_address, current_value] = if is_delegatecall { - rw_offset += 2; - [6, 7].map(|index| block.get_rws(step, index).call_context_value()) + [ + rws.next().call_context_value(), + rws.next().call_context_value(), + ] } else { [U256::zero(), U256::zero()] }; - let [gas, callee_address] = - [6, 7].map(|i| block.get_rws(step, i + rw_offset).stack_value()); + let gas = rws.next().stack_value(); + let callee_address = rws.next().stack_value(); + let value = if is_call || is_callcode { - let value = block.get_rws(step, 8 + rw_offset).stack_value(); - rw_offset += 1; - value + rws.next().stack_value() } else { U256::zero() }; - let [cd_offset, cd_length, rd_offset, rd_length, is_success] = - [8, 9, 10, 11, 12].map(|i| block.get_rws(step, i + rw_offset).stack_value()); - let callee_code_hash = block.get_rws(step, 13 + rw_offset).account_value_pair().0; + let cd_offset = rws.next().stack_value(); + let cd_length = rws.next().stack_value(); + let rd_offset = rws.next().stack_value(); + let rd_length = rws.next().stack_value(); + let is_success = rws.next().stack_value(); + + let callee_code_hash = rws.next().account_codehash_pair().0; let callee_exists = !callee_code_hash.is_zero(); - let (is_warm, is_warm_prev) = block - .get_rws(step, 14 + rw_offset) - .tx_access_list_value_pair(); + let (is_warm, is_warm_prev) = rws.next().tx_access_list_value_pair(); - let [callee_rw_counter_end_of_reversion, callee_is_persistent] = - [15, 16].map(|index| block.get_rws(step, index + rw_offset).call_context_value()); + let callee_rw_counter_end_of_reversion = rws.next().call_context_value(); + let callee_is_persistent = rws.next().call_context_value(); // check if it is insufficient balance case. // get caller balance - let (caller_balance, _) = block.get_rws(step, 17 + rw_offset).account_value_pair(); - self.caller_balance_word - .assign(region, offset, Some(caller_balance.to_le_bytes()))?; + let caller_balance = rws.next().account_balance_pair().0; + self.caller_balance + .assign_u256(region, offset, caller_balance)?; self.is_insufficient_balance .assign(region, offset, caller_balance, value)?; - let is_insufficient = (value > caller_balance) && (is_call || is_callcode); - // only call opcode do transfer in sucessful case. - let [caller_balance_pair, callee_balance_pair] = - if is_call && !is_insufficient && !is_error_depth && !value.is_zero() { - [18, 19].map(|index| block.get_rws(step, index + rw_offset).account_value_pair()) - } else { - [(U256::zero(), U256::zero()), (U256::zero(), U256::zero())] - }; - self.opcode .assign(region, offset, Value::known(F::from(opcode.as_u64())))?; self.is_call.assign( @@ -532,26 +566,18 @@ impl<F: Field> ExecutionGadget<F> for CallOpGadget<F> { call.rw_counter_end_of_reversion, call.is_persistent, )?; - self.current_callee_address.assign( + self.current_callee_address.assign_h160( region, offset, - Value::known( - current_callee_address - .to_scalar() - .expect("unexpected Address -> Scalar conversion failure"), - ), + current_callee_address.to_address(), )?; - self.current_caller_address.assign( + self.current_caller_address.assign_h160( region, offset, - Value::known( - current_caller_address - .to_scalar() - .expect("unexpected Address -> Scalar conversion failure"), - ), + current_caller_address.to_address(), )?; self.current_value - .assign(region, offset, Some(current_value.to_le_bytes()))?; + .assign_u256(region, offset, current_value)?; self.is_static .assign(region, offset, Value::known(F::from(is_static.low_u64())))?; self.depth @@ -569,7 +595,7 @@ impl<F: Field> ExecutionGadget<F> for CallOpGadget<F> { rd_offset, rd_length, step.memory_word_size(), - region.word_rlc(callee_code_hash), + callee_code_hash, )?; self.is_warm .assign(region, offset, Value::known(F::from(is_warm as u64)))?; @@ -581,8 +607,19 @@ impl<F: Field> ExecutionGadget<F> for CallOpGadget<F> { callee_rw_counter_end_of_reversion.low_u64() as usize, callee_is_persistent.low_u64() != 0, )?; + + let is_call_or_callcode = is_call || is_callcode; + let is_sufficient = caller_balance >= value; + let is_precheck_ok = is_valid_depth && (is_sufficient || !is_call_or_callcode); + // conditionally assign - if !is_insufficient && !is_error_depth && !value.is_zero() { + if is_call && is_precheck_ok && !value.is_zero() { + if !callee_exists { + rws.next().account_codehash_pair(); // callee hash + } + + let caller_balance_pair = rws.next().account_balance_pair(); + let callee_balance_pair = rws.next().account_balance_pair(); self.transfer.assign( region, offset, @@ -622,7 +659,6 @@ mod test { use bus_mapping::circuit_input_builder::FixedCParams; use eth_types::{ address, bytecode, evm_types::OpcodeId, geth_types::Account, word, Address, ToWord, Word, - U64, }; use itertools::Itertools; @@ -665,7 +701,6 @@ mod test { } } - #[ignore] #[test] fn callop_recursive() { for opcode in TEST_CALL_OPCODES { @@ -673,7 +708,6 @@ mod test { } } - #[ignore] #[test] fn callop_simple() { let stacks = [ @@ -762,15 +796,7 @@ mod test { } fn callee(code: bytecode::Bytecode) -> Account { - let code = code.to_vec(); - let is_empty = code.is_empty(); - Account { - address: Address::repeat_byte(0xff), - code: code.into(), - nonce: U64::from(!is_empty as u64), - balance: if is_empty { 0 } else { 0xdeadbeefu64 }.into(), - ..Default::default() - } + Account::mock_code_balance(code) } fn caller(opcode: &OpcodeId, stack: Stack, caller_is_success: bool) -> Account { @@ -812,12 +838,7 @@ mod test { .write_op(terminator) }); - Account { - address: Address::repeat_byte(0xfe), - balance: Word::from(10).pow(20.into()), - code: bytecode.to_vec().into(), - ..Default::default() - } + Account::mock_100_ether(bytecode) } fn caller_for_insufficient_balance(opcode: &OpcodeId, stack: Stack) -> Account { @@ -842,8 +863,8 @@ mod test { Account { address: Address::repeat_byte(0xfe), - balance: Word::from(10).pow(18.into()), - code: bytecode.to_vec().into(), + balance: Word::from(10).pow(18.into()), // 1 Ether + code: bytecode.into(), ..Default::default() } } @@ -977,12 +998,7 @@ mod test { STOP }); test_ok( - Account { - address: Address::repeat_byte(0xfe), - balance: Word::from(10).pow(20.into()), - code: caller_bytecode.into(), - ..Default::default() - }, + Account::mock_100_ether(caller_bytecode), callee(callee_bytecode), ); } diff --git a/zkevm-circuits/src/evm_circuit/execution/callvalue.rs b/zkevm-circuits/src/evm_circuit/execution/callvalue.rs index 237c954096..978452a58d 100644 --- a/zkevm-circuits/src/evm_circuit/execution/callvalue.rs +++ b/zkevm-circuits/src/evm_circuit/execution/callvalue.rs @@ -5,12 +5,15 @@ use crate::{ util::{ common_gadget::SameContextGadget, constraint_builder::{EVMConstraintBuilder, StepStateTransition, Transition::Delta}, - CachedRegion, Cell, + CachedRegion, }, witness::{Block, Call, ExecStep, Transaction}, }, table::CallContextFieldTag, - util::Expr, + util::{ + word::{WordCell, WordExpr}, + Expr, + }, }; use bus_mapping::evm::OpcodeId; use eth_types::Field; @@ -21,7 +24,7 @@ pub(crate) struct CallValueGadget<F> { same_context: SameContextGadget<F>, // Value in rw_table->stack_op and call_context->call_value are both RLC // encoded, so no need to decode. - call_value: Cell<F>, + call_value: WordCell<F>, } impl<F: Field> ExecutionGadget<F> for CallValueGadget<F> { @@ -30,18 +33,17 @@ impl<F: Field> ExecutionGadget<F> for CallValueGadget<F> { const EXECUTION_STATE: ExecutionState = ExecutionState::CALLVALUE; fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { - let call_value = cb.query_cell_phase2(); + let call_value = cb.query_word_unchecked(); // Lookup rw_table -> call_context with call value - cb.call_context_lookup( - false.expr(), + cb.call_context_lookup_read( None, // cb.curr.state.call_id CallContextFieldTag::Value, - call_value.expr(), + call_value.to_word(), ); // Push the value to the stack - cb.stack_push(call_value.expr()); + cb.stack_push(call_value.to_word()); // State transition let opcode = cb.query_cell(); @@ -73,8 +75,7 @@ impl<F: Field> ExecutionGadget<F> for CallValueGadget<F> { let call_value = block.get_rws(step, 1).stack_value(); - self.call_value - .assign(region, offset, region.word_rlc(call_value))?; + self.call_value.assign_u256(region, offset, call_value)?; Ok(()) } diff --git a/zkevm-circuits/src/evm_circuit/execution/chainid.rs b/zkevm-circuits/src/evm_circuit/execution/chainid.rs index e635b1e391..920877f017 100644 --- a/zkevm-circuits/src/evm_circuit/execution/chainid.rs +++ b/zkevm-circuits/src/evm_circuit/execution/chainid.rs @@ -5,12 +5,15 @@ use crate::{ util::{ common_gadget::SameContextGadget, constraint_builder::{EVMConstraintBuilder, StepStateTransition, Transition::Delta}, - CachedRegion, Cell, + CachedRegion, }, witness::{Block, Call, ExecStep, Transaction}, }, table::BlockContextFieldTag, - util::Expr, + util::{ + word::{WordCell, WordExpr}, + Expr, + }, }; use bus_mapping::evm::OpcodeId; use eth_types::Field; @@ -19,7 +22,7 @@ use halo2_proofs::plonk::Error; #[derive(Clone, Debug)] pub(crate) struct ChainIdGadget<F> { same_context: SameContextGadget<F>, - chain_id: Cell<F>, + chain_id: WordCell<F>, } impl<F: Field> ExecutionGadget<F> for ChainIdGadget<F> { @@ -28,13 +31,17 @@ impl<F: Field> ExecutionGadget<F> for ChainIdGadget<F> { const EXECUTION_STATE: ExecutionState = ExecutionState::CHAINID; fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { - let chain_id = cb.query_cell_phase2(); + let chain_id = cb.query_word_unchecked(); // Push the value to the stack - cb.stack_push(chain_id.expr()); + cb.stack_push(chain_id.to_word()); // Lookup block table with chain_id - cb.block_lookup(BlockContextFieldTag::ChainId.expr(), None, chain_id.expr()); + cb.block_lookup( + BlockContextFieldTag::ChainId.expr(), + None, + chain_id.to_word(), + ); // State transition let opcode = cb.query_cell(); @@ -65,8 +72,7 @@ impl<F: Field> ExecutionGadget<F> for ChainIdGadget<F> { self.same_context.assign_exec_step(region, offset, step)?; let chain_id = block.get_rws(step, 0).stack_value(); - self.chain_id - .assign(region, offset, region.word_rlc(chain_id))?; + self.chain_id.assign_u256(region, offset, chain_id)?; Ok(()) } } diff --git a/zkevm-circuits/src/evm_circuit/execution/codecopy.rs b/zkevm-circuits/src/evm_circuit/execution/codecopy.rs index f47fef2936..c310e11281 100644 --- a/zkevm-circuits/src/evm_circuit/execution/codecopy.rs +++ b/zkevm-circuits/src/evm_circuit/execution/codecopy.rs @@ -1,5 +1,5 @@ use bus_mapping::{circuit_input_builder::CopyDataType, evm::OpcodeId}; -use eth_types::{evm_types::GasCost, Field, ToScalar, ToWord}; +use eth_types::{evm_types::GasCost, Field, ToScalar}; use halo2_proofs::{circuit::Value, plonk::Error}; use crate::{ @@ -11,12 +11,18 @@ use crate::{ constraint_builder::{ ConstrainBuilderCommon, EVMConstraintBuilder, StepStateTransition, Transition, }, - memory_gadget::{MemoryAddressGadget, MemoryCopierGasGadget, MemoryExpansionGadget}, + memory_gadget::{ + CommonMemoryAddressGadget, MemoryAddressGadget, MemoryCopierGasGadget, + MemoryExpansionGadget, + }, not, select, CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{Word, WordExpr}, + Expr, + }, }; use super::ExecutionGadget; @@ -53,23 +59,23 @@ impl<F: Field> ExecutionGadget<F> for CodeCopyGadget<F> { let code_size = cb.query_cell(); - let size = cb.query_word_rlc(); - let dst_memory_offset = cb.query_cell_phase2(); + let length = cb.query_memory_address(); + let dst_memory_offset = cb.query_word_unchecked(); let code_offset = WordByteCapGadget::construct(cb, code_size.expr()); // Pop items from stack. - cb.stack_pop(dst_memory_offset.expr()); - cb.stack_pop(code_offset.original_word()); - cb.stack_pop(size.expr()); + cb.stack_pop(dst_memory_offset.to_word()); + cb.stack_pop(code_offset.original_word().to_word()); + cb.stack_pop(Word::from_lo_unchecked(length.expr())); // Construct memory address in the destionation (memory) to which we copy code. - let dst_memory_addr = MemoryAddressGadget::construct(cb, dst_memory_offset, size); + let dst_memory_addr = MemoryAddressGadget::construct(cb, dst_memory_offset, length); // Fetch the hash of bytecode running in current environment. let code_hash = cb.curr.state.code_hash.clone(); // Fetch the bytecode length from the bytecode table. - cb.bytecode_length(code_hash.expr(), code_size.expr()); + cb.bytecode_length(code_hash.to_word(), code_size.expr()); // Calculate the next memory size and the gas cost for this memory // access. This also accounts for the dynamic gas required to copy bytes to @@ -91,9 +97,9 @@ impl<F: Field> ExecutionGadget<F> for CodeCopyGadget<F> { ); cb.copy_table_lookup( - code_hash.expr(), + code_hash.to_word(), CopyDataType::Bytecode.expr(), - cb.curr.state.call_id.expr(), + Word::from_lo_unchecked(cb.curr.state.call_id.expr()), CopyDataType::Memory.expr(), src_addr, code_size.expr(), @@ -156,10 +162,10 @@ impl<F: Field> ExecutionGadget<F> for CodeCopyGadget<F> { let bytecode = block .bytecodes - .get(&call.code_hash.to_word()) + .get_from_h256(&call.code_hash) .expect("could not find current environment's bytecode"); - let code_size = bytecode.bytes.len() as u64; + let code_size = bytecode.codesize() as u64; self.code_size .assign(region, offset, Value::known(F::from(code_size)))?; diff --git a/zkevm-circuits/src/evm_circuit/execution/codesize.rs b/zkevm-circuits/src/evm_circuit/execution/codesize.rs index 86df028c24..cab8f2253c 100644 --- a/zkevm-circuits/src/evm_circuit/execution/codesize.rs +++ b/zkevm-circuits/src/evm_circuit/execution/codesize.rs @@ -1,4 +1,3 @@ -use array_init::array_init; use bus_mapping::evm::OpcodeId; use eth_types::Field; use halo2_proofs::{circuit::Value, plonk::Error}; @@ -11,11 +10,11 @@ use crate::{ constraint_builder::{ ConstrainBuilderCommon, EVMConstraintBuilder, StepStateTransition, Transition, }, - from_bytes, CachedRegion, Cell, + CachedRegion, Cell, U64Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{word::WordExpr, Expr}, }; use super::ExecutionGadget; @@ -23,7 +22,7 @@ use super::ExecutionGadget; #[derive(Clone, Debug)] pub(crate) struct CodesizeGadget<F> { same_context: SameContextGadget<F>, - codesize_bytes: [Cell<F>; 8], + codesize_bytes: U64Cell<F>, codesize: Cell<F>, } @@ -35,19 +34,19 @@ impl<F: Field> ExecutionGadget<F> for CodesizeGadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { let opcode = cb.query_cell(); - let codesize_bytes = array_init(|_| cb.query_byte()); + let codesize_bytes = cb.query_u64(); let code_hash = cb.curr.state.code_hash.clone(); let codesize = cb.query_cell(); - cb.bytecode_length(code_hash.expr(), codesize.expr()); + cb.bytecode_length(code_hash.to_word(), codesize.expr()); cb.require_equal( "Constraint: bytecode length lookup == codesize", - from_bytes::expr(&codesize_bytes), + codesize_bytes.expr(), codesize.expr(), ); - cb.stack_push(cb.word_rlc(codesize_bytes.clone().map(|c| c.expr()))); + cb.stack_push(codesize_bytes.to_word()); let step_state_transition = StepStateTransition { gas_left: Transition::Delta(-OpcodeId::CODESIZE.constant_gas_cost().expr()), @@ -78,13 +77,8 @@ impl<F: Field> ExecutionGadget<F> for CodesizeGadget<F> { let codesize = block.get_rws(step, 0).stack_value().as_u64(); - for (c, b) in self - .codesize_bytes - .iter() - .zip(codesize.to_le_bytes().iter()) - { - c.assign(region, offset, Value::known(F::from(*b as u64)))?; - } + self.codesize_bytes + .assign(region, offset, Some(codesize.to_le_bytes()))?; self.codesize .assign(region, offset, Value::known(F::from(codesize)))?; diff --git a/zkevm-circuits/src/evm_circuit/execution/comparator.rs b/zkevm-circuits/src/evm_circuit/execution/comparator.rs index 9d593ef747..efcb877992 100644 --- a/zkevm-circuits/src/evm_circuit/execution/comparator.rs +++ b/zkevm-circuits/src/evm_circuit/execution/comparator.rs @@ -5,27 +5,28 @@ use crate::{ util::{ common_gadget::SameContextGadget, constraint_builder::{EVMConstraintBuilder, StepStateTransition, Transition::Delta}, - from_bytes, - math_gadget::{ComparisonGadget, IsEqualGadget}, - select, CachedRegion, Cell, Word, + math_gadget::{CmpWordsGadget, IsEqualGadget}, + select, CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{Word, WordCell, WordExpr}, + Expr, + }, }; -use eth_types::{evm_types::OpcodeId, Field, ToLittleEndian}; +use eth_types::{evm_types::OpcodeId, Field}; use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] pub(crate) struct ComparatorGadget<F> { same_context: SameContextGadget<F>, - a: Word<F>, - b: Word<F>, + a: WordCell<F>, + b: WordCell<F>, result: Cell<F>, - comparison_lo: ComparisonGadget<F, 16>, - comparison_hi: ComparisonGadget<F, 16>, is_eq: IsEqualGadget<F>, is_gt: IsEqualGadget<F>, + word_comparison: CmpWordsGadget<F, WordCell<F>, WordCell<F>>, } impl<F: Field> ExecutionGadget<F> for ComparatorGadget<F> { @@ -36,8 +37,8 @@ impl<F: Field> ExecutionGadget<F> for ComparatorGadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { let opcode = cb.query_cell(); - let a = cb.query_word_rlc(); - let b = cb.query_word_rlc(); + let a = cb.query_word_unchecked(); + let b = cb.query_word_unchecked(); // Check if opcode is EQ let is_eq = IsEqualGadget::construct(cb, opcode.expr(), OpcodeId::EQ.expr()); @@ -45,42 +46,25 @@ impl<F: Field> ExecutionGadget<F> for ComparatorGadget<F> { // actually do greater than instead of smaller than. let is_gt = IsEqualGadget::construct(cb, opcode.expr(), OpcodeId::GT.expr()); - // `a[0..16] <= b[0..16]` - let comparison_lo = ComparisonGadget::construct( - cb, - from_bytes::expr(&a.cells[0..16]), - from_bytes::expr(&b.cells[0..16]), - ); - let (lt_lo, eq_lo) = comparison_lo.expr(); - - // `a[16..32] <= b[16..32]` - let comparison_hi = ComparisonGadget::construct( - cb, - from_bytes::expr(&a.cells[16..32]), - from_bytes::expr(&b.cells[16..32]), - ); - let (lt_hi, eq_hi) = comparison_hi.expr(); - - // `a < b` when: - // - `a[16..32] < b[16..32]` OR - // - `a[16..32] == b[16..32]` AND `a[0..16] < b[0..16]` - let lt = select::expr(lt_hi, 1.expr(), eq_hi.clone() * lt_lo); - // `a == b` when both parts are equal - let eq = eq_hi * eq_lo; + let word_comparison = CmpWordsGadget::construct(cb, a.clone(), b.clone()); // The result is: // - `lt` when LT or GT // - `eq` when EQ // Use copy to avoid degree too high for stack_push below. - let result = cb.copy(select::expr(is_eq.expr(), eq, lt)); + let result = cb.copy(select::expr( + is_eq.expr(), + word_comparison.eq.clone(), + word_comparison.lt.clone(), + )); // Pop a and b from the stack, push the result on the stack. // When swap is enabled we swap stack places between a and b. // We can push result here directly because // it only uses the LSB of a word. - cb.stack_pop(select::expr(is_gt.expr(), b.expr(), a.expr())); - cb.stack_pop(select::expr(is_gt.expr(), a.expr(), b.expr())); - cb.stack_push(result.expr()); + cb.stack_pop(Word::select(is_gt.expr(), b.to_word(), a.to_word())); + cb.stack_pop(Word::select(is_gt.expr(), a.to_word(), b.to_word())); + cb.stack_push(Word::from_lo_unchecked(result.expr())); // State transition let step_state_transition = StepStateTransition { @@ -96,9 +80,8 @@ impl<F: Field> ExecutionGadget<F> for ComparatorGadget<F> { same_context, a, b, + word_comparison, result, - comparison_lo, - comparison_hi, is_eq, is_gt, } @@ -134,27 +117,12 @@ impl<F: Field> ExecutionGadget<F> for ComparatorGadget<F> { )?; let indices = if is_gt == F::ONE { [1, 0] } else { [0, 1] }; - let [a, b] = indices.map(|index| block.get_rws(step, index).stack_value().to_le_bytes()); + let [a, b] = indices.map(|index| block.get_rws(step, index).stack_value()); let result = block.get_rws(step, 2).stack_value(); - // `a[0..16] <= b[0..16]` - self.comparison_lo.assign( - region, - offset, - from_bytes::value(&a[0..16]), - from_bytes::value(&b[0..16]), - )?; - - // `a[16..32] <= b[16..32]` - self.comparison_hi.assign( - region, - offset, - from_bytes::value(&a[16..32]), - from_bytes::value(&b[16..32]), - )?; - - self.a.assign(region, offset, Some(a))?; - self.b.assign(region, offset, Some(b))?; + self.word_comparison.assign(region, offset, a, b)?; + self.a.assign_u256(region, offset, a)?; + self.b.assign_u256(region, offset, b)?; self.result .assign(region, offset, Value::known(F::from(result.low_u64())))?; diff --git a/zkevm-circuits/src/evm_circuit/execution/create.rs b/zkevm-circuits/src/evm_circuit/execution/create.rs index 0c70870021..47898f4ac7 100644 --- a/zkevm-circuits/src/evm_circuit/execution/create.rs +++ b/zkevm-circuits/src/evm_circuit/execution/create.rs @@ -13,24 +13,33 @@ use crate::{ Transition::{Delta, To}, }, math_gadget::{ - ConstantDivisionGadget, ContractCreateGadget, IsZeroGadget, LtGadget, LtWordGadget, + ConstantDivisionGadget, ContractCreateGadget, IsZeroGadget, IsZeroWordGadget, + LtGadget, LtWordGadget, }, - memory_gadget::{MemoryAddressGadget, MemoryExpansionGadget}, - not, CachedRegion, Cell, Word, + memory_gadget::{ + CommonMemoryAddressGadget, MemoryAddressGadget, MemoryExpansionGadget, + }, + not, AccountAddress, CachedRegion, Cell, Word, WordExpr, }, witness::{Block, Call, ExecStep, Transaction}, }, table::{AccountFieldTag, CallContextFieldTag}, - util::Expr, + util::{ + word::{Word32Cell, WordCell}, + Expr, + }, }; use bus_mapping::{circuit_input_builder::CopyDataType, evm::OpcodeId, state_db::CodeDB}; use eth_types::{ evm_types::{GasCost, INIT_CODE_WORD_GAS}, - Field, ToBigEndian, ToLittleEndian, ToScalar, U256, + Field, ToBigEndian, ToScalar, U256, }; use ethers_core::utils::keccak256; -use gadgets::util::{and, expr_from_bytes, or, select}; -use halo2_proofs::{circuit::Value, plonk::Error}; +use gadgets::util::{and, or, select}; +use halo2_proofs::{ + circuit::Value, + plonk::{Error, Expression}, +}; use std::iter::once; @@ -45,24 +54,24 @@ pub(crate) struct CreateGadget<F, const IS_CREATE2: bool, const S: ExecutionStat is_create2: IsZeroGadget<F>, is_success: Cell<F>, was_warm: Cell<F>, - value: Word<F>, + value: Word32Cell<F>, - caller_balance: Word<F>, + caller_balance: WordCell<F>, callee_reversion_info: ReversionInfo<F>, callee_nonce: Cell<F>, - prev_code_hash: Cell<F>, + prev_code_hash: WordCell<F>, transfer: TransferGadget<F>, create: ContractCreateGadget<F, IS_CREATE2>, init_code: MemoryAddressGadget<F>, init_code_word_size: ConstantDivisionGadget<F, N_BYTES_MEMORY_ADDRESS>, init_code_rlc: Cell<F>, - keccak_output: Word<F>, + keccak_output: Word32Cell<F>, is_depth_in_range: LtGadget<F, N_BYTES_U64>, is_insufficient_balance: LtWordGadget<F>, is_nonce_in_range: LtGadget<F, N_BYTES_U64>, - not_address_collision: IsZeroGadget<F>, + not_address_collision: IsZeroWordGadget<F, Word<Expression<F>>>, memory_expansion: MemoryExpansionGadget<F, 1, N_BYTES_MEMORY_WORD_SIZE>, gas_left: ConstantDivisionGadget<F, N_BYTES_GAS>, @@ -95,49 +104,45 @@ impl<F: Field, const IS_CREATE2: bool, const S: ExecutionState> ExecutionGadget< let depth = cb.call_context(None, CallContextFieldTag::Depth); let mut reversion_info = cb.reversion_info_read(None); - let keccak_output = cb.query_word_rlc(); + let keccak_output = cb.query_word32(); let create = ContractCreateGadget::construct(cb); - let contract_addr = expr_from_bytes(&keccak_output.cells[..N_BYTES_ACCOUNT_ADDRESS]); - let contract_addr_rlc = cb.word_rlc::<N_BYTES_ACCOUNT_ADDRESS>( - keccak_output - .cells - .iter() - .take(N_BYTES_ACCOUNT_ADDRESS) - .map(Expr::expr) - .collect::<Vec<_>>() + let contract_addr = AccountAddress::new( + keccak_output.limbs[..N_BYTES_ACCOUNT_ADDRESS] + .to_vec() .try_into() .unwrap(), ); // stack operations - let value = cb.query_word_rlc(); - let offset = cb.query_cell_phase2(); - let length = cb.query_word_rlc(); - cb.stack_pop(value.expr()); - cb.stack_pop(offset.expr()); - cb.stack_pop(length.expr()); + let value = cb.query_word32(); + let length = cb.query_memory_address(); + let offset = cb.query_word_unchecked(); + cb.stack_pop(value.to_word()); + cb.stack_pop(offset.to_word()); + cb.stack_pop(length.to_word()); cb.condition(is_create2.expr(), |cb| { - cb.stack_pop(create.salt_word_rlc(cb).expr()); + cb.stack_pop(create.salt()); }); - cb.stack_push(is_success.expr() * contract_addr_rlc); + cb.stack_push(contract_addr.to_word().mul_selector(is_success.expr())); // read caller's balance and nonce let caller_nonce = create.caller_nonce(); - let caller_balance = cb.query_word_rlc(); + let caller_balance = cb.query_word_unchecked(); cb.account_read( create.caller_address(), AccountFieldTag::Balance, - caller_balance.expr(), + caller_balance.to_word(), ); cb.account_read( create.caller_address(), AccountFieldTag::Nonce, - caller_nonce.expr(), + Word::from_lo_unchecked(caller_nonce.expr()), ); // Pre-check: call depth, user's nonce and user's balance let is_depth_in_range = LtGadget::construct(cb, depth.expr(), 1025.expr()); - let is_insufficient_balance = LtWordGadget::construct(cb, &caller_balance, &value); + let is_insufficient_balance = + LtWordGadget::construct(cb, &caller_balance.to_word(), &value.to_word()); let is_nonce_in_range = LtGadget::construct(cb, caller_nonce.expr(), u64::MAX.expr()); let is_precheck_ok = and::expr([ is_depth_in_range.expr(), @@ -166,22 +171,22 @@ impl<F: Field, const IS_CREATE2: bool, const S: ExecutionState> ExecutionGadget< let was_warm = cb.query_bool(); let init_code_rlc = cb.query_cell_phase2(); - let prev_code_hash = cb.query_cell(); + let prev_code_hash = cb.query_word_unchecked(); let callee_nonce = cb.query_cell(); let not_address_collision = cb.condition(is_precheck_ok.expr(), |cb| { // increase caller's nonce cb.account_write( create.caller_address(), AccountFieldTag::Nonce, - caller_nonce.expr() + 1.expr(), - caller_nonce.expr(), + Word::from_lo_unchecked(caller_nonce.expr() + 1.expr()), + Word::from_lo_unchecked(caller_nonce.expr()), Some(&mut reversion_info), ); // add callee to access list - cb.account_access_list_write( + cb.account_access_list_write_unchecked( tx_id.expr(), - contract_addr.clone(), + contract_addr.to_word(), 1.expr(), was_warm.expr(), Some(&mut reversion_info), @@ -189,43 +194,56 @@ impl<F: Field, const IS_CREATE2: bool, const S: ExecutionState> ExecutionGadget< // read contract's previous hash cb.account_read( - contract_addr.clone(), + contract_addr.to_word(), AccountFieldTag::CodeHash, - prev_code_hash.expr(), + prev_code_hash.to_word(), ); // ErrContractAddressCollision, if any one of following criteria meets. // Nonce is not zero or account code hash is not either 0 or EMPTY_CODE_HASH. - IsZeroGadget::construct( + // Here use `isZeroWord(callee_nonce + prev_code_hash_word * (prev_code_hash_word - + // empty_code_hash_word))` to represent `(callee_nonce == 0 && (prev_code_hash_word == 0 + // or prev_code_hash_word == empty_code_hash_word))` + let prev_code_hash_word = prev_code_hash.to_word(); + IsZeroWordGadget::construct( cb, - callee_nonce.expr() - + prev_code_hash.expr() * (prev_code_hash.expr() - cb.empty_code_hash_rlc()), + &Word::from_lo_unchecked(callee_nonce.expr()).add_unchecked( + prev_code_hash_word + .clone() + .mul_unchecked(prev_code_hash_word.sub_unchecked(cb.empty_code_hash())), + ), ) }); for (field_tag, value) in [ ( CallContextFieldTag::ProgramCounter, - cb.curr.state.program_counter.expr() + 1.expr(), + Word::from_lo_unchecked(cb.curr.state.program_counter.expr() + 1.expr()), ), ( CallContextFieldTag::StackPointer, - cb.curr.state.stack_pointer.expr() + 2.expr() + is_create2.expr(), + Word::from_lo_unchecked( + cb.curr.state.stack_pointer.expr() + 2.expr() + is_create2.expr(), + ), + ), + ( + CallContextFieldTag::GasLeft, + Word::from_lo_unchecked(gas_left.quotient()), ), - (CallContextFieldTag::GasLeft, gas_left.quotient()), ( CallContextFieldTag::MemorySize, - memory_expansion.next_memory_word_size(), + Word::from_lo_unchecked(memory_expansion.next_memory_word_size()), ), ( CallContextFieldTag::ReversibleWriteCounter, - cb.curr.state.reversible_write_counter.expr() + 2.expr(), + Word::from_lo_unchecked(cb.curr.state.reversible_write_counter.expr() + 2.expr()), ), ] { - cb.call_context_lookup(true.expr(), None, field_tag, value); + cb.call_context_lookup_write(None, field_tag, value); } - let mut callee_reversion_info = cb.reversion_info_write(Some(callee_call_id.expr())); + let mut callee_reversion_info = + cb.reversion_info_write_unchecked(Some(callee_call_id.expr())); let transfer = cb.condition( and::expr([is_precheck_ok.clone(), not_address_collision.expr()]), |cb| { @@ -233,9 +251,9 @@ impl<F: Field, const IS_CREATE2: bool, const S: ExecutionState> ExecutionGadget< // the init code is being copied from memory to bytecode, so a copy table lookup // to verify that the associated fields for the copy event. cb.copy_table_lookup( - current_call_id.expr(), + Word::from_lo_unchecked(current_call_id.expr()), CopyDataType::Memory.expr(), - create.code_hash_word_rlc(cb), + create.code_hash(), CopyDataType::Bytecode.expr(), init_code.offset(), init_code.address(), @@ -250,7 +268,7 @@ impl<F: Field, const IS_CREATE2: bool, const S: ExecutionState> ExecutionGadget< cb.keccak_table_lookup( create.input_rlc(cb), create.input_length(), - keccak_output.expr(), + keccak_output.to_word(), ); // propagate is_persistent @@ -264,7 +282,7 @@ impl<F: Field, const IS_CREATE2: bool, const S: ExecutionState> ExecutionGadget< let transfer = TransferGadget::construct( cb, create.caller_address(), - contract_addr.clone(), + contract_addr.to_word(), 0.expr(), 1.expr(), value.clone(), @@ -273,40 +291,58 @@ impl<F: Field, const IS_CREATE2: bool, const S: ExecutionState> ExecutionGadget< // EIP 161, the nonce of a newly created contract is 1 cb.account_write( - contract_addr.clone(), + contract_addr.to_word(), AccountFieldTag::Nonce, - 1.expr(), - 0.expr(), + Word::one(), + Word::zero(), Some(&mut callee_reversion_info), ); cb.condition(init_code.has_length(), |cb| { for (field_tag, value) in [ - (CallContextFieldTag::CallerId, current_call_id.expr()), - (CallContextFieldTag::IsSuccess, is_success.expr()), + ( + CallContextFieldTag::CallerId, + Word::from_lo_unchecked(current_call_id.expr()), + ), + ( + CallContextFieldTag::IsSuccess, + Word::from_lo_unchecked(is_success.expr()), + ), ( CallContextFieldTag::IsPersistent, - callee_reversion_info.is_persistent(), + Word::from_lo_unchecked(callee_reversion_info.is_persistent()), + ), + ( + CallContextFieldTag::TxId, + Word::from_lo_unchecked(tx_id.expr()), ), - (CallContextFieldTag::TxId, tx_id.expr()), (CallContextFieldTag::CallerAddress, create.caller_address()), - (CallContextFieldTag::CalleeAddress, contract_addr), + (CallContextFieldTag::CalleeAddress, contract_addr.to_word()), ( CallContextFieldTag::RwCounterEndOfReversion, - callee_reversion_info.rw_counter_end_of_reversion(), + Word::from_lo_unchecked( + callee_reversion_info.rw_counter_end_of_reversion(), + ), + ), + ( + CallContextFieldTag::Depth, + Word::from_lo_unchecked(depth.expr() + 1.expr()), + ), + ( + CallContextFieldTag::IsRoot, + Word::from_lo_unchecked(false.expr()), + ), + ( + CallContextFieldTag::IsStatic, + Word::from_lo_unchecked(false.expr()), + ), + ( + CallContextFieldTag::IsCreate, + Word::from_lo_unchecked(true.expr()), ), - (CallContextFieldTag::Depth, depth.expr() + 1.expr()), - (CallContextFieldTag::IsRoot, false.expr()), - (CallContextFieldTag::IsStatic, false.expr()), - (CallContextFieldTag::IsCreate, true.expr()), - (CallContextFieldTag::CodeHash, create.code_hash_word_rlc(cb)), + (CallContextFieldTag::CodeHash, create.code_hash()), ] { - cb.call_context_lookup( - true.expr(), - Some(callee_call_id.expr()), - field_tag, - value, - ); + cb.call_context_lookup_write(Some(callee_call_id.expr()), field_tag, value); } cb.require_step_state_transition(StepStateTransition { @@ -314,7 +350,7 @@ impl<F: Field, const IS_CREATE2: bool, const S: ExecutionState> ExecutionGadget< call_id: To(callee_call_id.expr()), is_root: To(false.expr()), is_create: To(true.expr()), - code_hash: To(create.code_hash_word_rlc(cb)), + code_hash: To(create.code_hash()), gas_left: To(callee_gas_left), reversible_write_counter: To( 1.expr() + transfer.reversible_w_delta().expr() @@ -330,7 +366,7 @@ impl<F: Field, const IS_CREATE2: bool, const S: ExecutionState> ExecutionGadget< CallContextFieldTag::LastCalleeReturnDataOffset, CallContextFieldTag::LastCalleeReturnDataLength, ] { - cb.call_context_lookup(true.expr(), None, field_tag, 0.expr()); + cb.call_context_lookup_write(None, field_tag, Word::zero()); } cb.require_step_state_transition(StepStateTransition { rw_counter: Delta(cb.rw_counter_offset()), @@ -373,7 +409,7 @@ impl<F: Field, const IS_CREATE2: bool, const S: ExecutionState> ExecutionGadget< CallContextFieldTag::LastCalleeReturnDataOffset, CallContextFieldTag::LastCalleeReturnDataLength, ] { - cb.call_context_lookup(true.expr(), None, field_tag, 0.expr()); + cb.call_context_lookup_write(None, field_tag, Word::zero()); } cb.require_step_state_transition(StepStateTransition { @@ -452,8 +488,7 @@ impl<F: Field, const IS_CREATE2: bool, const S: ExecutionState> ExecutionGadget< // stack value starts from 4 let [value, init_code_start, init_code_length] = [4, 5, 6].map(|idx| block.get_rws(step, idx).stack_value()); - self.value - .assign(region, offset, Some(value.to_le_bytes()))?; + self.value.assign_u256(region, offset, value)?; let salt = if is_create2 { block.get_rws(step, 7).stack_value() } else { @@ -462,8 +497,8 @@ impl<F: Field, const IS_CREATE2: bool, const S: ExecutionState> ExecutionGadget< let rw_offset = if is_create2 { 8 } else { 7 }; // Pre-check: call depth, user's nonce and user's balance - let (caller_balance, _) = block.get_rws(step, rw_offset + 1).account_value_pair(); - let (caller_nonce, _) = block.get_rws(step, rw_offset + 2).account_value_pair(); + let (caller_balance, _) = block.get_rws(step, rw_offset + 1).account_balance_pair(); + let (caller_nonce, _) = block.get_rws(step, rw_offset + 2).account_nonce_pair(); let is_precheck_ok = if call.depth < 1025 && caller_balance >= value && caller_nonce.as_u64() < u64::MAX { 1 @@ -472,13 +507,13 @@ impl<F: Field, const IS_CREATE2: bool, const S: ExecutionState> ExecutionGadget< }; self.caller_balance - .assign(region, offset, Some(caller_balance.to_le_bytes()))?; + .assign_u256(region, offset, caller_balance)?; let (callee_prev_code_hash, was_warm) = if is_precheck_ok == 1 { let (_, was_warm) = block .get_rws(step, rw_offset + 4) .tx_access_list_value_pair(); let (callee_prev_code_hash, _) = - block.get_rws(step, rw_offset + 5).account_value_pair(); + block.get_rws(step, rw_offset + 5).account_codehash_pair(); (callee_prev_code_hash, was_warm) } else { (U256::from(0), false) @@ -494,17 +529,20 @@ impl<F: Field, const IS_CREATE2: bool, const S: ExecutionState> ExecutionGadget< // retrieve code_hash for creating address let is_address_collision = !callee_prev_code_hash.is_zero(); - let code_hash_previous_rlc = if is_address_collision { - region.code_hash(callee_prev_code_hash) - } else { - Value::known(F::ZERO) - }; - self.prev_code_hash - .assign(region, offset, code_hash_previous_rlc)?; - self.not_address_collision.assign( + + self.prev_code_hash.assign_u256( region, offset, - F::from((is_address_collision).into()), + if is_address_collision { + callee_prev_code_hash + } else { + U256::from(0) + }, + )?; + self.not_address_collision.assign_u256( + region, + offset, + U256::from(is_address_collision as u8), )?; // gas cost of memory expansion @@ -548,7 +586,7 @@ impl<F: Field, const IS_CREATE2: bool, const S: ExecutionState> ExecutionGadget< rw_offset + copy_rw_increase + 14, rw_offset + copy_rw_increase + 15, ] - .map(|i| block.get_rws(step, i).account_value_pair()) + .map(|i| block.get_rws(step, i).account_balance_pair()) } else { [(0.into(), 0.into()), (0.into(), 0.into())] }; @@ -581,8 +619,11 @@ impl<F: Field, const IS_CREATE2: bool, const S: ExecutionState> ExecutionGadget< let mut keccak_output = keccak256(keccak_input); keccak_output.reverse(); - self.keccak_output - .assign(region, offset, Some(keccak_output))?; + self.keccak_output.assign_u256( + region, + offset, + U256::from_little_endian(&keccak_output), + )?; self.init_code_rlc.assign( region, offset, @@ -650,7 +691,6 @@ mod test { use lazy_static::lazy_static; use mock::{eth, TestContext}; - const CALLEE_ADDRESS: Address = Address::repeat_byte(0xff); lazy_static! { static ref CALLER_ADDRESS: Address = address!("0x00bbccddee000000000000000000000000002400"); } diff --git a/zkevm-circuits/src/evm_circuit/execution/dummy.rs b/zkevm-circuits/src/evm_circuit/execution/dummy.rs index eda17c468d..425aa1a443 100644 --- a/zkevm-circuits/src/evm_circuit/execution/dummy.rs +++ b/zkevm-circuits/src/evm_circuit/execution/dummy.rs @@ -4,18 +4,18 @@ use crate::{ evm_circuit::{ execution::ExecutionGadget, step::ExecutionState, - util::{constraint_builder::EVMConstraintBuilder, CachedRegion, Word}, + util::{constraint_builder::EVMConstraintBuilder, CachedRegion}, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::word::{WordCell, WordExpr}, }; -use eth_types::{Field, ToLittleEndian}; +use eth_types::Field; use halo2_proofs::plonk::Error; #[derive(Clone, Debug)] pub(crate) struct DummyGadget<F, const N_POP: usize, const N_PUSH: usize, const S: ExecutionState> { - pops: [Word<F>; N_POP], - pushes: [Word<F>; N_PUSH], + pops: [WordCell<F>; N_POP], + pushes: [WordCell<F>; N_PUSH], _marker: PhantomData<F>, } @@ -27,13 +27,13 @@ impl<F: Field, const N_POP: usize, const N_PUSH: usize, const S: ExecutionState> const EXECUTION_STATE: ExecutionState = S; fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { - let pops: [Word<F>; N_POP] = [(); N_POP].map(|_| cb.query_word_rlc()); - let pushes: [Word<F>; N_PUSH] = [(); N_PUSH].map(|_| cb.query_word_rlc()); + let pops: [WordCell<F>; N_POP] = [(); N_POP].map(|_| cb.query_word_unchecked()); + let pushes: [WordCell<F>; N_PUSH] = [(); N_PUSH].map(|_| cb.query_word_unchecked()); for pop in pops.iter() { - cb.stack_pop(pop.expr()); + cb.stack_pop(pop.to_word()); } for push in pushes.iter() { - cb.stack_push(push.expr()); + cb.stack_push(push.to_word()); } Self { pops, @@ -61,11 +61,11 @@ impl<F: Field, const N_POP: usize, const N_PUSH: usize, const S: ExecutionState> for i in 0..N_POP { let value = block.get_rws(step, i).stack_value(); - self.pops[i].assign(region, offset, Some(value.to_le_bytes()))?; + self.pops[i].assign_u256(region, offset, value)?; } for i in 0..N_PUSH { let value = block.get_rws(step, N_POP + i).stack_value(); - self.pushes[i].assign(region, offset, Some(value.to_le_bytes()))?; + self.pushes[i].assign_u256(region, offset, value)?; } Ok(()) } diff --git a/zkevm-circuits/src/evm_circuit/execution/dup.rs b/zkevm-circuits/src/evm_circuit/execution/dup.rs index 9dc0816dd7..49c2a58a0a 100644 --- a/zkevm-circuits/src/evm_circuit/execution/dup.rs +++ b/zkevm-circuits/src/evm_circuit/execution/dup.rs @@ -5,11 +5,14 @@ use crate::{ util::{ common_gadget::SameContextGadget, constraint_builder::{EVMConstraintBuilder, StepStateTransition, Transition::Delta}, - CachedRegion, Cell, + CachedRegion, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{WordCell, WordExpr}, + Expr, + }, }; use eth_types::{evm_types::OpcodeId, Field}; use halo2_proofs::plonk::Error; @@ -17,7 +20,7 @@ use halo2_proofs::plonk::Error; #[derive(Clone, Debug)] pub(crate) struct DupGadget<F> { same_context: SameContextGadget<F>, - value: Cell<F>, + value: WordCell<F>, } impl<F: Field> ExecutionGadget<F> for DupGadget<F> { @@ -28,15 +31,15 @@ impl<F: Field> ExecutionGadget<F> for DupGadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { let opcode = cb.query_cell(); - let value = cb.query_cell_phase2(); + let value = cb.query_word_unchecked(); // The stack index we have to peek, deduced from the 'x' value of 'dupx' // The offset starts at 0 for DUP1 let dup_offset = opcode.expr() - OpcodeId::DUP1.expr(); // Peek the value at `dup_offset` and push the value on the stack - cb.stack_lookup(false.expr(), dup_offset, value.expr()); - cb.stack_push(value.expr()); + cb.stack_lookup(false.expr(), dup_offset, value.to_word()); + cb.stack_push(value.to_word()); // State transition let step_state_transition = StepStateTransition { @@ -66,7 +69,7 @@ impl<F: Field> ExecutionGadget<F> for DupGadget<F> { self.same_context.assign_exec_step(region, offset, step)?; let value = block.get_rws(step, 0).stack_value(); - self.value.assign(region, offset, region.word_rlc(value))?; + self.value.assign_u256(region, offset, value)?; Ok(()) } diff --git a/zkevm-circuits/src/evm_circuit/execution/end_block.rs b/zkevm-circuits/src/evm_circuit/execution/end_block.rs index 4ed697017e..48e083602b 100644 --- a/zkevm-circuits/src/evm_circuit/execution/end_block.rs +++ b/zkevm-circuits/src/evm_circuit/execution/end_block.rs @@ -12,9 +12,10 @@ use crate::{ witness::{Block, Call, ExecStep, Transaction}, }, table::{CallContextFieldTag, TxContextFieldTag}, - util::Expr, + util::{word::Word, Expr}, }; use eth_types::Field; +use gadgets::util::select; use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] @@ -26,8 +27,6 @@ pub(crate) struct EndBlockGadget<F> { max_txs: Cell<F>, } -const EMPTY_BLOCK_N_RWS: u64 = 0; - impl<F: Field> ExecutionGadget<F> for EndBlockGadget<F> { const NAME: &'static str = "EndBlock"; @@ -41,10 +40,13 @@ impl<F: Field> ExecutionGadget<F> for EndBlockGadget<F> { // Note that rw_counter starts at 1 let is_empty_block = IsZeroGadget::construct(cb, cb.curr.state.rw_counter.clone().expr() - 1.expr()); - // If the block is empty, we do 0 rw_table lookups - // If the block is not empty, we will do 1 call_context lookup - let total_rws = not::expr(is_empty_block.expr()) - * (cb.curr.state.rw_counter.clone().expr() - 1.expr() + 1.expr()); + + let total_rws_before_padding = cb.curr.state.rw_counter.clone().expr() - 1.expr() + + select::expr( + is_empty_block.expr(), + 0.expr(), + 1.expr(), // If the block is not empty, we will do 1 call_context lookup below + ); // 1. Constraint total_rws and total_txs witness values depending on the empty // block case. @@ -54,7 +56,11 @@ impl<F: Field> ExecutionGadget<F> for EndBlockGadget<F> { }); cb.condition(not::expr(is_empty_block.expr()), |cb| { // 1b. total_txs matches the tx_id that corresponds to the final step. - cb.call_context_lookup(0.expr(), None, CallContextFieldTag::TxId, total_txs.expr()); + cb.call_context_lookup_read( + None, + CallContextFieldTag::TxId, + Word::from_lo_unchecked(total_txs.expr()), + ); }); // 2. If total_txs == max_txs, we know we have covered all txs from the @@ -68,7 +74,7 @@ impl<F: Field> ExecutionGadget<F> for EndBlockGadget<F> { total_txs.expr() + 1.expr(), TxContextFieldTag::CallerAddress, None, - 0.expr(), + Word::zero(), ); // Since every tx lookup done in the EVM circuit must succeed // and uses a unique tx_id, we know that at @@ -81,7 +87,7 @@ impl<F: Field> ExecutionGadget<F> for EndBlockGadget<F> { // rw_table to ensure there is no malicious insertion. // Verify that there are at most total_rws meaningful entries in the rw_table cb.rw_table_start_lookup(1.expr()); - cb.rw_table_start_lookup(max_rws.expr() - total_rws.expr()); + cb.rw_table_start_lookup(max_rws.expr() - total_rws_before_padding.expr()); // Since every lookup done in the EVM circuit must succeed and uses // a unique rw_counter, we know that at least there are // total_rws meaningful entries in the rw_table. diff --git a/zkevm-circuits/src/evm_circuit/execution/end_tx.rs b/zkevm-circuits/src/evm_circuit/execution/end_tx.rs index f278daa7b6..adbca037e6 100644 --- a/zkevm-circuits/src/evm_circuit/execution/end_tx.rs +++ b/zkevm-circuits/src/evm_circuit/execution/end_tx.rs @@ -4,24 +4,30 @@ use crate::{ param::N_BYTES_GAS, step::ExecutionState, util::{ - common_gadget::UpdateBalanceGadget, + common_gadget::{TransferToGadget, UpdateBalanceGadget}, constraint_builder::{ ConstrainBuilderCommon, EVMConstraintBuilder, StepStateTransition, Transition::{Delta, Same}, }, math_gadget::{ - AddWordsGadget, ConstantDivisionGadget, IsEqualGadget, MinMaxGadget, - MulWordByU64Gadget, + AddWordsGadget, ConstantDivisionGadget, IsEqualGadget, IsZeroWordGadget, + MinMaxGadget, MulWordByU64Gadget, }, CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, - table::{BlockContextFieldTag, CallContextFieldTag, TxContextFieldTag, TxReceiptFieldTag}, - util::Expr, + table::{ + AccountFieldTag, BlockContextFieldTag, CallContextFieldTag, TxContextFieldTag, + TxReceiptFieldTag, + }, + util::{ + word::{Word, WordCell, WordExpr}, + Expr, + }, }; use bus_mapping::operation::Target; -use eth_types::{evm_types::MAX_REFUND_QUOTIENT_OF_GAS_USED, Field, ToScalar}; +use eth_types::{evm_types::MAX_REFUND_QUOTIENT_OF_GAS_USED, Field}; use halo2_proofs::{circuit::Value, plonk::Error}; use strum::EnumCount; @@ -33,12 +39,14 @@ pub(crate) struct EndTxGadget<F> { refund: Cell<F>, effective_refund: MinMaxGadget<F, N_BYTES_GAS>, mul_gas_price_by_refund: MulWordByU64Gadget<F>, - tx_caller_address: Cell<F>, + tx_caller_address: WordCell<F>, gas_fee_refund: UpdateBalanceGadget<F, 2, true>, sub_gas_price_by_base_fee: AddWordsGadget<F, 2, true>, mul_effective_tip_by_gas_used: MulWordByU64Gadget<F>, - coinbase: Cell<F>, - coinbase_reward: UpdateBalanceGadget<F, 2, true>, + coinbase: WordCell<F>, + coinbase_code_hash: WordCell<F>, + coinbase_code_hash_is_zero: IsZeroWordGadget<F, WordCell<F>>, + coinbase_reward: TransferToGadget<F>, current_cumulative_gas_used: Cell<F>, is_first_tx: IsEqualGadget<F>, is_persistent: Cell<F>, @@ -53,10 +61,10 @@ impl<F: Field> ExecutionGadget<F> for EndTxGadget<F> { let tx_id = cb.call_context(None, CallContextFieldTag::TxId); let is_persistent = cb.call_context(None, CallContextFieldTag::IsPersistent); - let [tx_gas, tx_caller_address] = - [TxContextFieldTag::Gas, TxContextFieldTag::CallerAddress] - .map(|field_tag| cb.tx_context(tx_id.expr(), field_tag, None)); - let tx_gas_price = cb.tx_context_as_word(tx_id.expr(), TxContextFieldTag::GasPrice, None); + let tx_gas = cb.tx_context(tx_id.expr(), TxContextFieldTag::Gas, None); + let tx_caller_address = + cb.tx_context_as_word(tx_id.expr(), TxContextFieldTag::CallerAddress, None); + let tx_gas_price = cb.tx_context_as_word32(tx_id.expr(), TxContextFieldTag::GasPrice, None); // Calculate effective gas to refund let gas_used = tx_gas.expr() - cb.curr.state.gas_left.expr(); @@ -66,7 +74,7 @@ impl<F: Field> ExecutionGadget<F> for EndTxGadget<F> { MAX_REFUND_QUOTIENT_OF_GAS_USED as u64, ); let refund = cb.query_cell(); - cb.tx_refund_read(tx_id.expr(), refund.expr()); + cb.tx_refund_read(tx_id.expr(), Word::from_lo_unchecked(refund.expr())); let effective_refund = MinMaxGadget::construct(cb, max_refund.quotient(), refund.expr()); // Add effective_refund * tx_gas_price back to caller's balance @@ -77,30 +85,41 @@ impl<F: Field> ExecutionGadget<F> for EndTxGadget<F> { ); let gas_fee_refund = UpdateBalanceGadget::construct( cb, - tx_caller_address.expr(), + tx_caller_address.to_word(), vec![mul_gas_price_by_refund.product().clone()], None, ); // Add gas_used * effective_tip to coinbase's balance - let coinbase = cb.query_cell(); - let base_fee = cb.query_word_rlc(); + let coinbase = cb.query_word_unchecked(); + let coinbase_code_hash = cb.query_word_unchecked(); + let coinbase_code_hash_is_zero = IsZeroWordGadget::construct(cb, &coinbase_code_hash); + cb.account_read( + coinbase.to_word(), + AccountFieldTag::CodeHash, + coinbase_code_hash.to_word(), + ); + let base_fee = cb.query_word32(); + // lookup && range check for (tag, value) in [ - (BlockContextFieldTag::Coinbase, coinbase.expr()), - (BlockContextFieldTag::BaseFee, base_fee.expr()), + (BlockContextFieldTag::Coinbase, coinbase.to_word()), + (BlockContextFieldTag::BaseFee, base_fee.to_word()), ] { cb.block_lookup(tag.expr(), None, value); } - let effective_tip = cb.query_word_rlc(); + let effective_tip = cb.query_word32(); let sub_gas_price_by_base_fee = AddWordsGadget::construct(cb, [effective_tip.clone(), base_fee], tx_gas_price); let mul_effective_tip_by_gas_used = MulWordByU64Gadget::construct(cb, effective_tip, gas_used.clone()); - let coinbase_reward = UpdateBalanceGadget::construct( + let coinbase_reward = TransferToGadget::construct( cb, - coinbase.expr(), - vec![mul_effective_tip_by_gas_used.product().clone()], + coinbase.to_word(), + 1.expr() - coinbase_code_hash_is_zero.expr(), + false.expr(), + mul_effective_tip_by_gas_used.product().clone(), None, + true, ); // constrain tx receipt fields @@ -146,15 +165,17 @@ impl<F: Field> ExecutionGadget<F> for EndTxGadget<F> { cb.condition( cb.next.execution_state_selector([ExecutionState::BeginTx]), |cb| { - cb.call_context_lookup( - true.expr(), + cb.call_context_lookup_write( Some(cb.next.state.rw_counter.expr()), CallContextFieldTag::TxId, - tx_id.expr() + 1.expr(), + // tx_id has been lookup and range_check above + Word::from_lo_unchecked(tx_id.expr() + 1.expr()), ); cb.require_step_state_transition(StepStateTransition { - rw_counter: Delta(10.expr() - is_first_tx.expr()), + rw_counter: Delta( + 11.expr() - is_first_tx.expr() + coinbase_code_hash_is_zero.expr(), + ), ..StepStateTransition::any() }); }, @@ -164,7 +185,9 @@ impl<F: Field> ExecutionGadget<F> for EndTxGadget<F> { cb.next.execution_state_selector([ExecutionState::EndBlock]), |cb| { cb.require_step_state_transition(StepStateTransition { - rw_counter: Delta(9.expr() - is_first_tx.expr()), + rw_counter: Delta( + 10.expr() - is_first_tx.expr() + coinbase_code_hash_is_zero.expr(), + ), // We propagate call_id so that EndBlock can get the last tx_id // in order to count processed txs. call_id: Same, @@ -185,6 +208,8 @@ impl<F: Field> ExecutionGadget<F> for EndTxGadget<F> { sub_gas_price_by_base_fee, mul_effective_tip_by_gas_used, coinbase, + coinbase_code_hash, + coinbase_code_hash_is_zero, coinbase_reward, current_cumulative_gas_used, is_first_tx, @@ -201,15 +226,25 @@ impl<F: Field> ExecutionGadget<F> for EndTxGadget<F> { call: &Call, step: &ExecStep, ) -> Result<(), Error> { - let gas_used = tx.gas - step.gas_left; + let gas_used = tx.gas() - step.gas_left; let (refund, _) = block.get_rws(step, 2).tx_refund_value_pair(); - let [(caller_balance, caller_balance_prev), (coinbase_balance, coinbase_balance_prev)] = - [3, 4].map(|index| block.get_rws(step, index).account_value_pair()); + let (caller_balance, caller_balance_prev) = block.get_rws(step, 3).account_balance_pair(); + let (coinbase_code_hash_prev, _) = block.get_rws(step, 4).account_codehash_pair(); + let (coinbase_balance, coinbase_balance_prev) = block + .get_rws( + step, + if coinbase_code_hash_prev.is_zero() { + 6 + } else { + 5 + }, + ) + .account_balance_pair(); self.tx_id - .assign(region, offset, Value::known(F::from(tx.id as u64)))?; + .assign(region, offset, Value::known(F::from(tx.id)))?; self.tx_gas - .assign(region, offset, Value::known(F::from(tx.gas)))?; + .assign(region, offset, Value::known(F::from(tx.gas())))?; let (max_refund, _) = self.max_refund.assign(region, offset, gas_used as u128)?; self.refund .assign(region, offset, Value::known(F::from(refund)))?; @@ -228,15 +263,8 @@ impl<F: Field> ExecutionGadget<F> for EndTxGadget<F> { effective_refund + step.gas_left, gas_fee_refund, )?; - self.tx_caller_address.assign( - region, - offset, - Value::known( - tx.caller_address - .to_scalar() - .expect("unexpected Address -> Scalar conversion failure"), - ), - )?; + self.tx_caller_address + .assign_h160(region, offset, tx.from)?; self.gas_fee_refund.assign( region, offset, @@ -258,23 +286,17 @@ impl<F: Field> ExecutionGadget<F> for EndTxGadget<F> { gas_used, effective_tip * gas_used, )?; - self.coinbase.assign( - region, - offset, - Value::known( - block - .context - .coinbase - .to_scalar() - .expect("unexpected Address -> Scalar conversion failure"), - ), - )?; + self.coinbase + .assign_h160(region, offset, block.context.coinbase)?; + self.coinbase_code_hash + .assign_u256(region, offset, coinbase_code_hash_prev)?; + self.coinbase_code_hash_is_zero + .assign_u256(region, offset, coinbase_code_hash_prev)?; self.coinbase_reward.assign( region, offset, - coinbase_balance_prev, - vec![effective_tip * gas_used], - coinbase_balance, + (coinbase_balance, coinbase_balance_prev), + effective_tip * gas_used, )?; let current_cumulative_gas_used: u64 = if tx.id == 1 { @@ -284,7 +306,7 @@ impl<F: Field> ExecutionGadget<F> for EndTxGadget<F> { // while later transactions need 4 (with one extra cumulative gas read) lookups let rw = &block.rws[( Target::TxReceipt, - (tx.id - 2) * (TxReceiptFieldTag::COUNT + 1) + 2, + (tx.id as usize - 2) * (TxReceiptFieldTag::COUNT + 1) + 2, )]; rw.receipt_value() }; @@ -295,7 +317,7 @@ impl<F: Field> ExecutionGadget<F> for EndTxGadget<F> { Value::known(F::from(current_cumulative_gas_used)), )?; self.is_first_tx - .assign(region, offset, F::from(tx.id as u64), F::ONE)?; + .assign(region, offset, F::from(tx.id), F::ONE)?; self.is_persistent.assign( region, offset, diff --git a/zkevm-circuits/src/evm_circuit/execution/error_code_store.rs b/zkevm-circuits/src/evm_circuit/execution/error_code_store.rs new file mode 100644 index 0000000000..3440bd9f44 --- /dev/null +++ b/zkevm-circuits/src/evm_circuit/execution/error_code_store.rs @@ -0,0 +1,320 @@ +use crate::{ + evm_circuit::{ + execution::ExecutionGadget, + param::{N_BYTES_GAS, N_BYTES_U64}, + step::ExecutionState, + util::{ + common_gadget::CommonErrorGadget, + constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, + math_gadget::LtGadget, + memory_gadget::{CommonMemoryAddressGadget, MemoryAddressGadget}, + CachedRegion, Cell, + }, + witness::{Block, Call, ExecStep, Transaction}, + }, + table::CallContextFieldTag, + util::{word::WordExpr, Expr}, +}; + +use eth_types::{ + evm_types::{GasCost, OpcodeId}, + Field, +}; + +use halo2_proofs::{circuit::Value, plonk::Error}; + +const MAXCODESIZE: u64 = 0x6000u64; + +/// Gadget for code store oog and max code size exceed +#[derive(Clone, Debug)] +pub(crate) struct ErrorCodeStoreGadget<F> { + opcode: Cell<F>, + memory_address: MemoryAddressGadget<F>, + // check not static call + is_static: Cell<F>, + // check for CodeStoreOutOfGas error + code_store_gas_insufficient: LtGadget<F, N_BYTES_GAS>, + // check for MaxCodeSizeExceeded error + max_code_size_exceed: LtGadget<F, N_BYTES_U64>, + common_error_gadget: CommonErrorGadget<F>, +} + +impl<F: Field> ExecutionGadget<F> for ErrorCodeStoreGadget<F> { + const NAME: &'static str = "ErrorCodeStore"; + + const EXECUTION_STATE: ExecutionState = ExecutionState::ErrorCodeStore; + + fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { + let opcode = cb.query_cell(); + cb.require_equal( + "ErrorCodeStore checking at RETURN in create context ", + opcode.expr(), + OpcodeId::RETURN.expr(), + ); + + let offset = cb.query_word_unchecked(); + let length = cb.query_memory_address(); + cb.stack_pop(offset.to_word()); + cb.stack_pop(length.to_word()); + let memory_address = MemoryAddressGadget::construct(cb, offset, length); + // constrain not in static call + let is_static = cb.call_context(None, CallContextFieldTag::IsStatic); + cb.require_zero("is_static is false in ErrorCodeStore", is_static.expr()); + + cb.require_true("is_create is true", cb.curr.state.is_create.expr()); + + // constrain code store gas > gas left, that is GasCost::CODE_DEPOSIT_BYTE_COST + // * length > gas left + let code_store_gas_insufficient = LtGadget::construct( + cb, + cb.curr.state.gas_left.expr(), + GasCost::CODE_DEPOSIT_BYTE_COST.expr() * memory_address.length(), + ); + + // constrain code size > MAXCODESIZE + let max_code_size_exceed = + LtGadget::construct(cb, MAXCODESIZE.expr(), memory_address.length()); + + // check must be one of CodeStoreOutOfGas or MaxCodeSizeExceeded + cb.require_in_set( + "CodeStoreOutOfGas or MaxCodeSizeExceeded", + code_store_gas_insufficient.expr() + max_code_size_exceed.expr(), + vec![1.expr(), 2.expr()], + ); + + let common_error_gadget = + CommonErrorGadget::construct(cb, opcode.expr(), cb.rw_counter_offset()); + + Self { + opcode, + memory_address, + is_static, + code_store_gas_insufficient, + max_code_size_exceed, + common_error_gadget, + } + } + + fn assign_exec_step( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + block: &Block<F>, + _tx: &Transaction, + call: &Call, + step: &ExecStep, + ) -> Result<(), Error> { + let opcode = step.opcode().unwrap(); + self.opcode + .assign(region, offset, Value::known(F::from(opcode.as_u64())))?; + let [memory_offset, length] = [0, 1].map(|i| block.get_rws(step, i).stack_value()); + self.memory_address + .assign(region, offset, memory_offset, length)?; + + self.is_static + .assign(region, offset, Value::known(F::from(call.is_static as u64)))?; + self.code_store_gas_insufficient.assign( + region, + offset, + F::from(step.gas_left), + F::from(GasCost::CODE_DEPOSIT_BYTE_COST * length.as_u64()), + )?; + + self.max_code_size_exceed.assign( + region, + offset, + F::from(MAXCODESIZE), + F::from(length.as_u64()), + )?; + + self.common_error_gadget + .assign(region, offset, block, call, step, 5)?; + Ok(()) + } +} + +#[cfg(test)] +mod test { + use bus_mapping::circuit_input_builder::FixedCParams; + use eth_types::{ + address, bytecode, evm_types::OpcodeId, geth_types::Account, Address, Bytecode, Word, + }; + + use lazy_static::lazy_static; + use mock::{eth, TestContext, MOCK_ACCOUNTS}; + + use crate::test_util::CircuitTestBuilder; + + lazy_static! { + static ref CALLER_ADDRESS: Address = address!("0x00bbccddee000000000000000000000000002400"); + } + + const MAXCODESIZE: u64 = 0x6000u64; + + fn run_test_circuits(ctx: TestContext<2, 1>) { + CircuitTestBuilder::new_from_test_ctx(ctx) + .params(FixedCParams { + max_rws: 4500, + ..FixedCParams::default() + }) + .run(); + } + + fn initialization_bytecode(is_oog: bool) -> Bytecode { + let memory_bytes = [0x60; 10]; + let memory_value = Word::from_big_endian(&memory_bytes); + let code_len = if is_oog { 5 } else { MAXCODESIZE + 1 }; + + let mut code = bytecode! { + PUSH10(memory_value) + PUSH32(code_len) + MSTORE + PUSH2(code_len) // length to copy + PUSH2(32u64 - u64::try_from(memory_bytes.len()).unwrap()) // offset + }; + code.write_op(OpcodeId::RETURN); + + code + } + + fn creator_bytecode(initialization_bytecode: Bytecode, is_create2: bool) -> Bytecode { + let initialization_bytes = initialization_bytecode.code(); + let mut code = Bytecode::default(); + + // construct maxcodesize + 1 memory bytes + let code_creator: Vec<u8> = initialization_bytes + .to_vec() + .iter() + .cloned() + .chain(0u8..((32 - initialization_bytes.len() % 32) as u8)) + .collect(); + for (index, word) in code_creator.chunks(32).enumerate() { + code.push(32, Word::from_big_endian(word)); + code.push(32, Word::from(index * 32)); + code.write_op(OpcodeId::MSTORE); + } + + if is_create2 { + code.append(&bytecode! {PUSH1(45)}); // salt; + } + code.append(&bytecode! { + PUSH32(initialization_bytes.len()) // size + PUSH2(0x00) // offset + PUSH2(23414) // value + }); + code.write_op(if is_create2 { + OpcodeId::CREATE2 + } else { + OpcodeId::CREATE + }); + code.append(&bytecode! { + PUSH1(0) + PUSH1(0) + RETURN + }); + + code + } + + fn test_context(caller: Account, is_oog: bool) -> TestContext<2, 1> { + TestContext::new( + None, + |accs| { + accs[0] + .address(address!("0x000000000000000000000000000000000000cafe")) + .balance(eth(10)); + accs[1].account(&caller); + }, + |mut txs, accs| { + txs[0] + .from(accs[0].address) + .to(accs[1].address) + .gas(if is_oog { + 53800u64.into() + } else { + 103800u64.into() + }); + }, + |block, _| block, + ) + .unwrap() + } + + #[test] + fn test_create_codestore_oog() { + for is_create2 in [false, true] { + let initialization_code = initialization_bytecode(true); + let root_code = creator_bytecode(initialization_code, is_create2); + let caller = Account { + address: *CALLER_ADDRESS, + code: root_code.into(), + nonce: 1u64.into(), + balance: eth(10), + ..Default::default() + }; + run_test_circuits(test_context(caller, true)); + } + } + + #[test] + fn test_create_max_code_size_exceed() { + for is_create2 in [false, true] { + let initialization_code = initialization_bytecode(false); + let root_code = creator_bytecode(initialization_code, is_create2); + let caller = Account { + address: *CALLER_ADDRESS, + code: root_code.into(), + nonce: 1u64.into(), + balance: eth(10), + ..Default::default() + }; + run_test_circuits(test_context(caller, false)); + } + } + + #[test] + fn tx_deploy_code_store_oog() { + let code = initialization_bytecode(true); + + let ctx = TestContext::<1, 1>::new( + None, + |accs| { + accs[0].address(MOCK_ACCOUNTS[0]).balance(eth(20)); + }, + |mut txs, _accs| { + txs[0] + .from(MOCK_ACCOUNTS[0]) + .gas(538006u64.into()) + .value(eth(2)) + .input(code.into()); + }, + |block, _tx| block.number(0xcafeu64), + ) + .unwrap(); + + CircuitTestBuilder::new_from_test_ctx(ctx).run(); + } + + #[test] + fn tx_deploy_max_code_size_exceed() { + let code = initialization_bytecode(false); + + let ctx = TestContext::<1, 1>::new( + None, + |accs| { + accs[0].address(MOCK_ACCOUNTS[0]).balance(eth(20)); + }, + |mut txs, _accs| { + txs[0] + .from(MOCK_ACCOUNTS[0]) + .gas(58000u64.into()) + .value(eth(2)) + .input(code.into()); + }, + |block, _tx| block.number(0xcafeu64), + ) + .unwrap(); + + CircuitTestBuilder::new_from_test_ctx(ctx).run(); + } +} diff --git a/zkevm-circuits/src/evm_circuit/execution/error_invalid_creation_code.rs b/zkevm-circuits/src/evm_circuit/execution/error_invalid_creation_code.rs new file mode 100644 index 0000000000..e076a831bc --- /dev/null +++ b/zkevm-circuits/src/evm_circuit/execution/error_invalid_creation_code.rs @@ -0,0 +1,221 @@ +use crate::{ + evm_circuit::{ + execution::ExecutionGadget, + step::ExecutionState, + util::{ + common_gadget::CommonErrorGadget, + constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, + math_gadget::IsEqualGadget, + memory_gadget::{CommonMemoryAddressGadget, MemoryAddressGadget}, + CachedRegion, Cell, + }, + witness::{Block, Call, ExecStep, Transaction}, + }, + util::{word::WordExpr, Expr}, +}; +use eth_types::{evm_types::INVALID_INIT_CODE_FIRST_BYTE, Field}; +use halo2_proofs::{circuit::Value, plonk::Error}; + +/// Gadget for the invalid creation code error +#[derive(Clone, Debug)] +pub(crate) struct ErrorInvalidCreationCodeGadget<F> { + opcode: Cell<F>, + first_byte: Cell<F>, + is_first_byte_invalid: IsEqualGadget<F>, + memory_address: MemoryAddressGadget<F>, + common_error_gadget: CommonErrorGadget<F>, +} + +impl<F: Field> ExecutionGadget<F> for ErrorInvalidCreationCodeGadget<F> { + const NAME: &'static str = "ErrorInvalidCreationCode"; + + const EXECUTION_STATE: ExecutionState = ExecutionState::ErrorInvalidCreationCode; + + fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { + let opcode = cb.query_cell(); + let first_byte = cb.query_cell(); + + let offset = cb.query_word_unchecked(); + let length = cb.query_memory_address(); + + cb.stack_pop(offset.to_word()); + cb.stack_pop(length.to_word()); + cb.require_true("is_create is true", cb.curr.state.is_create.expr()); + + let memory_address = MemoryAddressGadget::construct(cb, offset, length); + cb.memory_lookup(0.expr(), memory_address.offset(), first_byte.expr(), None); + + let is_first_byte_invalid = + IsEqualGadget::construct(cb, first_byte.expr(), INVALID_INIT_CODE_FIRST_BYTE.expr()); + cb.require_true( + "is_first_byte_invalid is true", + is_first_byte_invalid.expr(), + ); + + let common_error_gadget = + CommonErrorGadget::construct(cb, opcode.expr(), cb.rw_counter_offset()); + + Self { + opcode, + first_byte, + is_first_byte_invalid, + memory_address, + common_error_gadget, + } + } + + fn assign_exec_step( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + block: &Block<F>, + _tx: &Transaction, + call: &Call, + step: &ExecStep, + ) -> Result<(), Error> { + let opcode = step.opcode().unwrap(); + self.opcode + .assign(region, offset, Value::known(F::from(opcode.as_u64())))?; + + let [memory_offset, length] = [0, 1].map(|i| block.rws[step.rw_index(i)].stack_value()); + self.memory_address + .assign(region, offset, memory_offset, length)?; + + let first_byte = block.rws[step.rw_index(2)].memory_value().into(); + self.first_byte + .assign(region, offset, Value::known(F::from(first_byte)))?; + self.is_first_byte_invalid.assign( + region, + offset, + F::from(first_byte), + F::from(INVALID_INIT_CODE_FIRST_BYTE.into()), + )?; + + self.common_error_gadget + .assign(region, offset, block, call, step, 5)?; + + Ok(()) + } +} + +#[cfg(test)] +mod test { + use crate::test_util::CircuitTestBuilder; + use eth_types::{ + address, bytecode, evm_types::OpcodeId, geth_types::Account, Address, Bytecode, U256, + }; + use mock::{eth, TestContext, MOCK_ACCOUNTS}; + + const CALLER_ADDRESS: Address = Address::repeat_byte(0xaa); + + #[test] + fn test_invalid_creation_code_for_create_opcodes() { + [false, true].into_iter().for_each(|is_create2| { + let code = caller_code(is_create2, init_code(10)).into(); + + let caller = Account { + address: CALLER_ADDRESS, + code, + nonce: 1.into(), + balance: eth(10), + ..Default::default() + }; + + CircuitTestBuilder::new_from_test_ctx(test_ctx(caller)).run(); + }); + } + + // Test ErrInvalidCode in transaction deployment (`tx.to == null`). + #[test] + fn test_invalid_creation_code_for_tx_deployment() { + let deploy_code = init_code(20); + let test_ctx = TestContext::<1, 1>::new( + None, + |accs| { + accs[0].address(MOCK_ACCOUNTS[0]).balance(eth(20)); + }, + |mut txs, _accs| { + txs[0] + .from(MOCK_ACCOUNTS[0]) + .gas(53630_u64.into()) + .value(eth(1)) + .input(deploy_code.into()); + }, + |block, _tx| block.number(0xcafe_u64), + ) + .unwrap(); + CircuitTestBuilder::new_from_test_ctx(test_ctx).run(); + } + + fn caller_code(is_create2: bool, init_code: Bytecode) -> Bytecode { + let init_bytes = init_code.code(); + let init_len = init_bytes.len(); + + let memory_bytes: Vec<_> = init_bytes + .into_iter() + .chain(0_u8..32 - init_len as u8 % 32) + .collect(); + + let mut code = Bytecode::default(); + memory_bytes.chunks(32).enumerate().for_each(|(idx, word)| { + code.push(32, U256::from_big_endian(word)); + code.push(32, U256::from(idx * 32)); + code.write_op(OpcodeId::MSTORE); + }); + + if is_create2 { + code.append(&bytecode! {PUSH1(45)}); // salt + } + code.append(&bytecode! { + PUSH1(init_len) // size + PUSH2(0x00) // offset + PUSH2(23414) // value + }); + code.write_op(if is_create2 { + OpcodeId::CREATE2 + } else { + OpcodeId::CREATE + }); + code.append(&bytecode! { + PUSH1(0) + PUSH1(0) + RETURN + }); + + code + } + + fn init_code(size: usize) -> Bytecode { + let memory_bytes = vec![0xef; size]; + let memory_value = U256::from_big_endian(&memory_bytes); + + bytecode! { + PUSH32(memory_value) + PUSH32(0) + MSTORE + PUSH1(5) // length to copy + PUSH1(32 - memory_bytes.len()) // offset + RETURN + } + } + + fn test_ctx(caller: Account) -> TestContext<2, 1> { + TestContext::new( + None, + |accs| { + accs[0] + .address(address!("0x000000000000000000000000000000000000cafe")) + .balance(eth(10)); + accs[1].account(&caller); + }, + |mut txs, accs| { + txs[0] + .from(accs[0].address) + .to(accs[1].address) + .gas(103800_u64.into()); + }, + |block, _| block, + ) + .unwrap() + } +} diff --git a/zkevm-circuits/src/evm_circuit/execution/error_invalid_jump.rs b/zkevm-circuits/src/evm_circuit/execution/error_invalid_jump.rs index 888c340aba..572b67c7a7 100644 --- a/zkevm-circuits/src/evm_circuit/execution/error_invalid_jump.rs +++ b/zkevm-circuits/src/evm_circuit/execution/error_invalid_jump.rs @@ -6,14 +6,17 @@ use crate::{ util::{ common_gadget::{CommonErrorGadget, WordByteCapGadget}, constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, - math_gadget::{IsEqualGadget, IsZeroGadget}, + math_gadget::{IsEqualGadget, IsZeroWordGadget}, CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{Word, WordCell, WordExpr}, + Expr, + }, }; -use eth_types::{evm_types::OpcodeId, Field, ToWord, U256}; +use eth_types::{evm_types::OpcodeId, Field, U256}; use halo2_proofs::{circuit::Value, plonk::Error}; @@ -26,8 +29,8 @@ pub(crate) struct ErrorInvalidJumpGadget<F> { is_code: Cell<F>, is_jump_dest: IsEqualGadget<F>, is_jumpi: IsEqualGadget<F>, - phase2_condition: Cell<F>, - is_condition_zero: IsZeroGadget<F>, + condition: WordCell<F>, + is_condition_zero: IsZeroWordGadget<F, WordCell<F>>, common_error_gadget: CommonErrorGadget<F>, } @@ -43,7 +46,7 @@ impl<F: Field> ExecutionGadget<F> for ErrorInvalidJumpGadget<F> { let opcode = cb.query_cell(); let value = cb.query_cell(); let is_code = cb.query_cell(); - let phase2_condition = cb.query_cell_phase2(); + let condition = cb.query_word_unchecked(); cb.require_in_set( "ErrorInvalidJump only happend in JUMP or JUMPI", @@ -58,24 +61,24 @@ impl<F: Field> ExecutionGadget<F> for ErrorInvalidJumpGadget<F> { // first default this condition, if use will re-construct with real condition // value - let is_condition_zero = IsZeroGadget::construct(cb, phase2_condition.expr()); + let is_condition_zero = IsZeroWordGadget::construct(cb, &condition); // Pop the value from the stack - cb.stack_pop(dest.original_word()); + cb.stack_pop(dest.original_word().to_word()); cb.condition(is_jumpi.expr(), |cb| { - cb.stack_pop(phase2_condition.expr()); + cb.stack_pop(condition.to_word()); // if condition is zero, jump will not happen, so constrain condition not zero cb.require_zero("condition is not zero", is_condition_zero.expr()); }); // Look up bytecode length - cb.bytecode_length(cb.curr.state.code_hash.expr(), code_len.expr()); + cb.bytecode_length(cb.curr.state.code_hash.to_word(), code_len.expr()); // If destination is in valid range, lookup for the value. cb.condition(dest.lt_cap(), |cb| { cb.bytecode_lookup( - cb.curr.state.code_hash.expr(), + cb.curr.state.code_hash.to_word(), dest.valid_value(), is_code.expr(), value.expr(), @@ -87,7 +90,7 @@ impl<F: Field> ExecutionGadget<F> for ErrorInvalidJumpGadget<F> { }); let common_error_gadget = - CommonErrorGadget::construct(cb, opcode.expr(), 3.expr() + is_jumpi.expr()); + CommonErrorGadget::construct(cb, opcode.expr(), cb.rw_counter_offset()); Self { opcode, @@ -97,7 +100,7 @@ impl<F: Field> ExecutionGadget<F> for ErrorInvalidJumpGadget<F> { is_code, is_jump_dest, is_jumpi, - phase2_condition, + condition, is_condition_zero, common_error_gadget, } @@ -122,13 +125,12 @@ impl<F: Field> ExecutionGadget<F> for ErrorInvalidJumpGadget<F> { } else { U256::zero() }; - let condition_rlc = region.word_rlc(condition); let code = block .bytecodes - .get(&call.code_hash.to_word()) + .get_from_h256(&call.code_hash) .expect("could not find current environment's bytecode"); - let code_len = code.bytes.len() as u64; + let code_len = code.codesize() as u64; self.code_len .assign(region, offset, Value::known(F::from(code_len)))?; @@ -136,21 +138,17 @@ impl<F: Field> ExecutionGadget<F> for ErrorInvalidJumpGadget<F> { self.dest.assign(region, offset, dest, F::from(code_len))?; // set default value in case can not find value, is_code from bytecode table - let dest = u64::try_from(dest).unwrap_or(code_len); - let mut code_pair = [0u8, 0u8]; - if dest < code_len { - // get real value from bytecode table - code_pair = code.get(dest as usize); - } + let dest = usize::try_from(dest).unwrap_or(code.codesize()); + let (value, is_code) = code.get(dest).unwrap_or((0, false)); self.value - .assign(region, offset, Value::known(F::from(code_pair[0] as u64)))?; + .assign(region, offset, Value::known(F::from(value.into())))?; self.is_code - .assign(region, offset, Value::known(F::from(code_pair[1] as u64)))?; + .assign(region, offset, Value::known(F::from(is_code.into())))?; self.is_jump_dest.assign( region, offset, - F::from(code_pair[0] as u64), + F::from(value.into()), F::from(OpcodeId::JUMPDEST.as_u64()), )?; @@ -161,10 +159,9 @@ impl<F: Field> ExecutionGadget<F> for ErrorInvalidJumpGadget<F> { F::from(OpcodeId::JUMPI.as_u64()), )?; - self.phase2_condition - .assign(region, offset, condition_rlc)?; + self.condition.assign_u256(region, offset, condition)?; self.is_condition_zero - .assign_value(region, offset, condition_rlc)?; + .assign_value(region, offset, Value::known(Word::from(condition)))?; self.common_error_gadget.assign( region, @@ -185,7 +182,7 @@ mod test { use crate::test_util::CircuitTestBuilder; use eth_types::{ address, bytecode, bytecode::Bytecode, evm_types::OpcodeId, geth_types::Account, Address, - ToWord, Word, U64, + ToWord, Word, }; use mock::TestContext; @@ -242,73 +239,8 @@ mod test { .run(); } - // internal call test - struct Stack { - gas: u64, - value: Word, - cd_offset: u64, - cd_length: u64, - rd_offset: u64, - rd_length: u64, - } - fn callee(code: Bytecode) -> Account { - let code = code.to_vec(); - let is_empty = code.is_empty(); - Account { - address: Address::repeat_byte(0xff), - code: code.into(), - nonce: U64::from(!is_empty as u64), - balance: if is_empty { 0 } else { 0xdeadbeefu64 }.into(), - ..Default::default() - } - } - - fn caller(opcode: OpcodeId, stack: Stack, caller_is_success: bool) -> Account { - let is_call = opcode == OpcodeId::CALL; - let terminator = if caller_is_success { - OpcodeId::RETURN - } else { - OpcodeId::REVERT - }; - - // Call twice for testing both cold and warm access - let mut bytecode = bytecode! { - PUSH32(Word::from(stack.rd_length)) - PUSH32(Word::from(stack.rd_offset)) - PUSH32(Word::from(stack.cd_length)) - PUSH32(Word::from(stack.cd_offset)) - }; - if is_call { - bytecode.push(32, stack.value); - } - bytecode.append(&bytecode! { - PUSH32(Address::repeat_byte(0xff).to_word()) - PUSH32(Word::from(stack.gas)) - .write_op(opcode) - PUSH32(Word::from(stack.rd_length)) - PUSH32(Word::from(stack.rd_offset)) - PUSH32(Word::from(stack.cd_length)) - PUSH32(Word::from(stack.cd_offset)) - }); - if is_call { - bytecode.push(32, stack.value); - } - bytecode.append(&bytecode! { - PUSH32(Address::repeat_byte(0xff).to_word()) - PUSH32(Word::from(stack.gas)) - .write_op(opcode) - PUSH1(0) - PUSH1(0) - .write_op(terminator) - }); - - Account { - address: Address::repeat_byte(0xfe), - balance: Word::from(10).pow(20.into()), - code: bytecode.to_vec().into(), - ..Default::default() - } + Account::mock_code_balance(code) } // jump or jumpi error happen in internal call @@ -365,12 +297,7 @@ mod test { STOP }); test_ok( - Account { - address: Address::repeat_byte(0xfe), - balance: Word::from(10).pow(20.into()), - code: caller_bytecode.into(), - ..Default::default() - }, + Account::mock_100_ether(caller_bytecode), callee(callee_bytecode), ); } diff --git a/zkevm-circuits/src/evm_circuit/execution/error_invalid_opcode.rs b/zkevm-circuits/src/evm_circuit/execution/error_invalid_opcode.rs index 868a830306..f5257605bb 100644 --- a/zkevm-circuits/src/evm_circuit/execution/error_invalid_opcode.rs +++ b/zkevm-circuits/src/evm_circuit/execution/error_invalid_opcode.rs @@ -39,7 +39,7 @@ impl<F: Field> ExecutionGadget<F> for ErrorInvalidOpcodeGadget<F> { }, ); - let common_error_gadget = CommonErrorGadget::construct(cb, opcode.expr(), 2.expr()); + let common_error_gadget = CommonErrorGadget::construct(cb, opcode.expr(), 0.expr()); Self { opcode, @@ -81,7 +81,7 @@ mod test { vec![0xf6], vec![0xfe], // Multiple invalid opcodes - vec![0x5c, 0x5e, 0x5f], + vec![0x5c, 0x5e], ]; } diff --git a/zkevm-circuits/src/evm_circuit/execution/error_oog_account_access.rs b/zkevm-circuits/src/evm_circuit/execution/error_oog_account_access.rs new file mode 100644 index 0000000000..9e36738ef2 --- /dev/null +++ b/zkevm-circuits/src/evm_circuit/execution/error_oog_account_access.rs @@ -0,0 +1,313 @@ +use crate::{ + evm_circuit::{ + execution::ExecutionGadget, + param::N_BYTES_GAS, + step::ExecutionState, + util::{ + common_gadget::CommonErrorGadget, + constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, + math_gadget::LtGadget, + select, AccountAddress, CachedRegion, Cell, + }, + witness::{Block, Call, ExecStep, Transaction}, + }, + table::CallContextFieldTag, + util::{word::WordExpr, Expr}, +}; +use eth_types::{ + evm_types::{GasCost, OpcodeId}, + Field, ToAddress, +}; +use halo2_proofs::{circuit::Value, plonk::Error}; + +/// Gadget to implement the corresponding out of gas errors for +/// [`OpcodeId::BALANCE`,`OpcodeId::EXTCODESIZE`, `OpcodeId::EXTCODEHASH`]. +#[derive(Clone, Debug)] +pub(crate) struct ErrorOOGAccountAccessGadget<F> { + opcode: Cell<F>, + address: AccountAddress<F>, + tx_id: Cell<F>, + is_warm: Cell<F>, + insufficient_gas_cost: LtGadget<F, N_BYTES_GAS>, + common_error_gadget: CommonErrorGadget<F>, +} + +impl<F: Field> ExecutionGadget<F> for ErrorOOGAccountAccessGadget<F> { + const NAME: &'static str = "ErrorOutOfGasAccountAccess"; + + const EXECUTION_STATE: ExecutionState = ExecutionState::ErrorOutOfGasAccountAccess; + + fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { + let opcode = cb.query_cell(); + cb.require_in_set( + "ErrorOutOfGasAccountAccess happens for BALANCE | EXTCODESIZE | EXTCODEHASH ", + opcode.expr(), + vec![ + OpcodeId::BALANCE.expr(), + OpcodeId::EXTCODESIZE.expr(), + OpcodeId::EXTCODEHASH.expr(), + ], + ); + let address = cb.query_account_address(); + cb.stack_pop(address.to_word()); + + let tx_id = cb.call_context(None, CallContextFieldTag::TxId); + let is_warm = cb.query_bool(); + // read is_warm + cb.account_access_list_read(tx_id.expr(), address.to_word(), is_warm.expr()); + + let gas_cost = select::expr( + is_warm.expr(), + GasCost::WARM_ACCESS.expr(), + GasCost::COLD_ACCOUNT_ACCESS.expr(), + ); + + let insufficient_gas_cost = + LtGadget::construct(cb, cb.curr.state.gas_left.expr(), gas_cost); + + cb.require_equal( + "Gas left is less than gas cost", + insufficient_gas_cost.expr(), + 1.expr(), + ); + + let common_error_gadget = + CommonErrorGadget::construct(cb, opcode.expr(), cb.rw_counter_offset()); + Self { + opcode, + address, + tx_id, + is_warm, + insufficient_gas_cost, + common_error_gadget, + } + } + + fn assign_exec_step( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + block: &Block<F>, + tx: &Transaction, + call: &Call, + step: &ExecStep, + ) -> Result<(), Error> { + let opcode = step.opcode().unwrap(); + self.opcode + .assign(region, offset, Value::known(F::from(opcode.as_u64())))?; + + let address = block.get_rws(step, 0).stack_value(); + self.address + .assign_h160(region, offset, address.to_address())?; + + self.tx_id + .assign(region, offset, Value::known(F::from(tx.id)))?; + + let (_, is_warm) = block.get_rws(step, 2).tx_access_list_value_pair(); + self.is_warm + .assign(region, offset, Value::known(F::from(is_warm as u64)))?; + + // BALANCE EXTCODESIZE EXTCODEHASH shares same gas cost model + let gas_cost = if is_warm { + GasCost::WARM_ACCESS + } else { + GasCost::COLD_ACCOUNT_ACCESS + }; + + self.insufficient_gas_cost.assign_value( + region, + offset, + Value::known(F::from(step.gas_left)), + Value::known(F::from(gas_cost)), + )?; + self.common_error_gadget + .assign(region, offset, block, call, step, 5)?; + + Ok(()) + } +} + +#[cfg(test)] +mod test { + use crate::{evm_circuit::test::rand_bytes, test_util::CircuitTestBuilder}; + use eth_types::{ + address, bytecode, + evm_types::{GasCost, OpcodeId}, + geth_types::Account, + Address, Bytecode, ToWord, Word, U256, + }; + use itertools::Itertools; + use lazy_static::lazy_static; + use mock::TestContext; + + lazy_static! { + static ref TEST_ADDRESS: Address = address!("0xaabbccddee000000000000000000000000000000"); + } + + #[test] + fn oog_account_access_root() { + let account = Some(Account { + address: *TEST_ADDRESS, + balance: U256::from(900), + ..Default::default() + }); + + for (opcode, is_warm) in [ + OpcodeId::BALANCE, + OpcodeId::EXTCODESIZE, + OpcodeId::EXTCODEHASH, + ] + .iter() + .cartesian_product([true, false]) + { + test_root_ok(&account, *opcode, is_warm); + } + } + + #[test] + fn oog_account_internal() { + let account = Some(Account { + address: *TEST_ADDRESS, + balance: U256::from(900), + ..Default::default() + }); + + for (opcode, is_warm) in [ + OpcodeId::BALANCE, + OpcodeId::EXTCODESIZE, + OpcodeId::EXTCODEHASH, + ] + .iter() + .cartesian_product([false, true]) + { + test_internal_ok(0x20, 0x20, &account, *opcode, is_warm); + test_internal_ok(0x1010, 0xff, &account, *opcode, is_warm); + } + } + + fn test_root_ok(account: &Option<Account>, opcode: OpcodeId, is_warm: bool) { + let address = account.as_ref().map(|a| a.address).unwrap_or(*TEST_ADDRESS); + + let mut code = Bytecode::default(); + if is_warm { + code.push(20, address.to_word()); + code.write_op(opcode); + code.write_op(OpcodeId::POP); + } + + code.push(20, address.to_word()); + code.write_op(opcode); + code.write_op(OpcodeId::STOP); + + let gas = GasCost::TX + + if is_warm { + GasCost::WARM_ACCESS + + OpcodeId::PUSH32.constant_gas_cost() + + OpcodeId::POP.constant_gas_cost() + + GasCost::COLD_ACCOUNT_ACCESS + } else { + GasCost::COLD_ACCOUNT_ACCESS + } + + OpcodeId::PUSH32.constant_gas_cost() + - 1; + let ctx = TestContext::<3, 1>::new( + None, + |accs| { + accs[0] + .address(address!("0x000000000000000000000000000000000000cafe")) + .balance(Word::from(1_u64 << 20)) + .code(code); + // Set balance if account exists. + if let Some(account) = account { + accs[1].address(address).balance(account.balance); + } else { + accs[1] + .address(address!("0x0000000000000000000000000000000000000010")) + .balance(Word::from(1_u64 << 20)); + } + accs[2] + .address(address!("0x0000000000000000000000000000000000000020")) + .balance(Word::from(1_u64 << 20)); + }, + |mut txs, accs| { + txs[0] + .to(accs[0].address) + .from(accs[2].address) + .gas(gas.into()); + }, + |block, _tx| block, + ) + .unwrap(); + + CircuitTestBuilder::new_from_test_ctx(ctx).run(); + } + + fn test_internal_ok( + call_data_offset: usize, + call_data_length: usize, + account: &Option<Account>, + opcode: OpcodeId, + is_warm: bool, + ) { + let address = account.as_ref().map(|a| a.address).unwrap_or(*TEST_ADDRESS); + let (addr_a, addr_b) = (mock::MOCK_ACCOUNTS[0], mock::MOCK_ACCOUNTS[1]); + + // code B gets called by code A, so the call is an internal call. + let mut code_b = Bytecode::default(); + if is_warm { + code_b.push(20, address.to_word()); + + code_b.write_op(opcode); + code_b.write_op(OpcodeId::POP); + } + + code_b.push(20, address.to_word()); + code_b.write_op(opcode); + code_b.write_op(OpcodeId::STOP); + + // code A calls code B. + let pushdata = rand_bytes(8); + let code_a = bytecode! { + // populate memory in A's context. + PUSH8(Word::from_big_endian(&pushdata)) + PUSH1(0x00) // offset + MSTORE + // call ADDR_B. + PUSH1(0x00) // retLength + PUSH1(0x00) // retOffset + PUSH32(call_data_length) // argsLength + PUSH32(call_data_offset) // argsOffset + PUSH1(0x00) // value + PUSH32(addr_b.to_word()) // addr + PUSH32(Word::from(2599u64)) // gas insufficient + CALL + STOP + }; + + let ctx = TestContext::<4, 1>::new( + None, + |accs| { + accs[0].address(addr_b).code(code_b); + accs[1].address(addr_a).code(code_a); + // Set balance if account exists. + if let Some(account) = account { + accs[2].address(address).balance(account.balance); + } else { + accs[2] + .address(mock::MOCK_ACCOUNTS[2]) + .balance(Word::from(1_u64 << 20)); + } + accs[3] + .address(mock::MOCK_ACCOUNTS[3]) + .balance(Word::from(1_u64 << 20)); + }, + |mut txs, accs| { + txs[0].to(accs[1].address).from(accs[3].address); + }, + |block, _tx| block, + ) + .unwrap(); + + CircuitTestBuilder::new_from_test_ctx(ctx).run(); + } +} diff --git a/zkevm-circuits/src/evm_circuit/execution/error_oog_call.rs b/zkevm-circuits/src/evm_circuit/execution/error_oog_call.rs index e85783efe0..38aeae1db7 100644 --- a/zkevm-circuits/src/evm_circuit/execution/error_oog_call.rs +++ b/zkevm-circuits/src/evm_circuit/execution/error_oog_call.rs @@ -7,7 +7,8 @@ use crate::{ common_gadget::{CommonCallGadget, CommonErrorGadget}, constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, math_gadget::{IsZeroGadget, LtGadget}, - CachedRegion, Cell, + memory_gadget::MemoryExpandedAddressGadget, + or, CachedRegion, Cell, }, }, table::CallContextFieldTag, @@ -30,7 +31,7 @@ pub(crate) struct ErrorOOGCallGadget<F> { is_staticcall: IsZeroGadget<F>, tx_id: Cell<F>, is_static: Cell<F>, - call: CommonCallGadget<F, false>, + call: CommonCallGadget<F, MemoryExpandedAddressGadget<F>, false>, is_warm: Cell<F>, insufficient_gas: LtGadget<F, N_BYTES_GAS>, common_error_gadget: CommonErrorGadget<F>, @@ -54,21 +55,18 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGCallGadget<F> { let tx_id = cb.call_context(None, CallContextFieldTag::TxId); let is_static = cb.call_context(None, CallContextFieldTag::IsStatic); - let call_gadget = CommonCallGadget::construct( - cb, - is_call.expr(), - is_callcode.expr(), - is_delegatecall.expr(), - is_staticcall.expr(), - ); + let call_gadget: CommonCallGadget<F, MemoryExpandedAddressGadget<F>, false> = + CommonCallGadget::construct( + cb, + is_call.expr(), + is_callcode.expr(), + is_delegatecall.expr(), + is_staticcall.expr(), + ); // Add callee to access list let is_warm = cb.query_bool(); - cb.account_access_list_read( - tx_id.expr(), - call_gadget.callee_address_expr(), - is_warm.expr(), - ); + cb.account_access_list_read(tx_id.expr(), call_gadget.callee_address(), is_warm.expr()); cb.condition(call_gadget.has_value.expr(), |cb| { cb.require_zero( @@ -82,9 +80,14 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGCallGadget<F> { // Check if the amount of gas available is less than the amount of gas required let insufficient_gas = LtGadget::construct(cb, cb.curr.state.gas_left.expr(), gas_cost); + cb.require_equal( - "gas left is less than gas required", - insufficient_gas.expr(), + "Either Memory address is overflow or gas left is less than cost", + or::expr([ + call_gadget.cd_address.overflow(), + call_gadget.rd_address.overflow(), + insufficient_gas.expr(), + ]), 1.expr(), ); @@ -93,7 +96,7 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGCallGadget<F> { let common_error_gadget = CommonErrorGadget::construct( cb, opcode.expr(), - 13.expr() + is_call.expr() + is_callcode.expr(), + 11.expr() + is_call.expr() + is_callcode.expr(), ); Self { @@ -136,7 +139,7 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGCallGadget<F> { let callee_code_hash = block .get_rws(step, 9 + is_call_or_callcode) - .account_value_pair() + .account_codehash_pair() .0; let callee_exists = !callee_code_hash.is_zero(); @@ -156,7 +159,7 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGCallGadget<F> { rd_offset, rd_length, step.memory_word_size(), - region.word_rlc(callee_code_hash), + callee_code_hash, )?; self.opcode @@ -227,7 +230,7 @@ mod test { use crate::test_util::CircuitTestBuilder; use eth_types::{ address, bytecode, bytecode::Bytecode, evm_types::OpcodeId, geth_types::Account, Address, - ToWord, Word, U64, + ToWord, Word, }; use mock::TestContext; use std::default::Default; @@ -273,25 +276,11 @@ mod test { fn caller(opcode: OpcodeId, stack: Stack) -> Account { let bytecode = call_bytecode(opcode, Address::repeat_byte(0xff), stack); - - Account { - address: Address::repeat_byte(0xfe), - balance: Word::from(10).pow(20.into()), - code: bytecode.to_vec().into(), - ..Default::default() - } + Account::mock_100_ether(bytecode) } fn callee(code: Bytecode) -> Account { - let code = code.to_vec(); - let is_empty = code.is_empty(); - Account { - address: Address::repeat_byte(0xff), - code: code.into(), - nonce: U64::from(!is_empty as u64), - balance: if is_empty { 0 } else { 0xdeadbeefu64 }.into(), - ..Default::default() - } + Account::mock_code_balance(code) } fn test_oog(caller: &Account, callee: &Account, is_root: bool) { @@ -385,4 +374,46 @@ mod test { }); test_oog(&caller(OpcodeId::CALL, stack), &callee, true); } + + #[test] + fn test_oog_call_max_expanded_address() { + // 0xffffffff1 + 0xffffffff0 = 0x1fffffffe1 + // > MAX_EXPANDED_MEMORY_ADDRESS (0x1fffffffe0) + let stack = Stack { + gas: Word::MAX, + cd_offset: 0xffffffff1, + cd_length: 0xffffffff0, + rd_offset: 0xffffffff1, + rd_length: 0xffffffff0, + ..Default::default() + }; + let callee = callee(bytecode! { + PUSH32(Word::from(0)) + PUSH32(Word::from(0)) + STOP + }); + for opcode in TEST_CALL_OPCODES { + test_oog(&caller(*opcode, stack), &callee, true); + } + } + + #[test] + fn test_oog_call_max_u64_address() { + let stack = Stack { + gas: Word::MAX, + cd_offset: u64::MAX, + cd_length: u64::MAX, + rd_offset: u64::MAX, + rd_length: u64::MAX, + ..Default::default() + }; + let callee = callee(bytecode! { + PUSH32(Word::from(0)) + PUSH32(Word::from(0)) + STOP + }); + for opcode in TEST_CALL_OPCODES { + test_oog(&caller(*opcode, stack), &callee, true); + } + } } diff --git a/zkevm-circuits/src/evm_circuit/execution/error_oog_constant.rs b/zkevm-circuits/src/evm_circuit/execution/error_oog_constant.rs index 90bfd06163..acaec49d6d 100644 --- a/zkevm-circuits/src/evm_circuit/execution/error_oog_constant.rs +++ b/zkevm-circuits/src/evm_circuit/execution/error_oog_constant.rs @@ -46,7 +46,7 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGConstantGadget<F> { 1.expr(), ); - let common_error_gadget = CommonErrorGadget::construct(cb, opcode.expr(), 2.expr()); + let common_error_gadget = CommonErrorGadget::construct(cb, opcode.expr(), 0.expr()); Self { opcode, @@ -94,7 +94,7 @@ mod test { use bus_mapping::evm::OpcodeId; use eth_types::{ self, address, bytecode, bytecode::Bytecode, evm_types::GasCost, geth_types::Account, - Address, ToWord, Word, U64, + Address, ToWord, Word, }; use mock::{ @@ -211,12 +211,7 @@ mod test { .write_op(terminator) }; - Account { - address: Address::repeat_byte(0xfe), - balance: Word::from(10).pow(20.into()), - code: bytecode.to_vec().into(), - ..Default::default() - } + Account::mock_100_ether(bytecode) } fn oog_constant_internal_call(caller: Account, callee: Account) { @@ -243,15 +238,7 @@ mod test { } fn callee(code: Bytecode) -> Account { - let code = code.to_vec(); - let is_empty = code.is_empty(); - Account { - address: Address::repeat_byte(0xff), - code: code.into(), - nonce: U64::from(!is_empty as u64), - balance: if is_empty { 0 } else { 0xdeadbeefu64 }.into(), - ..Default::default() - } + Account::mock_code_balance(code) } #[test] diff --git a/zkevm-circuits/src/evm_circuit/execution/error_oog_create.rs b/zkevm-circuits/src/evm_circuit/execution/error_oog_create.rs new file mode 100644 index 0000000000..b22619ae01 --- /dev/null +++ b/zkevm-circuits/src/evm_circuit/execution/error_oog_create.rs @@ -0,0 +1,379 @@ +use crate::{ + evm_circuit::{ + execution::ExecutionGadget, + param::{N_BYTES_GAS, N_BYTES_MEMORY_ADDRESS, N_BYTES_MEMORY_WORD_SIZE}, + step::ExecutionState, + util::{ + common_gadget::CommonErrorGadget, + constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, + math_gadget::{LtGadget, PairSelectGadget}, + memory_gadget::{ + CommonMemoryAddressGadget, MemoryExpandedAddressGadget, MemoryExpansionGadget, + MemoryWordSizeGadget, + }, + or, select, CachedRegion, Cell, WordExpr, + }, + }, + util::{word::Word32Cell, Expr}, + witness::{Block, Call, ExecStep, Transaction}, +}; +use eth_types::{ + evm_types::{ + GasCost, OpcodeId, CREATE2_GAS_PER_CODE_WORD, CREATE_GAS_PER_CODE_WORD, MAX_INIT_CODE_SIZE, + }, + Field, U256, +}; +use halo2_proofs::{circuit::Value, plonk::Error}; + +#[derive(Clone, Debug)] +pub(crate) struct ErrorOOGCreateGadget<F> { + opcode: Cell<F>, + value: Word32Cell<F>, + salt: Word32Cell<F>, + is_create2: PairSelectGadget<F>, + minimum_word_size: MemoryWordSizeGadget<F>, + memory_address: MemoryExpandedAddressGadget<F>, + memory_expansion: MemoryExpansionGadget<F, 1, N_BYTES_MEMORY_WORD_SIZE>, + // Init code size is overflow when it is greater than 49152 + // (maximum init code size) if Shanghai, otherwise when it is greater than + // 0x1FFFFFFFE0 (maximum value of offset + size). + // Uint64 overflow is checked in `memory_address` (offset + length). + init_code_size_overflow: LtGadget<F, { N_BYTES_MEMORY_ADDRESS }>, + insufficient_gas: LtGadget<F, N_BYTES_GAS>, + common_error_gadget: CommonErrorGadget<F>, +} + +impl<F: Field> ExecutionGadget<F> for ErrorOOGCreateGadget<F> { + const NAME: &'static str = "ErrorOutOfGasCREATE"; + + const EXECUTION_STATE: ExecutionState = ExecutionState::ErrorOutOfGasCREATE; + + fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { + let opcode = cb.query_cell(); + + let is_create2 = PairSelectGadget::construct( + cb, + opcode.expr(), + OpcodeId::CREATE2.expr(), + OpcodeId::CREATE.expr(), + ); + + let value = cb.query_word32(); + let salt = cb.query_word32(); + + let memory_address = MemoryExpandedAddressGadget::construct_self(cb); + + cb.stack_pop(value.to_word()); + cb.stack_pop(memory_address.offset_word()); + cb.stack_pop(memory_address.length_word()); + cb.condition(is_create2.expr().0, |cb| cb.stack_pop(salt.to_word())); + + let init_code_size_overflow = + LtGadget::construct(cb, MAX_INIT_CODE_SIZE.expr(), memory_address.length()); + + let minimum_word_size = MemoryWordSizeGadget::construct(cb, memory_address.length()); + let memory_expansion = MemoryExpansionGadget::construct(cb, [memory_address.address()]); + + let code_store_gas_cost = minimum_word_size.expr() + * select::expr( + is_create2.expr().0, + CREATE2_GAS_PER_CODE_WORD.expr(), + CREATE_GAS_PER_CODE_WORD.expr(), + ); + let gas_cost = GasCost::CREATE.expr() + memory_expansion.gas_cost() + code_store_gas_cost; + let insufficient_gas = LtGadget::construct(cb, cb.curr.state.gas_left.expr(), gas_cost); + + cb.require_equal( + "Memory address is overflow, init code size is overflow, or gas left is less than cost", + or::expr([ + memory_address.overflow(), + init_code_size_overflow.expr(), + insufficient_gas.expr(), + ]), + 1.expr(), + ); + + let common_error_gadget = CommonErrorGadget::construct( + cb, + opcode.expr(), + select::expr(is_create2.expr().0, 4.expr(), 3.expr()), + ); + + Self { + opcode, + value, + salt, + is_create2, + minimum_word_size, + memory_address, + memory_expansion, + init_code_size_overflow, + insufficient_gas, + common_error_gadget, + } + } + + fn assign_exec_step( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + block: &Block<F>, + _tx: &Transaction, + call: &Call, + step: &ExecStep, + ) -> Result<(), Error> { + log::debug!( + "ErrorOutOfGasCREATE: gas_cost = {}, gas_left = {}", + step.gas_cost, + step.gas_left, + ); + + let opcode = step.opcode().unwrap(); + let is_create2 = opcode == OpcodeId::CREATE2; + self.opcode + .assign(region, offset, Value::known(F::from(opcode.as_u64())))?; + self.is_create2.assign( + region, + offset, + F::from(opcode.as_u64()), + F::from(OpcodeId::CREATE2.as_u64()), + F::from(OpcodeId::CREATE.as_u64()), + )?; + + let [value, memory_offset, memory_length] = + [0, 1, 2].map(|i| block.get_rws(step, i).stack_value()); + let salt = if is_create2 { + block.get_rws(step, 3).stack_value() + } else { + U256::zero() + }; + + self.value.assign_u256(region, offset, value)?; + self.salt.assign_u256(region, offset, salt)?; + + let memory_address = + self.memory_address + .assign(region, offset, memory_offset, memory_length)?; + + let init_code_size = + MemoryExpandedAddressGadget::<F>::length_value(memory_offset, memory_length); + let minimum_word_size = self + .minimum_word_size + .assign(region, offset, init_code_size)?; + let memory_expansion_gas = self + .memory_expansion + .assign(region, offset, step.memory_word_size(), [memory_address])? + .1; + + self.init_code_size_overflow.assign( + region, + offset, + F::from(MAX_INIT_CODE_SIZE), + F::from(init_code_size), + )?; + + let code_store_gas_cost = minimum_word_size + * if is_create2 { + CREATE2_GAS_PER_CODE_WORD + } else { + CREATE_GAS_PER_CODE_WORD + }; + self.insufficient_gas.assign( + region, + offset, + F::from(step.gas_left), + F::from(GasCost::CREATE + memory_expansion_gas + code_store_gas_cost), + )?; + + self.common_error_gadget.assign( + region, + offset, + block, + call, + step, + if is_create2 { 6 } else { 5 }, + )?; + + Ok(()) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::test_util::CircuitTestBuilder; + use eth_types::{bytecode, word, Bytecode, ToWord}; + use mock::{ + eth, + test_ctx::{helpers::account_0_code_account_1_no_code, LoggerConfig}, + TestContext, MOCK_ACCOUNTS, MOCK_BLOCK_GAS_LIMIT, + }; + + struct TestCase { + bytecode: Bytecode, + gas: u64, + } + + impl TestCase { + pub fn new(is_create2: bool, offset: U256, size: U256, gas: u64) -> Self { + let mut bytecode = Bytecode::default(); + if is_create2 { + bytecode.append(&bytecode! {PUSH1(0)}); // salt; + } + bytecode.append(&bytecode! { + PUSH32(size) // size + PUSH32(offset) // offset + PUSH1(0) // value + }); + bytecode.write_op(if is_create2 { + OpcodeId::CREATE2 + } else { + OpcodeId::CREATE + }); + + Self { bytecode, gas } + } + } + + #[test] + fn test_oog_create_simple() { + let mut cases = vec![]; + for is_create2 in [true, false] { + cases.push(TestCase::new( + is_create2, + 0xffffffff_u64.into(), + 0xff.into(), + 0xffff, + )); + + cases.push(TestCase::new(is_create2, U256::zero(), 4.into(), 0x7d08)); + } + + for case in cases.iter() { + test_root(case); + test_internal(case); + } + } + + #[test] + fn test_oog_create_max_expanded_address() { + for is_create2 in [true, false] { + // 0xffffffff1 + 0xffffffff0 = 0x1fffffffe1 + // > MAX_EXPANDED_MEMORY_ADDRESS (0x1fffffffe0) + let case = TestCase::new( + is_create2, + 0xffffffff1_u64.into(), + 0xffffffff0_u64.into(), + MOCK_BLOCK_GAS_LIMIT, + ); + + test_root(&case); + test_internal(&case); + } + } + + #[test] + fn test_oog_create_max_u64_address() { + for is_create2 in [true, false] { + let case = TestCase::new( + is_create2, + u64::MAX.into(), + u64::MAX.into(), + MOCK_BLOCK_GAS_LIMIT, + ); + + test_root(&case); + test_internal(&case); + } + } + + #[test] + fn test_oog_create_max_word_address() { + for is_create2 in [true, false] { + let case = TestCase::new(is_create2, U256::MAX, U256::MAX, MOCK_BLOCK_GAS_LIMIT); + + test_root(&case); + test_internal(&case); + } + } + + #[test] + fn test_oog_create_max_init_code_size() { + for is_create2 in [true, false] { + // For Shanghai, MAX_INIT_CODE_SIZE is 49152, it is constrained by + // `init_code_size_overflow`. + // For not Shanghai, MAX_INIT_CODE_SIZE is 0x1FFFFFFFE0, it is + // constrained by `memory_address.overflow()` + // (and `init_code_size_overflow`). + let case = TestCase::new( + is_create2, + U256::zero(), + (MAX_INIT_CODE_SIZE + 1).into(), + MOCK_BLOCK_GAS_LIMIT, + ); + + test_root(&case); + test_internal(&case); + } + } + + fn test_root(case: &TestCase) { + let ctx = TestContext::<2, 1>::new_with_logger_config( + None, + account_0_code_account_1_no_code(case.bytecode.clone()), + |mut txs, accs| { + txs[0] + .from(accs[1].address) + .to(accs[0].address) + .gas(case.gas.into()); + }, + |block, _tx| block, + LoggerConfig { + enable_memory: true, + ..Default::default() + }, + ) + .unwrap(); + + CircuitTestBuilder::new_from_test_ctx(ctx).run(); + } + + fn test_internal(case: &TestCase) { + let code_a = bytecode! { + PUSH1(0x00) // retLength + PUSH1(0x00) // retOffset + PUSH32(0x00) // argsLength + PUSH32(0x00) // argsOffset + PUSH1(0x00) // value + PUSH32(MOCK_ACCOUNTS[1].to_word()) // addr + PUSH32(case.gas) // gas + CALL + STOP + }; + + let ctx = TestContext::<3, 1>::new_with_logger_config( + None, + |accs| { + accs[0].address(MOCK_ACCOUNTS[0]).code(code_a); + accs[1] + .address(MOCK_ACCOUNTS[1]) + .code(case.bytecode.clone()); + accs[2].address(MOCK_ACCOUNTS[2]).balance(eth(1)); + }, + |mut txs, accs| { + txs[0] + .from(accs[2].address) + .to(accs[0].address) + .gas(word!("0xFFFFF")); + }, + |block, _tx| block, + LoggerConfig { + enable_memory: true, + ..Default::default() + }, + ) + .unwrap(); + + CircuitTestBuilder::new_from_test_ctx(ctx).run(); + } +} diff --git a/zkevm-circuits/src/evm_circuit/execution/error_oog_dynamic_memory.rs b/zkevm-circuits/src/evm_circuit/execution/error_oog_dynamic_memory.rs new file mode 100644 index 0000000000..a2662ccb78 --- /dev/null +++ b/zkevm-circuits/src/evm_circuit/execution/error_oog_dynamic_memory.rs @@ -0,0 +1,221 @@ +use crate::{ + evm_circuit::{ + execution::ExecutionGadget, + param::{N_BYTES_GAS, N_BYTES_MEMORY_ADDRESS}, + step::ExecutionState, + util::{ + common_gadget::CommonErrorGadget, + constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, + math_gadget::LtGadget, + memory_gadget::{ + CommonMemoryAddressGadget, MemoryExpandedAddressGadget, MemoryExpansionGadget, + }, + CachedRegion, Cell, + }, + }, + witness::{Block, Call, ExecStep, Transaction}, +}; +use eth_types::{evm_types::OpcodeId, Field}; +use gadgets::util::{or, Expr}; +use halo2_proofs::{circuit::Value, plonk::Error}; + +#[derive(Clone, Debug)] +pub(crate) struct ErrorOOGDynamicMemoryGadget<F> { + opcode: Cell<F>, + + memory_expansion: MemoryExpansionGadget<F, 1, N_BYTES_MEMORY_ADDRESS>, + memory_address: MemoryExpandedAddressGadget<F>, + insufficient_gas: LtGadget<F, N_BYTES_GAS>, + common_error_gadget: CommonErrorGadget<F>, +} + +impl<F: Field> ExecutionGadget<F> for ErrorOOGDynamicMemoryGadget<F> { + const NAME: &'static str = "ErrorOutOfGasDynamicMemoryExpansion"; + const EXECUTION_STATE: ExecutionState = ExecutionState::ErrorOutOfGasDynamicMemoryExpansion; + + // Support other OOG due to pure memory including RETURN and REVERT + fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { + let opcode = cb.query_cell(); + + cb.require_in_set( + "ErrorOutOfGasDynamicMemoryExpansion opcode must be RETURN or REVERT", + opcode.expr(), + vec![OpcodeId::RETURN.expr(), OpcodeId::REVERT.expr()], + ); + + let memory_address = MemoryExpandedAddressGadget::construct_self(cb); + cb.stack_pop(memory_address.offset_word()); + cb.stack_pop(memory_address.length_word()); + let memory_expansion = MemoryExpansionGadget::construct(cb, [memory_address.address()]); + + // constant gas of RETURN and REVERT is zero. + let insufficient_gas = LtGadget::construct( + cb, + cb.curr.state.gas_left.expr(), + memory_expansion.gas_cost(), + ); + cb.require_equal( + "Memory address is overflow or gas left is less than required", + or::expr([memory_address.overflow(), insufficient_gas.expr()]), + 1.expr(), + ); + + let common_error_gadget = + CommonErrorGadget::construct(cb, opcode.expr(), cb.rw_counter_offset()); + + Self { + opcode, + memory_address, + memory_expansion, + insufficient_gas, + common_error_gadget, + } + } + + fn assign_exec_step( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + block: &Block<F>, + _: &Transaction, + call: &Call, + step: &ExecStep, + ) -> Result<(), Error> { + let opcode = step.opcode().unwrap(); + self.opcode + .assign(region, offset, Value::known(F::from(opcode.as_u64())))?; + + let [memory_offset, length] = [0, 1].map(|idx| block.get_rws(step, idx).stack_value()); + + let expanded_address = self + .memory_address + .assign(region, offset, memory_offset, length)?; + + let (_, memory_expansion_cost) = self.memory_expansion.assign( + region, + offset, + step.memory_word_size(), + [expanded_address], + )?; + + // constant gas of RETURN and REVERT is zero + self.insufficient_gas.assign( + region, + offset, + F::from(step.gas_left), + F::from(memory_expansion_cost), + )?; + + self.common_error_gadget + .assign(region, offset, block, call, step, 4)?; + Ok(()) + } +} + +#[cfg(test)] +mod tests { + use crate::test_util::CircuitTestBuilder; + use eth_types::{bytecode, word, Bytecode, ToWord, U256}; + use mock::{ + eth, test_ctx::helpers::account_0_code_account_1_no_code, TestContext, MOCK_ACCOUNTS, + }; + + #[test] + fn test_oog_dynamic_memory_simple() { + for code in testing_bytecodes(0x40_u64.into(), 0x14.into()).iter() { + test_root(code); + test_internal(code); + } + } + + #[test] + fn test_oog_dynamic_memory_max_expanded_address() { + // 0xffffffff1 + 0xffffffff0 = 0x1fffffffe1 + // > MAX_EXPANDED_MEMORY_ADDRESS (0x1fffffffe0) + for code in testing_bytecodes(0xffffffff1_u64.into(), 0xffffffff0_u64.into()).iter() { + test_root(code); + test_internal(code); + } + } + + #[test] + fn test_oog_dynamic_memory_max_u64_address() { + for code in testing_bytecodes(u64::MAX.into(), u64::MAX.into()).iter() { + test_root(code); + test_internal(code); + } + } + + #[test] + fn test_oog_dynamic_memory_max_word_address() { + for code in testing_bytecodes(U256::MAX, U256::MAX).iter() { + test_root(code); + test_internal(code); + } + } + + fn test_root(code: &Bytecode) { + let ctx = TestContext::<2, 1>::new( + None, + account_0_code_account_1_no_code(code.clone()), + |mut txs, accs| { + txs[0] + .from(accs[1].address) + .to(accs[0].address) + .gas(word!("0x5FFF")); + }, + |block, _tx| block, + ) + .unwrap(); + + CircuitTestBuilder::new_from_test_ctx(ctx).run(); + } + + fn test_internal(code: &Bytecode) { + let code_a = bytecode! { + PUSH1(0x00) // retLength + PUSH1(0x00) // retOffset + PUSH32(0x00) // argsLength + PUSH32(0x00) // argsOffset + PUSH1(0x00) // value + PUSH32(MOCK_ACCOUNTS[1].to_word()) // addr + PUSH32(0xFFFF) // gas + CALL + STOP + }; + + let ctx = TestContext::<3, 1>::new( + None, + |accs| { + accs[0].address(MOCK_ACCOUNTS[0]).code(code_a); + accs[1].address(MOCK_ACCOUNTS[1]).code(code.clone()); + accs[2].address(MOCK_ACCOUNTS[2]).balance(eth(1)); + }, + |mut txs, accs| { + txs[0] + .from(accs[2].address) + .to(accs[0].address) + .gas(word!("0xFFFFF")); + }, + |block, _tx| block, + ) + .unwrap(); + + CircuitTestBuilder::new_from_test_ctx(ctx).run(); + } + + fn testing_bytecodes(offset: U256, size: U256) -> Vec<Bytecode> { + vec![ + bytecode! { + PUSH32(size) + PUSH32(offset) + RETURN + }, + bytecode! { + PUSH32(size) + PUSH32(offset) + REVERT + }, + ] + } +} diff --git a/zkevm-circuits/src/evm_circuit/execution/error_oog_exp.rs b/zkevm-circuits/src/evm_circuit/execution/error_oog_exp.rs index 98c262f7b5..dc819860bb 100644 --- a/zkevm-circuits/src/evm_circuit/execution/error_oog_exp.rs +++ b/zkevm-circuits/src/evm_circuit/execution/error_oog_exp.rs @@ -7,15 +7,18 @@ use crate::{ common_gadget::CommonErrorGadget, constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, math_gadget::{ByteSizeGadget, LtGadget}, - CachedRegion, Cell, Word, + CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{Word32Cell, WordExpr}, + Expr, + }, }; use eth_types::{ evm_types::{GasCost, OpcodeId}, - Field, ToLittleEndian, + Field, }; use halo2_proofs::{circuit::Value, plonk::Error}; @@ -24,8 +27,8 @@ use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] pub(crate) struct ErrorOOGExpGadget<F> { opcode: Cell<F>, - base: Word<F>, - exponent: Word<F>, + base: Word32Cell<F>, + exponent: Word32Cell<F>, exponent_byte_size: ByteSizeGadget<F>, insufficient_gas_cost: LtGadget<F, N_BYTES_GAS>, common_error_gadget: CommonErrorGadget<F>, @@ -45,15 +48,15 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGExpGadget<F> { OpcodeId::EXP.expr(), ); - let base = cb.query_word_rlc(); - let exponent = cb.query_word_rlc(); - cb.stack_pop(base.expr()); - cb.stack_pop(exponent.expr()); + let base = cb.query_word32(); + let exponent = cb.query_word32(); + cb.stack_pop(base.to_word()); + cb.stack_pop(exponent.to_word()); let exponent_byte_size = ByteSizeGadget::construct( cb, exponent - .cells + .limbs .iter() .map(Expr::expr) .collect::<Vec<_>>() @@ -77,7 +80,8 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGExpGadget<F> { 1.expr(), ); - let common_error_gadget = CommonErrorGadget::construct(cb, opcode.expr(), 4.expr()); + let common_error_gadget = + CommonErrorGadget::construct(cb, opcode.expr(), cb.rw_counter_offset()); Self { opcode, base, @@ -108,9 +112,8 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGExpGadget<F> { self.opcode .assign(region, offset, Value::known(F::from(opcode.as_u64())))?; - self.base.assign(region, offset, Some(base.to_le_bytes()))?; - self.exponent - .assign(region, offset, Some(exponent.to_le_bytes()))?; + self.base.assign_u256(region, offset, base)?; + self.exponent.assign_u256(region, offset, exponent)?; self.exponent_byte_size.assign(region, offset, exponent)?; self.insufficient_gas_cost.assign_value( region, diff --git a/zkevm-circuits/src/evm_circuit/execution/error_oog_log.rs b/zkevm-circuits/src/evm_circuit/execution/error_oog_log.rs index 0892ce5958..4dbb9f4a24 100644 --- a/zkevm-circuits/src/evm_circuit/execution/error_oog_log.rs +++ b/zkevm-circuits/src/evm_circuit/execution/error_oog_log.rs @@ -7,8 +7,10 @@ use crate::{ common_gadget::CommonErrorGadget, constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, math_gadget::LtGadget, - memory_gadget::{MemoryAddressGadget, MemoryExpansionGadget}, - CachedRegion, Cell, + memory_gadget::{ + CommonMemoryAddressGadget, MemoryExpandedAddressGadget, MemoryExpansionGadget, + }, + or, CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, @@ -25,7 +27,7 @@ use halo2_proofs::{circuit::Value, plonk::Error}; pub(crate) struct ErrorOOGLogGadget<F> { opcode: Cell<F>, // memory address - memory_address: MemoryAddressGadget<F>, + memory_address: MemoryExpandedAddressGadget<F>, is_static_call: Cell<F>, is_opcode_logn: LtGadget<F, 1>, // constrain gas left is less than gas cost @@ -41,12 +43,12 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGLogGadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { let opcode = cb.query_cell(); - let mstart = cb.query_cell_phase2(); - let msize = cb.query_word_rlc(); + // memory expand gadget + let memory_address = MemoryExpandedAddressGadget::construct_self(cb); // Pop mstart_address, msize from stack - cb.stack_pop(mstart.expr()); - cb.stack_pop(msize.expr()); + cb.stack_pop(memory_address.offset_word()); + cb.stack_pop(memory_address.length_word()); // constrain not in static call let is_static_call = cb.call_context(None, CallContextFieldTag::IsStatic); @@ -60,9 +62,6 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGLogGadget<F> { 1.expr(), ); - // check memory - let memory_address = MemoryAddressGadget::construct(cb, mstart, msize); - // Calculate the next memory size and the gas cost for this memory // access let memory_expansion = MemoryExpansionGadget::construct(cb, [memory_address.address()]); @@ -76,12 +75,12 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGLogGadget<F> { // required let insufficient_gas = LtGadget::construct(cb, cb.curr.state.gas_left.expr(), gas_cost); cb.require_equal( - "gas left is less than gas required ", - insufficient_gas.expr(), + "Memory address is overflow or gas left is less than cost", + or::expr([memory_address.overflow(), insufficient_gas.expr()]), 1.expr(), ); - let common_error_gadget = CommonErrorGadget::construct(cb, opcode.expr(), 5.expr()); + let common_error_gadget = CommonErrorGadget::construct(cb, opcode.expr(), 3.expr()); Self { opcode, @@ -114,8 +113,10 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGLogGadget<F> { .assign(region, offset, memory_start, msize)?; // Memory expansion - self.memory_expansion - .assign(region, offset, step.memory_word_size(), [memory_address])?; + let memory_expansion_cost = self + .memory_expansion + .assign(region, offset, step.memory_word_size(), [memory_address])? + .1; let topic_count = opcode.postfix().expect("opcode with postfix") as u64; assert!(topic_count <= 4); @@ -125,13 +126,13 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGLogGadget<F> { self.is_opcode_logn .assign(region, offset, F::from(topic_count), F::from(5u64))?; + let gas_cost = GasCost::LOG + + GasCost::LOG * topic_count + + 8 * MemoryExpandedAddressGadget::<F>::length_value(memory_start, msize) + + memory_expansion_cost; // Gas insufficient check - self.insufficient_gas.assign( - region, - offset, - F::from(step.gas_left), - F::from(step.gas_cost), - )?; + self.insufficient_gas + .assign(region, offset, F::from(step.gas_left), F::from(gas_cost))?; self.common_error_gadget .assign(region, offset, block, call, step, 5)?; Ok(()) @@ -141,33 +142,69 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGLogGadget<F> { #[cfg(test)] mod test { use crate::test_util::CircuitTestBuilder; - use bus_mapping::evm::OpcodeId; use eth_types::{ - self, address, bytecode, bytecode::Bytecode, evm_types::GasCost, geth_types::Account, - Address, ToWord, Word, U64, + address, bytecode, bytecode::Bytecode, evm_types::GasCost, geth_types::Account, Address, + ToWord, Transaction, Word, U256, }; - use mock::{ eth, gwei, test_ctx::helpers::account_0_code_account_1_no_code, TestContext, MOCK_ACCOUNTS, }; - fn gas(call_data: &[u8]) -> Word { - Word::from( - GasCost::TX - + 2 * OpcodeId::PUSH32.constant_gas_cost() - + call_data - .iter() - .map(|&x| if x == 0 { 4 } else { 16 }) - .sum::<u64>(), - ) + #[test] + fn test_oog_log_root_simple() { + test_root(100.into(), 0.into()); + } + + #[test] + fn test_oog_log_internal_simple() { + let bytecode = bytecode! { + PUSH32(Word::from(0)) + PUSH32(Word::from(10)) + PUSH32(Word::from(224)) + PUSH32(Word::from(1025)) + PUSH32(Word::from(5089)) + LOG2 + STOP + }; + let callee = callee(bytecode); + test_internal(caller(), callee); + } + + #[test] + fn test_oog_log_max_expanded_address() { + // 0xffffffff1 + 0xffffffff0 = 0x1fffffffe1 + // > MAX_EXPANDED_MEMORY_ADDRESS (0x1fffffffe0) + test_root(0xffffffff1_u64.into(), 0xffffffff0_u64.into()); + } + + #[test] + fn test_oog_log_max_u64_address() { + test_root(u64::MAX.into(), u64::MAX.into()); + } + + #[test] + fn test_oog_log_max_word_address() { + test_root(U256::MAX, U256::MAX); } - fn test_oog_log(tx: eth_types::Transaction) { + #[derive(Clone, Copy, Debug, Default)] + struct Stack { + gas: u64, + value: Word, + cd_offset: u64, + cd_length: u64, + rd_offset: u64, + rd_length: u64, + } + + fn test_root(offset: U256, size: U256) { + let tx = mock_tx(eth(1), gwei(2), vec![]); + let code = bytecode! { PUSH1(0) - PUSH1(0) - PUSH1(100) + PUSH32(size) + PUSH32(offset) LOG0 }; @@ -181,7 +218,7 @@ mod test { .from(tx.from) .gas_price(tx.gas_price.unwrap()) .gas(tx.gas + 5) - .input(tx.input) + .input(tx.input.clone()) .value(tx.value); }, |block, _tx| block.number(0xcafeu64), @@ -191,34 +228,27 @@ mod test { CircuitTestBuilder::new_from_test_ctx(ctx).run(); } - fn mock_tx(value: Word, gas_price: Word, calldata: Vec<u8>) -> eth_types::Transaction { - let from = MOCK_ACCOUNTS[1]; - let to = MOCK_ACCOUNTS[0]; - eth_types::Transaction { - from, - to: Some(to), - value, - gas: gas(&calldata), - gas_price: Some(gas_price), - input: calldata.into(), - ..Default::default() - } - } - - #[test] - // test oog log in root call - fn test_oog_log_root() { - test_oog_log(mock_tx(eth(1), gwei(2), vec![])); - } + fn test_internal(caller: Account, callee: Account) { + let ctx = TestContext::<3, 1>::new( + None, + |accs| { + accs[0] + .address(address!("0x000000000000000000000000000000000000cafe")) + .balance(Word::from(10u64.pow(19))); + accs[1].account(&caller); + accs[2].account(&callee); + }, + |mut txs, accs| { + txs[0] + .from(accs[0].address) + .to(accs[1].address) + .gas(24000.into()); + }, + |block, _tx| block.number(0xcafeu64), + ) + .unwrap(); - #[derive(Clone, Copy, Debug, Default)] - struct Stack { - gas: u64, - value: Word, - cd_offset: u64, - cd_length: u64, - rd_offset: u64, - rd_length: u64, + CircuitTestBuilder::new_from_test_ctx(ctx).run(); } fn caller() -> Account { @@ -252,62 +282,35 @@ mod test { .write_op(terminator) }; - Account { - address: Address::repeat_byte(0xfe), - balance: Word::from(10).pow(20.into()), - code: bytecode.to_vec().into(), - ..Default::default() - } + Account::mock_100_ether(bytecode) } - fn oog_log_internal_call(caller: Account, callee: Account) { - let ctx = TestContext::<3, 1>::new( - None, - |accs| { - accs[0] - .address(address!("0x000000000000000000000000000000000000cafe")) - .balance(Word::from(10u64.pow(19))); - accs[1].account(&caller); - accs[2].account(&callee); - }, - |mut txs, accs| { - txs[0] - .from(accs[0].address) - .to(accs[1].address) - .gas(24000.into()); - }, - |block, _tx| block.number(0xcafeu64), - ) - .unwrap(); + fn callee(code: Bytecode) -> Account { + Account::mock_code_balance(code) + } - CircuitTestBuilder::new_from_test_ctx(ctx).run(); + fn gas(call_data: &[u8]) -> Word { + Word::from( + GasCost::TX + + 2 * OpcodeId::PUSH32.constant_gas_cost() + + call_data + .iter() + .map(|&x| if x == 0 { 4 } else { 16 }) + .sum::<u64>(), + ) } - fn callee(code: Bytecode) -> Account { - let code = code.to_vec(); - let is_empty = code.is_empty(); - Account { - address: Address::repeat_byte(0xff), - code: code.into(), - nonce: U64::from(!is_empty as u64), - balance: if is_empty { 0 } else { 0xdeadbeefu64 }.into(), + fn mock_tx(value: Word, gas_price: Word, calldata: Vec<u8>) -> Transaction { + let from = MOCK_ACCOUNTS[1]; + let to = MOCK_ACCOUNTS[0]; + Transaction { + from, + to: Some(to), + value, + gas: gas(&calldata), + gas_price: Some(gas_price), + input: calldata.into(), ..Default::default() } } - - #[test] - // test oog log in internal call - fn test_oog_log_internal() { - let bytecode = bytecode! { - PUSH32(Word::from(0)) - PUSH32(Word::from(10)) - PUSH32(Word::from(224)) - PUSH32(Word::from(1025)) - PUSH32(Word::from(5089)) - LOG2 - STOP - }; - let callee = callee(bytecode); - oog_log_internal_call(caller(), callee); - } } diff --git a/zkevm-circuits/src/evm_circuit/execution/error_oog_memory_copy.rs b/zkevm-circuits/src/evm_circuit/execution/error_oog_memory_copy.rs index 63499da840..4a3b28ac96 100644 --- a/zkevm-circuits/src/evm_circuit/execution/error_oog_memory_copy.rs +++ b/zkevm-circuits/src/evm_circuit/execution/error_oog_memory_copy.rs @@ -1,24 +1,29 @@ use crate::{ evm_circuit::{ execution::ExecutionGadget, - param::{N_BYTES_ACCOUNT_ADDRESS, N_BYTES_GAS, N_BYTES_MEMORY_WORD_SIZE}, + param::{N_BYTES_GAS, N_BYTES_MEMORY_WORD_SIZE}, step::ExecutionState, util::{ common_gadget::CommonErrorGadget, constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, - from_bytes, math_gadget::{IsZeroGadget, LtGadget}, - memory_gadget::{MemoryAddressGadget, MemoryCopierGasGadget, MemoryExpansionGadget}, - select, CachedRegion, Cell, Word, + memory_gadget::{ + CommonMemoryAddressGadget, MemoryCopierGasGadget, MemoryExpandedAddressGadget, + MemoryExpansionGadget, + }, + or, select, AccountAddress, CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, table::CallContextFieldTag, - util::Expr, + util::{ + word::{Word, WordCell, WordExpr}, + Expr, + }, }; use eth_types::{ evm_types::{GasCost, OpcodeId}, - Field, ToLittleEndian, U256, + Field, ToAddress, U256, }; use halo2_proofs::{circuit::Value, plonk::Error}; @@ -32,11 +37,11 @@ pub(crate) struct ErrorOOGMemoryCopyGadget<F> { is_warm: Cell<F>, tx_id: Cell<F>, /// Extra stack pop for `EXTCODECOPY` - external_address: Word<F>, + external_address: AccountAddress<F>, /// Source offset - src_offset: Word<F>, + src_offset: WordCell<F>, /// Destination offset and size to copy - dst_memory_addr: MemoryAddressGadget<F>, + dst_memory_addr: MemoryExpandedAddressGadget<F>, memory_expansion: MemoryExpansionGadget<F, 1, N_BYTES_MEMORY_WORD_SIZE>, memory_copier_gas: MemoryCopierGasGadget<F, { GasCost::COPY }>, insufficient_gas: LtGadget<F, N_BYTES_GAS>, @@ -62,10 +67,8 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGMemoryCopyGadget<F> { ], ); - let dst_offset = cb.query_cell_phase2(); - let src_offset = cb.query_word_rlc(); - let copy_size = cb.query_word_rlc(); - let external_address = cb.query_word_rlc(); + let src_offset = cb.query_word_unchecked(); + let external_address = cb.query_account_address(); let is_warm = cb.query_bool(); let tx_id = cb.query_cell(); @@ -73,24 +76,24 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGMemoryCopyGadget<F> { IsZeroGadget::construct(cb, opcode.expr() - OpcodeId::EXTCODECOPY.expr()); cb.condition(is_extcodecopy.expr(), |cb| { - cb.call_context_lookup(false.expr(), None, CallContextFieldTag::TxId, tx_id.expr()); + cb.call_context_lookup_read( + None, + CallContextFieldTag::TxId, + Word::from_lo_unchecked(tx_id.expr()), + ); // Check if EXTCODECOPY external address is warm. - cb.account_access_list_read( - tx_id.expr(), - from_bytes::expr(&external_address.cells[..N_BYTES_ACCOUNT_ADDRESS]), - is_warm.expr(), - ); + cb.account_access_list_read(tx_id.expr(), external_address.to_word(), is_warm.expr()); // EXTCODECOPY has an extra stack pop for external address. - cb.stack_pop(external_address.expr()); + cb.stack_pop(external_address.to_word()); }); - cb.stack_pop(dst_offset.expr()); - cb.stack_pop(src_offset.expr()); - cb.stack_pop(copy_size.expr()); + let dst_memory_addr = MemoryExpandedAddressGadget::construct_self(cb); + cb.stack_pop(dst_memory_addr.offset_word()); + cb.stack_pop(src_offset.to_word()); + cb.stack_pop(dst_memory_addr.length_word()); - let dst_memory_addr = MemoryAddressGadget::construct(cb, dst_offset, copy_size); let memory_expansion = MemoryExpansionGadget::construct(cb, [dst_memory_addr.address()]); let memory_copier_gas = MemoryCopierGasGadget::construct( cb, @@ -118,18 +121,13 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGMemoryCopyGadget<F> { ); cb.require_equal( - "Gas left is less than gas cost", - insufficient_gas.expr(), + "Memory address is overflow or gas left is less than cost", + or::expr([dst_memory_addr.overflow(), insufficient_gas.expr()]), 1.expr(), ); - let common_error_gadget = CommonErrorGadget::construct( - cb, - opcode.expr(), - // EXTCODECOPY has extra 1 call context lookup (tx_id), 1 account access list - // read (is_warm), and 1 stack pop (external_address). - 5.expr() + 3.expr() * is_extcodecopy.expr(), - ); + let common_error_gadget = + CommonErrorGadget::construct(cb, opcode.expr(), cb.rw_counter_offset()); Self { opcode, @@ -183,11 +181,10 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGMemoryCopyGadget<F> { self.is_warm .assign(region, offset, Value::known(F::from(u64::from(is_warm))))?; self.tx_id - .assign(region, offset, Value::known(F::from(transaction.id as u64)))?; + .assign(region, offset, Value::known(F::from(transaction.id)))?; self.external_address - .assign(region, offset, Some(external_address.to_le_bytes()))?; - self.src_offset - .assign(region, offset, Some(src_offset.to_le_bytes()))?; + .assign_h160(region, offset, external_address.to_address())?; + self.src_offset.assign_u256(region, offset, src_offset)?; let memory_addr = self .dst_memory_addr .assign(region, offset, dst_offset, copy_size)?; @@ -197,7 +194,7 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGMemoryCopyGadget<F> { let memory_copier_gas = self.memory_copier_gas.assign( region, offset, - copy_size.as_u64(), + MemoryExpandedAddressGadget::<F>::length_value(dst_offset, copy_size), memory_expansion_cost, )?; let constant_gas_cost = if is_extcodecopy { @@ -242,12 +239,14 @@ mod tests { evm_circuit::test::{rand_bytes, rand_word}, test_util::CircuitTestBuilder, }; + use bus_mapping::circuit_input_builder::FixedCParams; use eth_types::{ bytecode, evm_types::gas_utils::memory_copier_gas_cost, Bytecode, ToWord, U256, }; use itertools::Itertools; use mock::{ eth, test_ctx::helpers::account_0_code_account_1_no_code, TestContext, MOCK_ACCOUNTS, + MOCK_BLOCK_GAS_LIMIT, }; const TESTING_COMMON_OPCODES: &[OpcodeId] = &[ @@ -265,7 +264,8 @@ mod tests { .iter() .cartesian_product(TESTING_DST_OFFSET_COPY_SIZE_PAIRS.iter()) { - let testing_data = TestingData::new_for_common_opcode(*opcode, *dst_offset, *copy_size); + let testing_data = + TestingData::new_for_common_opcode(*opcode, *dst_offset, *copy_size, None); test_root(&testing_data); test_internal(&testing_data); @@ -278,20 +278,38 @@ mod tests { .iter() .cartesian_product(TESTING_DST_OFFSET_COPY_SIZE_PAIRS.iter()) { - let testing_data = TestingData::new_for_extcodecopy(*is_warm, *dst_offset, *copy_size); + let testing_data = + TestingData::new_for_extcodecopy(*is_warm, *dst_offset, *copy_size, None); test_root(&testing_data); test_internal(&testing_data); } } + #[test] + fn test_oog_memory_copy_max_expanded_address() { + // 0xffffffff1 + 0xffffffff0 = 0x1fffffffe1 + // > MAX_EXPANDED_MEMORY_ADDRESS (0x1fffffffe0) + test_for_edge_memory_size(0xffffffff1, 0xffffffff0); + } + + #[test] + fn test_oog_memory_copy_max_u64_address() { + test_for_edge_memory_size(u64::MAX, u64::MAX); + } + struct TestingData { bytecode: Bytecode, gas_cost: u64, } impl TestingData { - pub fn new_for_common_opcode(opcode: OpcodeId, dst_offset: u64, copy_size: u64) -> Self { + pub fn new_for_common_opcode( + opcode: OpcodeId, + dst_offset: u64, + copy_size: u64, + gas_cost: Option<u64>, + ) -> Self { let bytecode = bytecode! { PUSH32(copy_size) PUSH32(rand_word()) @@ -299,16 +317,23 @@ mod tests { .write_op(opcode) }; - let memory_word_size = (dst_offset + copy_size + 31) / 32; + let gas_cost = gas_cost.unwrap_or_else(|| { + let memory_word_size = (dst_offset + copy_size + 31) / 32; - let gas_cost = OpcodeId::PUSH32.constant_gas_cost() * 3 - + opcode.constant_gas_cost() - + memory_copier_gas_cost(0, memory_word_size, copy_size); + OpcodeId::PUSH32.constant_gas_cost() * 3 + + opcode.constant_gas_cost() + + memory_copier_gas_cost(0, memory_word_size, copy_size) + }); Self { bytecode, gas_cost } } - pub fn new_for_extcodecopy(is_warm: bool, dst_offset: u64, copy_size: u64) -> Self { + pub fn new_for_extcodecopy( + is_warm: bool, + dst_offset: u64, + copy_size: u64, + gas_cost: Option<u64>, + ) -> Self { let external_address = MOCK_ACCOUNTS[4]; let mut bytecode = bytecode! { @@ -319,12 +344,6 @@ mod tests { EXTCODECOPY }; - let memory_word_size = (dst_offset + copy_size + 31) / 32; - - let mut gas_cost = OpcodeId::PUSH32.constant_gas_cost() * 4 - + GasCost::COLD_ACCOUNT_ACCESS - + memory_copier_gas_cost(0, memory_word_size, copy_size); - if is_warm { bytecode.append(&bytecode! { PUSH32(copy_size) @@ -333,32 +352,59 @@ mod tests { PUSH32(external_address.to_word()) EXTCODECOPY }); - - gas_cost += OpcodeId::PUSH32.constant_gas_cost() * 4 - + GasCost::WARM_ACCESS - + memory_copier_gas_cost(memory_word_size, memory_word_size, copy_size); } + let gas_cost = gas_cost.unwrap_or_else(|| { + let memory_word_size = (dst_offset + copy_size + 31) / 32; + + let gas_cost = OpcodeId::PUSH32.constant_gas_cost() * 4 + + GasCost::COLD_ACCOUNT_ACCESS + + memory_copier_gas_cost(0, memory_word_size, copy_size); + + if is_warm { + gas_cost + + OpcodeId::PUSH32.constant_gas_cost() * 4 + + GasCost::WARM_ACCESS + + memory_copier_gas_cost(memory_word_size, memory_word_size, copy_size) + } else { + gas_cost + } + }); + Self { bytecode, gas_cost } } } fn test_root(testing_data: &TestingData) { + let gas_cost = GasCost::TX + // Decrease expected gas cost (by 1) to trigger out of gas error. + .checked_add(testing_data.gas_cost - 1) + .unwrap_or(MOCK_BLOCK_GAS_LIMIT); + let gas_cost = if gas_cost > MOCK_BLOCK_GAS_LIMIT { + MOCK_BLOCK_GAS_LIMIT + } else { + gas_cost + }; + let ctx = TestContext::<2, 1>::new( None, account_0_code_account_1_no_code(testing_data.bytecode.clone()), |mut txs, accs| { - // Decrease expected gas cost (by 1) to trigger out of gas error. txs[0] .from(accs[1].address) .to(accs[0].address) - .gas((GasCost::TX + testing_data.gas_cost - 1).into()); + .gas(gas_cost.into()); }, |block, _tx| block.number(0xcafe_u64), ) .unwrap(); - CircuitTestBuilder::new_from_test_ctx(ctx).run(); + CircuitTestBuilder::new_from_test_ctx(ctx) + .params(FixedCParams { + max_copy_rows: 1750, + ..Default::default() + }) + .run(); } fn test_internal(testing_data: &TestingData) { @@ -401,6 +447,37 @@ mod tests { ) .unwrap(); - CircuitTestBuilder::new_from_test_ctx(ctx).run(); + CircuitTestBuilder::new_from_test_ctx(ctx) + .params(FixedCParams { + max_copy_rows: 1750, + ..Default::default() + }) + .run(); + } + + fn test_for_edge_memory_size(dst_offset: u64, copy_size: u64) { + TESTING_COMMON_OPCODES.iter().for_each(|opcode| { + let testing_data = TestingData::new_for_common_opcode( + *opcode, + dst_offset, + copy_size, + Some(MOCK_BLOCK_GAS_LIMIT), + ); + + test_root(&testing_data); + test_internal(&testing_data); + }); + + [false, true].into_iter().for_each(|is_warm| { + let testing_data = TestingData::new_for_extcodecopy( + is_warm, + dst_offset, + copy_size, + Some(MOCK_BLOCK_GAS_LIMIT), + ); + + test_root(&testing_data); + test_internal(&testing_data); + }); } } diff --git a/zkevm-circuits/src/evm_circuit/execution/error_oog_sha3.rs b/zkevm-circuits/src/evm_circuit/execution/error_oog_sha3.rs new file mode 100644 index 0000000000..480d1ec077 --- /dev/null +++ b/zkevm-circuits/src/evm_circuit/execution/error_oog_sha3.rs @@ -0,0 +1,293 @@ +use crate::{ + evm_circuit::{ + execution::ExecutionGadget, + param::{N_BYTES_GAS, N_BYTES_MEMORY_WORD_SIZE}, + step::ExecutionState, + util::{ + common_gadget::CommonErrorGadget, + constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, + math_gadget::LtGadget, + memory_gadget::{ + CommonMemoryAddressGadget, MemoryCopierGasGadget, MemoryExpandedAddressGadget, + MemoryExpansionGadget, + }, + or, CachedRegion, Cell, + }, + witness::{Block, Call, ExecStep, Transaction}, + }, + util::Expr, +}; +use eth_types::{ + evm_types::{GasCost, OpcodeId}, + Field, +}; +use halo2_proofs::{circuit::Value, plonk::Error}; + +/// Gadget to implement the corresponding out of gas error for +/// [`OpcodeId::SHA3`]. +#[derive(Clone, Debug)] +pub(crate) struct ErrorOOGSha3Gadget<F> { + opcode: Cell<F>, + memory_address: MemoryExpandedAddressGadget<F>, + memory_expansion: MemoryExpansionGadget<F, 1, N_BYTES_MEMORY_WORD_SIZE>, + memory_copier_gas: MemoryCopierGasGadget<F, { GasCost::COPY_SHA3 }>, + insufficient_gas: LtGadget<F, N_BYTES_GAS>, + common_error_gadget: CommonErrorGadget<F>, +} + +impl<F: Field> ExecutionGadget<F> for ErrorOOGSha3Gadget<F> { + const NAME: &'static str = "ErrorOutOfGasSHA3"; + + const EXECUTION_STATE: ExecutionState = ExecutionState::ErrorOutOfGasSHA3; + + fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { + let opcode = cb.query_cell(); + cb.require_equal( + "ErrorOutOfGasSHA3 opcode must be SHA3", + opcode.expr(), + OpcodeId::SHA3.expr(), + ); + + let memory_address = MemoryExpandedAddressGadget::construct_self(cb); + cb.stack_pop(memory_address.offset_word()); + cb.stack_pop(memory_address.length_word()); + + let memory_expansion = MemoryExpansionGadget::construct(cb, [memory_address.address()]); + let memory_copier_gas = MemoryCopierGasGadget::construct( + cb, + memory_address.length(), + memory_expansion.gas_cost(), + ); + + let insufficient_gas = LtGadget::construct( + cb, + cb.curr.state.gas_left.expr(), + OpcodeId::SHA3.constant_gas_cost().expr() + memory_copier_gas.gas_cost(), + ); + + cb.require_equal( + "Memory address is overflow or gas left is less than cost", + or::expr([memory_address.overflow(), insufficient_gas.expr()]), + 1.expr(), + ); + + let common_error_gadget = + CommonErrorGadget::construct(cb, opcode.expr(), cb.rw_counter_offset()); + + Self { + opcode, + memory_address, + memory_expansion, + memory_copier_gas, + insufficient_gas, + common_error_gadget, + } + } + + fn assign_exec_step( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + block: &Block<F>, + _tx: &Transaction, + call: &Call, + step: &ExecStep, + ) -> Result<(), Error> { + log::debug!( + "ErrorOutOfGasSHA3: gas_cost = {}, gas_left = {}", + step.gas_cost, + step.gas_left, + ); + + let opcode = step.opcode(); + self.opcode.assign( + region, + offset, + Value::known(F::from(opcode.unwrap().as_u64())), + )?; + + let [memory_offset, memory_length] = + [0, 1].map(|idx| block.get_rws(step, idx).stack_value()); + + let expanded_address = + self.memory_address + .assign(region, offset, memory_offset, memory_length)?; + let (_, memory_expansion_cost) = self.memory_expansion.assign( + region, + offset, + step.memory_word_size(), + [expanded_address], + )?; + let memory_copier_gas = self.memory_copier_gas.assign( + region, + offset, + MemoryExpandedAddressGadget::<F>::length_value(memory_offset, memory_length), + memory_expansion_cost, + )?; + self.insufficient_gas.assign_value( + region, + offset, + Value::known(F::from(step.gas_left)), + Value::known(F::from( + OpcodeId::SHA3.constant_gas_cost() + memory_copier_gas, + )), + )?; + self.common_error_gadget + .assign(region, offset, block, call, step, 4)?; + + Ok(()) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::{evm_circuit::test::rand_bytes, test_util::CircuitTestBuilder}; + use eth_types::{ + bytecode, evm_types::gas_utils::memory_copier_gas_cost, Bytecode, ToWord, U256, + }; + use mock::{ + eth, test_ctx::helpers::account_0_code_account_1_no_code, TestContext, MOCK_ACCOUNTS, + MOCK_BLOCK_GAS_LIMIT, + }; + + #[test] + fn test_oog_sha3_less_than_constant_gas() { + let testing_data = TestingData::new(0x20, 0, OpcodeId::SHA3.constant_gas_cost()); + + test_root(&testing_data); + test_internal(&testing_data); + } + + #[test] + fn test_oog_sha3_less_than_dynamic_gas() { + let testing_data = TestingData::new( + 0x40, + 20, + OpcodeId::SHA3.constant_gas_cost() + dynamic_gas_cost(0x40, 20), + ); + + test_root(&testing_data); + test_internal(&testing_data); + } + + #[test] + fn test_oog_sha3_max_expanded_address() { + // 0xffffffff1 + 0xffffffff0 = 0x1fffffffe1 + // > MAX_EXPANDED_MEMORY_ADDRESS (0x1fffffffe0) + let testing_data = TestingData::new(0xffffffff1, 0xffffffff0, MOCK_BLOCK_GAS_LIMIT); + + test_root(&testing_data); + test_internal(&testing_data); + } + + #[test] + fn test_oog_sha3_max_u64_address() { + let testing_data = TestingData::new(u64::MAX, u64::MAX, MOCK_BLOCK_GAS_LIMIT); + + test_root(&testing_data); + test_internal(&testing_data); + } + + struct TestingData { + bytecode: Bytecode, + gas_cost: u64, + } + + impl TestingData { + pub fn new(memory_offset: u64, memory_size: u64, gas_cost: u64) -> Self { + let bytecode = bytecode! { + PUSH32(memory_size) + PUSH32(memory_offset) + SHA3 + }; + + let gas_cost = gas_cost + .checked_add(OpcodeId::PUSH32.constant_gas_cost() * 2) + .unwrap_or(MOCK_BLOCK_GAS_LIMIT); + let gas_cost = if gas_cost > MOCK_BLOCK_GAS_LIMIT { + MOCK_BLOCK_GAS_LIMIT + } else { + gas_cost + }; + + Self { bytecode, gas_cost } + } + } + + fn dynamic_gas_cost(memory_offset: u64, memory_size: u64) -> u64 { + let memory_word_size = (memory_offset + memory_size + 31) / 32; + + memory_copier_gas_cost(0, memory_word_size, memory_size) + } + + fn test_root(testing_data: &TestingData) { + let gas_cost = GasCost::TX + // Decrease expected gas cost (by 1) to trigger out of gas error. + .checked_add(testing_data.gas_cost - 1) + .unwrap_or(MOCK_BLOCK_GAS_LIMIT); + let gas_cost = if gas_cost > MOCK_BLOCK_GAS_LIMIT { + MOCK_BLOCK_GAS_LIMIT + } else { + gas_cost + }; + + let ctx = TestContext::<2, 1>::new( + None, + account_0_code_account_1_no_code(testing_data.bytecode.clone()), + |mut txs, accs| { + txs[0] + .from(accs[1].address) + .to(accs[0].address) + .gas(gas_cost.into()); + }, + |block, _tx| block.number(0xcafe_u64), + ) + .unwrap(); + + CircuitTestBuilder::new_from_test_ctx(ctx).run(); + } + + fn test_internal(testing_data: &TestingData) { + let (addr_a, addr_b) = (MOCK_ACCOUNTS[0], MOCK_ACCOUNTS[1]); + + // code B gets called by code A, so the call is an internal call. + let code_b = testing_data.bytecode.clone(); + let gas_cost_b = testing_data.gas_cost; + + // Code A calls code B. + let code_a = bytecode! { + // populate memory in A's context. + PUSH8(U256::from_big_endian(&rand_bytes(8))) + PUSH1(0x00) // offset + MSTORE + // call ADDR_B. + PUSH1(0x00) // retLength + PUSH1(0x00) // retOffset + PUSH32(0x00) // argsLength + PUSH32(0x20) // argsOffset + PUSH1(0x00) // value + PUSH32(addr_b.to_word()) // addr + // Decrease expected gas cost (by 1) to trigger out of gas error. + PUSH32(gas_cost_b - 1) // gas + CALL + STOP + }; + + let ctx = TestContext::<3, 1>::new( + None, + |accs| { + accs[0].address(addr_b).code(code_b); + accs[1].address(addr_a).code(code_a); + accs[2].address(MOCK_ACCOUNTS[2]).balance(eth(10)); + }, + |mut txs, accs| { + txs[0].from(accs[2].address).to(accs[1].address); + }, + |block, _tx| block, + ) + .unwrap(); + + CircuitTestBuilder::new_from_test_ctx(ctx).run(); + } +} diff --git a/zkevm-circuits/src/evm_circuit/execution/error_oog_sload_sstore.rs b/zkevm-circuits/src/evm_circuit/execution/error_oog_sload_sstore.rs index a17e9487f2..44a6d47bf5 100644 --- a/zkevm-circuits/src/evm_circuit/execution/error_oog_sload_sstore.rs +++ b/zkevm-circuits/src/evm_circuit/execution/error_oog_sload_sstore.rs @@ -16,11 +16,14 @@ use crate::{ witness::{Block, Call, ExecStep, Transaction}, }, table::CallContextFieldTag, - util::Expr, + util::{ + word::{Word, WordCell, WordExpr}, + Expr, + }, }; use eth_types::{ evm_types::{GasCost, OpcodeId}, - Field, ToScalar, U256, + Field, U256, }; use halo2_proofs::{circuit::Value, plonk::Error}; @@ -31,14 +34,14 @@ pub(crate) struct ErrorOOGSloadSstoreGadget<F> { opcode: Cell<F>, tx_id: Cell<F>, is_static: Cell<F>, - callee_address: Cell<F>, - phase2_key: Cell<F>, - phase2_value: Cell<F>, - phase2_value_prev: Cell<F>, - phase2_original_value: Cell<F>, + callee_address: WordCell<F>, + key: WordCell<F>, + value: WordCell<F>, + value_prev: WordCell<F>, + original_value: WordCell<F>, is_warm: Cell<F>, is_sstore: PairSelectGadget<F>, - sstore_gas_cost: SstoreGasGadget<F>, + sstore_gas_cost: SstoreGasGadget<F, WordCell<F>>, insufficient_gas_cost: LtGadget<F, N_BYTES_GAS>, // Constrain for SSTORE reentrancy sentry. insufficient_gas_sentry: LtGadget<F, N_BYTES_GAS>, @@ -62,43 +65,43 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGSloadSstoreGadget<F> { let tx_id = cb.call_context(None, CallContextFieldTag::TxId); let is_static = cb.call_context(None, CallContextFieldTag::IsStatic); - let callee_address = cb.call_context(None, CallContextFieldTag::CalleeAddress); + let callee_address = cb.call_context_read_as_word(None, CallContextFieldTag::CalleeAddress); // Constrain `is_static` must be false for SSTORE. cb.require_zero("is_static == false", is_static.expr() * is_sstore.expr().0); - let phase2_key = cb.query_cell_phase2(); - let phase2_value = cb.query_cell_phase2(); - let phase2_value_prev = cb.query_cell_phase2(); - let phase2_original_value = cb.query_cell_phase2(); + let key = cb.query_word_unchecked(); + let value = cb.query_word_unchecked(); + let value_prev = cb.query_word_unchecked(); + let original_value = cb.query_word_unchecked(); let is_warm = cb.query_bool(); - cb.stack_pop(phase2_key.expr()); + cb.stack_pop(key.to_word()); cb.account_storage_access_list_read( tx_id.expr(), - callee_address.expr(), - phase2_key.expr(), - is_warm.expr(), + callee_address.to_word(), + key.to_word(), + Word::from_lo_unchecked(is_warm.expr()), ); let sload_gas_cost = SloadGasGadget::construct(cb, is_warm.expr()); let sstore_gas_cost = cb.condition(is_sstore.expr().0, |cb| { - cb.stack_pop(phase2_value.expr()); + cb.stack_pop(value.to_word()); cb.account_storage_read( - callee_address.expr(), - phase2_key.expr(), - phase2_value_prev.expr(), + callee_address.to_word(), + key.to_word(), + value_prev.to_word(), tx_id.expr(), - phase2_original_value.expr(), + original_value.to_word(), ); SstoreGasGadget::construct( cb, - phase2_value.clone(), - phase2_value_prev.clone(), - phase2_original_value.clone(), is_warm.clone(), + value.clone(), + value_prev.clone(), + original_value.clone(), ) }); @@ -126,21 +129,18 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGSloadSstoreGadget<F> { 1.expr(), ); - let common_error_gadget = CommonErrorGadget::construct( - cb, - opcode.expr(), - 7.expr() + 2.expr() * is_sstore.expr().0, - ); + let common_error_gadget = + CommonErrorGadget::construct(cb, opcode.expr(), cb.rw_counter_offset()); Self { opcode, tx_id, is_static, callee_address, - phase2_key, - phase2_value, - phase2_value_prev, - phase2_original_value, + key, + value, + value_prev, + original_value, is_warm, is_sstore, sstore_gas_cost, @@ -186,26 +186,16 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGSloadSstoreGadget<F> { self.opcode .assign(region, offset, Value::known(F::from(opcode.as_u64())))?; self.tx_id - .assign(region, offset, Value::known(F::from(tx.id as u64)))?; + .assign(region, offset, Value::known(F::from(tx.id)))?; self.is_static .assign(region, offset, Value::known(F::from(call.is_static as u64)))?; - self.callee_address.assign( - region, - offset, - Value::known( - call.address - .to_scalar() - .expect("unexpected Address -> Scalar conversion failure"), - ), - )?; - self.phase2_key - .assign(region, offset, region.word_rlc(key))?; - self.phase2_value - .assign(region, offset, region.word_rlc(value))?; - self.phase2_value_prev - .assign(region, offset, region.word_rlc(value_prev))?; - self.phase2_original_value - .assign(region, offset, region.word_rlc(original_value))?; + self.callee_address + .assign_h160(region, offset, call.address)?; + self.key.assign_u256(region, offset, key)?; + self.value.assign_u256(region, offset, value)?; + self.value_prev.assign_u256(region, offset, value_prev)?; + self.original_value + .assign_u256(region, offset, original_value)?; self.is_warm .assign(region, offset, Value::known(F::from(is_warm as u64)))?; @@ -374,10 +364,7 @@ mod test { #[derive(Default)] struct TestingData { key: U256, - value: U256, - value_prev: U256, original_value: U256, - is_warm: bool, gas_cost: u64, bytecode: Bytecode, } @@ -450,10 +437,7 @@ mod test { Self { key, - value, - value_prev, original_value, - is_warm, gas_cost, bytecode, } diff --git a/zkevm-circuits/src/evm_circuit/execution/error_oog_static_memory.rs b/zkevm-circuits/src/evm_circuit/execution/error_oog_static_memory.rs index 995913dbfd..1e1ced35de 100644 --- a/zkevm-circuits/src/evm_circuit/execution/error_oog_static_memory.rs +++ b/zkevm-circuits/src/evm_circuit/execution/error_oog_static_memory.rs @@ -1,38 +1,39 @@ use crate::{ evm_circuit::{ execution::ExecutionGadget, - param::{N_BYTES_GAS, N_BYTES_MEMORY_WORD_SIZE}, + param::{N_BYTES_GAS, N_BYTES_MEMORY_ADDRESS}, step::ExecutionState, util::{ - constraint_builder::EVMConstraintBuilder, - math_gadget::{IsEqualGadget, IsZeroGadget, RangeCheckGadget}, - memory_gadget::{address_high, address_low, MemoryExpansionGadget}, - CachedRegion, Cell, Word, + common_gadget::CommonErrorGadget, + constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, + math_gadget::{IsEqualGadget, LtGadget}, + memory_gadget::{ + CommonMemoryAddressGadget, MemoryExpandedAddressGadget, MemoryExpansionGadget, + }, + select, CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{word::Word, Expr}, }; -use eth_types::{evm_types::OpcodeId, Field, ToLittleEndian}; -use halo2_proofs::plonk::Error; +use eth_types::{evm_types::OpcodeId, Field, ToWord}; +use gadgets::util::or; +use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] pub(crate) struct ErrorOOGStaticMemoryGadget<F> { opcode: Cell<F>, - address: Word<F>, - address_in_range: IsZeroGadget<F>, + is_mstore8: IsEqualGadget<F>, // Allow memory size to expand to 5 bytes, because memory address could be // at most 2^40 - 1, after constant division by 32, the memory word size // then could be at most 2^35 - 1. // So generic N_BYTES_MEMORY_WORD_SIZE for MemoryExpansionGadget needs to // be larger by 1 than normal usage (to be 5), to be able to contain // number up to 2^35 - 1. - memory_expansion: MemoryExpansionGadget<F, 1, { N_BYTES_MEMORY_WORD_SIZE + 1 }>, - // Even memory size at most could be 2^35 - 1, the qudratic part of memory - // expansion gas cost could be at most 2^61 - 2^27, due to the constant - // division by 512, which still fits in 8 bytes. - insufficient_gas: RangeCheckGadget<F, N_BYTES_GAS>, - is_mstore8: IsEqualGadget<F>, + memory_expansion: MemoryExpansionGadget<F, 1, N_BYTES_MEMORY_ADDRESS>, + memory_address: MemoryExpandedAddressGadget<F>, + insufficient_gas: LtGadget<F, N_BYTES_GAS>, + common_error_gadget: CommonErrorGadget<F>, } impl<F: Field> ExecutionGadget<F> for ErrorOOGStaticMemoryGadget<F> { @@ -40,49 +41,59 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGStaticMemoryGadget<F> { const EXECUTION_STATE: ExecutionState = ExecutionState::ErrorOutOfGasStaticMemoryExpansion; - // Support other OOG due to pure memory including CREATE, RETURN and REVERT + // Support other OOG due to pure memory including MSTORE, MSTORE8 and MLOAD fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { let opcode = cb.query_cell(); - - // Query address by a full word - let address = cb.query_word_rlc(); + cb.require_in_set( + "ErrorOutOfGasStaticMemoryExpansion opcode must be MLOAD or MSTORE or MSTORE8", + opcode.expr(), + vec![ + OpcodeId::MLOAD.expr(), + OpcodeId::MSTORE8.expr(), + OpcodeId::MSTORE.expr(), + ], + ); // Check if this is an MSTORE8 let is_mstore8 = IsEqualGadget::construct(cb, opcode.expr(), OpcodeId::MSTORE8.expr()); - let is_not_mstore8 = 1.expr() - is_mstore8.expr(); - // Get the next memory size and the gas cost for this memory access - let memory_expansion = MemoryExpansionGadget::construct( + // pop memory_offset from stack + let memory_address = MemoryExpandedAddressGadget::construct_self(cb); + cb.stack_pop(memory_address.offset_word()); + + // Get the next memory size, 1 byte if opcode is MSTORE8, otherwise 32 bytes + cb.require_equal_word( + "Memory length must be 32 for MLOAD and MSTORE, and 1 for MSTORE8", + memory_address.length_word(), + Word::from_lo_unchecked(select::expr(is_mstore8.expr(), 1.expr(), 32.expr())), + ); + + let memory_expansion = MemoryExpansionGadget::construct(cb, [memory_address.address()]); + + // Check if the amount of gas available is less than the amount of gas required + // constant gas of MSTORE, MSTORE8 and MLOAD are the same + let insufficient_gas = LtGadget::construct( cb, - [address_low::expr(&address) + 1.expr() + (is_not_mstore8 * 31.expr())], + cb.curr.state.gas_left.expr(), + OpcodeId::MLOAD.constant_gas_cost().expr() + memory_expansion.gas_cost(), + ); + + cb.require_equal( + "Memory address is overflow or gas left is less than required", + or::expr([memory_address.overflow(), insufficient_gas.expr()]), + 1.expr(), ); - // Check if the memory address is too large - let address_in_range = IsZeroGadget::construct(cb, address_high::expr(&address)); - // Check if the amount of gas available is less than the amount of gas - // required - let insufficient_gas = cb.condition(address_in_range.expr(), |cb| { - RangeCheckGadget::construct( - cb, - OpcodeId::MLOAD.constant_gas_cost().expr() + memory_expansion.gas_cost() - - cb.curr.state.gas_left.expr(), - ) - }); - - // Pop the address from the stack - // We still have to do this to verify the correctness of `address` - cb.stack_pop(address.expr()); - - // TODO: Use ContextSwitchGadget to switch call context to caller's and - // consume all gas_left. + let common_error_gadget = + CommonErrorGadget::construct(cb, opcode.expr(), cb.rw_counter_offset()); Self { opcode, - address, - address_in_range, + memory_address, memory_expansion, insufficient_gas, is_mstore8, + common_error_gadget, } } @@ -92,47 +103,164 @@ impl<F: Field> ExecutionGadget<F> for ErrorOOGStaticMemoryGadget<F> { offset: usize, block: &Block<F>, _: &Transaction, - _: &Call, + call: &Call, step: &ExecStep, ) -> Result<(), Error> { let opcode = step.opcode().unwrap(); + self.opcode + .assign(region, offset, Value::known(F::from(opcode.as_u64())))?; // Inputs/Outputs - let address = block.get_rws(step, 0).stack_value(); - self.address - .assign(region, offset, Some(address.to_le_bytes()))?; - - // Check if this is an MSTORE8 - let is_mstore8 = self.is_mstore8.assign( + let memory_offset = block.get_rws(step, 0).stack_value(); + self.opcode + .assign(region, offset, Value::known(F::from(opcode.as_u64())))?; + self.is_mstore8.assign( region, offset, F::from(opcode.as_u64()), F::from(OpcodeId::MSTORE8.as_u64()), )?; - // Address in range check - self.address_in_range.assign( + let length = if opcode == OpcodeId::MSTORE8 { + 1.to_word() + } else { + 32.to_word() + }; + let expanded_address = self + .memory_address + .assign(region, offset, memory_offset, length)?; + let (_, memory_expansion_gas) = self.memory_expansion.assign( region, offset, - address_high::value::<F>(address.to_le_bytes()), + step.memory_word_size(), + [expanded_address], )?; - // Memory expansion - self.memory_expansion.assign( + // Gas insufficient check + let const_gas = opcode.constant_gas_cost(); + self.insufficient_gas.assign( region, offset, - step.memory_word_size(), - [ - address_low::value(address.to_le_bytes()) - + if is_mstore8 == F::ONE { 1 } else { 32 }, - ], + F::from(step.gas_left), + F::from(memory_expansion_gas + const_gas), )?; - // Gas insufficient check - // Get `gas_available` variable here once it's available - self.insufficient_gas - .assign(region, offset, F::from(step.gas_cost - step.gas_left))?; + self.common_error_gadget + .assign(region, offset, block, call, step, 3)?; Ok(()) } } + +#[cfg(test)] +mod tests { + use crate::test_util::CircuitTestBuilder; + use eth_types::{bytecode, word, Bytecode, ToWord, U256}; + use mock::{ + eth, test_ctx::helpers::account_0_code_account_1_no_code, TestContext, MOCK_ACCOUNTS, + }; + + #[test] + fn test_oog_static_memory_simple() { + for code in testing_bytecodes(0x40_u64.into()).iter() { + test_root(code); + test_internal(code); + } + } + + #[test] + fn test_oog_static_memory_max_expanded_address() { + // > MAX_EXPANDED_MEMORY_ADDRESS (0x1fffffffe0) + for code in testing_bytecodes(0x1fffffffe1_u64.into()).iter() { + test_root(code); + test_internal(code); + } + } + + #[test] + fn test_oog_static_memory_max_u64_address() { + for code in testing_bytecodes(u64::MAX.into()).iter() { + test_root(code); + test_internal(code); + } + } + + #[test] + fn test_oog_static_memory_max_word_address() { + for code in testing_bytecodes(U256::MAX).iter() { + test_root(code); + test_internal(code); + } + } + + fn testing_bytecodes(offset: U256) -> Vec<Bytecode> { + vec![ + bytecode! { + PUSH8(0x14) + PUSH32(offset) + MSTORE + STOP + }, + bytecode! { + PUSH8(0x14) + PUSH32(offset) + MSTORE8 + STOP + }, + bytecode! { + PUSH32(offset) + MLOAD + STOP + }, + ] + } + fn test_root(code: &Bytecode) { + let ctx = TestContext::<2, 1>::new( + None, + account_0_code_account_1_no_code(code.clone()), + |mut txs, accs| { + txs[0] + .from(accs[1].address) + .to(accs[0].address) + .gas(21010.into()); + }, + |block, _tx| block, + ) + .unwrap(); + + CircuitTestBuilder::new_from_test_ctx(ctx).run(); + } + + fn test_internal(code: &Bytecode) { + let code_a = bytecode! { + PUSH1(0x00) // retLength + PUSH1(0x00) // retOffset + PUSH32(0x00) // argsLength + PUSH32(0x00) // argsOffset + PUSH1(0x00) // value + PUSH32(MOCK_ACCOUNTS[1].to_word()) // addr + PUSH32(0xA) // gas + CALL + STOP + }; + + let ctx = TestContext::<3, 1>::new( + None, + |accs| { + accs[0].address(MOCK_ACCOUNTS[0]).code(code_a); + accs[1].address(MOCK_ACCOUNTS[1]).code(code.clone()); + accs[2].address(MOCK_ACCOUNTS[2]).balance(eth(1)); + }, + |mut txs, accs| { + txs[0] + .from(accs[2].address) + .to(accs[0].address) + .gas(word!("0xFFFF")); + }, + |block, _tx| block, + ) + .unwrap(); + + CircuitTestBuilder::new_from_test_ctx(ctx).run(); + } +} diff --git a/zkevm-circuits/src/evm_circuit/execution/error_return_data_oo_bound.rs b/zkevm-circuits/src/evm_circuit/execution/error_return_data_oo_bound.rs index 5363dd2125..63436d8e30 100644 --- a/zkevm-circuits/src/evm_circuit/execution/error_return_data_oo_bound.rs +++ b/zkevm-circuits/src/evm_circuit/execution/error_return_data_oo_bound.rs @@ -8,12 +8,15 @@ use crate::{ constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, from_bytes, math_gadget::{AddWordsGadget, IsZeroGadget, LtGadget}, - not, or, sum, CachedRegion, Cell, + not, or, sum, CachedRegion, Cell, U64Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, table::CallContextFieldTag, - util::Expr, + util::{ + word::{Word, WordExpr}, + Expr, + }, }; use eth_types::{evm_types::OpcodeId, Field, ToLittleEndian, ToScalar}; use halo2_proofs::{circuit::Value, plonk::Error}; @@ -21,7 +24,7 @@ use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] pub(crate) struct ErrorReturnDataOutOfBoundGadget<F> { opcode: Cell<F>, - memory_offset: Cell<F>, + memory_offset: U64Cell<F>, sum: AddWordsGadget<F, 2, false>, // Hold the size of the last callee return data. return_data_length: Cell<F>, @@ -40,10 +43,10 @@ impl<F: Field> ExecutionGadget<F> for ErrorReturnDataOutOfBoundGadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { let opcode = cb.query_cell(); - let memory_offset = cb.query_cell(); - let data_offset = cb.query_word_rlc(); - let size = cb.query_word_rlc(); - let remainder_end = cb.query_word_rlc(); + let memory_offset = cb.query_u64(); + let data_offset = cb.query_word32(); + let size = cb.query_word32(); + let remainder_end = cb.query_word32(); let return_data_length = cb.query_cell(); cb.require_equal( @@ -53,34 +56,33 @@ impl<F: Field> ExecutionGadget<F> for ErrorReturnDataOutOfBoundGadget<F> { ); // Pop memory_offset, offset, size from stack - cb.stack_pop(memory_offset.expr()); - cb.stack_pop(data_offset.expr()); - cb.stack_pop(size.expr()); + cb.stack_pop(memory_offset.to_word()); + cb.stack_pop(data_offset.to_word()); + cb.stack_pop(size.to_word()); // Read last callee return data length - cb.call_context_lookup( - false.expr(), + cb.call_context_lookup_read( None, CallContextFieldTag::LastCalleeReturnDataLength, - return_data_length.expr(), + Word::from_lo_unchecked(return_data_length.expr()), ); // Check if `data_offset` is Uint64 overflow. - let data_offset_larger_u64 = sum::expr(&data_offset.cells[N_BYTES_U64..]); + let data_offset_larger_u64 = sum::expr(&data_offset.limbs[N_BYTES_U64..]); let is_data_offset_within_u64 = IsZeroGadget::construct(cb, data_offset_larger_u64); // Check if `remainder_end` is Uint64 overflow. let sum = AddWordsGadget::construct(cb, [data_offset, size], remainder_end.clone()); let is_end_u256_overflow = sum.carry().as_ref().unwrap(); - let remainder_end_larger_u64 = sum::expr(&remainder_end.cells[N_BYTES_U64..]); + let remainder_end_larger_u64 = sum::expr(&remainder_end.limbs[N_BYTES_U64..]); let is_remainder_end_within_u64 = IsZeroGadget::construct(cb, remainder_end_larger_u64); // check if `remainder_end` exceeds return data length. let is_remainder_end_exceed_len = LtGadget::construct( cb, return_data_length.expr(), - from_bytes::expr(&remainder_end.cells[..N_BYTES_U64]), + from_bytes::expr(&remainder_end.limbs[..N_BYTES_U64]), ); // Need to check if `data_offset + size` is U256 overflow via `AddWordsGadget` carry. If @@ -100,7 +102,8 @@ impl<F: Field> ExecutionGadget<F> for ErrorReturnDataOutOfBoundGadget<F> { 1.expr(), ); - let common_error_gadget = CommonErrorGadget::construct(cb, opcode.expr(), 6.expr()); + let common_error_gadget = + CommonErrorGadget::construct(cb, opcode.expr(), cb.rw_counter_offset()); Self { opcode, @@ -132,7 +135,7 @@ impl<F: Field> ExecutionGadget<F> for ErrorReturnDataOutOfBoundGadget<F> { [0, 1, 2].map(|index| block.get_rws(step, index).stack_value()); self.memory_offset - .assign(region, offset, Value::known(F::from(dest_offset.as_u64())))?; + .assign(region, offset, Some(dest_offset.as_u64().to_le_bytes()))?; let remainder_end = data_offset.overflowing_add(size).0; self.sum diff --git a/zkevm-circuits/src/evm_circuit/execution/error_stack.rs b/zkevm-circuits/src/evm_circuit/execution/error_stack.rs index e74cb392f7..08a40469e3 100644 --- a/zkevm-circuits/src/evm_circuit/execution/error_stack.rs +++ b/zkevm-circuits/src/evm_circuit/execution/error_stack.rs @@ -40,7 +40,7 @@ impl<F: Field> ExecutionGadget<F> for ErrorStackGadget<F> { }, ); - let common_error_gadget = CommonErrorGadget::construct(cb, opcode.expr(), 2.expr()); + let common_error_gadget = CommonErrorGadget::construct(cb, opcode.expr(), 0.expr()); Self { opcode, @@ -75,7 +75,6 @@ mod test { use bus_mapping::{circuit_input_builder::FixedCParams, evm::OpcodeId}; use eth_types::{ self, address, bytecode, bytecode::Bytecode, geth_types::Account, Address, ToWord, Word, - U64, }; use mock::TestContext; @@ -185,12 +184,7 @@ mod test { .write_op(terminator) }; - Account { - address: Address::repeat_byte(0xfe), - balance: Word::from(10).pow(20.into()), - code: bytecode.to_vec().into(), - ..Default::default() - } + Account::mock_100_ether(bytecode) } fn stack_error_internal_call(caller: Account, callee: Account) { @@ -217,15 +211,7 @@ mod test { } fn callee(code: Bytecode) -> Account { - let code = code.to_vec(); - let is_empty = code.is_empty(); - Account { - address: Address::repeat_byte(0xff), - code: code.into(), - nonce: U64::from(!is_empty as u64), - balance: if is_empty { 0 } else { 0xdeadbeefu64 }.into(), - ..Default::default() - } + Account::mock_code_balance(code) } // internal call error test diff --git a/zkevm-circuits/src/evm_circuit/execution/error_write_protection.rs b/zkevm-circuits/src/evm_circuit/execution/error_write_protection.rs index 0f1fbe7a0c..6182e413d5 100644 --- a/zkevm-circuits/src/evm_circuit/execution/error_write_protection.rs +++ b/zkevm-circuits/src/evm_circuit/execution/error_write_protection.rs @@ -5,25 +5,28 @@ use crate::{ util::{ common_gadget::CommonErrorGadget, constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, - math_gadget::IsZeroGadget, - sum, CachedRegion, Cell, Word as RLCWord, + math_gadget::{IsZeroGadget, IsZeroWordGadget}, + AccountAddress, CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, table::CallContextFieldTag, - util::Expr, + util::{ + word::{Word, WordCell, WordExpr}, + Expr, + }, }; -use eth_types::{evm_types::OpcodeId, Field, ToLittleEndian, U256}; +use eth_types::{evm_types::OpcodeId, Field, ToAddress, U256}; use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] pub(crate) struct ErrorWriteProtectionGadget<F> { opcode: Cell<F>, is_call: IsZeroGadget<F>, - gas: RLCWord<F>, - code_address: RLCWord<F>, - value: RLCWord<F>, - is_value_zero: IsZeroGadget<F>, + gas: WordCell<F>, + code_address: AccountAddress<F>, + value: WordCell<F>, + is_value_zero: IsZeroWordGadget<F, WordCell<F>>, common_error_gadget: CommonErrorGadget<F>, } @@ -35,10 +38,10 @@ impl<F: Field> ExecutionGadget<F> for ErrorWriteProtectionGadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { let opcode = cb.query_cell(); let is_call = IsZeroGadget::construct(cb, opcode.expr() - OpcodeId::CALL.expr()); - let gas_word = cb.query_word_rlc(); - let code_address_word = cb.query_word_rlc(); - let value = cb.query_word_rlc(); - let is_value_zero = IsZeroGadget::construct(cb, value.expr()); + let gas_word = cb.query_word_unchecked(); + let code_address = cb.query_account_address(); + let value = cb.query_word_unchecked(); + let is_value_zero = IsZeroWordGadget::construct(cb, &value); // require_in_set method will spilit into more low degree expressions if exceed // max_degree. otherwise need to do fixed lookup for these opcodes @@ -63,14 +66,14 @@ impl<F: Field> ExecutionGadget<F> for ErrorWriteProtectionGadget<F> { // Lookup values from stack if opcode is call // Precondition: If there's a StackUnderflow CALL, is handled before this error cb.condition(is_call.expr(), |cb| { - cb.stack_pop(gas_word.expr()); - cb.stack_pop(code_address_word.expr()); - cb.stack_pop(value.expr()); + cb.stack_pop(gas_word.to_word()); + cb.stack_pop(code_address.to_word()); + cb.stack_pop(value.to_word()); cb.require_zero("value of call is not zero", is_value_zero.expr()); }); // current call context is readonly - cb.call_context_lookup(false.expr(), None, CallContextFieldTag::IsStatic, 1.expr()); + cb.call_context_lookup_read(None, CallContextFieldTag::IsStatic, Word::one()); // constrain not root call as at least one previous staticcall preset. cb.require_zero( @@ -84,7 +87,7 @@ impl<F: Field> ExecutionGadget<F> for ErrorWriteProtectionGadget<F> { opcode, is_call, gas: gas_word, - code_address: code_address_word, + code_address, value, is_value_zero, common_error_gadget, @@ -111,11 +114,10 @@ impl<F: Field> ExecutionGadget<F> for ErrorWriteProtectionGadget<F> { [0, 1, 2].map(|index| block.get_rws(step, index).stack_value()); } - self.gas.assign(region, offset, Some(gas.to_le_bytes()))?; + self.gas.assign_u256(region, offset, gas)?; self.code_address - .assign(region, offset, Some(code_address.to_le_bytes()))?; - self.value - .assign(region, offset, Some(value.to_le_bytes()))?; + .assign_h160(region, offset, code_address.to_address())?; + self.value.assign_u256(region, offset, value)?; self.is_call.assign( region, @@ -123,7 +125,7 @@ impl<F: Field> ExecutionGadget<F> for ErrorWriteProtectionGadget<F> { F::from(opcode.as_u64()) - F::from(OpcodeId::CALL.as_u64()), )?; self.is_value_zero - .assign(region, offset, sum::value(&value.to_le_bytes()))?; + .assign(region, offset, Word::from(value))?; self.common_error_gadget.assign( region, @@ -142,78 +144,12 @@ impl<F: Field> ExecutionGadget<F> for ErrorWriteProtectionGadget<F> { mod test { use crate::test_util::CircuitTestBuilder; use eth_types::{ - address, bytecode, bytecode::Bytecode, evm_types::OpcodeId, geth_types::Account, Address, - ToWord, Word, U64, + address, bytecode, bytecode::Bytecode, geth_types::Account, Address, ToWord, Word, }; use mock::TestContext; - // internal call test - struct Stack { - gas: u64, - value: Word, - cd_offset: u64, - cd_length: u64, - rd_offset: u64, - rd_length: u64, - } - fn callee(code: Bytecode) -> Account { - let code = code.to_vec(); - let is_empty = code.is_empty(); - - Account { - address: Address::repeat_byte(0xff), - code: code.into(), - nonce: U64::from(!is_empty as u64), - balance: if is_empty { 0 } else { 0xdeadbeefu64 }.into(), - ..Default::default() - } - } - - fn caller(opcode: OpcodeId, stack: Stack, caller_is_success: bool) -> Account { - let is_call = opcode == OpcodeId::CALL; - let terminator = if caller_is_success { - OpcodeId::RETURN - } else { - OpcodeId::REVERT - }; - - let mut bytecode = bytecode! { - PUSH32(Word::from(stack.rd_length)) - PUSH32(Word::from(stack.rd_offset)) - PUSH32(Word::from(stack.cd_length)) - PUSH32(Word::from(stack.cd_offset)) - }; - if is_call { - bytecode.push(32, stack.value); - } - bytecode.append(&bytecode! { - PUSH32(Address::repeat_byte(0xff).to_word()) - PUSH32(Word::from(stack.gas)) - .write_op(opcode) - PUSH32(Word::from(stack.rd_length)) - PUSH32(Word::from(stack.rd_offset)) - PUSH32(Word::from(stack.cd_length)) - PUSH32(Word::from(stack.cd_offset)) - }); - if is_call { - bytecode.push(32, stack.value); - } - bytecode.append(&bytecode! { - PUSH32(Address::repeat_byte(0xff).to_word()) - PUSH32(Word::from(stack.gas)) - .write_op(opcode) - PUSH1(0) - PUSH1(0) - .write_op(terminator) - }); - - Account { - address: Address::repeat_byte(0xfe), - balance: Word::from(10).pow(20.into()), - code: bytecode.to_vec().into(), - ..Default::default() - } + Account::mock_code_balance(code) } #[test] @@ -268,12 +204,7 @@ mod test { } test_ok( - Account { - address: Address::repeat_byte(0xfe), - balance: Word::from(10).pow(20.into()), - code: caller_bytecode.into(), - ..Default::default() - }, + Account::mock_100_ether(caller_bytecode), callee(callee_bytecode), ); } diff --git a/zkevm-circuits/src/evm_circuit/execution/exp.rs b/zkevm-circuits/src/evm_circuit/execution/exp.rs index 5a1f8dd4e3..0945e2819e 100644 --- a/zkevm-circuits/src/evm_circuit/execution/exp.rs +++ b/zkevm-circuits/src/evm_circuit/execution/exp.rs @@ -1,20 +1,25 @@ use bus_mapping::evm::OpcodeId; -use eth_types::{evm_types::GasCost, Field, ToLittleEndian, ToScalar, U256}; -use gadgets::util::{and, not, split_u256, sum, Expr}; -use halo2_proofs::{circuit::Value, plonk::Error}; +use eth_types::{evm_types::GasCost, Field, ToScalar, U256}; +use gadgets::util::{and, not, split_u256, Expr}; +use halo2_proofs::{ + circuit::Value, + plonk::{Error, Expression}, +}; -use crate::evm_circuit::{ - step::ExecutionState, - util::{ - common_gadget::SameContextGadget, - constraint_builder::{ - ConstrainBuilderCommon, EVMConstraintBuilder, StepStateTransition, Transition, +use crate::{ + evm_circuit::{ + step::ExecutionState, + util::{ + common_gadget::SameContextGadget, + constraint_builder::{ + ConstrainBuilderCommon, EVMConstraintBuilder, StepStateTransition, Transition, + }, + math_gadget::{ByteSizeGadget, IsEqualGadget, IsZeroGadget}, + CachedRegion, Cell, }, - from_bytes, - math_gadget::{ByteSizeGadget, IsEqualGadget, IsZeroGadget}, - CachedRegion, Cell, Word, + witness::{Block, Call, ExecStep, Transaction}, }, - witness::{Block, Call, ExecStep, Transaction}, + util::word::{Word32Cell, Word4, WordExpr}, }; use super::ExecutionGadget; @@ -24,15 +29,13 @@ pub(crate) struct ExponentiationGadget<F> { /// Gadget to check that we stay within the same context. same_context: SameContextGadget<F>, /// RLC-encoded integer base that will be exponentiated. - base: Word<F>, + base: Word32Cell<F>, /// RLC-encoded representation for base * base, i.e. base^2 - base_sq: Word<F>, - /// RLC-encoded representation for zero. - zero_rlc: Word<F>, + base_sq: Word32Cell<F>, /// RLC-encoded exponent for the exponentiation operation. - exponent: Word<F>, + exponent: Word32Cell<F>, /// RLC-encoded result of the exponentiation. - exponentiation: Word<F>, + exponentiation: Word32Cell<F>, /// Gadget to check if low 128-bit part of exponent is zero or not. exponent_lo_is_zero: IsZeroGadget<F>, /// Gadget to check if high 128-bit part of exponent is zero or not. @@ -55,32 +58,23 @@ impl<F: Field> ExecutionGadget<F> for ExponentiationGadget<F> { // Query RLC-encoded values for base, exponent and exponentiation, where: // base^exponent == exponentiation (mod 2^256). - let base_rlc = cb.query_word_rlc(); - let exponent_rlc = cb.query_word_rlc(); - let exponentiation_rlc = cb.query_word_rlc(); + let base = cb.query_word32(); + let exponent = cb.query_word32(); + let exponentiation = cb.query_word32(); // Pop RLC-encoded base and exponent from the stack. - cb.stack_pop(base_rlc.expr()); - cb.stack_pop(exponent_rlc.expr()); + cb.stack_pop(base.to_word()); + cb.stack_pop(exponent.to_word()); // Push RLC-encoded exponentiation to the stack. - cb.stack_push(exponentiation_rlc.expr()); + cb.stack_push(exponentiation.to_word()); // Extract low and high bytes of the base. - let (base_lo, base_hi) = ( - from_bytes::expr(&base_rlc.cells[0x00..0x10]), - from_bytes::expr(&base_rlc.cells[0x10..0x20]), - ); + let (base_lo, base_hi) = base.to_word().to_lo_hi(); // Extract low and high bytes of the exponent. - let (exponent_lo, exponent_hi) = ( - from_bytes::expr(&exponent_rlc.cells[0x00..0x10]), - from_bytes::expr(&exponent_rlc.cells[0x10..0x20]), - ); + let (exponent_lo, exponent_hi) = exponent.to_word().to_lo_hi(); // Extract low and high bytes of the exponentiation result. - let (exponentiation_lo, exponentiation_hi) = ( - from_bytes::expr(&exponentiation_rlc.cells[0x00..0x10]), - from_bytes::expr(&exponentiation_rlc.cells[0x10..0x20]), - ); + let (exponentiation_lo, exponentiation_hi) = exponentiation.to_word().to_lo_hi(); // We simplify constraints depending on whether or not the exponent is 0 or 1. // In order to do this, we build some utility expressions. @@ -92,12 +86,7 @@ impl<F: Field> ExecutionGadget<F> for ExponentiationGadget<F> { let exponent_is_one_expr = and::expr([exponent_lo_is_one.expr(), exponent_hi_is_zero.expr()]); - let zero_rlc = cb.query_word_rlc(); - cb.require_zero( - "base * base + c == base^2 (c == 0)", - sum::expr(&zero_rlc.cells), - ); - let base_sq = cb.query_word_rlc(); + let base_sq = cb.query_word32(); // If exponent == 0, base^exponent == 1, which implies: // 1. Low bytes of exponentiation == 1 @@ -140,23 +129,15 @@ impl<F: Field> ExecutionGadget<F> for ExponentiationGadget<F> { not::expr(exponent_is_one_expr), ]), |cb| { - let base_limbs = [ - from_bytes::expr(&base_rlc.cells[0x00..0x08]), - from_bytes::expr(&base_rlc.cells[0x08..0x10]), - from_bytes::expr(&base_rlc.cells[0x10..0x18]), - from_bytes::expr(&base_rlc.cells[0x18..0x20]), - ]; - let (base_sq_lo, base_sq_hi) = ( - from_bytes::expr(&base_sq.cells[0x00..0x10]), - from_bytes::expr(&base_sq.cells[0x10..0x20]), - ); + let base_limbs: Word4<Expression<F>> = base.to_word_n(); + let (base_sq_lo, base_sq_hi) = base_sq.to_word().to_lo_hi(); let identifier = cb.curr.state.rw_counter.expr() + cb.rw_counter_offset(); // lookup for first step, i.e. // (is_last, base, exponent, exponentiation) cb.exp_table_lookup( identifier.clone(), single_step.expr(), - base_limbs.clone(), + base_limbs.limbs.clone(), [exponent_lo.clone(), exponent_hi.clone()], [exponentiation_lo.clone(), exponentiation_hi.clone()], ); @@ -164,7 +145,7 @@ impl<F: Field> ExecutionGadget<F> for ExponentiationGadget<F> { cb.exp_table_lookup( identifier, 1.expr(), - base_limbs, + base_limbs.limbs, [2.expr(), 0.expr()], // exponent == 2 [base_sq_lo.expr(), base_sq_hi.expr()], ); @@ -174,16 +155,7 @@ impl<F: Field> ExecutionGadget<F> for ExponentiationGadget<F> { // In order to calculate the dynamic gas cost of the exponentiation operation, // we need the byte-size of the exponent, i.e. the minimum number of // bytes that can represent the exponent value. - let exponent_byte_size = ByteSizeGadget::construct( - cb, - exponent_rlc - .cells - .iter() - .map(Expr::expr) - .collect::<Vec<_>>() - .try_into() - .unwrap(), - ); + let exponent_byte_size = ByteSizeGadget::construct(cb, exponent.to_word_n().limbs); // Finally we build an expression for the dynamic gas cost as: // dynamic_gas = 50 * exponent_byte_size @@ -202,11 +174,10 @@ impl<F: Field> ExecutionGadget<F> for ExponentiationGadget<F> { Self { same_context, - base: base_rlc, + base, base_sq, - zero_rlc, - exponent: exponent_rlc, - exponentiation: exponentiation_rlc, + exponent, + exponentiation, exponent_lo_is_zero, exponent_hi_is_zero, exponent_lo_is_one, @@ -229,11 +200,10 @@ impl<F: Field> ExecutionGadget<F> for ExponentiationGadget<F> { let [base, exponent, exponentiation] = [0, 1, 2].map(|index| block.get_rws(step, index).stack_value()); - self.base.assign(region, offset, Some(base.to_le_bytes()))?; - self.exponent - .assign(region, offset, Some(exponent.to_le_bytes()))?; + self.base.assign_u256(region, offset, base)?; + self.exponent.assign_u256(region, offset, exponent)?; self.exponentiation - .assign(region, offset, Some(exponentiation.to_le_bytes()))?; + .assign_u256(region, offset, exponentiation)?; let (exponent_lo, exponent_hi) = split_u256(&exponent); let exponent_lo_scalar = exponent_lo @@ -250,10 +220,7 @@ impl<F: Field> ExecutionGadget<F> for ExponentiationGadget<F> { .assign(region, offset, exponent_lo_scalar, F::ONE)?; let (base_sq, _) = base.overflowing_mul(base); - self.zero_rlc - .assign(region, offset, Some(U256::zero().to_le_bytes()))?; - self.base_sq - .assign(region, offset, Some(base_sq.to_le_bytes()))?; + self.base_sq.assign_u256(region, offset, base_sq)?; let single_step = exponent.eq(&U256::from(2u64)); self.single_step .assign(region, offset, Value::known(F::from(single_step as u64)))?; diff --git a/zkevm-circuits/src/evm_circuit/execution/extcodecopy.rs b/zkevm-circuits/src/evm_circuit/execution/extcodecopy.rs index 49a24fbb44..bb22ee2723 100644 --- a/zkevm-circuits/src/evm_circuit/execution/extcodecopy.rs +++ b/zkevm-circuits/src/evm_circuit/execution/extcodecopy.rs @@ -8,33 +8,39 @@ use crate::{ ConstrainBuilderCommon, EVMConstraintBuilder, ReversionInfo, StepStateTransition, Transition, }, - from_bytes, - math_gadget::IsZeroGadget, - memory_gadget::{MemoryAddressGadget, MemoryCopierGasGadget, MemoryExpansionGadget}, - not, select, CachedRegion, Cell, Word, + math_gadget::IsZeroWordGadget, + memory_gadget::{ + CommonMemoryAddressGadget, MemoryAddressGadget, MemoryCopierGasGadget, + MemoryExpansionGadget, + }, + not, select, AccountAddress, CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, table::{AccountFieldTag, CallContextFieldTag}, + util::word::{Word, Word32Cell, WordExpr}, }; use bus_mapping::circuit_input_builder::CopyDataType; -use eth_types::{evm_types::GasCost, Field, ToLittleEndian, ToScalar}; +use eth_types::{evm_types::GasCost, Field, ToScalar}; use gadgets::util::Expr; -use halo2_proofs::{circuit::Value, plonk::Error}; +use halo2_proofs::{ + circuit::Value, + plonk::{Error, Expression}, +}; use super::ExecutionGadget; #[derive(Clone, Debug)] pub(crate) struct ExtcodecopyGadget<F> { same_context: SameContextGadget<F>, - external_address_word: Word<F>, + external_address_word: Word32Cell<F>, memory_address: MemoryAddressGadget<F>, code_offset: WordByteCapGadget<F, N_BYTES_U64>, tx_id: Cell<F>, reversion_info: ReversionInfo<F>, is_warm: Cell<F>, - code_hash: Cell<F>, - not_exists: IsZeroGadget<F>, + code_hash: Word32Cell<F>, + not_exists: IsZeroWordGadget<F, Word<Expression<F>>>, code_size: Cell<F>, copy_rwc_inc: Cell<F>, memory_expansion: MemoryExpansionGadget<F, 1, N_BYTES_MEMORY_WORD_SIZE>, @@ -49,42 +55,46 @@ impl<F: Field> ExecutionGadget<F> for ExtcodecopyGadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { let opcode = cb.query_cell(); - let external_address_word = cb.query_word_rlc(); - let external_address = - from_bytes::expr(&external_address_word.cells[..N_BYTES_ACCOUNT_ADDRESS]); + let external_address_word = cb.query_word32(); + let external_address = AccountAddress::new( + external_address_word.limbs[..N_BYTES_ACCOUNT_ADDRESS] + .to_vec() + .try_into() + .unwrap(), + ); let code_size = cb.query_cell(); - let memory_length = cb.query_word_rlc(); - let memory_offset = cb.query_cell_phase2(); + let memory_length = cb.query_memory_address(); + let memory_offset = cb.query_word_unchecked(); let code_offset = WordByteCapGadget::construct(cb, code_size.expr()); - cb.stack_pop(external_address_word.expr()); - cb.stack_pop(memory_offset.expr()); - cb.stack_pop(code_offset.original_word()); - cb.stack_pop(memory_length.expr()); + cb.stack_pop(external_address_word.to_word()); + cb.stack_pop(memory_offset.to_word()); + cb.stack_pop(code_offset.original_word().to_word()); + cb.stack_pop(memory_length.to_word()); let tx_id = cb.call_context(None, CallContextFieldTag::TxId); let mut reversion_info = cb.reversion_info_read(None); let is_warm = cb.query_bool(); - cb.account_access_list_write( + cb.account_access_list_write_unchecked( tx_id.expr(), - external_address.expr(), + external_address.to_word(), 1.expr(), is_warm.expr(), Some(&mut reversion_info), ); - let code_hash = cb.query_cell_phase2(); + let code_hash = cb.query_word32(); cb.account_read( - external_address.expr(), + external_address.to_word(), AccountFieldTag::CodeHash, - code_hash.expr(), + code_hash.to_word(), ); - let not_exists = IsZeroGadget::construct(cb, code_hash.expr()); + let not_exists = IsZeroWordGadget::construct(cb, &code_hash.to_word()); let exists = not::expr(not_exists.expr()); cb.condition(exists.expr(), |cb| { - cb.bytecode_length(code_hash.expr(), code_size.expr()); + cb.bytecode_length(code_hash.to_word(), code_size.expr()); }); cb.condition(not_exists.expr(), |cb| { cb.require_zero("code_size is zero when non_exists", code_size.expr()); @@ -114,9 +124,9 @@ impl<F: Field> ExecutionGadget<F> for ExtcodecopyGadget<F> { ); cb.copy_table_lookup( - code_hash.expr(), + code_hash.to_word(), CopyDataType::Bytecode.expr(), - cb.curr.state.call_id.expr(), + Word::from_lo_unchecked(cb.curr.state.call_id.expr()), CopyDataType::Memory.expr(), src_addr, code_size.expr(), @@ -175,13 +185,13 @@ impl<F: Field> ExecutionGadget<F> for ExtcodecopyGadget<F> { let [external_address, memory_offset, code_offset, memory_length] = [0, 1, 2, 3].map(|idx| block.get_rws(step, idx).stack_value()); self.external_address_word - .assign(region, offset, Some(external_address.to_le_bytes()))?; + .assign_u256(region, offset, external_address)?; let memory_address = self.memory_address .assign(region, offset, memory_offset, memory_length)?; self.tx_id - .assign(region, offset, Value::known(F::from(transaction.id as u64)))?; + .assign(region, offset, Value::known(F::from(transaction.id)))?; self.reversion_info.assign( region, offset, @@ -193,21 +203,18 @@ impl<F: Field> ExecutionGadget<F> for ExtcodecopyGadget<F> { self.is_warm .assign(region, offset, Value::known(F::from(is_warm as u64)))?; - let code_hash = block.get_rws(step, 8).account_value_pair().0; - self.code_hash - .assign(region, offset, region.word_rlc(code_hash))?; - self.not_exists - .assign_value(region, offset, region.word_rlc(code_hash))?; + let code_hash = block.get_rws(step, 8).account_codehash_pair().0; + self.code_hash.assign_u256(region, offset, code_hash)?; + self.not_exists.assign_u256(region, offset, code_hash)?; let code_size = if code_hash.is_zero() { 0 } else { block .bytecodes - .get(&code_hash) + .get_from_u256(&code_hash) .expect("could not find external bytecode") - .bytes - .len() as u64 + .codesize() as u64 }; self.code_size .assign(region, offset, Value::known(F::from(code_size)))?; diff --git a/zkevm-circuits/src/evm_circuit/execution/extcodehash.rs b/zkevm-circuits/src/evm_circuit/execution/extcodehash.rs index 1d14cffa34..ae044ec9d7 100644 --- a/zkevm-circuits/src/evm_circuit/execution/extcodehash.rs +++ b/zkevm-circuits/src/evm_circuit/execution/extcodehash.rs @@ -8,24 +8,27 @@ use crate::{ constraint_builder::{ EVMConstraintBuilder, ReversionInfo, StepStateTransition, Transition::Delta, }, - from_bytes, select, CachedRegion, Cell, Word, + select, AccountAddress, CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, table::{AccountFieldTag, CallContextFieldTag}, - util::Expr, + util::{ + word::{Word32Cell, WordCell, WordExpr}, + Expr, + }, }; -use eth_types::{evm_types::GasCost, Field, ToLittleEndian}; +use eth_types::{evm_types::GasCost, Field}; use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] pub(crate) struct ExtcodehashGadget<F> { same_context: SameContextGadget<F>, - address_word: Word<F>, + address_word: Word32Cell<F>, tx_id: Cell<F>, reversion_info: ReversionInfo<F>, is_warm: Cell<F>, - code_hash: Cell<F>, + code_hash: WordCell<F>, } impl<F: Field> ExecutionGadget<F> for ExtcodehashGadget<F> { @@ -34,26 +37,36 @@ impl<F: Field> ExecutionGadget<F> for ExtcodehashGadget<F> { const EXECUTION_STATE: ExecutionState = ExecutionState::EXTCODEHASH; fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { - let address_word = cb.query_word_rlc(); - let address = from_bytes::expr(&address_word.cells[..N_BYTES_ACCOUNT_ADDRESS]); - cb.stack_pop(address_word.expr()); + let address_word = cb.query_word32(); + let address = AccountAddress::new( + address_word.limbs[..N_BYTES_ACCOUNT_ADDRESS] + .to_vec() + .try_into() + .unwrap(), + ); + cb.stack_pop(address_word.to_word()); let tx_id = cb.call_context(None, CallContextFieldTag::TxId); let mut reversion_info = cb.reversion_info_read(None); let is_warm = cb.query_bool(); - cb.account_access_list_write( + cb.account_access_list_write_unchecked( tx_id.expr(), - address.expr(), + address.to_word(), 1.expr(), is_warm.expr(), Some(&mut reversion_info), ); - let code_hash = cb.query_cell_phase2(); + // range check will be cover by account code_hash lookup + let code_hash = cb.query_word_unchecked(); // For non-existing accounts the code_hash must be 0 in the rw_table. - cb.account_read(address, AccountFieldTag::CodeHash, code_hash.expr()); - cb.stack_push(code_hash.expr()); + cb.account_read( + address.to_word(), + AccountFieldTag::CodeHash, + code_hash.to_word(), + ); + cb.stack_push(code_hash.to_word()); let gas_cost = select::expr( is_warm.expr(), @@ -94,11 +107,10 @@ impl<F: Field> ExecutionGadget<F> for ExtcodehashGadget<F> { self.same_context.assign_exec_step(region, offset, step)?; let address = block.get_rws(step, 0).stack_value(); - self.address_word - .assign(region, offset, Some(address.to_le_bytes()))?; + self.address_word.assign_u256(region, offset, address)?; self.tx_id - .assign(region, offset, Value::known(F::from(tx.id as u64)))?; + .assign(region, offset, Value::known(F::from(tx.id)))?; self.reversion_info.assign( region, offset, @@ -110,9 +122,8 @@ impl<F: Field> ExecutionGadget<F> for ExtcodehashGadget<F> { self.is_warm .assign(region, offset, Value::known(F::from(is_warm as u64)))?; - let code_hash = block.get_rws(step, 5).account_value_pair().0; - self.code_hash - .assign(region, offset, region.word_rlc(code_hash))?; + let code_hash = block.get_rws(step, 5).account_codehash_pair().0; + self.code_hash.assign_u256(region, offset, code_hash)?; Ok(()) } diff --git a/zkevm-circuits/src/evm_circuit/execution/extcodesize.rs b/zkevm-circuits/src/evm_circuit/execution/extcodesize.rs index 8c00bd63c7..ee6d540722 100644 --- a/zkevm-circuits/src/evm_circuit/execution/extcodesize.rs +++ b/zkevm-circuits/src/evm_circuit/execution/extcodesize.rs @@ -1,7 +1,7 @@ use crate::{ evm_circuit::{ execution::ExecutionGadget, - param::{N_BYTES_ACCOUNT_ADDRESS, N_BYTES_U64}, + param::N_BYTES_ACCOUNT_ADDRESS, step::ExecutionState, util::{ common_gadget::SameContextGadget, @@ -9,28 +9,30 @@ use crate::{ ConstrainBuilderCommon, EVMConstraintBuilder, ReversionInfo, StepStateTransition, Transition::Delta, }, - from_bytes, - math_gadget::IsZeroGadget, - not, select, CachedRegion, Cell, RandomLinearCombination, Word, + math_gadget::IsZeroWordGadget, + not, select, AccountAddress, CachedRegion, Cell, U64Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, table::{AccountFieldTag, CallContextFieldTag}, - util::Expr, + util::{ + word::{Word, Word32Cell, WordCell, WordExpr}, + Expr, + }, }; -use eth_types::{evm_types::GasCost, Field, ToLittleEndian}; +use eth_types::{evm_types::GasCost, Field}; use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] pub(crate) struct ExtcodesizeGadget<F> { same_context: SameContextGadget<F>, - address_word: Word<F>, + address_word: Word32Cell<F>, reversion_info: ReversionInfo<F>, tx_id: Cell<F>, is_warm: Cell<F>, - code_hash: Cell<F>, - not_exists: IsZeroGadget<F>, - code_size: RandomLinearCombination<F, N_BYTES_U64>, + code_hash: WordCell<F>, + not_exists: IsZeroWordGadget<F, WordCell<F>>, + code_size: U64Cell<F>, } impl<F: Field> ExecutionGadget<F> for ExtcodesizeGadget<F> { @@ -39,36 +41,46 @@ impl<F: Field> ExecutionGadget<F> for ExtcodesizeGadget<F> { const EXECUTION_STATE: ExecutionState = ExecutionState::EXTCODESIZE; fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { - let address_word = cb.query_word_rlc(); - let address = from_bytes::expr(&address_word.cells[..N_BYTES_ACCOUNT_ADDRESS]); - cb.stack_pop(address_word.expr()); + let address_word = cb.query_word32(); + let address = AccountAddress::new( + address_word.limbs[..N_BYTES_ACCOUNT_ADDRESS] + .to_vec() + .try_into() + .unwrap(), + ); + cb.stack_pop(address_word.to_word()); let tx_id = cb.call_context(None, CallContextFieldTag::TxId); let mut reversion_info = cb.reversion_info_read(None); let is_warm = cb.query_bool(); - cb.account_access_list_write( + cb.account_access_list_write_unchecked( tx_id.expr(), - address.expr(), + address.to_word(), 1.expr(), is_warm.expr(), Some(&mut reversion_info), ); - let code_hash = cb.query_cell_phase2(); + // range check will be cover by account code_hash lookup + let code_hash = cb.query_word_unchecked(); // For non-existing accounts the code_hash must be 0 in the rw_table. - cb.account_read(address.expr(), AccountFieldTag::CodeHash, code_hash.expr()); - let not_exists = IsZeroGadget::construct(cb, code_hash.expr()); + cb.account_read( + address.to_word(), + AccountFieldTag::CodeHash, + code_hash.to_word(), + ); + let not_exists = IsZeroWordGadget::construct(cb, &code_hash); let exists = not::expr(not_exists.expr()); - let code_size = cb.query_word_rlc(); + let code_size = cb.query_u64(); cb.condition(exists.expr(), |cb| { - cb.bytecode_length(code_hash.expr(), from_bytes::expr(&code_size.cells)); + cb.bytecode_length(code_hash.to_word(), code_size.expr()); }); cb.condition(not_exists.expr(), |cb| { cb.require_zero("code_size is zero when non_exists", code_size.expr()); }); - cb.stack_push(code_size.expr()); + cb.stack_push(code_size.to_word()); let gas_cost = select::expr( is_warm.expr(), @@ -112,11 +124,10 @@ impl<F: Field> ExecutionGadget<F> for ExtcodesizeGadget<F> { self.same_context.assign_exec_step(region, offset, step)?; let address = block.get_rws(step, 0).stack_value(); - self.address_word - .assign(region, offset, Some(address.to_le_bytes()))?; + self.address_word.assign_u256(region, offset, address)?; self.tx_id - .assign(region, offset, Value::known(F::from(tx.id as u64)))?; + .assign(region, offset, Value::known(F::from(tx.id)))?; self.reversion_info.assign( region, @@ -129,11 +140,10 @@ impl<F: Field> ExecutionGadget<F> for ExtcodesizeGadget<F> { self.is_warm .assign(region, offset, Value::known(F::from(is_warm as u64)))?; - let code_hash = block.get_rws(step, 5).account_value_pair().0; - self.code_hash - .assign(region, offset, region.word_rlc(code_hash))?; + let code_hash = block.get_rws(step, 5).account_codehash_pair().0; + self.code_hash.assign_u256(region, offset, code_hash)?; self.not_exists - .assign_value(region, offset, region.word_rlc(code_hash))?; + .assign(region, offset, Word::from(code_hash))?; let code_size = block.get_rws(step, 6).stack_value().as_u64(); self.code_size diff --git a/zkevm-circuits/src/evm_circuit/execution/gas.rs b/zkevm-circuits/src/evm_circuit/execution/gas.rs index f8151dc7ca..b86441db34 100644 --- a/zkevm-circuits/src/evm_circuit/execution/gas.rs +++ b/zkevm-circuits/src/evm_circuit/execution/gas.rs @@ -1,7 +1,6 @@ use crate::{ evm_circuit::{ execution::ExecutionGadget, - param::N_BYTES_GAS, step::ExecutionState, util::{ common_gadget::SameContextGadget, @@ -9,11 +8,11 @@ use crate::{ ConstrainBuilderCommon, EVMConstraintBuilder, StepStateTransition, Transition::Delta, }, - from_bytes, CachedRegion, RandomLinearCombination, + CachedRegion, U64Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{word::WordExpr, Expr}, }; use eth_types::{evm_types::OpcodeId, Field}; use halo2_proofs::plonk::Error; @@ -21,7 +20,7 @@ use halo2_proofs::plonk::Error; #[derive(Clone, Debug)] pub(crate) struct GasGadget<F> { same_context: SameContextGadget<F>, - gas_left: RandomLinearCombination<F, N_BYTES_GAS>, + gas_left: U64Cell<F>, } impl<F: Field> ExecutionGadget<F> for GasGadget<F> { @@ -31,18 +30,18 @@ impl<F: Field> ExecutionGadget<F> for GasGadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { // The gas passed to a transaction is a 64-bit number. - let gas_left = cb.query_word_rlc(); + let gas_left = cb.query_u64(); // The `gas_left` in the current state has to be deducted by the gas // used by the `GAS` opcode itself. cb.require_equal( "Constraint: gas left equal to stack value", - from_bytes::expr(&gas_left.cells), + gas_left.expr(), cb.curr.state.gas_left.expr() - OpcodeId::GAS.constant_gas_cost().expr(), ); // Construct the value and push it to stack. - cb.stack_push(gas_left.expr()); + cb.stack_push(gas_left.to_word()); let step_state_transition = StepStateTransition { rw_counter: Delta(1.expr()), @@ -145,8 +144,8 @@ mod test { // wrong `gas_left` value for the second step, to assert that // the circuit verification fails for this scenario. assert_eq!(block.txs.len(), 1); - assert_eq!(block.txs[0].steps.len(), 4); - block.txs[0].steps[2].gas_left -= 1; + assert_eq!(block.txs[0].steps().len(), 4); + block.txs[0].steps_mut()[2].gas_left -= 1; })) .evm_checks(Box::new(|prover, gate_rows, lookup_rows| { assert!(prover diff --git a/zkevm-circuits/src/evm_circuit/execution/gasprice.rs b/zkevm-circuits/src/evm_circuit/execution/gasprice.rs index 2e6c5561cb..cf01885460 100644 --- a/zkevm-circuits/src/evm_circuit/execution/gasprice.rs +++ b/zkevm-circuits/src/evm_circuit/execution/gasprice.rs @@ -10,7 +10,10 @@ use crate::{ witness::{Block, Call, ExecStep, Transaction}, }, table::{CallContextFieldTag, TxContextFieldTag}, - util::Expr, + util::{ + word::{WordCell, WordExpr}, + Expr, + }, }; use bus_mapping::evm::OpcodeId; use eth_types::Field; @@ -19,7 +22,7 @@ use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] pub(crate) struct GasPriceGadget<F> { tx_id: Cell<F>, - gas_price: Cell<F>, + gas_price: WordCell<F>, same_context: SameContextGadget<F>, } @@ -30,7 +33,7 @@ impl<F: Field> ExecutionGadget<F> for GasPriceGadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { // Query gasprice value - let gas_price = cb.query_cell_phase2(); + let gas_price = cb.query_word_unchecked(); // Lookup in call_ctx the TxId let tx_id = cb.call_context(None, CallContextFieldTag::TxId); @@ -39,11 +42,11 @@ impl<F: Field> ExecutionGadget<F> for GasPriceGadget<F> { tx_id.expr(), TxContextFieldTag::GasPrice, None, - gas_price.expr(), + gas_price.to_word(), ); // Push the value to the stack - cb.stack_push(gas_price.expr()); + cb.stack_push(gas_price.to_word()); // State transition let opcode = cb.query_cell(); @@ -75,10 +78,9 @@ impl<F: Field> ExecutionGadget<F> for GasPriceGadget<F> { let gas_price = block.get_rws(step, 1).stack_value(); self.tx_id - .assign(region, offset, Value::known(F::from(tx.id as u64)))?; + .assign(region, offset, Value::known(F::from(tx.id)))?; - self.gas_price - .assign(region, offset, region.word_rlc(gas_price))?; + self.gas_price.assign_u256(region, offset, gas_price)?; self.same_context.assign_exec_step(region, offset, step)?; diff --git a/zkevm-circuits/src/evm_circuit/execution/is_zero.rs b/zkevm-circuits/src/evm_circuit/execution/is_zero.rs index 36671e5f5a..ec8b7334e6 100644 --- a/zkevm-circuits/src/evm_circuit/execution/is_zero.rs +++ b/zkevm-circuits/src/evm_circuit/execution/is_zero.rs @@ -5,21 +5,24 @@ use crate::{ util::{ common_gadget::SameContextGadget, constraint_builder::{EVMConstraintBuilder, StepStateTransition, Transition::Delta}, - math_gadget, CachedRegion, Cell, + math_gadget, CachedRegion, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{Word, WordCell, WordExpr}, + Expr, + }, }; use bus_mapping::evm::OpcodeId; use eth_types::Field; -use halo2_proofs::plonk::Error; +use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] pub(crate) struct IsZeroGadget<F> { same_context: SameContextGadget<F>, - value: Cell<F>, - is_zero: math_gadget::IsZeroGadget<F>, + value: WordCell<F>, + is_zero_word: math_gadget::IsZeroWordGadget<F, WordCell<F>>, } impl<F: Field> ExecutionGadget<F> for IsZeroGadget<F> { @@ -30,11 +33,11 @@ impl<F: Field> ExecutionGadget<F> for IsZeroGadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { let opcode = cb.query_cell(); - let value = cb.query_cell_phase2(); - let is_zero = math_gadget::IsZeroGadget::construct(cb, value.expr()); + let value = cb.query_word_unchecked(); + let is_zero_word = math_gadget::IsZeroWordGadget::construct(cb, &value); - cb.stack_pop(value.expr()); - cb.stack_push(is_zero.expr()); + cb.stack_pop(value.to_word()); + cb.stack_push(Word::from_lo_unchecked(is_zero_word.expr())); // State transition let step_state_transition = StepStateTransition { @@ -49,7 +52,7 @@ impl<F: Field> ExecutionGadget<F> for IsZeroGadget<F> { Self { same_context, value, - is_zero, + is_zero_word, } } @@ -65,9 +68,9 @@ impl<F: Field> ExecutionGadget<F> for IsZeroGadget<F> { self.same_context.assign_exec_step(region, offset, step)?; let value = block.get_rws(step, 0).stack_value(); - let value = region.word_rlc(value); - self.value.assign(region, offset, value)?; - self.is_zero.assign_value(region, offset, value)?; + self.value.assign_u256(region, offset, value)?; + self.is_zero_word + .assign_value(region, offset, Value::known(Word::from(value)))?; Ok(()) } diff --git a/zkevm-circuits/src/evm_circuit/execution/jump.rs b/zkevm-circuits/src/evm_circuit/execution/jump.rs index fc03df544b..615d2ba7c3 100644 --- a/zkevm-circuits/src/evm_circuit/execution/jump.rs +++ b/zkevm-circuits/src/evm_circuit/execution/jump.rs @@ -1,7 +1,6 @@ use crate::{ evm_circuit::{ execution::ExecutionGadget, - param::N_BYTES_PROGRAM_COUNTER, step::ExecutionState, util::{ common_gadget::SameContextGadget, @@ -9,19 +8,19 @@ use crate::{ EVMConstraintBuilder, StepStateTransition, Transition::{Delta, To}, }, - from_bytes, CachedRegion, RandomLinearCombination, + CachedRegion, U64Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{word::WordExpr, Expr}, }; -use eth_types::{evm_types::OpcodeId, Field, ToLittleEndian}; +use eth_types::{evm_types::OpcodeId, Field}; use halo2_proofs::plonk::Error; #[derive(Clone, Debug)] pub(crate) struct JumpGadget<F> { same_context: SameContextGadget<F>, - destination: RandomLinearCombination<F, N_BYTES_PROGRAM_COUNTER>, + destination: U64Cell<F>, } impl<F: Field> ExecutionGadget<F> for JumpGadget<F> { @@ -30,23 +29,19 @@ impl<F: Field> ExecutionGadget<F> for JumpGadget<F> { const EXECUTION_STATE: ExecutionState = ExecutionState::JUMP; fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { - let destination = cb.query_word_rlc(); + let destination = cb.query_u64(); // Pop the value from the stack - cb.stack_pop(destination.expr()); + cb.stack_pop(destination.to_word()); // Lookup opcode at destination - cb.opcode_lookup_at( - from_bytes::expr(&destination.cells), - OpcodeId::JUMPDEST.expr(), - 1.expr(), - ); + cb.opcode_lookup_at(destination.expr(), OpcodeId::JUMPDEST.expr(), 1.expr()); // State transition let opcode = cb.query_cell(); let step_state_transition = StepStateTransition { rw_counter: Delta(1.expr()), - program_counter: To(from_bytes::expr(&destination.cells)), + program_counter: To(destination.expr()), stack_pointer: Delta(1.expr()), gas_left: Delta(-OpcodeId::JUMP.constant_gas_cost().expr()), ..Default::default() @@ -71,15 +66,7 @@ impl<F: Field> ExecutionGadget<F> for JumpGadget<F> { self.same_context.assign_exec_step(region, offset, step)?; let destination = block.get_rws(step, 0).stack_value(); - self.destination.assign( - region, - offset, - Some( - destination.to_le_bytes()[..N_BYTES_PROGRAM_COUNTER] - .try_into() - .unwrap(), - ), - )?; + self.destination.assign_u256(region, offset, destination)?; Ok(()) } @@ -150,6 +137,11 @@ mod test { test_ok(rand_range(34..1 << 11)); } + #[test] + fn invalid_jump_err() { + test_invalid_jump(34); + } + #[test] #[ignore] fn jump_gadget_rand_huge_bytecode() { diff --git a/zkevm-circuits/src/evm_circuit/execution/jumpi.rs b/zkevm-circuits/src/evm_circuit/execution/jumpi.rs index 8c131e21e5..5697e8f0e2 100644 --- a/zkevm-circuits/src/evm_circuit/execution/jumpi.rs +++ b/zkevm-circuits/src/evm_circuit/execution/jumpi.rs @@ -9,22 +9,25 @@ use crate::{ ConstrainBuilderCommon, EVMConstraintBuilder, StepStateTransition, Transition::{Delta, To}, }, - math_gadget::IsZeroGadget, - select, CachedRegion, Cell, + math_gadget::IsZeroWordGadget, + select, CachedRegion, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{Word, WordCell, WordExpr}, + Expr, + }, }; use eth_types::{evm_types::OpcodeId, Field}; -use halo2_proofs::plonk::Error; +use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] pub(crate) struct JumpiGadget<F> { same_context: SameContextGadget<F>, dest: WordByteRangeGadget<F, N_BYTES_PROGRAM_COUNTER>, - phase2_condition: Cell<F>, - is_condition_zero: IsZeroGadget<F>, + condition: WordCell<F>, + is_condition_zero: IsZeroWordGadget<F, WordCell<F>>, } impl<F: Field> ExecutionGadget<F> for JumpiGadget<F> { @@ -34,14 +37,14 @@ impl<F: Field> ExecutionGadget<F> for JumpiGadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { let dest = WordByteRangeGadget::construct(cb); - let phase2_condition = cb.query_cell_phase2(); + let condition = cb.query_word_unchecked(); // Pop the value from the stack - cb.stack_pop(dest.original_word()); - cb.stack_pop(phase2_condition.expr()); + cb.stack_pop(dest.original()); + cb.stack_pop(condition.to_word()); // Determine if the jump condition is met - let is_condition_zero = IsZeroGadget::construct(cb, phase2_condition.expr()); + let is_condition_zero = IsZeroWordGadget::construct(cb, &condition); let should_jump = 1.expr() - is_condition_zero.expr(); // Lookup opcode at destination when should_jump @@ -77,7 +80,7 @@ impl<F: Field> ExecutionGadget<F> for JumpiGadget<F> { Self { same_context, dest, - phase2_condition, + condition, is_condition_zero, } } @@ -94,12 +97,11 @@ impl<F: Field> ExecutionGadget<F> for JumpiGadget<F> { self.same_context.assign_exec_step(region, offset, step)?; let [destination, condition] = [0, 1].map(|index| block.get_rws(step, index).stack_value()); - let condition = region.word_rlc(condition); self.dest.assign(region, offset, destination)?; - self.phase2_condition.assign(region, offset, condition)?; + self.condition.assign_u256(region, offset, condition)?; self.is_condition_zero - .assign_value(region, offset, condition)?; + .assign_value(region, offset, Value::known(Word::from(condition)))?; Ok(()) } diff --git a/zkevm-circuits/src/evm_circuit/execution/logs.rs b/zkevm-circuits/src/evm_circuit/execution/logs.rs index bf2f0d17ba..23c63bc0f2 100644 --- a/zkevm-circuits/src/evm_circuit/execution/logs.rs +++ b/zkevm-circuits/src/evm_circuit/execution/logs.rs @@ -9,13 +9,19 @@ use crate::{ ConstrainBuilderCommon, EVMConstraintBuilder, StepStateTransition, Transition::{Delta, To}, }, - memory_gadget::{MemoryAddressGadget, MemoryExpansionGadget}, + memory_gadget::{ + CommonMemoryAddressGadget, MemoryAddressGadget, MemoryExpansionGadget, + }, not, sum, CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, table::{CallContextFieldTag, TxLogFieldTag}, - util::{build_tx_log_expression, Expr}, + util::{ + build_tx_log_expression, + word::{Word, Word32Cell, WordCell, WordExpr}, + Expr, + }, }; use array_init::array_init; use bus_mapping::circuit_input_builder::CopyDataType; @@ -30,10 +36,10 @@ pub(crate) struct LogGadget<F> { same_context: SameContextGadget<F>, // memory address memory_address: MemoryAddressGadget<F>, - phase2_topics: [Cell<F>; 4], + topics: [Word32Cell<F>; 4], topic_selectors: [Cell<F>; 4], - contract_address: Cell<F>, + contract_address: WordCell<F>, is_static_call: Cell<F>, is_persistent: Cell<F>, tx_id: Cell<F>, @@ -47,12 +53,12 @@ impl<F: Field> ExecutionGadget<F> for LogGadget<F> { const EXECUTION_STATE: ExecutionState = ExecutionState::LOG; fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { - let mstart = cb.query_cell_phase2(); - let msize = cb.query_word_rlc(); + let mstart = cb.query_word_unchecked(); + let msize = cb.query_memory_address(); // Pop mstart_address, msize from stack - cb.stack_pop(mstart.expr()); - cb.stack_pop(msize.expr()); + cb.stack_pop(mstart.to_word()); + cb.stack_pop(msize.to_word()); // read tx id let tx_id = cb.call_context(None, CallContextFieldTag::TxId); // constrain not in static call @@ -61,7 +67,8 @@ impl<F: Field> ExecutionGadget<F> for LogGadget<F> { // check contract_address in CallContext & TxLog // use call context's callee address as contract address - let contract_address = cb.call_context(None, CallContextFieldTag::CalleeAddress); + let contract_address = + cb.call_context_read_as_word(None, CallContextFieldTag::CalleeAddress); let is_persistent = cb.call_context(None, CallContextFieldTag::IsPersistent); cb.require_boolean("is_persistent is bool", is_persistent.expr()); @@ -71,16 +78,16 @@ impl<F: Field> ExecutionGadget<F> for LogGadget<F> { cb.curr.state.log_id.expr() + 1.expr(), TxLogFieldTag::Address, 0.expr(), - contract_address.expr(), + contract_address.to_word(), ); }); // constrain topics in logs - let phase2_topics = array_init(|_| cb.query_cell_phase2()); + let topics = array_init(|_| cb.query_word32()); let topic_selectors: [Cell<F>; 4] = array_init(|_| cb.query_cell()); - for (idx, topic) in phase2_topics.iter().enumerate() { + for (idx, topic) in topics.iter().enumerate() { cb.condition(topic_selectors[idx].expr(), |cb| { - cb.stack_pop(topic.expr()); + cb.stack_pop(topic.to_word()); }); cb.condition(topic_selectors[idx].expr() * is_persistent.expr(), |cb| { cb.tx_log_lookup( @@ -88,7 +95,7 @@ impl<F: Field> ExecutionGadget<F> for LogGadget<F> { cb.curr.state.log_id.expr() + 1.expr(), TxLogFieldTag::Topic, idx.expr(), - topic.expr(), + topic.to_word(), ); }); } @@ -132,9 +139,9 @@ impl<F: Field> ExecutionGadget<F> for LogGadget<F> { let cond = memory_address.has_length() * is_persistent.expr(); cb.condition(cond.clone(), |cb| { cb.copy_table_lookup( - cb.curr.state.call_id.expr(), + Word::from_lo_unchecked(cb.curr.state.call_id.expr()), CopyDataType::Memory.expr(), - tx_id.expr(), + Word::from_lo_unchecked(tx_id.expr()), CopyDataType::TxLog.expr(), memory_address.offset(), memory_address.address(), @@ -172,7 +179,7 @@ impl<F: Field> ExecutionGadget<F> for LogGadget<F> { Self { same_context, memory_address, - phase2_topics, + topics, topic_selectors, contract_address, is_static_call, @@ -225,29 +232,18 @@ impl<F: Field> ExecutionGadget<F> for LogGadget<F> { offset, Value::known(F::from(topic.is_some().into())), )?; - self.phase2_topics[i].assign( - region, - offset, - region.word_rlc(topic.unwrap_or_default()), - )?; + self.topics[i].assign_u256(region, offset, topic.unwrap_or_default())?; } - self.contract_address.assign( - region, - offset, - Value::known( - call.address - .to_scalar() - .expect("unexpected Address -> Scalar conversion failure"), - ), - )?; + self.contract_address + .assign_h160(region, offset, call.address)?; let is_persistent = call.is_persistent as u64; self.is_static_call .assign(region, offset, Value::known(F::from(call.is_static as u64)))?; self.is_persistent .assign(region, offset, Value::known(F::from(is_persistent)))?; self.tx_id - .assign(region, offset, Value::known(F::from(tx.id as u64)))?; + .assign(region, offset, Value::known(F::from(tx.id)))?; // rw_counter increase from copy table lookup is `msize` memory reads + `msize` // log writes when `is_persistent` is true. self.copy_rwc_inc.assign( diff --git a/zkevm-circuits/src/evm_circuit/execution/memory.rs b/zkevm-circuits/src/evm_circuit/execution/memory.rs index 2bf7999a44..3aa47184ff 100644 --- a/zkevm-circuits/src/evm_circuit/execution/memory.rs +++ b/zkevm-circuits/src/evm_circuit/execution/memory.rs @@ -1,7 +1,7 @@ use crate::{ evm_circuit::{ execution::ExecutionGadget, - param::{N_BYTES_MEMORY_ADDRESS, N_BYTES_MEMORY_WORD_SIZE}, + param::N_BYTES_MEMORY_WORD_SIZE, step::ExecutionState, util::{ common_gadget::SameContextGadget, @@ -9,23 +9,25 @@ use crate::{ EVMConstraintBuilder, StepStateTransition, Transition::{Delta, To}, }, - from_bytes, math_gadget::IsEqualGadget, memory_gadget::MemoryExpansionGadget, - not, CachedRegion, MemoryAddress, Word, + not, CachedRegion, MemoryAddress, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{Word32Cell, WordExpr}, + Expr, + }, }; -use eth_types::{evm_types::OpcodeId, Field, ToLittleEndian}; +use eth_types::{evm_types::OpcodeId, Field}; use halo2_proofs::plonk::Error; #[derive(Clone, Debug)] pub(crate) struct MemoryGadget<F> { same_context: SameContextGadget<F>, address: MemoryAddress<F>, - value: Word<F>, + value: Word32Cell<F>, memory_expansion: MemoryExpansionGadget<F, 1, N_BYTES_MEMORY_WORD_SIZE>, is_mload: IsEqualGadget<F>, is_mstore8: IsEqualGadget<F>, @@ -40,8 +42,8 @@ impl<F: Field> ExecutionGadget<F> for MemoryGadget<F> { let opcode = cb.query_cell(); // In successful case the address must be in 5 bytes - let address = cb.query_word_rlc(); - let value = cb.query_word_rlc(); + let address = cb.query_memory_address(); + let value = cb.query_word32(); // Check if this is an MLOAD let is_mload = IsEqualGadget::construct(cb, opcode.expr(), OpcodeId::MLOAD.expr()); @@ -56,35 +58,30 @@ impl<F: Field> ExecutionGadget<F> for MemoryGadget<F> { // access let memory_expansion = MemoryExpansionGadget::construct( cb, - [from_bytes::expr(&address.cells) + 1.expr() + (is_not_mstore8.clone() * 31.expr())], + [address.expr() + 1.expr() + (is_not_mstore8.clone() * 31.expr())], ); // Stack operations // Pop the address from the stack - cb.stack_pop(address.expr()); + cb.stack_pop(address.to_word()); // For MLOAD push the value to the stack // FOR MSTORE pop the value from the stack cb.stack_lookup( is_mload.expr(), cb.stack_pointer_offset().expr() - is_mload.expr(), - value.expr(), + value.to_word(), ); cb.condition(is_mstore8.expr(), |cb| { - cb.memory_lookup( - 1.expr(), - from_bytes::expr(&address.cells), - value.cells[0].expr(), - None, - ); + cb.memory_lookup(1.expr(), address.expr(), value.limbs[0].expr(), None); }); cb.condition(is_not_mstore8, |cb| { for idx in 0..32 { cb.memory_lookup( is_store.clone(), - from_bytes::expr(&address.cells) + idx.expr(), - value.cells[31 - idx].expr(), + address.expr() + idx.expr(), + value.limbs[31 - idx].expr(), None, ); } @@ -132,17 +129,8 @@ impl<F: Field> ExecutionGadget<F> for MemoryGadget<F> { // Inputs/Outputs let [address, value] = [0, 1].map(|index| block.get_rws(step, index).stack_value()); - self.address.assign( - region, - offset, - Some( - address.to_le_bytes()[..N_BYTES_MEMORY_ADDRESS] - .try_into() - .unwrap(), - ), - )?; - self.value - .assign(region, offset, Some(value.to_le_bytes()))?; + self.address.assign_u256(region, offset, address)?; + self.value.assign_u256(region, offset, value)?; // Check if this is an MLOAD self.is_mload.assign( @@ -266,22 +254,4 @@ mod test { ); } } - - #[test] - fn oog_static_memory_case() { - test_ok( - OpcodeId::MSTORE, - Word::from(0x12FFFF), - Word::from_big_endian(&(1..33).collect::<Vec<_>>()), - // insufficient gas - 3000000, - ); - test_ok( - OpcodeId::MLOAD, - Word::from(0x12FFFF), - Word::from_big_endian(&(1..33).collect::<Vec<_>>()), - // insufficient gas - 21000, - ); - } } diff --git a/zkevm-circuits/src/evm_circuit/execution/msize.rs b/zkevm-circuits/src/evm_circuit/execution/msize.rs index 37d04e91fe..2c34f0d958 100644 --- a/zkevm-circuits/src/evm_circuit/execution/msize.rs +++ b/zkevm-circuits/src/evm_circuit/execution/msize.rs @@ -9,20 +9,20 @@ use crate::{ ConstrainBuilderCommon, EVMConstraintBuilder, StepStateTransition, Transition::Delta, }, - from_bytes, CachedRegion, RandomLinearCombination, + CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{word::Word, Expr}, }; use bus_mapping::evm::OpcodeId; use eth_types::Field; -use halo2_proofs::plonk::Error; +use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] pub(crate) struct MsizeGadget<F> { same_context: SameContextGadget<F>, - value: RandomLinearCombination<F, 8>, + value: Cell<F>, } impl<F: Field> ExecutionGadget<F> for MsizeGadget<F> { @@ -31,17 +31,18 @@ impl<F: Field> ExecutionGadget<F> for MsizeGadget<F> { const EXECUTION_STATE: ExecutionState = ExecutionState::MSIZE; fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { - let value = cb.query_word_rlc(); + let value = cb.query_cell(); - // memory_size is limited to 64 bits so we only consider 8 bytes + // memory_size is limited to 64 bits + // constrain equality with step state therefore only use single cell cb.require_equal( "Constrain memory_size equal to stack value", - from_bytes::expr(&value.cells), + value.expr(), cb.curr.state.memory_word_size.expr() * N_BYTES_WORD.expr(), ); // Push the value on the stack - cb.stack_push(value.expr()); + cb.stack_push(Word::from_lo_unchecked(value.expr())); // State transition let step_state_transition = StepStateTransition { @@ -70,8 +71,11 @@ impl<F: Field> ExecutionGadget<F> for MsizeGadget<F> { step: &ExecStep, ) -> Result<(), Error> { self.same_context.assign_exec_step(region, offset, step)?; - self.value - .assign(region, offset, Some((step.memory_size).to_le_bytes()))?; + self.value.assign( + region, + offset, + Value::known(F::from(step.memory_size as u64)), + )?; Ok(()) } diff --git a/zkevm-circuits/src/evm_circuit/execution/mul_div_mod.rs b/zkevm-circuits/src/evm_circuit/execution/mul_div_mod.rs index 8804392410..bef4c22c26 100644 --- a/zkevm-circuits/src/evm_circuit/execution/mul_div_mod.rs +++ b/zkevm-circuits/src/evm_circuit/execution/mul_div_mod.rs @@ -3,21 +3,23 @@ use crate::{ execution::ExecutionGadget, step::ExecutionState, util::{ - self, common_gadget::SameContextGadget, constraint_builder::{ ConstrainBuilderCommon, EVMConstraintBuilder, StepStateTransition, Transition::Delta, }, - math_gadget::{IsZeroGadget, LtWordGadget, MulAddWordsGadget}, - select, sum, CachedRegion, + math_gadget::{IsZeroWordGadget, LtWordGadget, MulAddWordsGadget}, + CachedRegion, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{Word, Word32Cell, WordExpr}, + Expr, + }, }; use bus_mapping::evm::OpcodeId; -use eth_types::{Field, ToLittleEndian, U256}; +use eth_types::{Field, U256}; use halo2_proofs::plonk::Error; /// MulGadget verifies opcode MUL, DIV, and MOD. @@ -29,11 +31,11 @@ use halo2_proofs::plonk::Error; pub(crate) struct MulDivModGadget<F> { same_context: SameContextGadget<F>, /// Words a, b, c, d - pub words: [util::Word<F>; 4], + pub words: [Word32Cell<F>; 4], /// Gadget that verifies a * b + c = d mul_add_words: MulAddWordsGadget<F>, /// Check if divisor is zero for DIV and MOD - divisor_is_zero: IsZeroGadget<F>, + divisor_is_zero: IsZeroWordGadget<F, Word32Cell<F>>, /// Check if residue < divisor when divisor != 0 for DIV and MOD lt_word: LtWordGadget<F>, } @@ -55,32 +57,39 @@ impl<F: Field> ExecutionGadget<F> for MulDivModGadget<F> { let is_mod = (opcode.expr() - OpcodeId::MUL.expr()) * (opcode.expr() - OpcodeId::DIV.expr()) * F::from(8).invert().unwrap(); - let a = cb.query_word_rlc(); - let b = cb.query_word_rlc(); - let c = cb.query_word_rlc(); - let d = cb.query_word_rlc(); + let a = cb.query_word32(); + let b = cb.query_word32(); + let c = cb.query_word32(); + let d = cb.query_word32(); let mul_add_words = MulAddWordsGadget::construct(cb, [&a, &b, &c, &d]); - let divisor_is_zero = IsZeroGadget::construct(cb, sum::expr(&b.cells)); - let lt_word = LtWordGadget::construct(cb, &c, &b); + let divisor_is_zero = IsZeroWordGadget::construct(cb, &b); + let lt_word = LtWordGadget::construct(cb, &c.to_word(), &b.to_word()); // Pop a and b from the stack, push result on the stack // The first pop is multiplier for MUL and dividend for DIV/MOD // The second pop is multiplicand for MUL and divisor for DIV/MOD // The push is product for MUL, quotient for DIV, and residue for MOD // Note that for DIV/MOD, when divisor == 0, the push value is also 0. - cb.stack_pop(select::expr(is_mul.clone(), a.expr(), d.expr())); - cb.stack_pop(b.expr()); + cb.stack_pop(Word::select(is_mul.clone(), a.to_word(), d.to_word())); + cb.stack_pop(b.to_word()); cb.stack_push( - is_mul.clone() * d.expr() - + is_div * a.expr() * (1.expr() - divisor_is_zero.expr()) - + is_mod * c.expr() * (1.expr() - divisor_is_zero.expr()), + d.to_word() + .mul_selector(is_mul.clone()) + .add_unchecked( + a.to_word() + .mul_selector(is_div * (1.expr() - divisor_is_zero.expr())), + ) + .add_unchecked( + c.to_word() + .mul_selector(is_mod * (1.expr() - divisor_is_zero.expr())), + ), ); // Constraint for MUL case - cb.add_constraint( + cb.require_zero_word( "c == 0 for opcode MUL", - is_mul.clone() * sum::expr(&c.cells), + c.to_word().mul_selector(is_mul.clone()), ); // Constraints for DIV and MOD cases @@ -137,15 +146,13 @@ impl<F: Field> ExecutionGadget<F> for MulDivModGadget<F> { ), _ => unreachable!(), }; - self.words[0].assign(region, offset, Some(a.to_le_bytes()))?; - self.words[1].assign(region, offset, Some(b.to_le_bytes()))?; - self.words[2].assign(region, offset, Some(c.to_le_bytes()))?; - self.words[3].assign(region, offset, Some(d.to_le_bytes()))?; + self.words[0].assign_u256(region, offset, a)?; + self.words[1].assign_u256(region, offset, b)?; + self.words[2].assign_u256(region, offset, c)?; + self.words[3].assign_u256(region, offset, d)?; self.mul_add_words.assign(region, offset, [a, b, c, d])?; self.lt_word.assign(region, offset, c, b)?; - let b_sum = (0..32).fold(0, |acc, idx| acc + b.byte(idx) as u64); - self.divisor_is_zero - .assign(region, offset, F::from(b_sum))?; + self.divisor_is_zero.assign(region, offset, Word::from(b))?; Ok(()) } } diff --git a/zkevm-circuits/src/evm_circuit/execution/mulmod.rs b/zkevm-circuits/src/evm_circuit/execution/mulmod.rs index 3986b16d9d..c4b140b18e 100644 --- a/zkevm-circuits/src/evm_circuit/execution/mulmod.rs +++ b/zkevm-circuits/src/evm_circuit/execution/mulmod.rs @@ -3,21 +3,23 @@ use crate::{ execution::ExecutionGadget, step::ExecutionState, util::{ - self, common_gadget::SameContextGadget, constraint_builder::{ ConstrainBuilderCommon, EVMConstraintBuilder, StepStateTransition, Transition::Delta, }, - math_gadget::{IsZeroGadget, LtWordGadget, ModGadget, MulAddWords512Gadget}, - sum, CachedRegion, + math_gadget::{IsZeroWordGadget, LtWordGadget, ModGadget, MulAddWords512Gadget}, + CachedRegion, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{Word, Word32Cell, WordExpr}, + Expr, + }, }; use bus_mapping::evm::OpcodeId; -use eth_types::{Field, ToLittleEndian, U256}; +use eth_types::{Field, U256}; use halo2_proofs::plonk::Error; /// MulModGadget verifies opcode MULMOD @@ -27,15 +29,15 @@ use halo2_proofs::plonk::Error; pub(crate) struct MulModGadget<F> { same_context: SameContextGadget<F>, // a, b, n, r - pub words: [util::Word<F>; 4], - k: util::Word<F>, - a_reduced: util::Word<F>, - d: util::Word<F>, - e: util::Word<F>, + pub words: [Word32Cell<F>; 4], + k: Word32Cell<F>, + a_reduced: Word32Cell<F>, + d: Word32Cell<F>, + e: Word32Cell<F>, modword: ModGadget<F>, mul512_left: MulAddWords512Gadget<F>, mul512_right: MulAddWords512Gadget<F>, - n_is_zero: IsZeroGadget<F>, + n_is_zero: IsZeroWordGadget<F, Word32Cell<F>>, lt: LtWordGadget<F>, } @@ -47,16 +49,16 @@ impl<F: Field> ExecutionGadget<F> for MulModGadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { let opcode = cb.query_cell(); - let a = cb.query_word_rlc(); - let b = cb.query_word_rlc(); - let n = cb.query_word_rlc(); - let r = cb.query_word_rlc(); + let a = cb.query_word32(); + let b = cb.query_word32(); + let n = cb.query_word32(); + let r = cb.query_word32(); - let k = cb.query_word_rlc(); + let k = cb.query_word32(); - let a_reduced = cb.query_word_rlc(); - let d = cb.query_word_rlc(); - let e = cb.query_word_rlc(); + let a_reduced = cb.query_word32(); + let d = cb.query_word32(); + let e = cb.query_word32(); // 1. k1 * n + a_reduced == a let modword = ModGadget::construct(cb, [&a, &n, &a_reduced]); @@ -68,17 +70,17 @@ impl<F: Field> ExecutionGadget<F> for MulModGadget<F> { let mul512_right = MulAddWords512Gadget::construct(cb, [&k, &n, &d, &e], Some(&r)); // (r < n ) or n == 0 - let n_is_zero = IsZeroGadget::construct(cb, sum::expr(&n.cells)); - let lt = LtWordGadget::construct(cb, &r, &n); + let n_is_zero = IsZeroWordGadget::construct(cb, &n); + let lt = LtWordGadget::construct(cb, &r.to_word(), &n.to_word()); cb.add_constraint( " (1 - (r < n) - (n==0)) ", 1.expr() - lt.expr() - n_is_zero.expr(), ); - cb.stack_pop(a.expr()); - cb.stack_pop(b.expr()); - cb.stack_pop(n.expr()); - cb.stack_push(r.expr()); + cb.stack_pop(a.to_word()); + cb.stack_pop(b.to_word()); + cb.stack_pop(n.to_word()); + cb.stack_push(r.to_word()); // State transition let step_state_transition = StepStateTransition { @@ -117,10 +119,10 @@ impl<F: Field> ExecutionGadget<F> for MulModGadget<F> { self.same_context.assign_exec_step(region, offset, step)?; let [r, n, b, a] = [3, 2, 1, 0].map(|index| block.get_rws(step, index).stack_value()); - self.words[0].assign(region, offset, Some(a.to_le_bytes()))?; - self.words[1].assign(region, offset, Some(b.to_le_bytes()))?; - self.words[2].assign(region, offset, Some(n.to_le_bytes()))?; - self.words[3].assign(region, offset, Some(r.to_le_bytes()))?; + self.words[0].assign_u256(region, offset, a)?; + self.words[1].assign_u256(region, offset, b)?; + self.words[2].assign_u256(region, offset, n)?; + self.words[3].assign_u256(region, offset, r)?; // 1. quotient and reduction of a mod n let (k1, a_reduced) = if n.is_zero() { (U256::zero(), U256::zero()) @@ -142,11 +144,10 @@ impl<F: Field> ExecutionGadget<F> for MulModGadget<F> { (r, U256::try_from(prod / n).unwrap()) }; - self.k.assign(region, offset, Some(k2.to_le_bytes()))?; - self.a_reduced - .assign(region, offset, Some(a_reduced.to_le_bytes()))?; - self.d.assign(region, offset, Some(d.to_le_bytes()))?; - self.e.assign(region, offset, Some(e.to_le_bytes()))?; + self.k.assign_u256(region, offset, k2)?; + self.a_reduced.assign_u256(region, offset, a_reduced)?; + self.d.assign_u256(region, offset, d)?; + self.e.assign_u256(region, offset, e)?; self.modword.assign(region, offset, a, n, a_reduced, k1)?; self.mul512_left @@ -156,8 +157,7 @@ impl<F: Field> ExecutionGadget<F> for MulModGadget<F> { self.lt.assign(region, offset, r, n)?; - let n_sum = (0..32).fold(0, |acc, idx| acc + n.byte(idx) as u64); - self.n_is_zero.assign(region, offset, F::from(n_sum))?; + self.n_is_zero.assign(region, offset, Word::from(n))?; Ok(()) } } diff --git a/zkevm-circuits/src/evm_circuit/execution/not.rs b/zkevm-circuits/src/evm_circuit/execution/not.rs index 37ddcc3f1b..d60e4dbbd8 100644 --- a/zkevm-circuits/src/evm_circuit/execution/not.rs +++ b/zkevm-circuits/src/evm_circuit/execution/not.rs @@ -6,20 +6,23 @@ use crate::{ util::{ common_gadget::SameContextGadget, constraint_builder::{EVMConstraintBuilder, StepStateTransition, Transition::Delta}, - CachedRegion, Word, + CachedRegion, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{Word32Cell, WordExpr}, + Expr, + }, }; -use eth_types::{evm_types::OpcodeId, Field, ToLittleEndian}; +use eth_types::{evm_types::OpcodeId, Field}; use halo2_proofs::plonk::Error; #[derive(Clone, Debug)] pub(crate) struct NotGadget<F> { same_context: SameContextGadget<F>, - input: Word<F>, - output: Word<F>, + input: Word32Cell<F>, + output: Word32Cell<F>, } impl<F: Field> ExecutionGadget<F> for NotGadget<F> { @@ -30,13 +33,13 @@ impl<F: Field> ExecutionGadget<F> for NotGadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { let opcode = cb.query_cell(); - let input = cb.query_word_rlc(); - let output = cb.query_word_rlc(); + let input = cb.query_word32(); + let output = cb.query_word32(); - cb.stack_pop(input.expr()); - cb.stack_push(output.expr()); + cb.stack_pop(input.to_word()); + cb.stack_push(output.to_word()); - for (i, o) in input.cells.iter().zip(output.cells.iter()) { + for (i, o) in input.limbs.iter().zip(output.limbs.iter()) { cb.add_lookup( "input XOR output is all 1's", Lookup::Fixed { @@ -75,10 +78,8 @@ impl<F: Field> ExecutionGadget<F> for NotGadget<F> { self.same_context.assign_exec_step(region, offset, step)?; let [input, output] = [0, 1].map(|index| block.get_rws(step, index).stack_value()); - self.input - .assign(region, offset, Some(input.to_le_bytes()))?; - self.output - .assign(region, offset, Some(output.to_le_bytes()))?; + self.input.assign_u256(region, offset, input)?; + self.output.assign_u256(region, offset, output)?; Ok(()) } diff --git a/zkevm-circuits/src/evm_circuit/execution/origin.rs b/zkevm-circuits/src/evm_circuit/execution/origin.rs index f53d0e2099..720d8d21b0 100644 --- a/zkevm-circuits/src/evm_circuit/execution/origin.rs +++ b/zkevm-circuits/src/evm_circuit/execution/origin.rs @@ -1,26 +1,25 @@ use crate::{ evm_circuit::{ execution::ExecutionGadget, - param::N_BYTES_ACCOUNT_ADDRESS, step::ExecutionState, util::{ common_gadget::SameContextGadget, constraint_builder::{EVMConstraintBuilder, StepStateTransition, Transition::Delta}, - from_bytes, CachedRegion, Cell, RandomLinearCombination, + AccountAddress, CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, table::{CallContextFieldTag, TxContextFieldTag}, - util::Expr, + util::{word::WordExpr, Expr}, }; use bus_mapping::evm::OpcodeId; -use eth_types::{Field, ToLittleEndian}; +use eth_types::Field; use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] pub(crate) struct OriginGadget<F> { tx_id: Cell<F>, - origin: RandomLinearCombination<F, N_BYTES_ACCOUNT_ADDRESS>, + origin: AccountAddress<F>, same_context: SameContextGadget<F>, } @@ -30,7 +29,7 @@ impl<F: Field> ExecutionGadget<F> for OriginGadget<F> { const EXECUTION_STATE: ExecutionState = ExecutionState::ORIGIN; fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { - let origin = cb.query_word_rlc::<N_BYTES_ACCOUNT_ADDRESS>(); + let origin = cb.query_account_address(); // Lookup in call_ctx the TxId let tx_id = cb.call_context(None, CallContextFieldTag::TxId); @@ -39,11 +38,11 @@ impl<F: Field> ExecutionGadget<F> for OriginGadget<F> { tx_id.expr(), TxContextFieldTag::CallerAddress, None, // None because unrelated to calldata - from_bytes::expr(&origin.cells), + origin.to_word(), ); // Push the value to the stack - cb.stack_push(origin.expr()); + cb.stack_push(origin.to_word()); // State transition let opcode = cb.query_cell(); @@ -76,18 +75,10 @@ impl<F: Field> ExecutionGadget<F> for OriginGadget<F> { // Assing TxId. self.tx_id - .assign(region, offset, Value::known(F::from(tx.id as u64)))?; + .assign(region, offset, Value::known(F::from(tx.id)))?; - // Assign Origin addr RLC. - self.origin.assign( - region, - offset, - Some( - origin.to_le_bytes()[..N_BYTES_ACCOUNT_ADDRESS] - .try_into() - .unwrap(), - ), - )?; + // Assign Origin addr. + self.origin.assign_u256(region, offset, origin)?; // Assign SameContextGadget witnesses. self.same_context.assign_exec_step(region, offset, step)?; diff --git a/zkevm-circuits/src/evm_circuit/execution/pc.rs b/zkevm-circuits/src/evm_circuit/execution/pc.rs index 905ae21d5c..b89f28e789 100644 --- a/zkevm-circuits/src/evm_circuit/execution/pc.rs +++ b/zkevm-circuits/src/evm_circuit/execution/pc.rs @@ -1,7 +1,6 @@ use crate::{ evm_circuit::{ execution::ExecutionGadget, - param::N_BYTES_PROGRAM_COUNTER, step::ExecutionState, util::{ common_gadget::SameContextGadget, @@ -9,11 +8,11 @@ use crate::{ ConstrainBuilderCommon, EVMConstraintBuilder, StepStateTransition, Transition::Delta, }, - from_bytes, CachedRegion, RandomLinearCombination, + CachedRegion, U64Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{word::WordExpr, Expr}, }; use bus_mapping::evm::OpcodeId; use eth_types::Field; @@ -22,7 +21,7 @@ use halo2_proofs::plonk::Error; #[derive(Clone, Debug)] pub(crate) struct PcGadget<F> { same_context: SameContextGadget<F>, - value: RandomLinearCombination<F, N_BYTES_PROGRAM_COUNTER>, + value: U64Cell<F>, } impl<F: Field> ExecutionGadget<F> for PcGadget<F> { @@ -31,17 +30,17 @@ impl<F: Field> ExecutionGadget<F> for PcGadget<F> { const EXECUTION_STATE: ExecutionState = ExecutionState::PC; fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { - let value = cb.query_word_rlc(); + let value = cb.query_u64(); // program_counter is limited to 64 bits so we only consider 8 bytes cb.require_equal( "Constrain program_counter equal to stack value", - from_bytes::expr(&value.cells), + value.expr(), cb.curr.state.program_counter.expr(), ); // Push the value on the stack - cb.stack_push(value.expr()); + cb.stack_push(value.to_word()); // State transition let step_state_transition = StepStateTransition { diff --git a/zkevm-circuits/src/evm_circuit/execution/pop.rs b/zkevm-circuits/src/evm_circuit/execution/pop.rs index 93103a4ae3..bb69d8f13b 100644 --- a/zkevm-circuits/src/evm_circuit/execution/pop.rs +++ b/zkevm-circuits/src/evm_circuit/execution/pop.rs @@ -5,11 +5,14 @@ use crate::{ util::{ common_gadget::SameContextGadget, constraint_builder::{EVMConstraintBuilder, StepStateTransition, Transition::Delta}, - CachedRegion, Cell, + CachedRegion, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{WordCell, WordExpr}, + Expr, + }, }; use bus_mapping::evm::OpcodeId; use eth_types::Field; @@ -18,7 +21,7 @@ use halo2_proofs::plonk::Error; #[derive(Clone, Debug)] pub(crate) struct PopGadget<F> { same_context: SameContextGadget<F>, - phase2_value: Cell<F>, + value: WordCell<F>, } impl<F: Field> ExecutionGadget<F> for PopGadget<F> { @@ -27,10 +30,10 @@ impl<F: Field> ExecutionGadget<F> for PopGadget<F> { const EXECUTION_STATE: ExecutionState = ExecutionState::POP; fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { - let phase2_value = cb.query_cell_phase2(); + let value = cb.query_word_unchecked(); // Pop the value from the stack - cb.stack_pop(phase2_value.expr()); + cb.stack_pop(value.to_word()); // State transition let step_state_transition = StepStateTransition { @@ -45,7 +48,7 @@ impl<F: Field> ExecutionGadget<F> for PopGadget<F> { Self { same_context, - phase2_value, + value, } } @@ -61,8 +64,7 @@ impl<F: Field> ExecutionGadget<F> for PopGadget<F> { self.same_context.assign_exec_step(region, offset, step)?; let value = block.get_rws(step, 0).stack_value(); - self.phase2_value - .assign(region, offset, region.word_rlc(value))?; + self.value.assign_u256(region, offset, value)?; Ok(()) } diff --git a/zkevm-circuits/src/evm_circuit/execution/push.rs b/zkevm-circuits/src/evm_circuit/execution/push.rs index 75c1add43c..2948da9272 100644 --- a/zkevm-circuits/src/evm_circuit/execution/push.rs +++ b/zkevm-circuits/src/evm_circuit/execution/push.rs @@ -1,28 +1,38 @@ use crate::{ evm_circuit::{ execution::ExecutionGadget, + param::N_BYTES_PROGRAM_COUNTER, step::ExecutionState, util::{ + and, common_gadget::SameContextGadget, constraint_builder::{ ConstrainBuilderCommon, EVMConstraintBuilder, StepStateTransition, Transition::Delta, }, - sum, CachedRegion, Cell, Word, + math_gadget::{IsZeroGadget, LtGadget}, + not, or, select, sum, CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{Word32Cell, WordExpr}, + Expr, + }, }; use array_init::array_init; -use eth_types::{evm_types::OpcodeId, Field, ToLittleEndian}; +use eth_types::{evm_types::OpcodeId, Field}; use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] pub(crate) struct PushGadget<F> { same_context: SameContextGadget<F>, - value: Word<F>, - selectors: [Cell<F>; 31], + is_push0: IsZeroGadget<F>, + value: Word32Cell<F>, + is_pushed: [Cell<F>; 32], + is_padding: [Cell<F>; 32], + code_length: Cell<F>, + is_out_of_bound: LtGadget<F, N_BYTES_PROGRAM_COUNTER>, } impl<F: Field> ExecutionGadget<F> for PushGadget<F> { @@ -32,10 +42,27 @@ impl<F: Field> ExecutionGadget<F> for PushGadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { let opcode = cb.query_cell(); + let is_push0 = IsZeroGadget::construct(cb, opcode.expr() - OpcodeId::PUSH0.expr()); + + let value = cb.query_word32(); + cb.stack_push(value.to_word()); + + // Query selectors for each opcode_lookup whether byte in value needs to be pushed + let is_pushed = array_init(|_| cb.query_bool()); + let is_padding = array_init(|_| cb.query_bool()); - let value = cb.query_word_rlc(); - // Query selectors for each opcode_lookup - let selectors = array_init(|_| cb.query_bool()); + let code_length = cb.query_cell(); + let code_length_left = code_length.expr() - cb.curr.state.program_counter.expr() - 1.expr(); + cb.bytecode_length(cb.curr.state.code_hash.to_word(), code_length.expr()); + + let num_bytes_needed = opcode.expr() - OpcodeId::PUSH0.expr(); + let is_out_of_bound = + LtGadget::construct(cb, code_length_left.expr(), num_bytes_needed.expr()); + let num_bytes_padding = select::expr( + is_out_of_bound.expr(), + num_bytes_needed.expr() - code_length_left.expr(), + 0.expr(), + ); // The pushed bytes are viewed as left-padded big-endian, but our random // linear combination uses little-endian, so we lookup from the LSB @@ -50,68 +77,81 @@ impl<F: Field> ExecutionGadget<F> for PushGadget<F> { // â–¼ â–¼ // [byte31, ..., byte2, byte1, byte0] // - for idx in 0..32 { - let byte = &value.cells[idx]; - let index = cb.curr.state.program_counter.expr() + opcode.expr() - - (OpcodeId::PUSH1.as_u8() - 1 + idx as u8).expr(); - if idx == 0 { - cb.opcode_lookup_at(index, byte.expr(), 0.expr()) - } else { - cb.condition(selectors[idx - 1].expr(), |cb| { - cb.opcode_lookup_at(index, byte.expr(), 0.expr()) - }); - } - } + let mut is_pushed_cell_prev = true.expr(); + let mut is_padding_cell_prev = true.expr(); + for (idx, (is_pushed_cell, is_padding_cell)) in + is_pushed.iter().zip(is_padding.iter()).enumerate() + { + let byte = &value.limbs[idx]; + let index = + cb.curr.state.program_counter.expr() + num_bytes_needed.clone() - idx.expr(); - for idx in 0..31 { - let selector_prev = if idx == 0 { - // First selector will always be 1 - 1.expr() - } else { - selectors[idx - 1].expr() - }; - // selector can transit from 1 to 0 only once as [1, 1, 1, ..., - // 0, 0, 0] cb.require_boolean( - "Constrain selector can only transit from 1 to 0", - selector_prev - selectors[idx].expr(), + "Constrain is_pushed can only transit from 1 to 0", + is_pushed_cell_prev - is_pushed_cell.expr(), + ); + cb.require_boolean( + "Constrain is_padding can only transit from 1 to 0", + is_padding_cell_prev - is_padding_cell.expr(), + ); + + // byte is 0 if it is either not pushed or padding + cb.condition( + or::expr(&[not::expr(is_pushed_cell.expr()), is_padding_cell.expr()]), + |cb| { + cb.require_zero( + "Constrain byte == 0 when is_pushed == 0 or is_padding == 1", + byte.expr(), + ); + }, ); - // byte should be 0 when selector is 0 - cb.require_zero( - "Constrain byte == 0 when selector == 0", - value.cells[idx + 1].expr() * (1.expr() - selectors[idx].expr()), + cb.condition( + and::expr(&[is_pushed_cell.expr(), not::expr(is_padding_cell.expr())]), + |cb| { + cb.opcode_lookup_at(index, byte.expr(), 0.expr()); + }, ); + is_pushed_cell_prev = is_pushed_cell.expr(); + is_padding_cell_prev = is_padding_cell.expr(); } - // Deduce the number of additional bytes to push than PUSH1. Note that - // num_additional_pushed = n - 1 where n is the suffix number of PUSH*. - let num_additional_pushed = opcode.expr() - OpcodeId::PUSH1.as_u64().expr(); - // Sum of selectors needs to be exactly the number of additional bytes - // that needs to be pushed. + // Sum of selectors is_pushed needs to be exactly the number of bytes + // that needs to be pushed cb.require_equal( - "Constrain sum of selectors equal to num_additional_pushed", - sum::expr(&selectors), - num_additional_pushed, + "Constrain sum of is_pushed equal to num_bytes_needed", + sum::expr(&is_pushed), + num_bytes_needed.expr(), ); - // Push the value on the stack - cb.stack_push(value.expr()); + // Sum of selectors is_padding needs to be exactly the number of padded bytes + cb.require_equal( + "Constrain sum of is_padding equal to num_padding", + sum::expr(&is_padding), + num_bytes_padding.expr(), + ); // State transition - // `program_counter` needs to be increased by number of bytes pushed + 1 let step_state_transition = StepStateTransition { rw_counter: Delta(1.expr()), - program_counter: Delta(opcode.expr() - (OpcodeId::PUSH1.as_u64() - 2).expr()), + program_counter: Delta(opcode.expr() - (OpcodeId::PUSH0.as_u64() - 1).expr()), stack_pointer: Delta((-1).expr()), - gas_left: Delta(-OpcodeId::PUSH1.constant_gas_cost().expr()), + gas_left: Delta(select::expr( + is_push0.expr(), + -OpcodeId::PUSH0.constant_gas_cost().expr(), + -OpcodeId::PUSH1.constant_gas_cost().expr(), + )), ..Default::default() }; let same_context = SameContextGadget::construct(cb, opcode, step_state_transition); Self { same_context, + is_push0, value, - selectors, + is_pushed, + is_padding, + code_length, + is_out_of_bound, } } @@ -121,23 +161,53 @@ impl<F: Field> ExecutionGadget<F> for PushGadget<F> { offset: usize, block: &Block<F>, _: &Transaction, - _: &Call, + call: &Call, step: &ExecStep, ) -> Result<(), Error> { self.same_context.assign_exec_step(region, offset, step)?; let opcode = step.opcode().unwrap(); + self.is_push0.assign( + region, + offset, + F::from(opcode.as_u64() - OpcodeId::PUSH0.as_u64()), + )?; + + let bytecode = block + .bytecodes + .get_from_h256(&call.code_hash) + .expect("could not find current environment's bytecode"); + let code_length = bytecode.codesize() as u64; + self.code_length + .assign(region, offset, Value::known(F::from(code_length)))?; let value = block.get_rws(step, 0).stack_value(); - self.value - .assign(region, offset, Some(value.to_le_bytes()))?; + self.value.assign_u256(region, offset, value)?; - let num_additional_pushed = opcode.postfix().expect("opcode with postfix") - 1; - for (idx, selector) in self.selectors.iter().enumerate() { - selector.assign( + let code_length_left = code_length - step.pc - 1; + let num_bytes_needed = opcode.postfix().unwrap() as u64; + let num_padding = num_bytes_needed.saturating_sub(code_length_left); + self.is_out_of_bound.assign( + region, + offset, + F::from(code_length_left), + F::from(num_bytes_needed), + )?; + for (idx, (is_pushed_cell, is_padding_cell)) in self + .is_pushed + .iter() + .zip(self.is_padding.iter()) + .enumerate() + { + is_pushed_cell.assign( region, offset, - Value::known(F::from((idx < num_additional_pushed as usize) as u64)), + Value::known(F::from(((idx as u64) < num_bytes_needed) as u64)), + )?; + is_padding_cell.assign( + region, + offset, + Value::known(F::from(((idx as u64) < num_padding) as u64)), )?; } @@ -152,8 +222,6 @@ mod test { use mock::TestContext; fn test_ok(opcode: OpcodeId, bytes: &[u8]) { - assert!(bytes.len() == opcode.data_len()); - let mut bytecode = bytecode! { .write_op(opcode) }; @@ -170,6 +238,7 @@ mod test { #[test] fn push_gadget_simple() { + test_ok(OpcodeId::PUSH0, &[]); test_ok(OpcodeId::PUSH1, &[1]); test_ok(OpcodeId::PUSH2, &[1, 2]); test_ok( @@ -186,10 +255,13 @@ mod test { 24, 25, 26, 27, 28, 29, 30, 31, 32, ], ); + + // out of bounds + test_ok(OpcodeId::PUSH2, &[1]); + test_ok(OpcodeId::PUSH16, &[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); } #[test] - #[ignore] fn push_gadget_rand() { for (idx, opcode) in vec![ OpcodeId::PUSH1, diff --git a/zkevm-circuits/src/evm_circuit/execution/return_revert.rs b/zkevm-circuits/src/evm_circuit/execution/return_revert.rs index 9f1c0eeed2..0df3467253 100644 --- a/zkevm-circuits/src/evm_circuit/execution/return_revert.rs +++ b/zkevm-circuits/src/evm_circuit/execution/return_revert.rs @@ -9,17 +9,25 @@ use crate::{ ConstrainBuilderCommon, EVMConstraintBuilder, ReversionInfo, StepStateTransition, Transition::{Delta, To}, }, - math_gadget::{IsZeroGadget, MinMaxGadget}, - memory_gadget::{MemoryAddressGadget, MemoryExpansionGadget}, + math_gadget::{IsEqualGadget, IsZeroGadget, MinMaxGadget}, + memory_gadget::{ + CommonMemoryAddressGadget, MemoryAddressGadget, MemoryExpansionGadget, + }, not, CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, table::{AccountFieldTag, CallContextFieldTag}, - util::Expr, + util::{ + word::{Word, Word32Cell, WordCell, WordExpr}, + Expr, + }, }; use bus_mapping::{circuit_input_builder::CopyDataType, evm::OpcodeId, state_db::CodeDB}; -use eth_types::{evm_types::GasCost, Field, ToScalar, U256}; +use eth_types::{ + evm_types::{GasCost, INVALID_INIT_CODE_FIRST_BYTE}, + Field, ToScalar, U256, +}; use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] @@ -32,6 +40,10 @@ pub(crate) struct ReturnRevertGadget<F> { is_success: Cell<F>, restore_context: RestoreContextGadget<F>, + // Used to check first byte of create init code must not be 0xef (EIP-3541). + init_code_first_byte: Cell<F>, + is_init_code_first_byte_invalid: IsEqualGadget<F>, + copy_length: MinMaxGadget<F, N_BYTES_MEMORY_ADDRESS>, copy_rw_increase: Cell<F>, copy_rw_increase_is_zero: IsZeroGadget<F>, @@ -40,10 +52,10 @@ pub(crate) struct ReturnRevertGadget<F> { return_data_length: Cell<F>, memory_expansion: MemoryExpansionGadget<F, 1, N_BYTES_MEMORY_WORD_SIZE>, - code_hash: Cell<F>, + code_hash: Word32Cell<F>, caller_id: Cell<F>, - address: Cell<F>, + address: WordCell<F>, reversion_info: ReversionInfo<F>, } @@ -56,10 +68,10 @@ impl<F: Field> ExecutionGadget<F> for ReturnRevertGadget<F> { let opcode = cb.query_cell(); cb.opcode_lookup(opcode.expr(), 1.expr()); - let offset = cb.query_cell_phase2(); - let length = cb.query_word_rlc(); - cb.stack_pop(offset.expr()); - cb.stack_pop(length.expr()); + let offset = cb.query_word_unchecked(); + let length = cb.query_memory_address(); + cb.stack_pop(offset.to_word()); + cb.stack_pop(length.to_word()); let range = MemoryAddressGadget::construct(cb, offset, length); let is_success = cb.call_context(None, CallContextFieldTag::IsSuccess); @@ -98,57 +110,76 @@ impl<F: Field> ExecutionGadget<F> for ReturnRevertGadget<F> { let code_deposit_cost = is_contract_deployment.clone() * GasCost::CODE_DEPOSIT_BYTE_COST.expr() * range.length(); - let (caller_id, address, reversion_info, code_hash, deployed_code_rlc) = - cb.condition(is_contract_deployment.clone(), |cb| { - // We don't need to place any additional constraints on code_hash because the - // copy circuit enforces that it is the hash of the bytes in the copy lookup. - let code_hash = cb.query_cell_phase2(); - let deployed_code_rlc = cb.query_cell_phase2(); - cb.copy_table_lookup( - cb.curr.state.call_id.expr(), - CopyDataType::Memory.expr(), - code_hash.expr(), - CopyDataType::Bytecode.expr(), - range.offset(), - range.address(), - 0.expr(), - range.length(), - deployed_code_rlc.expr(), - copy_rw_increase.expr(), - ); + let ( + caller_id, + address, + reversion_info, + code_hash, + deployed_code_rlc, + init_code_first_byte, + is_init_code_first_byte_invalid, + ) = cb.condition(is_contract_deployment.clone(), |cb| { + // Read the first byte and check it must not be 0xef (EIP-3541). + let init_code_first_byte = cb.query_byte(); + cb.memory_lookup(0.expr(), range.offset(), init_code_first_byte.expr(), None); + let is_init_code_first_byte_invalid = IsEqualGadget::construct( + cb, + init_code_first_byte.expr(), + INVALID_INIT_CODE_FIRST_BYTE.expr(), + ); + cb.require_zero( + "First byte of create init code must not be 0xef", + is_init_code_first_byte_invalid.expr(), + ); - let [caller_id, address] = [ - CallContextFieldTag::CallerId, - CallContextFieldTag::CalleeAddress, - ] - .map(|tag| cb.call_context(None, tag)); - let mut reversion_info = cb.reversion_info_read(None); - - cb.account_write( - address.expr(), - AccountFieldTag::CodeHash, - code_hash.expr(), - cb.empty_code_hash_rlc(), - Some(&mut reversion_info), - ); + // We don't need to place any additional constraints on code_hash because the + // copy circuit enforces that it is the hash of the bytes in the copy lookup. + let code_hash = cb.query_word32(); + let deployed_code_rlc = cb.query_cell_phase2(); + cb.copy_table_lookup( + Word::from_lo_unchecked(cb.curr.state.call_id.expr()), + CopyDataType::Memory.expr(), + code_hash.to_word(), + CopyDataType::Bytecode.expr(), + range.offset(), + range.address(), + 0.expr(), + range.length(), + deployed_code_rlc.expr(), + copy_rw_increase.expr(), + ); - ( - caller_id, - address, - reversion_info, - code_hash, - deployed_code_rlc, - ) - }); + let caller_id = cb.call_context(None, CallContextFieldTag::CallerId); + let address = cb.call_context_read_as_word(None, CallContextFieldTag::CalleeAddress); + + let mut reversion_info = cb.reversion_info_read(None); + + cb.account_write( + address.to_word(), + AccountFieldTag::CodeHash, + code_hash.to_word(), + cb.empty_code_hash(), + Some(&mut reversion_info), + ); + + ( + caller_id, + address, + reversion_info, + code_hash, + deployed_code_rlc, + init_code_first_byte, + is_init_code_first_byte_invalid, + ) + }); // Case B in the specs. cb.condition(is_root.expr(), |cb| { cb.require_next_state(ExecutionState::EndTx); - cb.call_context_lookup( - false.expr(), + cb.call_context_lookup_read( None, CallContextFieldTag::IsPersistent, - is_success.expr(), + Word::from_lo_unchecked(is_success.expr()), ); cb.require_step_state_transition(StepStateTransition { program_counter: To(0.expr()), @@ -203,9 +234,9 @@ impl<F: Field> ExecutionGadget<F> for ReturnRevertGadget<F> { * not::expr(copy_rw_increase_is_zero.expr()), |cb| { cb.copy_table_lookup( - cb.curr.state.call_id.expr(), + Word::from_lo_unchecked(cb.curr.state.call_id.expr()), CopyDataType::Memory.expr(), - cb.next.state.call_id.expr(), + Word::from_lo_unchecked(cb.next.state.call_id.expr()), CopyDataType::Memory.expr(), range.offset(), range.address(), @@ -231,6 +262,8 @@ impl<F: Field> ExecutionGadget<F> for ReturnRevertGadget<F> { range, deployed_code_rlc, is_success, + init_code_first_byte, + is_init_code_first_byte_invalid, copy_length, copy_rw_increase, copy_rw_increase_is_zero, @@ -288,7 +321,7 @@ impl<F: Field> ExecutionGadget<F> for ReturnRevertGadget<F> { } if call.is_create() && call.is_success { - let values: Vec<_> = (3..3 + length.as_usize()) + let values: Vec<_> = (4..4 + length.as_usize()) .map(|index| block.get_rws(step, index).memory_value()) .collect(); self.deployed_code_rlc.assign( @@ -298,11 +331,8 @@ impl<F: Field> ExecutionGadget<F> for ReturnRevertGadget<F> { )?; let mut code_hash = CodeDB::hash(&values).to_fixed_bytes(); code_hash.reverse(); - self.code_hash.assign( - region, - offset, - region.word_rlc(U256::from_little_endian(&code_hash)), - )?; + self.code_hash + .assign_u256(region, offset, U256::from_little_endian(&code_hash))?; } let copy_rw_increase = if call.is_create() && call.is_success { @@ -318,9 +348,28 @@ impl<F: Field> ExecutionGadget<F> for ReturnRevertGadget<F> { .assign(region, offset, F::from(copy_rw_increase))?; let is_contract_deployment = call.is_create() && call.is_success && !length.is_zero(); + + let init_code_first_byte = if is_contract_deployment { + block.get_rws(step, 3).memory_value() + } else { + 0 + } + .into(); + self.init_code_first_byte.assign( + region, + offset, + Value::known(F::from(init_code_first_byte)), + )?; + self.is_init_code_first_byte_invalid.assign( + region, + offset, + F::from(init_code_first_byte), + F::from(INVALID_INIT_CODE_FIRST_BYTE.into()), + )?; + if !call.is_root { let rw_counter_offset = 3 + if is_contract_deployment { - 5 + length.as_u64() + 6 + length.as_u64() } else { 0 }; @@ -340,11 +389,7 @@ impl<F: Field> ExecutionGadget<F> for ReturnRevertGadget<F> { Value::known(call.caller_id.to_scalar().unwrap()), )?; - self.address.assign( - region, - offset, - Value::known(call.address.to_scalar().unwrap()), - )?; + self.address.assign_h160(region, offset, call.address)?; self.reversion_info.assign( region, @@ -547,7 +592,7 @@ mod test { } #[test] - fn test_nonpersistent_nonroot_create() { + fn test_return_nonpersistent_nonroot_create() { // Test the case where the initialization call is successful, but the CREATE // call is reverted. let initializer = callee_bytecode(true, 0, 10).code(); diff --git a/zkevm-circuits/src/evm_circuit/execution/returndatacopy.rs b/zkevm-circuits/src/evm_circuit/execution/returndatacopy.rs index 56442e75e2..615736859e 100644 --- a/zkevm-circuits/src/evm_circuit/execution/returndatacopy.rs +++ b/zkevm-circuits/src/evm_circuit/execution/returndatacopy.rs @@ -1,7 +1,7 @@ use crate::{ evm_circuit::{ execution::ExecutionGadget, - param::{N_BYTES_MEMORY_ADDRESS, N_BYTES_MEMORY_WORD_SIZE}, + param::N_BYTES_MEMORY_WORD_SIZE, step::ExecutionState, util::{ common_gadget::SameContextGadget, @@ -9,18 +9,23 @@ use crate::{ ConstrainBuilderCommon, EVMConstraintBuilder, StepStateTransition, Transition::{Delta, To}, }, - from_bytes, math_gadget::RangeCheckGadget, - memory_gadget::{MemoryAddressGadget, MemoryCopierGasGadget, MemoryExpansionGadget}, + memory_gadget::{ + CommonMemoryAddressGadget, MemoryAddressGadget, MemoryCopierGasGadget, + MemoryExpansionGadget, + }, CachedRegion, Cell, MemoryAddress, }, witness::{Block, Call, ExecStep, Transaction}, }, table::CallContextFieldTag, - util::Expr, + util::{ + word::{Word, WordExpr}, + Expr, + }, }; use bus_mapping::{circuit_input_builder::CopyDataType, evm::OpcodeId}; -use eth_types::{evm_types::GasCost, Field, ToLittleEndian, ToScalar}; +use eth_types::{evm_types::GasCost, Field, ToScalar}; use gadgets::util::not; use halo2_proofs::{circuit::Value, plonk::Error}; @@ -60,44 +65,40 @@ impl<F: Field> ExecutionGadget<F> for ReturnDataCopyGadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { let opcode = cb.query_cell(); - let dest_offset = cb.query_cell_phase2(); - let data_offset = cb.query_word_rlc(); - let size = cb.query_word_rlc(); + let dest_offset = cb.query_word_unchecked(); + let data_offset = cb.query_memory_address(); + let size = cb.query_memory_address(); // 1. Pop dest_offset, offset, length from stack - cb.stack_pop(dest_offset.expr()); - cb.stack_pop(data_offset.expr()); - cb.stack_pop(size.expr()); + cb.stack_pop(dest_offset.to_word()); + cb.stack_pop(Word::from_lo_unchecked(data_offset.expr())); + cb.stack_pop(Word::from_lo_unchecked(size.expr())); // 2. Add lookup constraint in the call context for the returndatacopy field. let last_callee_id = cb.query_cell(); let return_data_offset = cb.query_cell(); let return_data_size = cb.query_cell(); - cb.call_context_lookup( - false.expr(), + cb.call_context_lookup_read( None, CallContextFieldTag::LastCalleeId, - last_callee_id.expr(), + Word::from_lo_unchecked(last_callee_id.expr()), ); - cb.call_context_lookup( - false.expr(), + cb.call_context_lookup_read( None, CallContextFieldTag::LastCalleeReturnDataOffset, - return_data_offset.expr(), + Word::from_lo_unchecked(return_data_offset.expr()), ); - cb.call_context_lookup( - false.expr(), + cb.call_context_lookup_read( None, CallContextFieldTag::LastCalleeReturnDataLength, - return_data_size.expr(), + Word::from_lo_unchecked(return_data_size.expr()), ); // 3. contraints for copy: copy overflow check // i.e., offset + size <= return_data_size let in_bound_check = RangeCheckGadget::construct( cb, - return_data_size.expr() - - (from_bytes::expr(&data_offset.cells) + from_bytes::expr(&size.cells)), + return_data_size.expr() - (data_offset.expr() + size.expr()), ); // 4. memory copy @@ -117,11 +118,11 @@ impl<F: Field> ExecutionGadget<F> for ReturnDataCopyGadget<F> { let copy_rwc_inc = cb.query_cell(); cb.condition(dst_memory_addr.has_length(), |cb| { cb.copy_table_lookup( - last_callee_id.expr(), + Word::from_lo_unchecked(last_callee_id.expr()), CopyDataType::Memory.expr(), - cb.curr.state.call_id.expr(), + Word::from_lo_unchecked(cb.curr.state.call_id.expr()), CopyDataType::Memory.expr(), - return_data_offset.expr() + from_bytes::expr(&data_offset.cells), + return_data_offset.expr() + data_offset.expr(), return_data_offset.expr() + return_data_size.expr(), dst_memory_addr.offset(), dst_memory_addr.length(), @@ -178,15 +179,7 @@ impl<F: Field> ExecutionGadget<F> for ReturnDataCopyGadget<F> { let [dest_offset, data_offset, size] = [0, 1, 2].map(|index| block.get_rws(step, index).stack_value()); - self.data_offset.assign( - region, - offset, - Some( - data_offset.to_le_bytes()[..N_BYTES_MEMORY_ADDRESS] - .try_into() - .unwrap(), - ), - )?; + self.data_offset.assign_u256(region, offset, data_offset)?; let [last_callee_id, return_data_offset, return_data_size] = [ (3, CallContextFieldTag::LastCalleeId), diff --git a/zkevm-circuits/src/evm_circuit/execution/returndatasize.rs b/zkevm-circuits/src/evm_circuit/execution/returndatasize.rs index 60aaafa0f0..14144d3aec 100644 --- a/zkevm-circuits/src/evm_circuit/execution/returndatasize.rs +++ b/zkevm-circuits/src/evm_circuit/execution/returndatasize.rs @@ -1,26 +1,28 @@ use crate::{ evm_circuit::{ execution::ExecutionGadget, - param::N_BYTES_U64, step::ExecutionState, util::{ common_gadget::SameContextGadget, constraint_builder::{EVMConstraintBuilder, StepStateTransition, Transition::Delta}, - from_bytes, CachedRegion, RandomLinearCombination, + CachedRegion, }, witness::{Block, Call, ExecStep, Transaction}, }, table::CallContextFieldTag, - util::Expr, + util::{ + word::{WordCell, WordExpr}, + Expr, + }, }; use bus_mapping::evm::OpcodeId; -use eth_types::{Field, ToLittleEndian}; +use eth_types::Field; use halo2_proofs::plonk::Error; #[derive(Clone, Debug)] pub(crate) struct ReturnDataSizeGadget<F> { same_context: SameContextGadget<F>, - return_data_size: RandomLinearCombination<F, N_BYTES_U64>, + return_data_size: WordCell<F>, } impl<F: Field> ExecutionGadget<F> for ReturnDataSizeGadget<F> { @@ -32,16 +34,15 @@ impl<F: Field> ExecutionGadget<F> for ReturnDataSizeGadget<F> { let opcode = cb.query_cell(); // Add lookup constraint in the call context for the returndatasize field. - let return_data_size = cb.query_word_rlc(); - cb.call_context_lookup( - false.expr(), + let return_data_size = cb.query_word_unchecked(); + cb.call_context_lookup_read( None, CallContextFieldTag::LastCalleeReturnDataLength, - from_bytes::expr(&return_data_size.cells), + return_data_size.to_word(), ); // The returndatasize should be pushed to the top of the stack. - cb.stack_push(return_data_size.expr()); + cb.stack_push(return_data_size.to_word()); let step_state_transition = StepStateTransition { rw_counter: Delta(2.expr()), @@ -70,15 +71,8 @@ impl<F: Field> ExecutionGadget<F> for ReturnDataSizeGadget<F> { ) -> Result<(), Error> { self.same_context.assign_exec_step(region, offset, step)?; let return_data_size = block.get_rws(step, 1).stack_value(); - self.return_data_size.assign( - region, - offset, - Some( - return_data_size.to_le_bytes()[..N_BYTES_U64] - .try_into() - .expect("could not encode return_data_size as byte array in little endian"), - ), - )?; + self.return_data_size + .assign_u64(region, offset, return_data_size.as_u64())?; Ok(()) } diff --git a/zkevm-circuits/src/evm_circuit/execution/sar.rs b/zkevm-circuits/src/evm_circuit/execution/sar.rs index 87dbd318a5..9cfb4ac939 100644 --- a/zkevm-circuits/src/evm_circuit/execution/sar.rs +++ b/zkevm-circuits/src/evm_circuit/execution/sar.rs @@ -1,7 +1,6 @@ use crate::{ evm_circuit::{ execution::ExecutionGadget, - param::N_BYTES_U64, step::ExecutionState, table::{FixedTableTag, Lookup}, util::{ @@ -10,18 +9,23 @@ use crate::{ ConstrainBuilderCommon, EVMConstraintBuilder, StepStateTransition, Transition::Delta, }, - from_bytes, math_gadget::{IsEqualGadget, IsZeroGadget, LtGadget}, - select, sum, CachedRegion, Cell, Word, + select, sum, CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{Word32Cell, Word4, WordExpr}, + Expr, + }, }; use array_init::array_init; use bus_mapping::evm::OpcodeId; use eth_types::{Field, ToLittleEndian}; -use halo2_proofs::{circuit::Value, plonk::Error}; +use halo2_proofs::{ + circuit::Value, + plonk::{Error, Expression}, +}; /// SarGadget verifies SAR opcode. /// Verify signed word shift right as `signed(a) >> shift == signed(b)`; @@ -29,9 +33,9 @@ use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] pub(crate) struct SarGadget<F> { same_context: SameContextGadget<F>, - shift: Word<F>, - a: Word<F>, - b: Word<F>, + shift: Word32Cell<F>, + a: Word32Cell<F>, + b: Word32Cell<F>, // Each of the four `a64s` limbs is split into two parts (`a64s_lo` and `a64s_hi`) at position // `shf_mod64`, `a64s_lo` is the lower `shf_mod64` bits. a64s_lo: [Cell<F>; 4], @@ -77,13 +81,16 @@ impl<F: Field> ExecutionGadget<F> for SarGadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { let opcode = cb.query_cell(); - let shift = cb.query_word_rlc(); - let a = cb.query_word_rlc(); - let b = cb.query_word_rlc(); + let shift = cb.query_word32(); + let a = cb.query_word32(); + let b = cb.query_word32(); + + cb.stack_pop(shift.to_word()); + cb.stack_pop(a.to_word()); + cb.stack_push(b.to_word()); - cb.stack_pop(shift.expr()); - cb.stack_pop(a.expr()); - cb.stack_push(b.expr()); + let a64s: Word4<Expression<F>> = a.to_word_n(); + let b64s: Word4<Expression<F>> = b.to_word_n(); let a64s_lo = array_init(|_| cb.query_cell()); let a64s_hi = array_init(|_| cb.query_cell()); @@ -92,13 +99,13 @@ impl<F: Field> ExecutionGadget<F> for SarGadget<F> { let p_lo = cb.query_cell(); let p_hi = cb.query_cell(); let p_top = cb.query_cell(); - let is_neg = LtGadget::construct(cb, 127.expr(), a.cells[31].expr()); - let shf_lt256 = IsZeroGadget::construct(cb, sum::expr(&shift.cells[1..32])); + let is_neg = LtGadget::construct(cb, 127.expr(), a.limbs[31].expr()); + let shf_lt256 = IsZeroGadget::construct(cb, sum::expr(&shift.limbs[1..32])); for idx in 0..4 { cb.require_equal( "a64s[idx] == a64s_lo[idx] + a64s_hi[idx] * p_lo", - from_bytes::expr(&a.cells[N_BYTES_U64 * idx..N_BYTES_U64 * (idx + 1)]), + a64s.limbs[idx].clone(), a64s_lo[idx].expr() + a64s_hi[idx].expr() * p_lo.expr(), ); } @@ -129,7 +136,7 @@ impl<F: Field> ExecutionGadget<F> for SarGadget<F> { cb.require_equal( "Constrain merged b64s[0] value", - from_bytes::expr(&b.cells[0..N_BYTES_U64]), + b64s.limbs[0].expr(), (a64s_hi[0].expr() + a64s_lo[1].expr() * p_hi.expr()) * shf_div64_eq0.expr() + (a64s_hi[1].expr() + a64s_lo[2].expr() * p_hi.expr()) * shf_div64_eq1.expr() + (a64s_hi[2].expr() + a64s_lo[3].expr() * p_hi.expr()) * shf_div64_eq2.expr() @@ -144,7 +151,7 @@ impl<F: Field> ExecutionGadget<F> for SarGadget<F> { ); cb.require_equal( "Constrain merged b64s[1] value", - from_bytes::expr(&b.cells[N_BYTES_U64..N_BYTES_U64 * 2]), + b64s.limbs[1].expr(), (a64s_hi[1].expr() + a64s_lo[2].expr() * p_hi.expr()) * shf_div64_eq0.expr() + (a64s_hi[2].expr() + a64s_lo[3].expr() * p_hi.expr()) * shf_div64_eq1.expr() + (a64s_hi[3].expr() + p_top.expr()) * shf_div64_eq2.expr() @@ -157,7 +164,7 @@ impl<F: Field> ExecutionGadget<F> for SarGadget<F> { ); cb.require_equal( "Constrain merged b64s[2] value", - from_bytes::expr(&b.cells[N_BYTES_U64 * 2..N_BYTES_U64 * 3]), + b64s.limbs[2].expr(), (a64s_hi[2].expr() + a64s_lo[3].expr() * p_hi.expr()) * shf_div64_eq0.expr() + (a64s_hi[3].expr() + p_top.expr()) * shf_div64_eq1.expr() + is_neg.expr() @@ -166,7 +173,7 @@ impl<F: Field> ExecutionGadget<F> for SarGadget<F> { ); cb.require_equal( "Constrain merged b64s[3] value", - from_bytes::expr(&b.cells[N_BYTES_U64 * 3..]), + b64s.limbs[3].expr(), (a64s_hi[3].expr() + p_top.expr()) * shf_div64_eq0.expr() + is_neg.expr() * u64::MAX.expr() * (1.expr() - shf_div64_eq0.expr()), ); @@ -178,7 +185,7 @@ impl<F: Field> ExecutionGadget<F> for SarGadget<F> { cb.require_equal("shf_mod64 < 64", shf_mod64_lt_64.expr(), 1.expr()); cb.require_equal( "shift[0] == shf_mod64 + shf_div64 * 64", - shift.cells[0].expr(), + shift.limbs[0].expr(), shf_mod64.expr() + shf_div64.expr() * 64.expr(), ); @@ -189,7 +196,7 @@ impl<F: Field> ExecutionGadget<F> for SarGadget<F> { Lookup::Fixed { tag: FixedTableTag::SignByte.expr(), values: [ - a.cells[31].expr(), + a.limbs[31].expr(), select::expr(is_neg.expr(), 255.expr(), 0.expr()), 0.expr(), ], @@ -268,10 +275,9 @@ impl<F: Field> ExecutionGadget<F> for SarGadget<F> { self.same_context.assign_exec_step(region, offset, step)?; let [shift, a, b] = [0, 1, 2].map(|idx| block.get_rws(step, idx).stack_value()); - self.shift - .assign(region, offset, Some(shift.to_le_bytes()))?; - self.a.assign(region, offset, Some(a.to_le_bytes()))?; - self.b.assign(region, offset, Some(b.to_le_bytes()))?; + self.shift.assign_u256(region, offset, shift)?; + self.a.assign_u256(region, offset, a)?; + self.b.assign_u256(region, offset, b)?; let is_neg = 127 < a.to_le_bytes()[31]; let shf0 = u128::from(shift.to_le_bytes()[0]); diff --git a/zkevm-circuits/src/evm_circuit/execution/sdiv_smod.rs b/zkevm-circuits/src/evm_circuit/execution/sdiv_smod.rs index 7398ced5ed..02866e7cb4 100644 --- a/zkevm-circuits/src/evm_circuit/execution/sdiv_smod.rs +++ b/zkevm-circuits/src/evm_circuit/execution/sdiv_smod.rs @@ -8,12 +8,17 @@ use crate::{ ConstrainBuilderCommon, EVMConstraintBuilder, StepStateTransition, Transition::Delta, }, - math_gadget::{AbsWordGadget, IsZeroGadget, LtGadget, LtWordGadget, MulAddWordsGadget}, - select, sum, CachedRegion, + math_gadget::{ + AbsWordGadget, IsZeroWordGadget, LtGadget, LtWordGadget, MulAddWordsGadget, + }, + CachedRegion, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{Word, Word32Cell, WordExpr}, + Expr, + }, }; use bus_mapping::evm::OpcodeId; use eth_types::{Field, ToLittleEndian, U256}; @@ -22,16 +27,16 @@ use halo2_proofs::plonk::Error; #[derive(Clone, Debug)] pub(crate) struct SignedDivModGadget<F> { same_context: SameContextGadget<F>, - quotient_abs_word: AbsWordGadget<F>, - divisor_abs_word: AbsWordGadget<F>, - remainder_abs_word: AbsWordGadget<F>, - dividend_abs_word: AbsWordGadget<F>, + quotient_abs: AbsWordGadget<F>, + divisor_abs: AbsWordGadget<F>, + remainder_abs: AbsWordGadget<F>, + dividend_abs: AbsWordGadget<F>, mul_add_words: MulAddWordsGadget<F>, remainder_abs_lt_divisor_abs: LtWordGadget<F>, dividend_is_signed_overflow: LtGadget<F, 1>, - quotient_is_zero: IsZeroGadget<F>, - divisor_is_zero: IsZeroGadget<F>, - remainder_is_zero: IsZeroGadget<F>, + quotient_is_zero: IsZeroWordGadget<F, Word32Cell<F>>, + divisor_is_zero: IsZeroWordGadget<F, Word32Cell<F>>, + remainder_is_zero: IsZeroWordGadget<F, Word32Cell<F>>, } impl<F: Field> ExecutionGadget<F> for SignedDivModGadget<F> { @@ -43,37 +48,45 @@ impl<F: Field> ExecutionGadget<F> for SignedDivModGadget<F> { let opcode = cb.query_cell(); let is_sdiv = (OpcodeId::SMOD.expr() - opcode.expr()) * F::from(2).invert().unwrap(); - let quotient_abs_word = AbsWordGadget::construct(cb); - let divisor_abs_word = AbsWordGadget::construct(cb); - let remainder_abs_word = AbsWordGadget::construct(cb); - let dividend_abs_word = AbsWordGadget::construct(cb); - let quotient_is_zero = IsZeroGadget::construct(cb, sum::expr("ient_abs_word.x().cells)); - let divisor_is_zero = IsZeroGadget::construct(cb, sum::expr(&divisor_abs_word.x().cells)); - let remainder_is_zero = - IsZeroGadget::construct(cb, sum::expr(&remainder_abs_word.x().cells)); + let quotient_abs = AbsWordGadget::construct(cb); + let divisor_abs = AbsWordGadget::construct(cb); + let remainder_abs = AbsWordGadget::construct(cb); + let dividend_abs = AbsWordGadget::construct(cb); + let quotient_is_zero = IsZeroWordGadget::construct(cb, quotient_abs.x()); + let divisor_is_zero = IsZeroWordGadget::construct(cb, divisor_abs.x()); + let remainder_is_zero = IsZeroWordGadget::construct(cb, remainder_abs.x()); - cb.stack_pop(dividend_abs_word.x().expr()); - cb.stack_pop(divisor_abs_word.x().expr()); - cb.stack_push(select::expr( + cb.stack_pop(dividend_abs.x().to_word()); + cb.stack_pop(divisor_abs.x().to_word()); + cb.stack_push(Word::select( is_sdiv, - quotient_abs_word.x().expr() * (1.expr() - divisor_is_zero.expr()), - remainder_abs_word.x().expr() * (1.expr() - divisor_is_zero.expr()), + quotient_abs + .x() + .to_word() + .mul_selector(1.expr() - divisor_is_zero.expr()), + remainder_abs + .x() + .to_word() + .mul_selector(1.expr() - divisor_is_zero.expr()), )); // Constrain `|quotient| * |divisor| + |remainder| = |dividend|`. let mul_add_words = MulAddWordsGadget::construct( cb, [ - quotient_abs_word.x_abs(), - divisor_abs_word.x_abs(), - remainder_abs_word.x_abs(), - dividend_abs_word.x_abs(), + quotient_abs.x_abs(), + divisor_abs.x_abs(), + remainder_abs.x_abs(), + dividend_abs.x_abs(), ], ); cb.add_constraint("overflow == 0", mul_add_words.overflow()); - let remainder_abs_lt_divisor_abs = - LtWordGadget::construct(cb, remainder_abs_word.x_abs(), divisor_abs_word.x_abs()); + let remainder_abs_lt_divisor_abs = LtWordGadget::construct( + cb, + &remainder_abs.x_abs().to_word(), + &divisor_abs.x_abs().to_word(), + ); cb.add_constraint( "abs(remainder) < abs(divisor) when divisor != 0", (1.expr() - remainder_abs_lt_divisor_abs.expr()) * (1.expr() - divisor_is_zero.expr()), @@ -85,7 +98,7 @@ impl<F: Field> ExecutionGadget<F> for SignedDivModGadget<F> { * (1.expr() - remainder_is_zero.expr()), |cb| cb.add_constraint( "sign(dividend) == sign(remainder) when quotient, divisor and remainder are all non-zero", - dividend_abs_word.is_neg().expr() - remainder_abs_word.is_neg().expr(), + dividend_abs.is_neg().expr() - remainder_abs.is_neg().expr(), ) ); @@ -96,7 +109,7 @@ impl<F: Field> ExecutionGadget<F> for SignedDivModGadget<F> { // `sign(dividend) == sign(divisor) ^ sign(quotient)` cannot be applied // for this case. let dividend_is_signed_overflow = - LtGadget::construct(cb, 127.expr(), dividend_abs_word.x_abs().cells[31].expr()); + LtGadget::construct(cb, 127.expr(), dividend_abs.x_abs().limbs[31].expr()); // Constrain sign(dividend) == sign(divisor) ^ sign(quotient) when both // quotient and divisor are non-zero and dividend is not signed overflow. @@ -107,11 +120,9 @@ impl<F: Field> ExecutionGadget<F> for SignedDivModGadget<F> { |cb| { cb.add_constraint( "sign(dividend) == sign(divisor) ^ sign(quotient)", - quotient_abs_word.is_neg().expr() + divisor_abs_word.is_neg().expr() - - dividend_abs_word.is_neg().expr() - - 2.expr() - * quotient_abs_word.is_neg().expr() - * divisor_abs_word.is_neg().expr(), + quotient_abs.is_neg().expr() + divisor_abs.is_neg().expr() + - dividend_abs.is_neg().expr() + - 2.expr() * quotient_abs.is_neg().expr() * divisor_abs.is_neg().expr(), ) }, ); @@ -127,10 +138,10 @@ impl<F: Field> ExecutionGadget<F> for SignedDivModGadget<F> { Self { same_context, - quotient_abs_word, - divisor_abs_word, - remainder_abs_word, - dividend_abs_word, + quotient_abs, + divisor_abs, + remainder_abs, + dividend_abs, mul_add_words, remainder_abs_lt_divisor_abs, dividend_is_signed_overflow, @@ -185,13 +196,13 @@ impl<F: Field> ExecutionGadget<F> for SignedDivModGadget<F> { let divisor_abs = get_abs(divisor); let remainder_abs = get_abs(remainder); let dividend_abs = get_abs(dividend); - self.quotient_abs_word + self.quotient_abs .assign(region, offset, quotient, quotient_abs)?; - self.divisor_abs_word + self.divisor_abs .assign(region, offset, divisor, divisor_abs)?; - self.remainder_abs_word + self.remainder_abs .assign(region, offset, remainder, remainder_abs)?; - self.dividend_abs_word + self.dividend_abs .assign(region, offset, dividend, dividend_abs)?; self.mul_add_words.assign( region, @@ -206,15 +217,12 @@ impl<F: Field> ExecutionGadget<F> for SignedDivModGadget<F> { 127.into(), u64::from(dividend_abs.to_le_bytes()[31]).into(), )?; - let quotient_sum = (0..32).fold(0, |acc, idx| acc + quotient.byte(idx) as u64); - let divisor_sum = (0..32).fold(0, |acc, idx| acc + divisor.byte(idx) as u64); - let remainder_sum = (0..32).fold(0, |acc, idx| acc + remainder.byte(idx) as u64); self.quotient_is_zero - .assign(region, offset, F::from(quotient_sum))?; + .assign(region, offset, Word::from(quotient))?; self.divisor_is_zero - .assign(region, offset, F::from(divisor_sum))?; + .assign(region, offset, Word::from(divisor))?; self.remainder_is_zero - .assign(region, offset, F::from(remainder_sum))?; + .assign(region, offset, Word::from(remainder))?; Ok(()) } } diff --git a/zkevm-circuits/src/evm_circuit/execution/selfbalance.rs b/zkevm-circuits/src/evm_circuit/execution/selfbalance.rs index b170e88360..a222299ca0 100644 --- a/zkevm-circuits/src/evm_circuit/execution/selfbalance.rs +++ b/zkevm-circuits/src/evm_circuit/execution/selfbalance.rs @@ -5,22 +5,25 @@ use crate::{ util::{ common_gadget::SameContextGadget, constraint_builder::{EVMConstraintBuilder, StepStateTransition, Transition::Delta}, - CachedRegion, Cell, + CachedRegion, }, witness::{Block, Call, ExecStep, Transaction}, }, table::{AccountFieldTag, CallContextFieldTag}, - util::Expr, + util::{ + word::{WordCell, WordExpr}, + Expr, + }, }; use bus_mapping::evm::OpcodeId; -use eth_types::{Field, ToScalar}; -use halo2_proofs::{circuit::Value, plonk::Error}; +use eth_types::Field; +use halo2_proofs::plonk::Error; #[derive(Clone, Debug)] pub(crate) struct SelfbalanceGadget<F> { same_context: SameContextGadget<F>, - callee_address: Cell<F>, - phase2_self_balance: Cell<F>, + callee_address: WordCell<F>, + self_balance: WordCell<F>, } impl<F: Field> ExecutionGadget<F> for SelfbalanceGadget<F> { @@ -29,16 +32,16 @@ impl<F: Field> ExecutionGadget<F> for SelfbalanceGadget<F> { const EXECUTION_STATE: ExecutionState = ExecutionState::SELFBALANCE; fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { - let callee_address = cb.call_context(None, CallContextFieldTag::CalleeAddress); + let callee_address = cb.call_context_read_as_word(None, CallContextFieldTag::CalleeAddress); - let phase2_self_balance = cb.query_cell_phase2(); + let self_balance = cb.query_word_unchecked(); cb.account_read( - callee_address.expr(), + callee_address.to_word(), AccountFieldTag::Balance, - phase2_self_balance.expr(), + self_balance.to_word(), ); - cb.stack_push(phase2_self_balance.expr()); + cb.stack_push(self_balance.to_word()); let opcode = cb.query_cell(); let step_state_transition = StepStateTransition { @@ -52,8 +55,8 @@ impl<F: Field> ExecutionGadget<F> for SelfbalanceGadget<F> { Self { same_context, - phase2_self_balance, callee_address, + self_balance, } } @@ -68,19 +71,12 @@ impl<F: Field> ExecutionGadget<F> for SelfbalanceGadget<F> { ) -> Result<(), Error> { self.same_context.assign_exec_step(region, offset, step)?; - self.callee_address.assign( - region, - offset, - Value::known( - call.address - .to_scalar() - .expect("unexpected Address -> Scalar conversion failure"), - ), - )?; + self.callee_address + .assign_h160(region, offset, call.address)?; let self_balance = block.get_rws(step, 2).stack_value(); - self.phase2_self_balance - .assign(region, offset, region.word_rlc(self_balance))?; + self.self_balance + .assign_u256(region, offset, self_balance)?; Ok(()) } diff --git a/zkevm-circuits/src/evm_circuit/execution/sha3.rs b/zkevm-circuits/src/evm_circuit/execution/sha3.rs index 9716d98b42..adffa2acbf 100644 --- a/zkevm-circuits/src/evm_circuit/execution/sha3.rs +++ b/zkevm-circuits/src/evm_circuit/execution/sha3.rs @@ -1,20 +1,26 @@ use bus_mapping::{circuit_input_builder::CopyDataType, evm::OpcodeId}; -use eth_types::{evm_types::GasCost, Field, ToLittleEndian, ToScalar}; +use eth_types::{evm_types::GasCost, Field, ToScalar}; use gadgets::util::{not, Expr}; use halo2_proofs::{circuit::Value, plonk::Error}; -use crate::evm_circuit::{ - param::N_BYTES_MEMORY_WORD_SIZE, - step::ExecutionState, - util::{ - common_gadget::SameContextGadget, - constraint_builder::{ - ConstrainBuilderCommon, EVMConstraintBuilder, StepStateTransition, Transition, +use crate::{ + evm_circuit::{ + param::N_BYTES_MEMORY_WORD_SIZE, + step::ExecutionState, + util::{ + common_gadget::SameContextGadget, + constraint_builder::{ + ConstrainBuilderCommon, EVMConstraintBuilder, StepStateTransition, Transition, + }, + memory_gadget::{ + CommonMemoryAddressGadget, MemoryAddressGadget, MemoryCopierGasGadget, + MemoryExpansionGadget, + }, + rlc, CachedRegion, Cell, }, - memory_gadget::{MemoryAddressGadget, MemoryCopierGasGadget, MemoryExpansionGadget}, - rlc, CachedRegion, Cell, Word, + witness::{Block, Call, ExecStep, Transaction}, }, - witness::{Block, Call, ExecStep, Transaction}, + util::word::{Word, WordCell, WordExpr}, }; use super::ExecutionGadget; @@ -23,7 +29,7 @@ use super::ExecutionGadget; pub(crate) struct Sha3Gadget<F> { same_context: SameContextGadget<F>, memory_address: MemoryAddressGadget<F>, - sha3_rlc: Word<F>, + sha3_digest: WordCell<F>, copy_rwc_inc: Cell<F>, rlc_acc: Cell<F>, memory_expansion: MemoryExpansionGadget<F, 1, N_BYTES_MEMORY_WORD_SIZE>, @@ -38,13 +44,13 @@ impl<F: Field> ExecutionGadget<F> for Sha3Gadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { let opcode = cb.query_cell(); - let offset = cb.query_cell_phase2(); - let size = cb.query_word_rlc(); - let sha3_rlc = cb.query_word_rlc(); + let offset = cb.query_word_unchecked(); + let size = cb.query_memory_address(); + let sha3_digest = cb.query_word_unchecked(); - cb.stack_pop(offset.expr()); - cb.stack_pop(size.expr()); - cb.stack_push(sha3_rlc.expr()); + cb.stack_pop(offset.to_word()); + cb.stack_pop(size.to_word()); + cb.stack_push(sha3_digest.to_word()); let memory_address = MemoryAddressGadget::construct(cb, offset, size); @@ -53,9 +59,9 @@ impl<F: Field> ExecutionGadget<F> for Sha3Gadget<F> { cb.condition(memory_address.has_length(), |cb| { cb.copy_table_lookup( - cb.curr.state.call_id.expr(), + Word::from_lo_unchecked(cb.curr.state.call_id.expr()), CopyDataType::Memory.expr(), - cb.curr.state.call_id.expr(), + Word::from_lo_unchecked(cb.curr.state.call_id.expr()), CopyDataType::RlcAcc.expr(), memory_address.offset(), memory_address.address(), @@ -70,7 +76,11 @@ impl<F: Field> ExecutionGadget<F> for Sha3Gadget<F> { cb.require_zero("copy_rwc_inc == 0 for size = 0", copy_rwc_inc.expr()); cb.require_zero("rlc_acc == 0 for size = 0", rlc_acc.expr()); }); - cb.keccak_table_lookup(rlc_acc.expr(), memory_address.length(), sha3_rlc.expr()); + cb.keccak_table_lookup( + rlc_acc.expr(), + memory_address.length(), + sha3_digest.to_word(), + ); let memory_expansion = MemoryExpansionGadget::construct(cb, [memory_address.address()]); let memory_copier_gas = MemoryCopierGasGadget::construct( @@ -94,7 +104,7 @@ impl<F: Field> ExecutionGadget<F> for Sha3Gadget<F> { Self { same_context, memory_address, - sha3_rlc, + sha3_digest, copy_rwc_inc, rlc_acc, memory_expansion, @@ -118,8 +128,7 @@ impl<F: Field> ExecutionGadget<F> for Sha3Gadget<F> { let memory_address = self .memory_address .assign(region, offset, memory_offset, size)?; - self.sha3_rlc - .assign(region, offset, Some(sha3_output.to_le_bytes()))?; + self.sha3_digest.assign_u256(region, offset, sha3_output)?; self.copy_rwc_inc.assign( region, diff --git a/zkevm-circuits/src/evm_circuit/execution/shl_shr.rs b/zkevm-circuits/src/evm_circuit/execution/shl_shr.rs index 798a1101fe..60bf8622c2 100644 --- a/zkevm-circuits/src/evm_circuit/execution/shl_shr.rs +++ b/zkevm-circuits/src/evm_circuit/execution/shl_shr.rs @@ -4,19 +4,20 @@ use crate::{ step::ExecutionState, table::{FixedTableTag, Lookup}, util::{ - self, common_gadget::SameContextGadget, constraint_builder::{ ConstrainBuilderCommon, EVMConstraintBuilder, StepStateTransition, Transition::Delta, }, - from_bytes, - math_gadget::{IsZeroGadget, LtWordGadget, MulAddWordsGadget}, + math_gadget::{IsZeroGadget, IsZeroWordGadget, LtWordGadget, MulAddWordsGadget}, sum, CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{Word, Word32Cell, WordExpr}, + Expr, + }, }; use bus_mapping::evm::OpcodeId; use eth_types::{Field, ToLittleEndian, U256}; @@ -29,12 +30,12 @@ use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] pub(crate) struct ShlShrGadget<F> { same_context: SameContextGadget<F>, - quotient: util::Word<F>, - divisor: util::Word<F>, - remainder: util::Word<F>, - dividend: util::Word<F>, + quotient: Word32Cell<F>, + divisor: Word32Cell<F>, + remainder: Word32Cell<F>, + dividend: Word32Cell<F>, /// Shift word - shift: util::Word<F>, + shift: Word32Cell<F>, /// First byte of shift word shf0: Cell<F>, /// Gadget that verifies quotient * divisor + remainder = dividend @@ -42,9 +43,9 @@ pub(crate) struct ShlShrGadget<F> { /// Identify if `shift` is less than 256 or not shf_lt256: IsZeroGadget<F>, /// Check if divisor is zero - divisor_is_zero: IsZeroGadget<F>, + divisor_is_zero: IsZeroWordGadget<F, Word32Cell<F>>, /// Check if remainder is zero - remainder_is_zero: IsZeroGadget<F>, + remainder_is_zero: IsZeroWordGadget<F, Word32Cell<F>>, /// Check if remainder < divisor when divisor != 0 remainder_lt_divisor: LtWordGadget<F>, } @@ -59,38 +60,50 @@ impl<F: Field> ExecutionGadget<F> for ShlShrGadget<F> { let is_shl = OpcodeId::SHR.expr() - opcode.expr(); let is_shr = 1.expr() - is_shl.expr(); - let quotient = cb.query_word_rlc(); - let divisor = cb.query_word_rlc(); - let remainder = cb.query_word_rlc(); - let dividend = cb.query_word_rlc(); - let shift = cb.query_word_rlc(); + let quotient = cb.query_word32(); + let divisor = cb.query_word32(); + let remainder = cb.query_word32(); + let dividend = cb.query_word32(); + let shift = cb.query_word32(); let shf0 = cb.query_cell(); let mul_add_words = MulAddWordsGadget::construct(cb, ["ient, &divisor, &remainder, ÷nd]); - let shf_lt256 = IsZeroGadget::construct(cb, sum::expr(&shift.cells[1..32])); - let divisor_is_zero = IsZeroGadget::construct(cb, sum::expr(&divisor.cells)); - let remainder_is_zero = IsZeroGadget::construct(cb, sum::expr(&remainder.cells)); - let remainder_lt_divisor = LtWordGadget::construct(cb, &remainder, &divisor); + let shf_lt256 = IsZeroGadget::construct(cb, sum::expr(&shift.limbs[1..32])); + let divisor_is_zero = IsZeroWordGadget::construct(cb, &divisor); + let remainder_is_zero = IsZeroWordGadget::construct(cb, &remainder); + let remainder_lt_divisor = + LtWordGadget::construct(cb, &remainder.to_word(), &divisor.to_word()); // Constrain stack pops and pushes as: // - for SHL, two pops are shift and quotient, and push is dividend. // - for SHR, two pops are shift and dividend, and push is quotient. - cb.stack_pop(shift.expr()); - cb.stack_pop(is_shl.expr() * quotient.expr() + is_shr.expr() * dividend.expr()); + cb.stack_pop(shift.to_word()); + cb.stack_pop( + quotient + .to_word() + .mul_selector(is_shl.expr()) + .add_unchecked(dividend.to_word().mul_selector(is_shr.expr())), + ); cb.stack_push( - (is_shl.expr() * dividend.expr() + is_shr.expr() * quotient.expr()) - * (1.expr() - divisor_is_zero.expr()), + (dividend + .to_word() + .mul_selector(is_shl.expr()) + .add_unchecked(quotient.to_word().mul_selector(is_shr.expr()))) + .mul_selector(1.expr() - divisor_is_zero.expr()), ); cb.require_zero( "shf0 == shift.cells[0]", - shf0.expr() - shift.cells[0].expr(), + shf0.expr() - shift.limbs[0].expr(), ); - cb.require_zero( + cb.require_zero_word( "shift == shift.cells[0] when divisor != 0", - (1.expr() - divisor_is_zero.expr()) * (shift.expr() - shift.cells[0].expr()), + shift + .to_word() + .sub_unchecked(Word::from_lo_unchecked(shift.limbs[0].expr())) + .mul_selector(1.expr() - divisor_is_zero.expr()), ); cb.require_zero( @@ -115,8 +128,7 @@ impl<F: Field> ExecutionGadget<F> for ShlShrGadget<F> { // Constrain divisor_lo == 2^shf0 when shf0 < 128, and // divisor_hi == 2^(128 - shf0) otherwise. - let divisor_lo = from_bytes::expr(&divisor.cells[..16]); - let divisor_hi = from_bytes::expr(&divisor.cells[16..]); + let (divisor_lo, divisor_hi) = divisor.to_word().to_lo_hi(); cb.condition(1.expr() - divisor_is_zero.expr(), |cb| { cb.add_lookup( "Pow2 lookup of shf0, divisor_lo and divisor_hi", @@ -184,29 +196,23 @@ impl<F: Field> ExecutionGadget<F> for ShlShrGadget<F> { OpcodeId::SHR => (push, pop2 - push * divisor, pop2), _ => unreachable!(), }; - self.quotient - .assign(region, offset, Some(quotient.to_le_bytes()))?; - self.divisor - .assign(region, offset, Some(divisor.to_le_bytes()))?; - self.remainder - .assign(region, offset, Some(remainder.to_le_bytes()))?; - self.dividend - .assign(region, offset, Some(dividend.to_le_bytes()))?; - self.shift - .assign(region, offset, Some(pop1.to_le_bytes()))?; + self.quotient.assign_u256(region, offset, quotient)?; + self.divisor.assign_u256(region, offset, divisor)?; + self.remainder.assign_u256(region, offset, remainder)?; + self.dividend.assign_u256(region, offset, dividend)?; + self.shift.assign_u256(region, offset, pop1)?; self.shf0 .assign(region, offset, Value::known(F::from(shf0)))?; self.mul_add_words .assign(region, offset, [quotient, divisor, remainder, dividend])?; self.shf_lt256.assign(region, offset, F::from(shf_lt256))?; - let divisor_sum = (0..32).fold(0, |acc, idx| acc + divisor.byte(idx) as u64); self.divisor_is_zero - .assign(region, offset, F::from(divisor_sum))?; - let remainder_sum = (0..32).fold(0, |acc, idx| acc + remainder.byte(idx) as u64); + .assign(region, offset, Word::from(divisor))?; self.remainder_is_zero - .assign(region, offset, F::from(remainder_sum))?; + .assign(region, offset, Word::from(remainder))?; self.remainder_lt_divisor - .assign(region, offset, remainder, divisor) + .assign(region, offset, remainder, divisor)?; + Ok(()) } } diff --git a/zkevm-circuits/src/evm_circuit/execution/signed_comparator.rs b/zkevm-circuits/src/evm_circuit/execution/signed_comparator.rs index 8ee8357385..3f910d10fa 100644 --- a/zkevm-circuits/src/evm_circuit/execution/signed_comparator.rs +++ b/zkevm-circuits/src/evm_circuit/execution/signed_comparator.rs @@ -7,11 +7,14 @@ use crate::{ constraint_builder::{EVMConstraintBuilder, StepStateTransition, Transition::Delta}, from_bytes, math_gadget::{ComparisonGadget, IsEqualGadget, LtGadget}, - select, CachedRegion, Cell, Word, + select, CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{Word, Word32Cell, WordExpr}, + Expr, + }, }; use eth_types::{evm_types::OpcodeId, Field, ToLittleEndian}; use halo2_proofs::{circuit::Value, plonk::Error}; @@ -22,8 +25,8 @@ use halo2_proofs::{circuit::Value, plonk::Error}; pub(crate) struct SignedComparatorGadget<F> { same_context: SameContextGadget<F>, - a: Word<F>, - b: Word<F>, + a: Word32Cell<F>, + b: Word32Cell<F>, sign_check_a: LtGadget<F, 1>, sign_check_b: LtGadget<F, 1>, @@ -42,8 +45,8 @@ impl<F: Field> ExecutionGadget<F> for SignedComparatorGadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { let opcode = cb.query_cell(); - let a = cb.query_word_rlc(); - let b = cb.query_word_rlc(); + let a = cb.query_word32(); + let b = cb.query_word32(); // The Signed Comparator gadget is used for both opcodes SLT and SGT. // Depending on whether the opcode is SLT or SGT, we @@ -56,8 +59,8 @@ impl<F: Field> ExecutionGadget<F> for SignedComparatorGadget<F> { // number is negative if the most significant cell >= 128 // (0b10000000). a and b being in the little-endian notation, the // most-significant byte is the last byte. - let sign_check_a = LtGadget::construct(cb, a.cells[31].expr(), 128.expr()); - let sign_check_b = LtGadget::construct(cb, b.cells[31].expr(), 128.expr()); + let sign_check_a = LtGadget::construct(cb, a.limbs[31].expr(), 128.expr()); + let sign_check_b = LtGadget::construct(cb, b.limbs[31].expr(), 128.expr()); // sign_check_a_lt expression implies a is positive since its MSB < 2**7 // sign_check_b_lt expression implies b is positive since its MSB < 2**7 @@ -72,16 +75,10 @@ impl<F: Field> ExecutionGadget<F> for SignedComparatorGadget<F> { // significant bytes. While only considering the absolute // values, we have: a < b == 1 iff ((a_hi < b_hi) || ((a_hi == // b_hi) && (a_lo < b_lo))) - let lt_lo = LtGadget::construct( - cb, - from_bytes::expr(&a.cells[0..16]), - from_bytes::expr(&b.cells[0..16]), - ); - let comparison_hi = ComparisonGadget::construct( - cb, - from_bytes::expr(&a.cells[16..32]), - from_bytes::expr(&b.cells[16..32]), - ); + let (a_lo, a_hi) = a.to_word().to_lo_hi(); + let (b_lo, b_hi) = b.to_word().to_lo_hi(); + let lt_lo = LtGadget::construct(cb, a_lo, b_lo); + let comparison_hi = ComparisonGadget::construct(cb, a_hi, b_hi); let a_lt_b_lo = lt_lo.expr(); let (a_lt_b_hi, a_eq_b_hi) = comparison_hi.expr(); @@ -112,9 +109,9 @@ impl<F: Field> ExecutionGadget<F> for SignedComparatorGadget<F> { let result = a_neg_b_pos.clone() + (1.expr() - a_neg_b_pos - b_neg_a_pos) * a_lt_b.expr(); // Pop a and b from the stack, push the result on the stack. - cb.stack_pop(select::expr(is_sgt.expr(), b.expr(), a.expr())); - cb.stack_pop(select::expr(is_sgt.expr(), a.expr(), b.expr())); - cb.stack_push(result); + cb.stack_pop(Word::select(is_sgt.expr(), b.to_word(), a.to_word())); + cb.stack_pop(Word::select(is_sgt.expr(), a.to_word(), b.to_word())); + cb.stack_push(Word::from_lo_unchecked(result)); // The read-write counter changes by three since we're reading two words // from stack and writing one. The program counter shifts only by one @@ -209,8 +206,8 @@ impl<F: Field> ExecutionGadget<F> for SignedComparatorGadget<F> { Value::known(if a < b { F::ONE } else { F::ZERO }), )?; - self.a.assign(region, offset, Some(a_le_bytes))?; - self.b.assign(region, offset, Some(b_le_bytes))?; + self.a.assign_u256(region, offset, a)?; + self.b.assign_u256(region, offset, b)?; Ok(()) } diff --git a/zkevm-circuits/src/evm_circuit/execution/signextend.rs b/zkevm-circuits/src/evm_circuit/execution/signextend.rs index ba16143688..fbf48b3d2c 100644 --- a/zkevm-circuits/src/evm_circuit/execution/signextend.rs +++ b/zkevm-circuits/src/evm_circuit/execution/signextend.rs @@ -11,11 +11,14 @@ use crate::{ Transition::Delta, }, math_gadget::{IsEqualGadget, IsZeroGadget}, - rlc, select, sum, CachedRegion, Cell, Word, + select, sum, CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{Word32, Word32Cell, WordExpr}, + Expr, + }, }; use array_init::array_init; use bus_mapping::evm::OpcodeId; @@ -25,8 +28,8 @@ use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] pub(crate) struct SignextendGadget<F> { same_context: SameContextGadget<F>, - index: Word<F>, - value: Word<F>, + index: Word32Cell<F>, + value: Word32Cell<F>, sign_byte: Cell<F>, is_msb_sum_zero: IsZeroGadget<F>, is_byte_selected: [IsEqualGadget<F>; 31], @@ -39,8 +42,8 @@ impl<F: Field> ExecutionGadget<F> for SignextendGadget<F> { const EXECUTION_STATE: ExecutionState = ExecutionState::SIGNEXTEND; fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { - let index = cb.query_word_rlc(); - let value = cb.query_word_rlc(); + let index = cb.query_word32(); + let value = cb.query_word32(); let sign_byte = cb.query_cell(); let selectors = array_init(|_| cb.query_bool()); @@ -49,12 +52,12 @@ impl<F: Field> ExecutionGadget<F> for SignextendGadget<F> { // need to do any changes. So just sum all the non-LSB byte // values here and then check if it's non-zero so we can use // that as an additional condition to enable the selector. - let is_msb_sum_zero = IsZeroGadget::construct(cb, sum::expr(&index.cells[1..32])); + let is_msb_sum_zero = IsZeroGadget::construct(cb, sum::expr(&index.limbs[1..32])); // Check if this byte is selected looking only at the LSB of the index // word let is_byte_selected = - array_init(|idx| IsEqualGadget::construct(cb, index.cells[0].expr(), idx.expr())); + array_init(|idx| IsEqualGadget::construct(cb, index.limbs[0].expr(), idx.expr())); // We need to find the byte we have to get the sign from so we can // extend correctly. We go byte by byte and check if `idx == @@ -72,7 +75,7 @@ impl<F: Field> ExecutionGadget<F> for SignextendGadget<F> { let is_selected = and::expr(&[is_byte_selected[idx].expr(), is_msb_sum_zero.expr()]); // Add the byte to the sum when this byte is selected - selected_byte = selected_byte + (is_selected.clone() * value.cells[idx].expr()); + selected_byte = selected_byte + (is_selected.clone() * value.limbs[idx].expr()); // Verify the selector. // Cells are used here to store intermediate results, otherwise @@ -111,26 +114,23 @@ impl<F: Field> ExecutionGadget<F> for SignextendGadget<F> { // enabled need to be changed to the sign byte. // When a byte was selected all the **following** bytes need to be // replaced (hence the `selectors[idx - 1]`). - let result = rlc::expr( - &array_init::<_, _, 32>(|idx| { - if idx == 0 { - value.cells[idx].expr() - } else { - select::expr( - selectors[idx - 1].expr(), - sign_byte.expr(), - value.cells[idx].expr(), - ) - } - }), - cb.challenges().evm_word(), - ); + let result = Word32::new(array_init::<_, _, 32>(|idx| { + if idx == 0 { + value.limbs[idx].expr() + } else { + select::expr( + selectors[idx - 1].expr(), + sign_byte.expr(), + value.limbs[idx].expr(), + ) + } + })); // Pop the byte index and the value from the stack, push the result on // the stack - cb.stack_pop(index.expr()); - cb.stack_pop(value.expr()); - cb.stack_push(result); + cb.stack_pop(index.to_word()); + cb.stack_pop(value.to_word()); + cb.stack_push(result.to_word()); // State transition let step_state_transition = StepStateTransition { @@ -166,22 +166,24 @@ impl<F: Field> ExecutionGadget<F> for SignextendGadget<F> { self.same_context.assign_exec_step(region, offset, step)?; // Inputs/Outputs - let index = block.get_rws(step, 0).stack_value().to_le_bytes(); - let value = block.get_rws(step, 1).stack_value().to_le_bytes(); - self.index.assign(region, offset, Some(index))?; - self.value.assign(region, offset, Some(value))?; + let index = block.get_rws(step, 0).stack_value(); + let index_bytes = index.to_le_bytes(); + let value = block.get_rws(step, 1).stack_value(); + let value_bytes = value.to_le_bytes(); + self.index.assign_u256(region, offset, index)?; + self.value.assign_u256(region, offset, value)?; // Generate the selectors let msb_sum_zero = self.is_msb_sum_zero - .assign(region, offset, sum::value(&index[1..32]))?; + .assign(region, offset, sum::value(&index_bytes[1..32]))?; let mut previous_selector_value: F = 0.into(); for i in 0..31 { let selected = and::value(vec![ self.is_byte_selected[i].assign( region, offset, - F::from(index[0] as u64), + F::from(index_bytes[0] as u64), F::from(i as u64), )?, msb_sum_zero, @@ -195,8 +197,8 @@ impl<F: Field> ExecutionGadget<F> for SignextendGadget<F> { // Set the sign byte let mut sign = 0u64; - if index[0] < 31 && msb_sum_zero == F::ONE { - sign = (value[index[0] as usize] >> 7) as u64; + if index_bytes[0] < 31 && msb_sum_zero == F::ONE { + sign = (value_bytes[index_bytes[0] as usize] >> 7) as u64; } self.sign_byte .assign(region, offset, Value::known(F::from(sign * 0xFF))) diff --git a/zkevm-circuits/src/evm_circuit/execution/sload.rs b/zkevm-circuits/src/evm_circuit/execution/sload.rs index 32759f9aa1..12ee777aa6 100644 --- a/zkevm-circuits/src/evm_circuit/execution/sload.rs +++ b/zkevm-circuits/src/evm_circuit/execution/sload.rs @@ -12,9 +12,12 @@ use crate::{ witness::{Block, Call, ExecStep, Transaction}, }, table::CallContextFieldTag, - util::Expr, + util::{ + word::{Word, WordCell, WordExpr}, + Expr, + }, }; -use eth_types::{Field, ToScalar}; +use eth_types::Field; use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] @@ -22,10 +25,10 @@ pub(crate) struct SloadGadget<F> { same_context: SameContextGadget<F>, tx_id: Cell<F>, reversion_info: ReversionInfo<F>, - callee_address: Cell<F>, - phase2_key: Cell<F>, - phase2_value: Cell<F>, - phase2_committed_value: Cell<F>, + callee_address: WordCell<F>, + key: WordCell<F>, + value: WordCell<F>, + committed_value: WordCell<F>, is_warm: Cell<F>, } @@ -39,37 +42,43 @@ impl<F: Field> ExecutionGadget<F> for SloadGadget<F> { let tx_id = cb.call_context(None, CallContextFieldTag::TxId); let mut reversion_info = cb.reversion_info_read(None); - let callee_address = cb.call_context(None, CallContextFieldTag::CalleeAddress); + let callee_address = cb.call_context_read_as_word(None, CallContextFieldTag::CalleeAddress); - let phase2_key = cb.query_cell_phase2(); + let key = cb.query_word_unchecked(); // Pop the key from the stack - cb.stack_pop(phase2_key.expr()); + cb.stack_pop(key.to_word()); - let phase2_value = cb.query_cell_phase2(); - let phase2_committed_value = cb.query_cell_phase2(); + let value = cb.query_word_unchecked(); + let committed_value = cb.query_word_unchecked(); cb.account_storage_read( - callee_address.expr(), - phase2_key.expr(), - phase2_value.expr(), + callee_address.to_word(), + key.to_word(), + value.to_word(), tx_id.expr(), - phase2_committed_value.expr(), + committed_value.to_word(), ); - cb.stack_push(phase2_value.expr()); + cb.stack_push(value.to_word()); let is_warm = cb.query_bool(); + cb.account_storage_access_list_read( + tx_id.expr(), + callee_address.to_word(), + key.to_word(), + Word::from_lo_unchecked(is_warm.expr()), + ); cb.account_storage_access_list_write( tx_id.expr(), - callee_address.expr(), - phase2_key.expr(), - true.expr(), - is_warm.expr(), + callee_address.to_word(), + key.to_word(), + Word::from_lo_unchecked(true.expr()), + Word::from_lo_unchecked(is_warm.expr()), Some(&mut reversion_info), ); let gas_cost = SloadGasGadget::construct(cb, is_warm.expr()).expr(); let step_state_transition = StepStateTransition { - rw_counter: Delta(8.expr()), + rw_counter: Delta(9.expr()), program_counter: Delta(1.expr()), reversible_write_counter: Delta(1.expr()), gas_left: Delta(-gas_cost), @@ -82,9 +91,9 @@ impl<F: Field> ExecutionGadget<F> for SloadGadget<F> { tx_id, reversion_info, callee_address, - phase2_key, - phase2_value, - phase2_committed_value, + key, + value, + committed_value, is_warm, } } @@ -101,34 +110,26 @@ impl<F: Field> ExecutionGadget<F> for SloadGadget<F> { self.same_context.assign_exec_step(region, offset, step)?; self.tx_id - .assign(region, offset, Value::known(F::from(tx.id as u64)))?; + .assign(region, offset, Value::known(F::from(tx.id)))?; self.reversion_info.assign( region, offset, call.rw_counter_end_of_reversion, call.is_persistent, )?; - self.callee_address.assign( - region, - offset, - Value::known( - call.address - .to_scalar() - .expect("unexpected Address -> Scalar conversion failure"), - ), - )?; + self.callee_address + .assign_h160(region, offset, call.address)?; + let key = block.get_rws(step, 4).stack_value(); let value = block.get_rws(step, 6).stack_value(); - self.phase2_key - .assign(region, offset, region.word_rlc(key))?; - self.phase2_value - .assign(region, offset, region.word_rlc(value))?; + self.key.assign_u256(region, offset, key)?; + self.value.assign_u256(region, offset, value)?; let (_, committed_value) = block.get_rws(step, 5).aux_pair(); - self.phase2_committed_value - .assign(region, offset, region.word_rlc(committed_value))?; + self.committed_value + .assign_u256(region, offset, committed_value)?; - let (_, is_warm) = block.get_rws(step, 7).tx_access_list_value_pair(); + let (_, is_warm) = block.get_rws(step, 8).tx_access_list_value_pair(); self.is_warm .assign(region, offset, Value::known(F::from(is_warm as u64)))?; diff --git a/zkevm-circuits/src/evm_circuit/execution/sstore.rs b/zkevm-circuits/src/evm_circuit/execution/sstore.rs index fd0a90b558..fe1fd45f0b 100644 --- a/zkevm-circuits/src/evm_circuit/execution/sstore.rs +++ b/zkevm-circuits/src/evm_circuit/execution/sstore.rs @@ -9,16 +9,19 @@ use crate::{ ConstrainBuilderCommon, EVMConstraintBuilder, ReversionInfo, StepStateTransition, Transition::Delta, }, - math_gadget::{IsEqualGadget, IsZeroGadget, LtGadget}, - not, CachedRegion, Cell, + math_gadget::{IsEqualWordGadget, IsZeroWordGadget, LtGadget}, + not, CachedRegion, Cell, U64Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, table::CallContextFieldTag, - util::Expr, + util::{ + word::{Word, Word32Cell, WordCell, WordExpr}, + Expr, + }, }; -use eth_types::{evm_types::GasCost, Field, ToScalar}; +use eth_types::{evm_types::GasCost, Field}; use halo2_proofs::{ circuit::Value, plonk::{Error, Expression}, @@ -30,16 +33,16 @@ pub(crate) struct SstoreGadget<F> { tx_id: Cell<F>, is_static: Cell<F>, reversion_info: ReversionInfo<F>, - callee_address: Cell<F>, - phase2_key: Cell<F>, - phase2_value: Cell<F>, - phase2_value_prev: Cell<F>, - phase2_original_value: Cell<F>, + callee_address: WordCell<F>, + key: Word32Cell<F>, + value: Word32Cell<F>, + value_prev: Word32Cell<F>, + original_value: Word32Cell<F>, is_warm: Cell<F>, - tx_refund_prev: Cell<F>, + tx_refund_prev: U64Cell<F>, // Constrain for SSTORE reentrancy sentry. sufficient_gas_sentry: LtGadget<F, N_BYTES_GAS>, - gas_cost: SstoreGasGadget<F>, + gas_cost: SstoreGasGadget<F, Word32Cell<F>>, tx_refund: SstoreTxRefundGadget<F>, } @@ -58,35 +61,41 @@ impl<F: Field> ExecutionGadget<F> for SstoreGadget<F> { cb.require_zero("is_static is false", is_static.expr()); let mut reversion_info = cb.reversion_info_read(None); - let callee_address = cb.call_context(None, CallContextFieldTag::CalleeAddress); + let callee_address = cb.call_context_read_as_word(None, CallContextFieldTag::CalleeAddress); - let phase2_key = cb.query_cell_phase2(); + let key = cb.query_word32(); // Pop the key from the stack - cb.stack_pop(phase2_key.expr()); + cb.stack_pop(key.to_word()); - let phase2_value = cb.query_cell_phase2(); + let value = cb.query_word32(); // Pop the value from the stack - cb.stack_pop(phase2_value.expr()); + cb.stack_pop(value.to_word()); - let phase2_value_prev = cb.query_cell_phase2(); - let phase2_original_value = cb.query_cell_phase2(); + let value_prev = cb.query_word32(); + let original_value = cb.query_word32(); cb.account_storage_write( - callee_address.expr(), - phase2_key.expr(), - phase2_value.expr(), - phase2_value_prev.expr(), + callee_address.to_word(), + key.to_word(), + value.to_word(), + value_prev.to_word(), tx_id.expr(), - phase2_original_value.expr(), + original_value.to_word(), Some(&mut reversion_info), ); let is_warm = cb.query_bool(); + cb.account_storage_access_list_read( + tx_id.expr(), + callee_address.to_word(), + key.to_word(), + Word::from_lo_unchecked(is_warm.expr()), + ); cb.account_storage_access_list_write( tx_id.expr(), - callee_address.expr(), - phase2_key.expr(), - true.expr(), - is_warm.expr(), + callee_address.to_word(), + key.to_word(), + Word::from_lo_unchecked(true.expr()), + Word::from_lo_unchecked(is_warm.expr()), Some(&mut reversion_info), ); @@ -104,29 +113,29 @@ impl<F: Field> ExecutionGadget<F> for SstoreGadget<F> { let gas_cost = SstoreGasGadget::construct( cb, - phase2_value.clone(), - phase2_value_prev.clone(), - phase2_original_value.clone(), is_warm.clone(), + value.clone(), + value_prev.clone(), + original_value.clone(), ); - let tx_refund_prev = cb.query_cell(); + let tx_refund_prev = cb.query_u64(); let tx_refund = SstoreTxRefundGadget::construct( cb, tx_refund_prev.clone(), - phase2_value.clone(), - phase2_value_prev.clone(), - phase2_original_value.clone(), + value.clone(), + value_prev.clone(), + original_value.clone(), ); cb.tx_refund_write( tx_id.expr(), - tx_refund.expr(), - tx_refund_prev.expr(), + Word::from_lo_unchecked(tx_refund.expr()), + tx_refund_prev.to_word(), Some(&mut reversion_info), ); let step_state_transition = StepStateTransition { - rw_counter: Delta(10.expr()), + rw_counter: Delta(11.expr()), program_counter: Delta(1.expr()), stack_pointer: Delta(2.expr()), reversible_write_counter: Delta(3.expr()), @@ -141,10 +150,10 @@ impl<F: Field> ExecutionGadget<F> for SstoreGadget<F> { is_static, reversion_info, callee_address, - phase2_key, - phase2_value, - phase2_value_prev, - phase2_original_value, + key, + value, + value_prev, + original_value, is_warm, tx_refund_prev, sufficient_gas_sentry, @@ -165,7 +174,7 @@ impl<F: Field> ExecutionGadget<F> for SstoreGadget<F> { self.same_context.assign_exec_step(region, offset, step)?; self.tx_id - .assign(region, offset, Value::known(F::from(tx.id as u64)))?; + .assign(region, offset, Value::known(F::from(tx.id)))?; self.is_static .assign(region, offset, Value::known(F::from(call.is_static as u64)))?; self.reversion_info.assign( @@ -174,36 +183,26 @@ impl<F: Field> ExecutionGadget<F> for SstoreGadget<F> { call.rw_counter_end_of_reversion, call.is_persistent, )?; - self.callee_address.assign( - region, - offset, - Value::known( - call.address - .to_scalar() - .expect("unexpected Address -> Scalar conversion failure"), - ), - )?; + self.callee_address + .assign_h160(region, offset, call.address)?; let key = block.get_rws(step, 5).stack_value(); let value = block.get_rws(step, 6).stack_value(); - self.phase2_key - .assign(region, offset, region.word_rlc(key))?; - self.phase2_value - .assign(region, offset, region.word_rlc(value))?; + self.key.assign_u256(region, offset, key)?; + self.value.assign_u256(region, offset, value)?; let (_, value_prev, _, original_value) = block.get_rws(step, 7).storage_value_aux(); - self.phase2_value_prev - .assign(region, offset, region.word_rlc(value_prev))?; - self.phase2_original_value - .assign(region, offset, region.word_rlc(original_value))?; + self.value_prev.assign_u256(region, offset, value_prev)?; + self.original_value + .assign_u256(region, offset, original_value)?; - let (_, is_warm) = block.get_rws(step, 8).tx_access_list_value_pair(); + let (_, is_warm) = block.get_rws(step, 9).tx_access_list_value_pair(); self.is_warm .assign(region, offset, Value::known(F::from(is_warm as u64)))?; - let (tx_refund, tx_refund_prev) = block.get_rws(step, 9).tx_refund_value_pair(); + let (tx_refund, tx_refund_prev) = block.get_rws(step, 10).tx_refund_value_pair(); self.tx_refund_prev - .assign(region, offset, Value::known(F::from(tx_refund_prev)))?; + .assign(region, offset, Some(tx_refund_prev.to_le_bytes()))?; self.sufficient_gas_sentry.assign_value( region, @@ -230,36 +229,34 @@ impl<F: Field> ExecutionGadget<F> for SstoreGadget<F> { #[derive(Clone, Debug)] pub(crate) struct SstoreTxRefundGadget<F> { - tx_refund_old: Cell<F>, + tx_refund_old: U64Cell<F>, tx_refund_new: Expression<F>, - value: Cell<F>, - value_prev: Cell<F>, - original_value: Cell<F>, - value_prev_is_zero_gadget: IsZeroGadget<F>, - value_is_zero_gadget: IsZeroGadget<F>, - original_is_zero_gadget: IsZeroGadget<F>, - original_eq_value_gadget: IsEqualGadget<F>, - prev_eq_value_gadget: IsEqualGadget<F>, - original_eq_prev_gadget: IsEqualGadget<F>, + value_prev_is_zero_gadget: IsZeroWordGadget<F, Word<Expression<F>>>, + value_is_zero_gadget: IsZeroWordGadget<F, Word<Expression<F>>>, + original_is_zero_gadget: IsZeroWordGadget<F, Word<Expression<F>>>, + original_eq_value_gadget: IsEqualWordGadget<F, Word<Expression<F>>, Word<Expression<F>>>, + prev_eq_value_gadget: IsEqualWordGadget<F, Word<Expression<F>>, Word<Expression<F>>>, + original_eq_prev_gadget: IsEqualWordGadget<F, Word<Expression<F>>, Word<Expression<F>>>, } impl<F: Field> SstoreTxRefundGadget<F> { - pub(crate) fn construct( + pub(crate) fn construct<T: WordExpr<F>>( cb: &mut EVMConstraintBuilder<F>, - tx_refund_old: Cell<F>, - value: Cell<F>, - value_prev: Cell<F>, - original_value: Cell<F>, + tx_refund_old: U64Cell<F>, + value: T, + value_prev: T, + original_value: T, ) -> Self { - let value_prev_is_zero_gadget = IsZeroGadget::construct(cb, value_prev.expr()); - let value_is_zero_gadget = IsZeroGadget::construct(cb, value.expr()); - let original_is_zero_gadget = IsZeroGadget::construct(cb, original_value.expr()); + let value_prev_is_zero_gadget = IsZeroWordGadget::construct(cb, &value_prev.to_word()); + let value_is_zero_gadget = IsZeroWordGadget::construct(cb, &value.to_word()); + let original_is_zero_gadget = IsZeroWordGadget::construct(cb, &original_value.to_word()); let original_eq_value_gadget = - IsEqualGadget::construct(cb, original_value.expr(), value.expr()); - let prev_eq_value_gadget = IsEqualGadget::construct(cb, value_prev.expr(), value.expr()); + IsEqualWordGadget::construct(cb, &original_value.to_word(), &value.to_word()); + let prev_eq_value_gadget = + IsEqualWordGadget::construct(cb, &value_prev.to_word(), &value.to_word()); let original_eq_prev_gadget = - IsEqualGadget::construct(cb, original_value.expr(), value_prev.expr()); + IsEqualWordGadget::construct(cb, &original_value.to_word(), &value_prev.to_word()); let value_prev_is_zero = value_prev_is_zero_gadget.expr(); let value_is_zero = value_is_zero_gadget.expr(); @@ -294,9 +291,6 @@ impl<F: Field> SstoreTxRefundGadget<F> { - recreate_slot * (GasCost::SSTORE_CLEARS_SCHEDULE.expr()); Self { - value, - value_prev, - original_value, tx_refund_old, tx_refund_new, value_prev_is_zero_gadget, @@ -325,38 +319,30 @@ impl<F: Field> SstoreTxRefundGadget<F> { original_value: eth_types::Word, ) -> Result<(), Error> { self.tx_refund_old - .assign(region, offset, Value::known(F::from(tx_refund_old)))?; - self.value.assign(region, offset, region.word_rlc(value))?; - self.value_prev - .assign(region, offset, region.word_rlc(value_prev))?; - self.original_value - .assign(region, offset, region.word_rlc(original_value))?; + .assign(region, offset, Some(tx_refund_old.to_le_bytes()))?; self.value_prev_is_zero_gadget - .assign_value(region, offset, region.word_rlc(value_prev))?; + .assign(region, offset, Word::from(value_prev))?; self.value_is_zero_gadget - .assign_value(region, offset, region.word_rlc(value))?; - self.original_is_zero_gadget.assign_value( - region, - offset, - region.word_rlc(original_value), - )?; - self.original_eq_value_gadget.assign_value( + .assign(region, offset, Word::from(value))?; + self.original_is_zero_gadget + .assign(region, offset, Word::from(original_value))?; + self.original_eq_value_gadget.assign( region, offset, - region.word_rlc(original_value), - region.word_rlc(value), + Word::from(original_value), + Word::from(value), )?; - self.prev_eq_value_gadget.assign_value( + self.prev_eq_value_gadget.assign( region, offset, - region.word_rlc(value_prev), - region.word_rlc(value), + Word::from(value_prev), + Word::from(value), )?; - self.original_eq_prev_gadget.assign_value( + self.original_eq_prev_gadget.assign( region, offset, - region.word_rlc(original_value), - region.word_rlc(value_prev), + Word::from(original_value), + Word::from(value_prev), )?; debug_assert_eq!( calc_expected_tx_refund(tx_refund_old, value, value_prev, original_value), diff --git a/zkevm-circuits/src/evm_circuit/execution/stop.rs b/zkevm-circuits/src/evm_circuit/execution/stop.rs index 5b635381c6..26b35745b6 100644 --- a/zkevm-circuits/src/evm_circuit/execution/stop.rs +++ b/zkevm-circuits/src/evm_circuit/execution/stop.rs @@ -1,6 +1,7 @@ use crate::{ evm_circuit::{ execution::ExecutionGadget, + param::N_BYTES_PROGRAM_COUNTER, step::ExecutionState, util::{ common_gadget::RestoreContextGadget, @@ -8,22 +9,25 @@ use crate::{ ConstrainBuilderCommon, EVMConstraintBuilder, StepStateTransition, Transition::{Delta, Same}, }, - math_gadget::IsZeroGadget, + math_gadget::ComparisonGadget, CachedRegion, Cell, }, witness::{Block, Call, ExecStep, Transaction}, }, table::CallContextFieldTag, - util::Expr, + util::{ + word::{Word, WordExpr}, + Expr, + }, }; use bus_mapping::evm::OpcodeId; -use eth_types::{Field, ToWord}; +use eth_types::Field; use halo2_proofs::{circuit::Value, plonk::Error}; #[derive(Clone, Debug)] pub(crate) struct StopGadget<F> { code_length: Cell<F>, - is_out_of_range: IsZeroGadget<F>, + out_of_range: ComparisonGadget<F, N_BYTES_PROGRAM_COUNTER>, opcode: Cell<F>, restore_context: RestoreContextGadget<F>, } @@ -35,13 +39,18 @@ impl<F: Field> ExecutionGadget<F> for StopGadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { let code_length = cb.query_cell(); - cb.bytecode_length(cb.curr.state.code_hash.expr(), code_length.expr()); - let is_out_of_range = IsZeroGadget::construct( + cb.bytecode_length(cb.curr.state.code_hash.to_word(), code_length.expr()); + + let out_of_range = ComparisonGadget::construct( cb, - code_length.expr() - cb.curr.state.program_counter.expr(), + code_length.expr(), + cb.curr.state.program_counter.expr(), ); + let (lt, eq) = out_of_range.expr(); + let is_out_of_range = lt + eq; + let opcode = cb.query_cell(); - cb.condition(1.expr() - is_out_of_range.expr(), |cb| { + cb.condition(1.expr() - is_out_of_range, |cb| { cb.opcode_lookup(opcode.expr(), 1.expr()); }); @@ -54,7 +63,7 @@ impl<F: Field> ExecutionGadget<F> for StopGadget<F> { ); // Call ends with STOP must be successful - cb.call_context_lookup(false.expr(), None, CallContextFieldTag::IsSuccess, 1.expr()); + cb.call_context_lookup_read(None, CallContextFieldTag::IsSuccess, Word::one()); let is_to_end_tx = cb.next.execution_state_selector([ExecutionState::EndTx]); cb.require_equal( @@ -88,7 +97,7 @@ impl<F: Field> ExecutionGadget<F> for StopGadget<F> { Self { code_length, - is_out_of_range, + out_of_range, opcode, restore_context, } @@ -105,19 +114,15 @@ impl<F: Field> ExecutionGadget<F> for StopGadget<F> { ) -> Result<(), Error> { let code = block .bytecodes - .get(&call.code_hash.to_word()) + .get_from_h256(&call.code_hash) .expect("could not find current environment's bytecode"); - self.code_length.assign( - region, - offset, - Value::known(F::from(code.bytes.len() as u64)), - )?; - - self.is_out_of_range.assign( - region, - offset, - F::from(code.bytes.len() as u64) - F::from(step.pc), - )?; + + let code_length = code.codesize() as u64; + self.code_length + .assign(region, offset, Value::known(F::from(code_length)))?; + + self.out_of_range + .assign(region, offset, F::from(code_length), F::from(step.pc))?; let opcode = step.opcode().unwrap(); self.opcode diff --git a/zkevm-circuits/src/evm_circuit/execution/swap.rs b/zkevm-circuits/src/evm_circuit/execution/swap.rs index 7238aa5833..b9722f6e45 100644 --- a/zkevm-circuits/src/evm_circuit/execution/swap.rs +++ b/zkevm-circuits/src/evm_circuit/execution/swap.rs @@ -5,11 +5,14 @@ use crate::{ util::{ common_gadget::SameContextGadget, constraint_builder::{EVMConstraintBuilder, StepStateTransition, Transition::Delta}, - CachedRegion, Cell, + CachedRegion, }, witness::{Block, Call, ExecStep, Transaction}, }, - util::Expr, + util::{ + word::{WordCell, WordExpr}, + Expr, + }, }; use eth_types::{evm_types::OpcodeId, Field}; use halo2_proofs::plonk::Error; @@ -17,7 +20,7 @@ use halo2_proofs::plonk::Error; #[derive(Clone, Debug)] pub(crate) struct SwapGadget<F> { same_context: SameContextGadget<F>, - phase2_values: [Cell<F>; 2], + values: [WordCell<F>; 2], } impl<F: Field> ExecutionGadget<F> for SwapGadget<F> { @@ -28,20 +31,20 @@ impl<F: Field> ExecutionGadget<F> for SwapGadget<F> { fn configure(cb: &mut EVMConstraintBuilder<F>) -> Self { let opcode = cb.query_cell(); - let phase2_values = [cb.query_cell_phase2(), cb.query_cell_phase2()]; + let values = [cb.query_word_unchecked(), cb.query_word_unchecked()]; // The stack index we have to peek, deduced from the 'x' value of // 'swapx' The offset starts at 1 for SWAP1 let swap_offset = opcode.expr() - (OpcodeId::SWAP1.as_u64() - 1).expr(); // Peek the value at `swap_offset` - cb.stack_lookup(false.expr(), swap_offset.clone(), phase2_values[0].expr()); + cb.stack_lookup(false.expr(), swap_offset.clone(), values[0].to_word()); // Peek the value at the top of the stack - cb.stack_lookup(false.expr(), 0.expr(), phase2_values[1].expr()); + cb.stack_lookup(false.expr(), 0.expr(), values[1].to_word()); // Write the value previously at the top of the stack to `swap_offset` - cb.stack_lookup(true.expr(), swap_offset, phase2_values[1].expr()); + cb.stack_lookup(true.expr(), swap_offset, values[1].to_word()); // Write the value previously at `swap_offset` to the top of the stack - cb.stack_lookup(true.expr(), 0.expr(), phase2_values[0].expr()); + cb.stack_lookup(true.expr(), 0.expr(), values[0].to_word()); // State transition let step_state_transition = StepStateTransition { @@ -54,7 +57,7 @@ impl<F: Field> ExecutionGadget<F> for SwapGadget<F> { Self { same_context, - phase2_values, + values, } } @@ -69,12 +72,12 @@ impl<F: Field> ExecutionGadget<F> for SwapGadget<F> { ) -> Result<(), Error> { self.same_context.assign_exec_step(region, offset, step)?; - for (cell, value) in self.phase2_values.iter().zip( + for (cell, value) in self.values.iter().zip( [0, 1] .map(|index| block.get_rws(step, index).stack_value()) .iter(), ) { - cell.assign(region, offset, region.word_rlc(*value))?; + cell.assign_u256(region, offset, *value)?; } Ok(()) diff --git a/zkevm-circuits/src/evm_circuit/param.rs b/zkevm-circuits/src/evm_circuit/param.rs index e21530bb9c..40f5c600b0 100644 --- a/zkevm-circuits/src/evm_circuit/param.rs +++ b/zkevm-circuits/src/evm_circuit/param.rs @@ -1,3 +1,4 @@ +//! Constants and parameters for the EVM circuit use super::table::Table; use crate::evm_circuit::{step::ExecutionState, EvmCircuit}; use halo2_proofs::{ @@ -9,23 +10,28 @@ use std::collections::HashMap; // Step dimension pub(crate) const STEP_WIDTH: usize = 128; /// Step height -pub const MAX_STEP_HEIGHT: usize = 21; +pub const MAX_STEP_HEIGHT: usize = 19; /// The height of the state of a step, used by gates that connect two /// consecutive steps. We target 1, which is also convenient for padding with /// EndBlock steps. pub(crate) const STEP_STATE_HEIGHT: usize = 1; /// Number of Advice Phase2 columns in the EVM circuit -pub const N_PHASE2_COLUMNS: usize = 4; +pub const N_PHASE2_COLUMNS: usize = 1; /// Number of Advice Phase1 columns in the EVM circuit pub const N_PHASE1_COLUMNS: usize = - STEP_WIDTH - EVM_LOOKUP_COLS - N_PHASE2_COLUMNS - N_COPY_COLUMNS - N_BYTE_LOOKUPS; + STEP_WIDTH - EVM_LOOKUP_COLS - N_PHASE2_COLUMNS - N_COPY_COLUMNS - N_U8_LOOKUPS - N_U16_LOOKUPS; -// Number of copy columns +/// Number of copy columns pub const N_COPY_COLUMNS: usize = 2; -pub const N_BYTE_LOOKUPS: usize = 24; +/// Number of columns reserved for u8 lookup +pub const N_U8_LOOKUPS: usize = 24; + +// TODO shift #column/2 from u8 to u16 +/// Number of columns reserved for u16 lookup +pub const N_U16_LOOKUPS: usize = 0; /// Amount of lookup columns in the EVM circuit dedicated to lookups. pub(crate) const EVM_LOOKUP_COLS: usize = FIXED_TABLE_LOOKUPS @@ -80,13 +86,16 @@ pub(crate) const MAX_N_BYTES_INTEGER: usize = 31; // Number of bytes an EVM word has. pub(crate) const N_BYTES_WORD: usize = 32; +// Number of bytes an half EVM word has. +pub(crate) const N_BYTES_HALF_WORD: usize = N_BYTES_WORD / 2; + // Number of bytes an u64 has. pub(crate) const N_BYTES_U64: usize = 8; pub(crate) const N_BYTES_ACCOUNT_ADDRESS: usize = 20; // Number of bytes that will be used of the memory address and size. -// If any of the other more signficant bytes are used it will always result in +// If any of the other more significant bytes are used it will always result in // an out-of-gas error. pub(crate) const N_BYTES_MEMORY_ADDRESS: usize = 5; pub(crate) const N_BYTES_MEMORY_WORD_SIZE: usize = 4; @@ -106,6 +115,51 @@ pub(crate) const N_BYTES_GAS: usize = N_BYTES_U64; // Number of bytes that will be used for call data's size. pub(crate) const N_BYTES_CALLDATASIZE: usize = N_BYTES_U64; +// Number of bytes that will be used for block values +pub(crate) const N_BYTES_COINBASE: usize = N_BYTES_ACCOUNT_ADDRESS; +pub(crate) const N_BYTES_GAS_LIMIT: usize = N_BYTES_U64; +pub(crate) const N_BYTES_NUMBER: usize = N_BYTES_U64; +pub(crate) const N_BYTES_TIMESTAMP: usize = N_BYTES_U64; +pub(crate) const N_BYTES_DIFFICULTY: usize = N_BYTES_WORD; +pub(crate) const N_BYTES_BASE_FEE: usize = N_BYTES_WORD; +pub(crate) const N_BYTES_CHAIN_ID: usize = N_BYTES_U64; +pub(crate) const N_BYTES_PREV_HASH: usize = 256 * N_BYTES_WORD; + +pub(crate) const N_BYTES_BLOCK: usize = N_BYTES_COINBASE + + N_BYTES_GAS_LIMIT + + N_BYTES_NUMBER + + N_BYTES_TIMESTAMP + + N_BYTES_DIFFICULTY + + N_BYTES_BASE_FEE + + N_BYTES_CHAIN_ID + + N_BYTES_PREV_HASH; + +pub(crate) const N_BYTES_EXTRA_VALUE: usize = N_BYTES_WORD // block hash + + N_BYTES_WORD // state root + + N_BYTES_WORD; // prev state root + +// Number of bytes that will be used for tx values +pub(crate) const N_BYTES_TX_NONCE: usize = N_BYTES_U64; +pub(crate) const N_BYTES_TX_GAS_LIMIT: usize = N_BYTES_U64; // gas limit type is U256, different with gas U64 +pub(crate) const N_BYTES_TX_GASPRICE: usize = N_BYTES_WORD; +pub(crate) const N_BYTES_TX_FROM: usize = N_BYTES_ACCOUNT_ADDRESS; +pub(crate) const N_BYTES_TX_TO: usize = N_BYTES_ACCOUNT_ADDRESS; +pub(crate) const N_BYTES_TX_IS_CREATE: usize = N_BYTES_U64; +pub(crate) const N_BYTES_TX_VALUE: usize = N_BYTES_WORD; +pub(crate) const N_BYTES_TX_CALLDATA_LEN: usize = N_BYTES_CALLDATASIZE; +pub(crate) const N_BYTES_TX_CALLDATA_GASCOST: usize = N_BYTES_U64; +pub(crate) const N_BYTES_TX_TXSIGNHASH: usize = N_BYTES_WORD; +pub(crate) const N_BYTES_TX: usize = N_BYTES_TX_NONCE + + N_BYTES_TX_GAS_LIMIT + + N_BYTES_TX_GASPRICE + + N_BYTES_TX_FROM + + N_BYTES_TX_TO + + N_BYTES_TX_IS_CREATE + + N_BYTES_TX_VALUE + + N_BYTES_TX_CALLDATA_LEN + + N_BYTES_TX_CALLDATA_GASCOST + + N_BYTES_TX_TXSIGNHASH; + lazy_static::lazy_static! { // Step slot height in evm circuit pub(crate) static ref EXECUTION_STATE_HEIGHT_MAP : HashMap<ExecutionState, usize> = get_step_height_map(); diff --git a/zkevm-circuits/src/evm_circuit/step.rs b/zkevm-circuits/src/evm_circuit/step.rs index 4f1c12a8be..5f549e25e8 100644 --- a/zkevm-circuits/src/evm_circuit/step.rs +++ b/zkevm-circuits/src/evm_circuit/step.rs @@ -1,6 +1,11 @@ +//! EVM execution state. We model the EVM execution as a finite state machine. The execution of a +//! EVM block goes from one state to another, but never at an undefined state. The EVM circuit +//! enables the selectors and thus activates the constraints for the state that the execution +//! reaches. + use super::{ param::MAX_STEP_HEIGHT, - util::{evm_cm_distribute_advice, CachedRegion}, + util::{evm_cm_distribute_advice, CachedRegion, Cell, CellType}, }; use crate::{ evm_circuit::{ @@ -8,7 +13,8 @@ use crate::{ witness::{Block, Call, ExecStep}, }, util::{ - cell_manager::{CMFixedWidthStrategy, Cell, CellManager, CellType}, + cell_manager::{CMFixedWidthStrategy, CellManager}, + word::{Word, WordCell}, Expr, }, }; @@ -26,8 +32,11 @@ use std::{fmt::Display, iter}; use strum::IntoEnumIterator; use strum_macros::EnumIter; +#[allow(missing_docs, reason = "some docs here are tedious and not helpful")] #[allow(non_camel_case_types)] #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, EnumIter)] +/// All the possible execution states that the computation of EVM can arrive. +/// Some states are shared by multiple opcodes. pub enum ExecutionState { // Internal state BeginTx, @@ -35,18 +44,25 @@ pub enum ExecutionState { EndBlock, // Opcode successful cases STOP, - ADD_SUB, // ADD, SUB - MUL_DIV_MOD, // MUL, DIV, MOD - SDIV_SMOD, // SDIV, SMOD - SHL_SHR, // SHL, SHR + /// ADD and SUB opcodes share this state + ADD_SUB, + /// MUL, DIV, MOD + MUL_DIV_MOD, + /// SDIV, SMOD + SDIV_SMOD, + /// SHL, SHR + SHL_SHR, ADDMOD, MULMOD, EXP, SIGNEXTEND, - CMP, // LT, GT, EQ - SCMP, // SLT, SGT + /// LT, GT, EQ + CMP, + /// SLT, SGT + SCMP, ISZERO, - BITWISE, // AND, OR, XOR + /// AND, OR, XOR + BITWISE, NOT, BYTE, SAR, @@ -68,13 +84,13 @@ pub enum ExecutionState { RETURNDATACOPY, EXTCODEHASH, BLOCKHASH, - BLOCKCTXU64, // TIMESTAMP, NUMBER, GASLIMIT - BLOCKCTXU160, // COINBASE - BLOCKCTXU256, // DIFFICULTY, BASEFEE + /// TIMESTAMP, NUMBER, GASLIMIT, COINBASE, DIFFICULTY, BASEFEE + BLOCKCTX, CHAINID, SELFBALANCE, POP, - MEMORY, // MLOAD, MSTORE, MSTORE8 + /// MLOAD, MSTORE, MSTORE8 + MEMORY, SLOAD, SSTORE, JUMP, @@ -83,13 +99,18 @@ pub enum ExecutionState { MSIZE, GAS, JUMPDEST, - PUSH, // PUSH1, PUSH2, ..., PUSH32 - DUP, // DUP1, DUP2, ..., DUP16 - SWAP, // SWAP1, SWAP2, ..., SWAP16 - LOG, // LOG0, LOG1, ..., LOG4 + /// PUSH0, PUSH1, PUSH2, ..., PUSH32 + PUSH, + /// DUP1, DUP2, ..., DUP16 + DUP, + /// SWAP1, SWAP2, ..., SWAP16 + SWAP, + /// LOG0, LOG1, ..., LOG4 + LOG, CREATE, - CALL_OP, // CALL, CALLCODE, DELEGATECALL, STATICCALL - RETURN_REVERT, // RETURN, REVERT + /// CALL, CALLCODE, DELEGATECALL, STATICCALL + CALL_OP, + RETURN_REVERT, CREATE2, SELFDESTRUCT, // Error cases @@ -100,7 +121,7 @@ pub enum ExecutionState { ErrorInsufficientBalance, ErrorContractAddressCollision, ErrorInvalidCreationCode, - ErrorMaxCodeSizeExceeded, + ErrorCodeStore, // combine ErrorMaxCodeSizeExceeded and ErrorOutOfGasCodeStore ErrorInvalidJump, ErrorReturnDataOutOfBound, ErrorOutOfGasConstant, @@ -108,14 +129,14 @@ pub enum ExecutionState { ErrorOutOfGasDynamicMemoryExpansion, ErrorOutOfGasMemoryCopy, ErrorOutOfGasAccountAccess, - ErrorOutOfGasCodeStore, + // ErrorOutOfGasCodeStore, ErrorOutOfGasLOG, ErrorOutOfGasEXP, ErrorOutOfGasSHA3, ErrorOutOfGasEXTCODECOPY, ErrorOutOfGasCall, ErrorOutOfGasSloadSstore, - ErrorOutOfGasCREATE2, + ErrorOutOfGasCREATE, ErrorOutOfGasSELFDESTRUCT, } @@ -156,8 +177,9 @@ impl From<&ExecError> for ExecutionState { ExecError::InvalidCreationCode => ExecutionState::ErrorInvalidCreationCode, ExecError::InvalidJump => ExecutionState::ErrorInvalidJump, ExecError::ReturnDataOutOfBounds => ExecutionState::ErrorReturnDataOutOfBound, - ExecError::CodeStoreOutOfGas => ExecutionState::ErrorOutOfGasCodeStore, - ExecError::MaxCodeSizeExceeded => ExecutionState::ErrorMaxCodeSizeExceeded, + ExecError::CodeStoreOutOfGas | ExecError::MaxCodeSizeExceeded => { + ExecutionState::ErrorCodeStore + } ExecError::OutOfGas(oog_error) => match oog_error { OogError::Constant => ExecutionState::ErrorOutOfGasConstant, OogError::StaticMemoryExpansion => { @@ -168,13 +190,13 @@ impl From<&ExecError> for ExecutionState { } OogError::MemoryCopy => ExecutionState::ErrorOutOfGasMemoryCopy, OogError::AccountAccess => ExecutionState::ErrorOutOfGasAccountAccess, - OogError::CodeStore => ExecutionState::ErrorOutOfGasCodeStore, + OogError::CodeStore => ExecutionState::ErrorCodeStore, OogError::Log => ExecutionState::ErrorOutOfGasLOG, OogError::Exp => ExecutionState::ErrorOutOfGasEXP, OogError::Sha3 => ExecutionState::ErrorOutOfGasSHA3, OogError::Call => ExecutionState::ErrorOutOfGasCall, OogError::SloadSstore => ExecutionState::ErrorOutOfGasSloadSstore, - OogError::Create2 => ExecutionState::ErrorOutOfGasCREATE2, + OogError::Create => ExecutionState::ErrorOutOfGasCREATE, OogError::SelfDestruct => ExecutionState::ErrorOutOfGasSELFDESTRUCT, }, } @@ -225,7 +247,6 @@ impl From<&ExecStep> for ExecutionState { OpcodeId::NOT => ExecutionState::NOT, OpcodeId::EXP => ExecutionState::EXP, OpcodeId::POP => ExecutionState::POP, - OpcodeId::PUSH32 => ExecutionState::PUSH, OpcodeId::BYTE => ExecutionState::BYTE, OpcodeId::MLOAD => ExecutionState::MEMORY, OpcodeId::MSTORE => ExecutionState::MEMORY, @@ -241,11 +262,12 @@ impl From<&ExecStep> for ExecutionState { OpcodeId::EXTCODEHASH => ExecutionState::EXTCODEHASH, OpcodeId::EXTCODESIZE => ExecutionState::EXTCODESIZE, OpcodeId::BLOCKHASH => ExecutionState::BLOCKHASH, - OpcodeId::TIMESTAMP | OpcodeId::NUMBER | OpcodeId::GASLIMIT => { - ExecutionState::BLOCKCTXU64 - } - OpcodeId::COINBASE => ExecutionState::BLOCKCTXU160, - OpcodeId::DIFFICULTY | OpcodeId::BASEFEE => ExecutionState::BLOCKCTXU256, + OpcodeId::TIMESTAMP + | OpcodeId::NUMBER + | OpcodeId::GASLIMIT + | OpcodeId::COINBASE + | OpcodeId::DIFFICULTY + | OpcodeId::BASEFEE => ExecutionState::BLOCKCTX, OpcodeId::GAS => ExecutionState::GAS, OpcodeId::SAR => ExecutionState::SAR, OpcodeId::SELFBALANCE => ExecutionState::SELFBALANCE, @@ -283,7 +305,7 @@ impl From<&ExecStep> for ExecutionState { } } -pub trait HasExecutionState { +pub(crate) trait HasExecutionState { fn execution_state(&self) -> ExecutionState; } @@ -309,7 +331,7 @@ impl ExecutionState { | Self::ErrorStack | Self::ErrorWriteProtection | Self::ErrorInvalidCreationCode - | Self::ErrorMaxCodeSizeExceeded + | Self::ErrorCodeStore | Self::ErrorInvalidJump | Self::ErrorReturnDataOutOfBound | Self::ErrorOutOfGasConstant @@ -317,14 +339,13 @@ impl ExecutionState { | Self::ErrorOutOfGasDynamicMemoryExpansion | Self::ErrorOutOfGasMemoryCopy | Self::ErrorOutOfGasAccountAccess - | Self::ErrorOutOfGasCodeStore | Self::ErrorOutOfGasLOG | Self::ErrorOutOfGasEXP | Self::ErrorOutOfGasSHA3 | Self::ErrorOutOfGasEXTCODECOPY | Self::ErrorOutOfGasCall | Self::ErrorOutOfGasSloadSstore - | Self::ErrorOutOfGasCREATE2 + | Self::ErrorOutOfGasCREATE | Self::ErrorOutOfGasSELFDESTRUCT ) } @@ -334,6 +355,7 @@ impl ExecutionState { || self.halts_in_exception() } + /// Get the opocdes that are related to the execution state pub fn responsible_opcodes(&self) -> Vec<ResponsibleOp> { if matches!(self, Self::ErrorStack) { return OpcodeId::valid_opcodes() @@ -381,9 +403,14 @@ impl ExecutionState { Self::RETURNDATACOPY => vec![OpcodeId::RETURNDATACOPY], Self::EXTCODEHASH => vec![OpcodeId::EXTCODEHASH], Self::BLOCKHASH => vec![OpcodeId::BLOCKHASH], - Self::BLOCKCTXU64 => vec![OpcodeId::TIMESTAMP, OpcodeId::NUMBER, OpcodeId::GASLIMIT], - Self::BLOCKCTXU160 => vec![OpcodeId::COINBASE], - Self::BLOCKCTXU256 => vec![OpcodeId::DIFFICULTY, OpcodeId::BASEFEE], + Self::BLOCKCTX => vec![ + OpcodeId::TIMESTAMP, + OpcodeId::NUMBER, + OpcodeId::GASLIMIT, + OpcodeId::COINBASE, + OpcodeId::DIFFICULTY, + OpcodeId::BASEFEE, + ], Self::CHAINID => vec![OpcodeId::CHAINID], Self::SELFBALANCE => vec![OpcodeId::SELFBALANCE], Self::POP => vec![OpcodeId::POP], @@ -399,6 +426,7 @@ impl ExecutionState { Self::GAS => vec![OpcodeId::GAS], Self::JUMPDEST => vec![OpcodeId::JUMPDEST], Self::PUSH => vec![ + OpcodeId::PUSH0, OpcodeId::PUSH1, OpcodeId::PUSH2, OpcodeId::PUSH3, @@ -493,11 +521,12 @@ impl ExecutionState { .collect() } + /// Get the state hight pub fn get_step_height_option(&self) -> Option<usize> { EXECUTION_STATE_HEIGHT_MAP.get(self).copied() } - pub fn get_step_height(&self) -> usize { + pub(crate) fn get_step_height(&self) -> usize { self.get_step_height_option() .unwrap_or_else(|| panic!("Execution state unknown: {:?}", self)) } @@ -520,6 +549,7 @@ impl From<OpcodeId> for ResponsibleOp { } impl ResponsibleOp { + /// Get the opcode pub fn opcode(&self) -> OpcodeId { *match self { ResponsibleOp::Op(opcode) => opcode, @@ -646,7 +676,7 @@ pub(crate) struct StepState<F> { /// In the case of a contract creation internal call, this denotes the hash /// of the chunk of bytes from caller's memory that represent the /// contract init code. - pub(crate) code_hash: Cell<F>, + pub(crate) code_hash: WordCell<F>, /// The program counter pub(crate) program_counter: Cell<F>, /// The stack pointer @@ -690,7 +720,10 @@ impl<F: Field> Step<F> { call_id: cell_manager.query_cell(meta, CellType::StoragePhase1), is_root: cell_manager.query_cell(meta, CellType::StoragePhase1), is_create: cell_manager.query_cell(meta, CellType::StoragePhase1), - code_hash: cell_manager.query_cell(meta, CellType::StoragePhase2), + code_hash: Word::new([ + cell_manager.query_cell(meta, CellType::StoragePhase1), + cell_manager.query_cell(meta, CellType::StoragePhase1), + ]), program_counter: cell_manager.query_cell(meta, CellType::StoragePhase1), stack_pointer: cell_manager.query_cell(meta, CellType::StoragePhase1), gas_left: cell_manager.query_cell(meta, CellType::StoragePhase1), @@ -741,7 +774,7 @@ impl<F: Field> Step<F> { )?; self.state .code_hash - .assign(region, offset, region.word_rlc(call.code_hash.to_word()))?; + .assign_u256(region, offset, call.code_hash.to_word())?; self.state .program_counter .assign(region, offset, Value::known(F::from(step.pc)))?; diff --git a/zkevm-circuits/src/evm_circuit/table.rs b/zkevm-circuits/src/evm_circuit/table.rs index 071941daad..38557ca6fe 100644 --- a/zkevm-circuits/src/evm_circuit/table.rs +++ b/zkevm-circuits/src/evm_circuit/table.rs @@ -1,6 +1,9 @@ +//! Fixed lookup tables and dynamic lookup tables for the EVM circuit + use crate::{ evm_circuit::step::{ExecutionState, ResponsibleOp}, impl_expr, + util::word::Word, }; use bus_mapping::evm::OpcodeId; use eth_types::Field; @@ -10,28 +13,46 @@ use strum::IntoEnumIterator; use strum_macros::EnumIter; #[derive(Clone, Copy, Debug, EnumIter)] +/// Tags for different fixed tables pub enum FixedTableTag { + /// x == 0 Zero = 0, + /// 0 <= x < 5 Range5, + /// 0 <= x < 16 Range16, + /// 0 <= x < 32 Range32, + /// 0 <= x < 64 Range64, + /// 0 <= x < 128 Range128, + /// 0 <= x < 256 Range256, + /// 0 <= x < 512 Range512, + /// 0 <= x < 1024 Range1024, + /// -128 <= x < 128 SignByte, + /// bitwise AND BitwiseAnd, + /// bitwise OR BitwiseOr, + /// bitwise XOR BitwiseXor, + /// lookup for corresponding opcode ResponsibleOpcode, + /// power of 2 Pow2, + /// Lookup constant gas cost for opcodes ConstantGasCost, } impl_expr!(FixedTableTag); impl FixedTableTag { - pub fn build<F: Field>(&self) -> Box<dyn Iterator<Item = [F; 4]>> { + /// build up the fixed table row values + pub(crate) fn build<F: Field>(&self) -> Box<dyn Iterator<Item = [F; 4]>> { let tag = F::from(*self as u64); match self { Self::Zero => Box::new((0..1).map(move |_| [tag, F::ZERO, F::ZERO, F::ZERO])), @@ -121,40 +142,64 @@ impl FixedTableTag { } #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, EnumIter)] +/// Each item represents the lookup table to query pub enum Table { + /// The range check table for u8 + U8, + /// The range check table for u16 + U16, + /// The rest of the fixed table. See [`FixedTableTag`] Fixed, + /// Lookup for transactions Tx, + /// Lookup for read write operations Rw, + /// Lookup for bytecode table Bytecode, + /// Lookup for block constants Block, + /// Lookup for copy table Copy, + /// Lookup for keccak table Keccak, + /// Lookup for exp table Exp, } #[derive(Clone, Debug)] -pub struct RwValues<F> { - pub id: Expression<F>, - pub address: Expression<F>, - pub field_tag: Expression<F>, - pub storage_key: Expression<F>, - pub value: Expression<F>, - pub value_prev: Expression<F>, - pub aux1: Expression<F>, - pub aux2: Expression<F>, +/// Read-Write Table fields +pub(crate) struct RwValues<F> { + /// The unique identifier for the Read or Write. Depending on context, this field could be used + /// for Transaction ID or call ID + id: Expression<F>, + /// The position to Stack, Memory, or account, where the read or write takes place, depending + /// on the cell value of the [`bus_mapping::operation::Target`]. + address: Expression<F>, + /// Could be [`crate::table::CallContextFieldTag`], [`crate::table::AccountFieldTag`], + /// [`crate::table::TxLogFieldTag`], or [`crate::table::TxReceiptFieldTag`] depending on + /// the cell value of the [`bus_mapping::operation::Target`] + field_tag: Expression<F>, + /// Storage key of two limbs + storage_key: Word<Expression<F>>, + /// The current storage value + value: Word<Expression<F>>, + /// The previous storage value + value_prev: Word<Expression<F>>, + /// The initial storage value before the current transaction + init_val: Word<Expression<F>>, } impl<F: Field> RwValues<F> { + /// Constructor for RwValues #[allow(clippy::too_many_arguments)] - pub fn new( + pub(crate) fn new( id: Expression<F>, address: Expression<F>, field_tag: Expression<F>, - storage_key: Expression<F>, - value: Expression<F>, - value_prev: Expression<F>, - aux1: Expression<F>, - aux2: Expression<F>, + storage_key: Word<Expression<F>>, + value: Word<Expression<F>>, + value_prev: Word<Expression<F>>, + init_val: Word<Expression<F>>, ) -> Self { Self { id, @@ -163,8 +208,16 @@ impl<F: Field> RwValues<F> { storage_key, value, value_prev, - aux1, - aux2, + init_val, + } + } + + pub(crate) fn revert_value(&self) -> Self { + let new_self = self.clone(); + Self { + value_prev: new_self.value, + value: new_self.value_prev, + ..new_self } } } @@ -189,7 +242,7 @@ pub(crate) enum Lookup<F> { /// field_tag is Calldata, otherwise should be set to 0. index: Expression<F>, /// Value of the field. - value: Expression<F>, + value: Word<Expression<F>>, }, /// Lookup to read-write table, which contains read-write access records of /// time-aware data. @@ -209,7 +262,7 @@ pub(crate) enum Lookup<F> { /// contract code. Bytecode { /// Hash to specify which code to read. - hash: Expression<F>, + hash: Word<Expression<F>>, /// Tag to specify whether its the bytecode length or byte value in the /// bytecode. tag: Expression<F>, @@ -229,18 +282,18 @@ pub(crate) enum Lookup<F> { /// should be set to 0. number: Expression<F>, /// Value of the field. - value: Expression<F>, + value: Word<Expression<F>>, }, /// Lookup to copy table. CopyTable { /// Whether the row is the first row of the copy event. is_first: Expression<F>, /// The source ID for the copy event. - src_id: Expression<F>, + src_id: Word<Expression<F>>, /// The source tag for the copy event. src_tag: Expression<F>, /// The destination ID for the copy event. - dst_id: Expression<F>, + dst_id: Word<Expression<F>>, /// The destination tag for the copy event. dst_tag: Expression<F>, /// The source address where bytes are copied from. @@ -267,9 +320,9 @@ pub(crate) enum Lookup<F> { input_rlc: Expression<F>, /// Length of input that is being hashed. input_len: Expression<F>, - /// Output (hash) until this state. This is the RLC representation of - /// the final output keccak256 hash of the input. - output_rlc: Expression<F>, + /// Output (hash) until this state. hash will be split into multiple expression in little + /// endian. + output: Word<Expression<F>>, }, /// Lookup to exponentiation table. ExpTable { @@ -310,49 +363,53 @@ impl<F: Field> Lookup<F> { field_tag, index, value, - } => vec![id.clone(), field_tag.clone(), index.clone(), value.clone()], + } => vec![ + id.clone(), + field_tag.clone(), + index.clone(), + value.lo(), + value.hi(), + ], Self::Rw { counter, is_write, tag, values, - } => { - vec![ - counter.clone(), - is_write.clone(), - tag.clone(), - values.id.clone(), - values.address.clone(), - values.field_tag.clone(), - values.storage_key.clone(), - values.value.clone(), - values.value_prev.clone(), - values.aux1.clone(), - values.aux2.clone(), - ] - } + } => vec![ + counter.clone(), + is_write.clone(), + tag.clone(), + values.id.clone(), + values.address.clone(), + values.field_tag.clone(), + values.storage_key.lo(), + values.storage_key.hi(), + values.value.lo(), + values.value.hi(), + values.value_prev.lo(), + values.value_prev.hi(), + values.init_val.lo(), + values.init_val.hi(), + ], Self::Bytecode { hash, tag, index, is_code, value, - } => { - vec![ - hash.clone(), - tag.clone(), - index.clone(), - is_code.clone(), - value.clone(), - ] - } + } => vec![ + hash.lo(), + hash.hi(), + tag.clone(), + index.clone(), + is_code.clone(), + value.clone(), + ], Self::Block { field_tag, number, value, - } => { - vec![field_tag.clone(), number.clone(), value.clone()] - } + } => vec![field_tag.clone(), number.clone(), value.lo(), value.hi()], Self::CopyTable { is_first, src_id, @@ -368,9 +425,11 @@ impl<F: Field> Lookup<F> { rwc_inc, } => vec![ is_first.clone(), - src_id.clone(), + src_id.lo(), + src_id.hi(), src_tag.clone(), - dst_id.clone(), + dst_id.lo(), + dst_id.hi(), dst_tag.clone(), src_addr.clone(), src_addr_end.clone(), @@ -383,12 +442,13 @@ impl<F: Field> Lookup<F> { Self::KeccakTable { input_rlc, input_len, - output_rlc, + output, } => vec![ 1.expr(), // is_enabled input_rlc.clone(), input_len.clone(), - output_rlc.clone(), + output.lo(), + output.hi(), ], Self::ExpTable { identifier, @@ -416,12 +476,4 @@ impl<F: Field> Lookup<F> { .collect(), } } - - pub(crate) fn degree(&self) -> usize { - self.input_exprs() - .iter() - .map(|expr| expr.degree()) - .max() - .unwrap() - } } diff --git a/zkevm-circuits/src/evm_circuit/test.rs b/zkevm-circuits/src/evm_circuit/test.rs index b282deb3b1..6302b3dd13 100644 --- a/zkevm-circuits/src/evm_circuit/test.rs +++ b/zkevm-circuits/src/evm_circuit/test.rs @@ -1,8 +1,6 @@ -#![allow(unused_imports)] pub use super::EvmCircuit; -use crate::evm_circuit::{detect_fixed_table_tags, witness::Block}; -use eth_types::{Field, Word}; +use eth_types::Word; use rand::{ distributions::uniform::{SampleRange, SampleUniform}, random, thread_rng, Rng, @@ -27,10 +25,3 @@ pub(crate) fn rand_bytes_array<const N: usize>() -> [u8; N] { pub(crate) fn rand_word() -> Word { Word::from_big_endian(&rand_bytes_array::<32>()) } - -impl<F: Field> EvmCircuit<F> { - pub fn get_test_cicuit_from_block(block: Block<F>) -> Self { - let fixed_table_tags = detect_fixed_table_tags(&block); - EvmCircuit::<F>::new_dev(block, fixed_table_tags) - } -} diff --git a/zkevm-circuits/src/evm_circuit/util.rs b/zkevm-circuits/src/evm_circuit/util.rs index d9eaef44ce..94cbc890f3 100644 --- a/zkevm-circuits/src/evm_circuit/util.rs +++ b/zkevm-circuits/src/evm_circuit/util.rs @@ -1,12 +1,19 @@ +pub use crate::util::{ + query_expression, + word::{Word, WordExpr}, + Challenges, Expr, +}; use crate::{ - evm_circuit::param::{ - LOOKUP_CONFIG, N_BYTES_MEMORY_ADDRESS, N_BYTE_LOOKUPS, N_COPY_COLUMNS, N_PHASE2_COLUMNS, + evm_circuit::{ + param::{ + LOOKUP_CONFIG, N_BYTES_MEMORY_ADDRESS, N_COPY_COLUMNS, N_PHASE2_COLUMNS, N_U8_LOOKUPS, + }, + table::Table, }, - util::{cell_manager::CMFixedWidthStrategyDistribution, Challenges, Expr}, + util::{cell_manager::CMFixedWidthStrategyDistribution, int_decomposition::IntDecomposition}, witness::{Block, ExecStep, Rw, RwMap}, }; -use bus_mapping::state_db::CodeDB; -use eth_types::{Address, Field, ToLittleEndian, ToWord, U256}; +use eth_types::{Address, Field, U256}; use halo2_proofs::{ circuit::{AssignedCell, Region, Value}, plonk::{Advice, Assigned, Column, ConstraintSystem, Error, Expression}, @@ -23,6 +30,8 @@ pub(crate) mod memory_gadget; pub use gadgets::util::{and, not, or, select, sum}; +use super::param::{N_BYTES_ACCOUNT_ADDRESS, N_BYTES_U64, N_U16_LOOKUPS}; + #[deprecated(note = "Removing this would require to edit almost all gadget")] pub(crate) use crate::util::cell_manager::{Cell, CellType}; @@ -129,26 +138,14 @@ impl<'r, 'b, F: Field> CachedRegion<'r, 'b, F> { self.challenges } - pub fn word_rlc(&self, n: U256) -> Value<F> { - self.challenges - .evm_word() - .map(|r| rlc::value(&n.to_le_bytes(), r)) - } - pub fn keccak_rlc(&self, le_bytes: &[u8]) -> Value<F> { self.challenges .keccak_input() .map(|r| rlc::value(le_bytes, r)) } - pub fn empty_code_hash_rlc(&self) -> Value<F> { - self.word_rlc(CodeDB::empty_code_hash().to_word()) - } - - pub fn code_hash(&self, n: U256) -> Value<F> { - self.challenges - .evm_word() - .map(|r| rlc::value(&n.to_le_bytes(), r)) + pub fn code_hash(&self, n: U256) -> Word<Value<F>> { + Word::from(n).into_value() } /// Constrains a cell to have a constant value. @@ -171,7 +168,7 @@ impl<'r, 'b, F: Field> CachedRegion<'r, 'b, F> { pub struct StoredExpression<F> { pub(crate) name: String, cell: Cell<F>, - cell_type: crate::util::cell_manager::CellType, + cell_type: CellType, expr: Expression<F>, expr_id: String, } @@ -183,41 +180,51 @@ impl<F> Hash for StoredExpression<F> { } } +/// Evaluate an expression using a `CachedRegion` at `offset`. +pub(crate) fn evaluate_expression<F: Field>( + expr: &Expression<F>, + region: &CachedRegion<'_, '_, F>, + offset: usize, +) -> Value<F> { + expr.evaluate( + &|scalar| Value::known(scalar), + &|_| unimplemented!("selector column"), + &|fixed_query| { + Value::known(region.get_fixed( + offset, + fixed_query.column_index(), + fixed_query.rotation(), + )) + }, + &|advice_query| { + Value::known(region.get_advice( + offset, + advice_query.column_index(), + advice_query.rotation(), + )) + }, + &|_| unimplemented!("instance column"), + &|challenge| *region.challenges().indexed()[challenge.index()], + &|a| -a, + &|a, b| a + b, + &|a, b| a * b, + &|a, scalar| a * Value::known(scalar), + ) +} + impl<F: Field> StoredExpression<F> { pub fn assign( &self, region: &mut CachedRegion<'_, '_, F>, offset: usize, ) -> Result<Value<F>, Error> { - let value = self.expr.evaluate( - &|scalar| Value::known(scalar), - &|_| unimplemented!("selector column"), - &|fixed_query| { - Value::known(region.get_fixed( - offset, - fixed_query.column_index(), - fixed_query.rotation(), - )) - }, - &|advice_query| { - Value::known(region.get_advice( - offset, - advice_query.column_index(), - advice_query.rotation(), - )) - }, - &|_| unimplemented!("instance column"), - &|challenge| *region.challenges().indexed()[challenge.index()], - &|a| -a, - &|a, b| a + b, - &|a, b| a * b, - &|a, scalar| a * Value::known(scalar), - ); + let value = evaluate_expression(&self.expr, region, offset); self.cell.assign(region, offset, value)?; Ok(value) } } +// #[allow(clippy::mut_range_bound)] pub(crate) fn evm_cm_distribute_advice<F: Field>( meta: &mut ConstraintSystem<F>, @@ -226,7 +233,6 @@ pub(crate) fn evm_cm_distribute_advice<F: Field>( let mut dist = CMFixedWidthStrategyDistribution::default(); let mut column_idx = 0; - // Mark columns used for lookups in Phase3 for &(table, count) in LOOKUP_CONFIG { for _ in 0usize..count { @@ -249,8 +255,17 @@ pub(crate) fn evm_cm_distribute_advice<F: Field>( } // Mark columns used for byte lookup - for _ in 0..N_BYTE_LOOKUPS { - dist.add(CellType::LookupByte, advices[column_idx]); + #[allow(clippy::reversed_empty_ranges)] + for _ in 0..N_U8_LOOKUPS { + dist.add(CellType::Lookup(Table::U8), advices[column_idx]); + assert_eq!(advices[column_idx].column_type().phase(), 0); + column_idx += 1; + } + + // Mark columns used for byte lookup + #[allow(clippy::reversed_empty_ranges)] + for _ in 0..N_U16_LOOKUPS { + dist.add(CellType::Lookup(Table::U16), advices[column_idx]); assert_eq!(advices[column_idx].column_type().phase(), 0); column_idx += 1; } @@ -265,7 +280,7 @@ pub(crate) fn evm_cm_distribute_advice<F: Field>( } #[derive(Clone, Debug)] -pub(crate) struct RandomLinearCombination<F, const N: usize> { +pub struct RandomLinearCombination<F, const N: usize> { // random linear combination expression of cells expression: Expression<F>, // inner cells in little-endian for synthesis @@ -273,8 +288,7 @@ pub(crate) struct RandomLinearCombination<F, const N: usize> { } impl<F: Field, const N: usize> RandomLinearCombination<F, N> { - const N_BYTES: usize = N; - + /// XXX for randomness 256.expr(), consider using IntDecomposition instead pub(crate) fn new(cells: [Cell<F>; N], randomness: Expression<F>) -> Self { Self { expression: rlc::expr(&cells.clone().map(|cell| cell.expr()), randomness), @@ -306,10 +320,13 @@ impl<F: Field, const N: usize> Expr<F> for RandomLinearCombination<F, N> { } } -pub(crate) type Word<F> = RandomLinearCombination<F, 32>; -pub(crate) type MemoryAddress<F> = RandomLinearCombination<F, N_BYTES_MEMORY_ADDRESS>; +pub(crate) type MemoryAddress<F> = IntDecomposition<F, N_BYTES_MEMORY_ADDRESS>; + +pub(crate) type AccountAddress<F> = IntDecomposition<F, N_BYTES_ACCOUNT_ADDRESS>; -/// Decodes a field element from its byte representation +pub(crate) type U64Cell<F> = IntDecomposition<F, N_BYTES_U64>; + +/// Decodes a field element from its byte representation in little endian order pub(crate) mod from_bytes { use crate::{evm_circuit::param::MAX_N_BYTES_INTEGER, util::Expr}; use eth_types::Field; @@ -431,6 +448,15 @@ pub(crate) fn is_precompiled(address: &Address) -> bool { address.0[0..19] == [0u8; 19] && (1..=9).contains(&address.0[19]) } +const BASE_128_BYTES: [u8; 32] = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +]; + +/// convert address (h160) to single expression. +pub fn address_word_to_expr<F: Field>(address: Word<Expression<F>>) -> Expression<F> { + address.lo() + address.hi() * Expression::Constant(F::from_repr(BASE_128_BYTES).unwrap()) +} + /// Helper struct to read rw operations from a step sequentially. pub(crate) struct StepRws<'a> { rws: &'a RwMap, @@ -458,3 +484,60 @@ impl<'a> StepRws<'a> { rw } } + +#[cfg(test)] +mod tests { + use halo2_proofs::halo2curves::bn256::Fr; + + use crate::evm_circuit::param::STEP_WIDTH; + + use super::*; + + #[test] + fn test_evm_cm_distribute_advice_1() { + let mut cs = ConstraintSystem::<Fr>::default(); + let advices = vec![cs.advice_column(); STEP_WIDTH]; + + let cm = evm_cm_distribute_advice(&mut cs, &advices); + + let lookup_config_size = LOOKUP_CONFIG + .iter() + .map(|(_, size)| size.to_owned()) + .sum::<usize>(); + + assert_eq!( + cm.get(CellType::StoragePhase1).unwrap().len(), + STEP_WIDTH + - N_PHASE2_COLUMNS + - N_COPY_COLUMNS + - lookup_config_size + - N_U8_LOOKUPS + - N_U16_LOOKUPS + ); + assert_eq!( + cm.get(CellType::StoragePhase2).unwrap().len(), + N_PHASE2_COLUMNS + ); + assert_eq!( + cm.get(CellType::StoragePermutation).unwrap().len(), + N_COPY_COLUMNS + ); + + // CellType::Lookup + for &(table, count) in LOOKUP_CONFIG { + assert_eq!(cm.get(CellType::Lookup(table)).unwrap().len(), count); + } + assert_eq!( + cm.get(CellType::Lookup(Table::U8)).unwrap().len(), + N_U8_LOOKUPS + ); + if N_U16_LOOKUPS == 0 { + assert!(cm.get(CellType::Lookup(Table::U16)).is_none()); + } else { + assert_eq!( + cm.get(CellType::Lookup(Table::U16)).unwrap().len(), + N_U16_LOOKUPS + ); + } + } +} diff --git a/zkevm-circuits/src/evm_circuit/util/common_gadget.rs b/zkevm-circuits/src/evm_circuit/util/common_gadget.rs index 7675fcf300..d5052e5613 100644 --- a/zkevm-circuits/src/evm_circuit/util/common_gadget.rs +++ b/zkevm-circuits/src/evm_circuit/util/common_gadget.rs @@ -1,13 +1,13 @@ use super::{ constraint_builder::ConstrainBuilderCommon, from_bytes, - math_gadget::{IsEqualGadget, IsZeroGadget, LtGadget}, - memory_gadget::{MemoryAddressGadget, MemoryExpansionGadget}, - CachedRegion, + math_gadget::{IsEqualWordGadget, IsZeroGadget, IsZeroWordGadget, LtGadget}, + memory_gadget::{CommonMemoryAddressGadget, MemoryExpansionGadget}, + AccountAddress, CachedRegion, }; use crate::{ evm_circuit::{ - param::{N_BYTES_ACCOUNT_ADDRESS, N_BYTES_GAS, N_BYTES_MEMORY_WORD_SIZE}, + param::{N_BYTES_GAS, N_BYTES_MEMORY_WORD_SIZE}, step::ExecutionState, table::{FixedTableTag, Lookup}, util::{ @@ -16,17 +16,18 @@ use crate::{ Transition::{Delta, Same, To}, }, math_gadget::{AddWordsGadget, RangeCheckGadget}, - not, or, Word, + not, or, Cell, }, }, table::{AccountFieldTag, CallContextFieldTag}, util::{ - cell_manager::{Cell, CellType}, + word::{Word, Word32, Word32Cell, WordCell, WordExpr}, Expr, }, witness::{Block, Call, ExecStep}, }; -use eth_types::{evm_types::GasCost, Field, ToLittleEndian, ToScalar, U256}; +use bus_mapping::state_db::CodeDB; +use eth_types::{evm_types::GasCost, Field, ToAddress, ToLittleEndian, ToScalar, ToWord, U256}; use gadgets::util::{select, sum}; use halo2_proofs::{ circuit::Value, @@ -96,7 +97,7 @@ pub(crate) struct RestoreContextGadget<F> { caller_id: Cell<F>, caller_is_root: Cell<F>, caller_is_create: Cell<F>, - caller_code_hash: Cell<F>, + caller_code_hash: WordCell<F>, caller_program_counter: Cell<F>, caller_stack_pointer: Cell<F>, caller_gas_left: Cell<F>, @@ -117,11 +118,15 @@ impl<F: Field> RestoreContextGadget<F> { ) -> Self { // Read caller's context for restore let caller_id = cb.call_context(None, CallContextFieldTag::CallerId); - let [caller_is_root, caller_is_create, caller_code_hash, caller_program_counter, caller_stack_pointer, caller_gas_left, caller_memory_word_size, caller_reversible_write_counter] = + let [caller_is_root, caller_is_create] = + [CallContextFieldTag::IsRoot, CallContextFieldTag::IsCreate] + .map(|field_tag| cb.call_context(Some(caller_id.expr()), field_tag)); + + let caller_code_hash = + cb.call_context_read_as_word(Some(caller_id.expr()), CallContextFieldTag::CodeHash); + + let [caller_program_counter, caller_stack_pointer, caller_gas_left, caller_memory_word_size, caller_reversible_write_counter] = [ - CallContextFieldTag::IsRoot, - CallContextFieldTag::IsCreate, - CallContextFieldTag::CodeHash, CallContextFieldTag::ProgramCounter, CallContextFieldTag::StackPointer, CallContextFieldTag::GasLeft, @@ -155,7 +160,12 @@ impl<F: Field> RestoreContextGadget<F> { ), ), ] { - cb.call_context_lookup(true.expr(), Some(caller_id.expr()), field_tag, value); + // TODO review and assure range check + cb.call_context_lookup_write( + Some(caller_id.expr()), + field_tag, + Word::from_lo_unchecked(value), + ); } let code_deposit_cost = cb.curr.state.is_create.expr() @@ -189,7 +199,7 @@ impl<F: Field> RestoreContextGadget<F> { call_id: To(caller_id.expr()), is_root: To(caller_is_root.expr()), is_create: To(caller_is_create.expr()), - code_hash: To(caller_code_hash.expr()), + code_hash: To(caller_code_hash.to_word()), program_counter: To(caller_program_counter.expr()), stack_pointer: To(caller_stack_pointer.expr()), gas_left: To(gas_left), @@ -253,7 +263,7 @@ impl<F: Field> RestoreContextGadget<F> { } self.caller_code_hash - .assign(region, offset, region.word_rlc(caller_code_hash))?; + .assign_u256(region, offset, caller_code_hash)?; Ok(()) } @@ -269,19 +279,19 @@ impl<F: Field, const N_ADDENDS: usize, const INCREASE: bool> { pub(crate) fn construct( cb: &mut EVMConstraintBuilder<F>, - address: Expression<F>, - updates: Vec<Word<F>>, + address: Word<Expression<F>>, + updates: Vec<Word32Cell<F>>, reversion_info: Option<&mut ReversionInfo<F>>, ) -> Self { debug_assert!(updates.len() == N_ADDENDS - 1); - let balance_addend = cb.query_word_rlc(); - let balance_sum = cb.query_word_rlc(); + let balance_addend = cb.query_word32(); + let balance_sum = cb.query_word32(); - let [value, value_prev] = if INCREASE { - [balance_sum.expr(), balance_addend.expr()] + let [value, value_prev]: [Word32<Expression<F>>; 2] = if INCREASE { + [balance_sum.to_word_n(), balance_addend.to_word_n()] } else { - [balance_addend.expr(), balance_sum.expr()] + [balance_addend.to_word_n(), balance_sum.to_word_n()] }; let add_words = AddWordsGadget::construct( @@ -297,30 +307,14 @@ impl<F: Field, const N_ADDENDS: usize, const INCREASE: bool> cb.account_write( address, AccountFieldTag::Balance, - value, - value_prev, + value.to_word(), + value_prev.to_word(), reversion_info, ); Self { add_words } } - pub(crate) fn balance(&self) -> &Word<F> { - if INCREASE { - self.add_words.sum() - } else { - &self.add_words.addends()[0] - } - } - - pub(crate) fn balance_prev(&self) -> &Word<F> { - if INCREASE { - &self.add_words.addends()[0] - } else { - self.add_words.sum() - } - } - pub(crate) fn assign( &self, region: &mut CachedRegion<'_, '_, F>, @@ -343,6 +337,98 @@ impl<F: Field, const N_ADDENDS: usize, const INCREASE: bool> } } +#[derive(Clone, Debug)] +pub(crate) struct TransferToGadget<F> { + receiver: UpdateBalanceGadget<F, 2, true>, + receiver_exists: Expression<F>, + must_create: Expression<F>, + pub(crate) value_is_zero: IsZeroWordGadget<F, Word32Cell<F>>, +} + +impl<F: Field> TransferToGadget<F> { + #[allow(clippy::too_many_arguments)] + pub(crate) fn construct( + cb: &mut EVMConstraintBuilder<F>, + receiver_address: Word<Expression<F>>, + receiver_exists: Expression<F>, + must_create: Expression<F>, + value: Word32Cell<F>, + mut reversion_info: Option<&mut ReversionInfo<F>>, + account_write: bool, + ) -> Self { + let value_is_zero = IsZeroWordGadget::construct(cb, &value); + if account_write { + Self::creat_account( + cb, + receiver_address.clone(), + receiver_exists.clone(), + must_create.clone(), + value_is_zero.expr(), + reversion_info.as_deref_mut(), + ); + } + let receiver = cb.condition(not::expr(value_is_zero.expr()), |cb| { + UpdateBalanceGadget::construct( + cb, + receiver_address, + vec![value.clone()], + reversion_info, + ) + }); + + Self { + receiver, + receiver_exists, + must_create, + value_is_zero, + } + } + + pub(crate) fn creat_account( + cb: &mut EVMConstraintBuilder<F>, + receiver_address: Word<Expression<F>>, + receiver_exists: Expression<F>, + must_create: Expression<F>, + value_is_zero: Expression<F>, + reversion_info: Option<&mut ReversionInfo<F>>, + ) { + cb.condition( + or::expr([ + not::expr(value_is_zero.expr()) * not::expr(receiver_exists.expr()), + must_create, + ]), + |cb| { + cb.account_write( + receiver_address.clone(), + AccountFieldTag::CodeHash, + cb.empty_code_hash(), + Word::zero(), + reversion_info, + ); + }, + ); + } + + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + (receiver_balance, prev_receiver_balance): (U256, U256), + value: U256, + ) -> Result<(), Error> { + self.receiver.assign( + region, + offset, + prev_receiver_balance, + vec![value], + receiver_balance, + )?; + self.value_is_zero + .assign_value(region, offset, Value::known(Word::from(value)))?; + Ok(()) + } +} + // TODO: Merge with TransferGadget /// The TransferWithGasFeeGadget handles an irreversible gas fee subtraction to /// the sender and a transfer of value from sender to receiver. The value @@ -354,66 +440,57 @@ impl<F: Field, const N_ADDENDS: usize, const INCREASE: bool> pub(crate) struct TransferWithGasFeeGadget<F> { sender_sub_fee: UpdateBalanceGadget<F, 2, false>, sender_sub_value: UpdateBalanceGadget<F, 2, false>, - receiver: UpdateBalanceGadget<F, 2, true>, - receiver_exists: Expression<F>, - must_create: Expression<F>, - pub(crate) value_is_zero: IsZeroGadget<F>, + receiver: TransferToGadget<F>, + pub(crate) value_is_zero: IsZeroWordGadget<F, Word32Cell<F>>, } impl<F: Field> TransferWithGasFeeGadget<F> { #[allow(clippy::too_many_arguments)] pub(crate) fn construct( cb: &mut EVMConstraintBuilder<F>, - sender_address: Expression<F>, - receiver_address: Expression<F>, + sender_address: Word<Expression<F>>, + receiver_address: Word<Expression<F>>, receiver_exists: Expression<F>, must_create: Expression<F>, - value: Word<F>, - gas_fee: Word<F>, + value: Word32Cell<F>, + gas_fee: Word32Cell<F>, reversion_info: &mut ReversionInfo<F>, ) -> Self { let sender_sub_fee = - UpdateBalanceGadget::construct(cb, sender_address.expr(), vec![gas_fee], None); - let value_is_zero = IsZeroGadget::construct(cb, value.expr()); + UpdateBalanceGadget::construct(cb, sender_address.to_word(), vec![gas_fee], None); + let value_is_zero = IsZeroWordGadget::construct(cb, &value); // If receiver doesn't exist, create it - cb.condition( - or::expr([ - not::expr(value_is_zero.expr()) * not::expr(receiver_exists.expr()), - must_create.clone(), - ]), - |cb| { - cb.account_write( - receiver_address.clone(), - AccountFieldTag::CodeHash, - cb.empty_code_hash_rlc(), - 0.expr(), - Some(reversion_info), - ); - }, + TransferToGadget::creat_account( + cb, + receiver_address.clone(), + receiver_exists.clone(), + must_create.clone(), + value_is_zero.expr(), + Some(reversion_info), ); // Skip transfer if value == 0 - let (sender_sub_value, receiver) = cb.condition(not::expr(value_is_zero.expr()), |cb| { - let sender_sub_value = UpdateBalanceGadget::construct( + let sender_sub_value = cb.condition(not::expr(value_is_zero.expr()), |cb| { + UpdateBalanceGadget::construct( cb, sender_address, vec![value.clone()], Some(reversion_info), - ); - let receiver = UpdateBalanceGadget::construct( - cb, - receiver_address, - vec![value], - Some(reversion_info), - ); - (sender_sub_value, receiver) + ) }); + let receiver = TransferToGadget::construct( + cb, + receiver_address, + receiver_exists, + must_create, + value, + Some(reversion_info), + false, + ); Self { sender_sub_fee, sender_sub_value, receiver, - receiver_exists, - must_create, value_is_zero, } } @@ -423,8 +500,8 @@ impl<F: Field> TransferWithGasFeeGadget<F> { 1.expr() + // +1 Write Account (receiver) CodeHash (account creation via code_hash update) or::expr([ - not::expr(self.value_is_zero.expr()) * not::expr(self.receiver_exists.expr()), - self.must_create.clone()] + not::expr(self.value_is_zero.expr()) * not::expr(self.receiver.receiver_exists.expr()), + self.receiver.must_create.clone()] ) * 1.expr() + // +1 Write Account (sender) Balance // +1 Write Account (receiver) Balance @@ -435,9 +512,9 @@ impl<F: Field> TransferWithGasFeeGadget<F> { // NOTE: Write Account (sender) Balance (Not Reversible tx fee) // +1 Write Account (receiver) CodeHash (account creation via code_hash update) or::expr([ - not::expr(self.value_is_zero.expr()) * not::expr(self.receiver_exists.expr()), - self.must_create.clone()] - ) * 1.expr() + + not::expr(self.value_is_zero.expr()) * not::expr(self.receiver.receiver_exists.expr()), + self.receiver.must_create.clone()] + ) + // +1 Write Account (sender) Balance // +1 Write Account (receiver) Balance not::expr(self.value_is_zero.expr()) * 2.expr() @@ -471,12 +548,11 @@ impl<F: Field> TransferWithGasFeeGadget<F> { self.receiver.assign( region, offset, - prev_receiver_balance, - vec![value], - receiver_balance, + (receiver_balance, prev_receiver_balance), + value, )?; self.value_is_zero - .assign_value(region, offset, region.word_rlc(value))?; + .assign_value(region, offset, Value::known(Word::from(value)))?; Ok(()) } } @@ -488,78 +564,61 @@ impl<F: Field> TransferWithGasFeeGadget<F> { #[derive(Clone, Debug)] pub(crate) struct TransferGadget<F> { sender: UpdateBalanceGadget<F, 2, false>, - receiver: UpdateBalanceGadget<F, 2, true>, - must_create: Expression<F>, - receiver_exists: Expression<F>, - pub(crate) value_is_zero: IsZeroGadget<F>, + receiver: TransferToGadget<F>, + pub(crate) value_is_zero: IsZeroWordGadget<F, Word32Cell<F>>, } impl<F: Field> TransferGadget<F> { pub(crate) fn construct( cb: &mut EVMConstraintBuilder<F>, - sender_address: Expression<F>, - receiver_address: Expression<F>, + sender_address: Word<Expression<F>>, + receiver_address: Word<Expression<F>>, receiver_exists: Expression<F>, must_create: Expression<F>, - value: Word<F>, + value: Word32Cell<F>, reversion_info: &mut ReversionInfo<F>, ) -> Self { - let value_is_zero = IsZeroGadget::construct(cb, value.expr()); + let value_is_zero = IsZeroWordGadget::construct(cb, &value); // If receiver doesn't exist, create it - cb.condition( - or::expr([ - not::expr(value_is_zero.expr()) * not::expr(receiver_exists.expr()), - must_create.clone(), - ]), - |cb| { - cb.account_write( - receiver_address.clone(), - AccountFieldTag::CodeHash, - cb.empty_code_hash_rlc(), - 0.expr(), - Some(reversion_info), - ); - }, + TransferToGadget::creat_account( + cb, + receiver_address.clone(), + receiver_exists.clone(), + must_create.clone(), + value_is_zero.expr(), + Some(reversion_info), ); // Skip transfer if value == 0 - let (sender, receiver) = cb.condition(not::expr(value_is_zero.expr()), |cb| { - let sender = UpdateBalanceGadget::construct( + let sender = cb.condition(not::expr(value_is_zero.expr()), |cb| { + UpdateBalanceGadget::construct( cb, sender_address, vec![value.clone()], Some(reversion_info), - ); - let receiver = UpdateBalanceGadget::construct( - cb, - receiver_address, - vec![value], - Some(reversion_info), - ); - (sender, receiver) + ) }); + let receiver = TransferToGadget::construct( + cb, + receiver_address, + receiver_exists, + must_create, + value, + Some(reversion_info), + false, + ); Self { - must_create, sender, receiver, - receiver_exists, value_is_zero, } } - pub(crate) fn sender(&self) -> &UpdateBalanceGadget<F, 2, false> { - &self.sender - } - - pub(crate) fn receiver(&self) -> &UpdateBalanceGadget<F, 2, true> { - &self.receiver - } - pub(crate) fn reversible_w_delta(&self) -> Expression<F> { // +1 Write Account (receiver) CodeHash (account creation via code_hash update) or::expr([ - not::expr(self.value_is_zero.expr()) * not::expr(self.receiver_exists.clone()), - self.must_create.clone()] + not::expr(self.value_is_zero.expr()) * not::expr(self.receiver.receiver_exists.clone()), + self.receiver.must_create.clone()] ) * 1.expr() + // +1 Write Account (sender) Balance // +1 Write Account (receiver) Balance @@ -584,37 +643,38 @@ impl<F: Field> TransferGadget<F> { self.receiver.assign( region, offset, - receiver_balance_prev, - vec![value], - receiver_balance, + (receiver_balance, receiver_balance_prev), + value, )?; self.value_is_zero - .assign_value(region, offset, region.word_rlc(value))?; + .assign_value(region, offset, Value::known(Word::from(value)))?; Ok(()) } } #[derive(Clone, Debug)] -pub(crate) struct CommonCallGadget<F, const IS_SUCCESS_CALL: bool> { +pub(crate) struct CommonCallGadget<F, MemAddrGadget, const IS_SUCCESS_CALL: bool> { pub is_success: Cell<F>, - pub gas: Word<F>, + pub gas: Word32Cell<F>, pub gas_is_u64: IsZeroGadget<F>, - pub callee_address: Word<F>, - pub value: Word<F>, - pub cd_address: MemoryAddressGadget<F>, - pub rd_address: MemoryAddressGadget<F>, + pub callee_address: AccountAddress<F>, + pub value: Word32Cell<F>, + pub cd_address: MemAddrGadget, + pub rd_address: MemAddrGadget, pub memory_expansion: MemoryExpansionGadget<F, 2, N_BYTES_MEMORY_WORD_SIZE>, - value_is_zero: IsZeroGadget<F>, + value_is_zero: IsZeroWordGadget<F, Word32Cell<F>>, pub has_value: Expression<F>, - pub phase2_callee_code_hash: Cell<F>, - pub is_empty_code_hash: IsEqualGadget<F>, + pub callee_code_hash: WordCell<F>, + pub is_empty_code_hash: IsEqualWordGadget<F, WordCell<F>, Word<Expression<F>>>, - pub callee_not_exists: IsZeroGadget<F>, + pub callee_not_exists: IsZeroWordGadget<F, WordCell<F>>, } -impl<F: Field, const IS_SUCCESS_CALL: bool> CommonCallGadget<F, IS_SUCCESS_CALL> { +impl<F: Field, MemAddrGadget: CommonMemoryAddressGadget<F>, const IS_SUCCESS_CALL: bool> + CommonCallGadget<F, MemAddrGadget, IS_SUCCESS_CALL> +{ pub(crate) fn construct( cb: &mut EVMConstraintBuilder<F>, is_call: Expression<F>, @@ -629,15 +689,13 @@ impl<F: Field, const IS_SUCCESS_CALL: bool> CommonCallGadget<F, IS_SUCCESS_CALL> 1.expr(), ); - let gas_word = cb.query_word_rlc(); - let callee_address_word = cb.query_word_rlc(); - let value = cb.query_word_rlc(); - let cd_offset = cb.query_cell_phase2(); - let cd_length = cb.query_word_rlc(); - let rd_offset = cb.query_cell_phase2(); - let rd_length = cb.query_word_rlc(); + let gas_word = cb.query_word32(); + let callee_address = cb.query_account_address(); + let value = cb.query_word32(); let is_success = cb.query_bool(); + let cd_address = MemAddrGadget::construct_self(cb); + let rd_address = MemAddrGadget::construct_self(cb); // Lookup values from stack // `callee_address` is poped from stack and used to check if it exists in // access list and get code hash. @@ -646,49 +704,47 @@ impl<F: Field, const IS_SUCCESS_CALL: bool> CommonCallGadget<F, IS_SUCCESS_CALL> // callee address is `current_callee_address`. // For both CALL and STATICCALL, caller address is // `current_callee_address` and callee address is `callee_address`. - cb.stack_pop(gas_word.expr()); - cb.stack_pop(callee_address_word.expr()); + cb.stack_pop(gas_word.to_word()); + cb.stack_pop(callee_address.to_word()); // `CALL` and `CALLCODE` opcodes have an additional stack pop `value`. - cb.condition(is_call + is_callcode, |cb| cb.stack_pop(value.expr())); - cb.stack_pop(cd_offset.expr()); - cb.stack_pop(cd_length.expr()); - cb.stack_pop(rd_offset.expr()); - cb.stack_pop(rd_length.expr()); + cb.condition(is_call + is_callcode, |cb| cb.stack_pop(value.to_word())); + cb.stack_pop(cd_address.offset_word()); + cb.stack_pop(cd_address.length_word()); + cb.stack_pop(rd_address.offset_word()); + cb.stack_pop(rd_address.length_word()); cb.stack_push(if IS_SUCCESS_CALL { - is_success.expr() + Word::from_lo_unchecked(is_success.expr()) // is_success is bool } else { - 0.expr() + Word::zero() }); // Recomposition of random linear combination to integer - let gas_is_u64 = IsZeroGadget::construct(cb, sum::expr(&gas_word.cells[N_BYTES_GAS..])); - let cd_address = MemoryAddressGadget::construct(cb, cd_offset, cd_length); - let rd_address = MemoryAddressGadget::construct(cb, rd_offset, rd_length); + let gas_is_u64 = IsZeroGadget::construct(cb, sum::expr(&gas_word.limbs[N_BYTES_GAS..])); let memory_expansion = MemoryExpansionGadget::construct(cb, [cd_address.address(), rd_address.address()]); // construct common gadget - let value_is_zero = IsZeroGadget::construct(cb, sum::expr(&value.cells)); + let value_is_zero = IsZeroWordGadget::construct(cb, &value); let has_value = select::expr( is_delegatecall.expr() + is_staticcall.expr(), 0.expr(), 1.expr() - value_is_zero.expr(), ); - let phase2_callee_code_hash = cb.query_cell_with_type(CellType::StoragePhase2); + let callee_code_hash = cb.query_word_unchecked(); cb.account_read( - from_bytes::expr(&callee_address_word.cells[..N_BYTES_ACCOUNT_ADDRESS]), + callee_address.to_word(), AccountFieldTag::CodeHash, - phase2_callee_code_hash.expr(), + callee_code_hash.to_word(), ); let is_empty_code_hash = - IsEqualGadget::construct(cb, phase2_callee_code_hash.expr(), cb.empty_code_hash_rlc()); - let callee_not_exists = IsZeroGadget::construct(cb, phase2_callee_code_hash.expr()); + IsEqualWordGadget::construct(cb, &callee_code_hash, &cb.empty_code_hash()); + let callee_not_exists = IsZeroWordGadget::construct(cb, &callee_code_hash); Self { is_success, - callee_address: callee_address_word, + callee_address, gas: gas_word, gas_is_u64, value, @@ -697,18 +753,18 @@ impl<F: Field, const IS_SUCCESS_CALL: bool> CommonCallGadget<F, IS_SUCCESS_CALL> memory_expansion, value_is_zero, has_value, - phase2_callee_code_hash, + callee_code_hash, is_empty_code_hash, callee_not_exists, } } - pub fn callee_address_expr(&self) -> Expression<F> { - from_bytes::expr(&self.callee_address.cells[..N_BYTES_ACCOUNT_ADDRESS]) + pub fn callee_address(&self) -> Word<Expression<F>> { + self.callee_address.to_word() } pub fn gas_expr(&self) -> Expression<F> { - from_bytes::expr(&self.gas.cells[..N_BYTES_GAS]) + from_bytes::expr(&self.gas.limbs[..N_BYTES_GAS]) } pub fn gas_cost_expr( @@ -741,13 +797,12 @@ impl<F: Field, const IS_SUCCESS_CALL: bool> CommonCallGadget<F, IS_SUCCESS_CALL> rd_offset: U256, rd_length: U256, memory_word_size: u64, - phase2_callee_code_hash: Value<F>, + callee_code_hash: U256, ) -> Result<u64, Error> { - self.gas.assign(region, offset, Some(gas.to_le_bytes()))?; + self.gas.assign_u256(region, offset, gas)?; self.callee_address - .assign(region, offset, Some(callee_address.to_le_bytes()))?; - self.value - .assign(region, offset, Some(value.to_le_bytes()))?; + .assign_h160(region, offset, callee_address.to_address())?; + self.value.assign_u256(region, offset, value)?; if IS_SUCCESS_CALL { self.is_success .assign(region, offset, Value::known(F::from(is_success.low_u64())))?; @@ -771,17 +826,20 @@ impl<F: Field, const IS_SUCCESS_CALL: bool> CommonCallGadget<F, IS_SUCCESS_CALL> )?; self.value_is_zero - .assign(region, offset, sum::value(&value.to_le_bytes()))?; - self.phase2_callee_code_hash - .assign(region, offset, phase2_callee_code_hash)?; + .assign(region, offset, Word::from(value))?; + self.callee_code_hash + .assign_u256(region, offset, callee_code_hash)?; self.is_empty_code_hash.assign_value( region, offset, - phase2_callee_code_hash, - region.empty_code_hash_rlc(), + Value::known(Word::from(callee_code_hash)), + Value::known(Word::from(CodeDB::empty_code_hash().to_word())), + )?; + self.callee_not_exists.assign_value( + region, + offset, + Value::known(Word::from(callee_code_hash)), )?; - self.callee_not_exists - .assign_value(region, offset, phase2_callee_code_hash)?; Ok(memory_expansion_gas_cost) } @@ -815,7 +873,6 @@ impl<F: Field, const IS_SUCCESS_CALL: bool> CommonCallGadget<F, IS_SUCCESS_CALL> #[derive(Clone, Debug)] pub(crate) struct SloadGasGadget<F> { - is_warm: Expression<F>, gas_cost: Expression<F>, } @@ -827,7 +884,7 @@ impl<F: Field> SloadGasGadget<F> { GasCost::COLD_SLOAD.expr(), ); - Self { is_warm, gas_cost } + Self { gas_cost } } pub(crate) fn expr(&self) -> Expression<F> { @@ -837,29 +894,25 @@ impl<F: Field> SloadGasGadget<F> { } #[derive(Clone, Debug)] -pub(crate) struct SstoreGasGadget<F> { - value: Cell<F>, - value_prev: Cell<F>, - original_value: Cell<F>, +pub(crate) struct SstoreGasGadget<F, T> { is_warm: Cell<F>, gas_cost: Expression<F>, - value_eq_prev: IsEqualGadget<F>, - original_eq_prev: IsEqualGadget<F>, - original_is_zero: IsZeroGadget<F>, + value_eq_prev: IsEqualWordGadget<F, T, T>, + original_eq_prev: IsEqualWordGadget<F, T, T>, + original_is_zero: IsZeroWordGadget<F, T>, } -impl<F: Field> SstoreGasGadget<F> { +impl<F: Field, T: WordExpr<F> + Clone> SstoreGasGadget<F, T> { pub(crate) fn construct( cb: &mut EVMConstraintBuilder<F>, - value: Cell<F>, - value_prev: Cell<F>, - original_value: Cell<F>, is_warm: Cell<F>, + value: T, + value_prev: T, + original_value: T, ) -> Self { - let value_eq_prev = IsEqualGadget::construct(cb, value.expr(), value_prev.expr()); - let original_eq_prev = - IsEqualGadget::construct(cb, original_value.expr(), value_prev.expr()); - let original_is_zero = IsZeroGadget::construct(cb, original_value.expr()); + let value_eq_prev = IsEqualWordGadget::construct(cb, &value, &value_prev); + let original_eq_prev = IsEqualWordGadget::construct(cb, &original_value, &value_prev); + let original_is_zero = IsZeroWordGadget::construct(cb, &original_value); let warm_case_gas = select::expr( value_eq_prev.expr(), GasCost::WARM_ACCESS.expr(), @@ -880,9 +933,6 @@ impl<F: Field> SstoreGasGadget<F> { ); Self { - value, - value_prev, - original_value, is_warm, gas_cost, value_eq_prev, @@ -904,27 +954,25 @@ impl<F: Field> SstoreGasGadget<F> { original_value: eth_types::Word, is_warm: bool, ) -> Result<(), Error> { - self.value.assign(region, offset, region.word_rlc(value))?; - self.value_prev - .assign(region, offset, region.word_rlc(value_prev))?; - self.original_value - .assign(region, offset, region.word_rlc(original_value))?; self.is_warm .assign(region, offset, Value::known(F::from(is_warm as u64)))?; self.value_eq_prev.assign_value( region, offset, - region.word_rlc(value), - region.word_rlc(value_prev), + Value::known(Word::from(value)), + Value::known(Word::from(value_prev)), )?; self.original_eq_prev.assign_value( region, offset, - region.word_rlc(original_value), - region.word_rlc(value_prev), + Value::known(Word::from(original_value)), + Value::known(Word::from(value_prev)), + )?; + self.original_is_zero.assign_value( + region, + offset, + Value::known(Word::from(original_value)), )?; - self.original_is_zero - .assign_value(region, offset, region.word_rlc(original_value))?; Ok(()) } } @@ -963,7 +1011,7 @@ pub(crate) fn cal_sstore_gas_cost_for_assignment( #[derive(Clone, Debug)] pub(crate) struct CommonErrorGadget<F> { - rw_counter_end_of_reversion: Cell<F>, + rw_counter_end_of_reversion: WordCell<F>, restore_context: RestoreContextGadget<F>, } @@ -972,20 +1020,31 @@ impl<F: Field> CommonErrorGadget<F> { cb: &mut EVMConstraintBuilder<F>, opcode: Expression<F>, rw_counter_delta: Expression<F>, + ) -> Self { + Self::construct_with_return_data(cb, opcode, rw_counter_delta, 0.expr(), 0.expr()) + } + + pub(crate) fn construct_with_return_data( + cb: &mut EVMConstraintBuilder<F>, + opcode: Expression<F>, + rw_counter_delta: Expression<F>, + return_data_offset: Expression<F>, + return_data_length: Expression<F>, ) -> Self { cb.opcode_lookup(opcode.expr(), 1.expr()); - let rw_counter_end_of_reversion = cb.query_cell(); + let rw_counter_end_of_reversion = cb.query_word_unchecked(); // rw_counter_end_of_reversion just used for read lookup, therefore skip range check // current call must be failed. - cb.call_context_lookup(false.expr(), None, CallContextFieldTag::IsSuccess, 0.expr()); + cb.call_context_lookup_read(None, CallContextFieldTag::IsSuccess, Word::zero()); - cb.call_context_lookup( - false.expr(), + cb.call_context_lookup_read( None, CallContextFieldTag::RwCounterEndOfReversion, - rw_counter_end_of_reversion.expr(), + rw_counter_end_of_reversion.to_word(), ); + // Have two rw lookups, `IsSuccess` and `RwCounterEndOfReversion` so we add `2` here. + let updated_rw_counter_delta = rw_counter_delta + 2.expr(); // Go to EndTx only when is_root let is_to_end_tx = cb.next.execution_state_selector([ExecutionState::EndTx]); @@ -1000,7 +1059,9 @@ impl<F: Field> CommonErrorGadget<F> { // Do step state transition cb.require_step_state_transition(StepStateTransition { call_id: Same, - rw_counter: Delta(rw_counter_delta + cb.curr.state.reversible_write_counter.expr()), + rw_counter: Delta( + updated_rw_counter_delta + cb.curr.state.reversible_write_counter.expr(), + ), ..StepStateTransition::any() }); }); @@ -1012,8 +1073,8 @@ impl<F: Field> CommonErrorGadget<F> { cb, 0.expr(), 0.expr(), - 0.expr(), - 0.expr(), + return_data_offset, + return_data_length, 0.expr(), 0.expr(), ) @@ -1024,7 +1085,7 @@ impl<F: Field> CommonErrorGadget<F> { cb.curr.state.rw_counter.expr() + cb.rw_counter_offset() - 1.expr(); cb.require_equal( "rw_counter_end_of_reversion = rw_counter_end_of_step + reversible_counter", - rw_counter_end_of_reversion.expr(), + rw_counter_end_of_reversion.lo().expr(), rw_counter_end_of_step + cb.curr.state.reversible_write_counter.expr(), ); @@ -1044,10 +1105,10 @@ impl<F: Field> CommonErrorGadget<F> { step: &ExecStep, rw_offset: usize, ) -> Result<u64, Error> { - self.rw_counter_end_of_reversion.assign( + self.rw_counter_end_of_reversion.assign_u64( region, offset, - Value::known(F::from(call.rw_counter_end_of_reversion as u64)), + call.rw_counter_end_of_reversion as u64, )?; self.restore_context .assign(region, offset, block, call, step, rw_offset)?; @@ -1102,8 +1163,8 @@ impl<F: Field, const VALID_BYTES: usize> WordByteCapGadget<F, VALID_BYTES> { self.lt_cap.expr() } - pub(crate) fn original_word(&self) -> Expression<F> { - self.word.original_word() + pub(crate) fn original_word(&self) -> Word32Cell<F> { + self.word.original.clone() } pub(crate) fn overflow(&self) -> Expression<F> { @@ -1122,7 +1183,7 @@ impl<F: Field, const VALID_BYTES: usize> WordByteCapGadget<F, VALID_BYTES> { /// Check if the passed in word is within the specified byte range (not overflow). #[derive(Clone, Debug)] pub(crate) struct WordByteRangeGadget<F, const VALID_BYTES: usize> { - original: Word<F>, + original: Word32Cell<F>, not_overflow: IsZeroGadget<F>, } @@ -1130,8 +1191,8 @@ impl<F: Field, const VALID_BYTES: usize> WordByteRangeGadget<F, VALID_BYTES> { pub(crate) fn construct(cb: &mut EVMConstraintBuilder<F>) -> Self { debug_assert!(VALID_BYTES < 32); - let original = cb.query_word_rlc(); - let not_overflow = IsZeroGadget::construct(cb, sum::expr(&original.cells[VALID_BYTES..])); + let original = cb.query_word32(); + let not_overflow = IsZeroGadget::construct(cb, sum::expr(&original.limbs[VALID_BYTES..])); Self { original, @@ -1146,8 +1207,7 @@ impl<F: Field, const VALID_BYTES: usize> WordByteRangeGadget<F, VALID_BYTES> { offset: usize, original: U256, ) -> Result<bool, Error> { - self.original - .assign(region, offset, Some(original.to_le_bytes()))?; + self.original.assign_u256(region, offset, original)?; let overflow_hi = original.to_le_bytes()[VALID_BYTES..] .iter() @@ -1158,16 +1218,16 @@ impl<F: Field, const VALID_BYTES: usize> WordByteRangeGadget<F, VALID_BYTES> { Ok(overflow_hi == 0) } - pub(crate) fn original_word(&self) -> Expression<F> { - self.original.expr() - } - pub(crate) fn overflow(&self) -> Expression<F> { not::expr(self.not_overflow()) } + pub(crate) fn original(&self) -> Word<Expression<F>> { + self.original.to_word() + } + pub(crate) fn valid_value(&self) -> Expression<F> { - from_bytes::expr(&self.original.cells[..VALID_BYTES]) + from_bytes::expr(&self.original.limbs[..VALID_BYTES]) } pub(crate) fn not_overflow(&self) -> Expression<F> { diff --git a/zkevm-circuits/src/evm_circuit/util/constraint_builder.rs b/zkevm-circuits/src/evm_circuit/util/constraint_builder.rs index c90a02c0ed..f62c46bd79 100644 --- a/zkevm-circuits/src/evm_circuit/util/constraint_builder.rs +++ b/zkevm-circuits/src/evm_circuit/util/constraint_builder.rs @@ -2,17 +2,17 @@ use crate::{ evm_circuit::{ param::STACK_CAPACITY, step::{ExecutionState, Step}, - table::{FixedTableTag, Lookup, RwValues}, - util::{RandomLinearCombination, Word}, + table::{FixedTableTag, Lookup, RwValues, Table}, + util::{Cell, RandomLinearCombination}, }, table::{ AccountFieldTag, BytecodeFieldTag, CallContextFieldTag, TxContextFieldTag, TxLogFieldTag, TxReceiptFieldTag, }, util::{ - build_tx_log_expression, - cell_manager::{Cell, CellType}, - query_expression, Challenges, Expr, + build_tx_log_expression, query_expression, + word::{Word, Word32, Word32Cell, WordCell, WordExpr}, + Challenges, Expr, }, }; use bus_mapping::{operation::Target, state_db::EMPTY_CODE_HASH_LE}; @@ -27,7 +27,10 @@ use halo2_proofs::{ }, }; -use super::{rlc, CachedRegion, StoredExpression}; +use super::{ + address_word_to_expr, rlc, AccountAddress, CachedRegion, CellType, MemoryAddress, + StoredExpression, U64Cell, +}; // Max degree allowed in all expressions passing through the ConstraintBuilder. // It aims to cap `extended_k` to 2, which allows constraint degree to 2^2+1, @@ -55,7 +58,7 @@ pub(crate) struct StepStateTransition<F: Field> { pub(crate) call_id: Transition<Expression<F>>, pub(crate) is_root: Transition<Expression<F>>, pub(crate) is_create: Transition<Expression<F>>, - pub(crate) code_hash: Transition<Expression<F>>, + pub(crate) code_hash: Transition<Word<Expression<F>>>, pub(crate) program_counter: Transition<Expression<F>>, pub(crate) stack_pointer: Transition<Expression<F>>, pub(crate) gas_left: Transition<Expression<F>>, @@ -153,6 +156,22 @@ pub(crate) trait ConstrainBuilderCommon<F: Field> { self.add_constraint(name, constraint); } + fn require_zero_word(&mut self, name: &'static str, word: Word<Expression<F>>) { + self.require_equal_word(name, word, Word::zero()); + } + + fn require_equal_word( + &mut self, + name: &'static str, + lhs: Word<Expression<F>>, + rhs: Word<Expression<F>>, + ) { + let (lhs_lo, lhs_hi) = lhs.to_lo_hi(); + let (rhs_lo, rhs_hi) = rhs.to_lo_hi(); + self.add_constraint(name, lhs_lo - rhs_lo); + self.add_constraint(name, lhs_hi - rhs_hi); + } + fn require_equal(&mut self, name: &'static str, lhs: Expression<F>, rhs: Expression<F>) { self.add_constraint(name, lhs - rhs); } @@ -161,6 +180,10 @@ pub(crate) trait ConstrainBuilderCommon<F: Field> { self.add_constraint(name, value.clone() * (1.expr() - value)); } + fn require_true(&mut self, name: &'static str, value: Expression<F>) { + self.require_equal(name, value, 1.expr()); + } + fn require_in_set( &mut self, name: &'static str, @@ -253,7 +276,6 @@ impl<F: Field> BaseConstraintBuilder<F> { enum ConstraintLocation { Step, StepFirst, - StepLast, NotStepLast, } @@ -270,7 +292,6 @@ pub(crate) struct Constraints<F> { } pub(crate) struct EVMConstraintBuilder<'a, F: Field> { - pub max_degree: usize, pub(crate) curr: Step<F>, pub(crate) next: Step<F>, challenges: &'a Challenges<Expression<F>>, @@ -279,12 +300,11 @@ pub(crate) struct EVMConstraintBuilder<'a, F: Field> { rw_counter_offset: Expression<F>, program_counter_offset: usize, stack_pointer_offset: Expression<F>, - log_id_offset: usize, in_next_step: bool, conditions: Vec<Expression<F>>, constraints_location: ConstraintLocation, stored_expressions: Vec<StoredExpression<F>>, - + pub(crate) debug_expressions: Vec<(String, Expression<F>)>, meta: &'a mut ConstraintSystem<F>, } @@ -310,7 +330,6 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { execution_state: ExecutionState, ) -> Self { Self { - max_degree: MAX_DEGREE, curr, next, challenges, @@ -324,12 +343,12 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { rw_counter_offset: 0.expr(), program_counter_offset: 0, stack_pointer_offset: 0.expr(), - log_id_offset: 0, in_next_step: false, conditions: Vec::new(), constraints_location: ConstraintLocation::Step, stored_expressions: Vec::new(), meta, + debug_expressions: Vec::new(), } } @@ -363,10 +382,6 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { ) } - pub(crate) fn get_cs(&'a mut self) -> &'a mut ConstraintSystem<F> { - self.meta - } - pub(crate) fn query_expression<T>(&mut self, f: impl FnMut(&mut VirtualCells<F>) -> T) -> T { query_expression(self.meta, f) } @@ -392,18 +407,10 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { self.rw_counter_offset.clone() } - pub(crate) fn program_counter_offset(&self) -> usize { - self.program_counter_offset - } - pub(crate) fn stack_pointer_offset(&self) -> Expression<F> { self.stack_pointer_offset.clone() } - pub(crate) fn log_id_offset(&self) -> usize { - self.log_id_offset - } - // Query pub(crate) fn copy<E: Expr<F>>(&mut self, value: E) -> Cell<F> { @@ -419,23 +426,46 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { } pub(crate) fn query_byte(&mut self) -> Cell<F> { - self.query_cell_with_type(CellType::LookupByte) + self.query_cell_with_type(CellType::Lookup(Table::U8)) } - pub(crate) fn query_word_rlc<const N: usize>(&mut self) -> RandomLinearCombination<F, N> { - RandomLinearCombination::<F, N>::new(self.query_bytes(), self.challenges.evm_word()) + // default query_word is 2 limbs. Each limb is not guaranteed to be 128 bits. + pub fn query_word_unchecked(&mut self) -> WordCell<F> { + Word::new( + self.query_cells(CellType::StoragePhase1, 2) + .try_into() + .unwrap(), + ) + } + + // query_word32 each limb is 8 bits, and any conversion to smaller limbs inherits the type + // check. + pub(crate) fn query_word32(&mut self) -> Word32Cell<F> { + Word32::new(self.query_bytes()) } pub(crate) fn query_keccak_rlc<const N: usize>(&mut self) -> RandomLinearCombination<F, N> { RandomLinearCombination::<F, N>::new(self.query_bytes(), self.challenges.keccak_input()) } + pub(crate) fn query_u64(&mut self) -> U64Cell<F> { + U64Cell::new(self.query_bytes()) + } + + pub(crate) fn query_account_address(&mut self) -> AccountAddress<F> { + AccountAddress::<F>::new(self.query_bytes()) + } + + pub(crate) fn query_memory_address(&mut self) -> MemoryAddress<F> { + MemoryAddress::<F>::new(self.query_bytes()) + } + pub(crate) fn query_bytes<const N: usize>(&mut self) -> [Cell<F>; N] { - self.query_bytes_dyn(N).try_into().unwrap() + self.query_u8_dyn(N).try_into().unwrap() } - pub(crate) fn query_bytes_dyn(&mut self, count: usize) -> Vec<Cell<F>> { - self.query_cells(CellType::LookupByte, count) + pub(crate) fn query_u8_dyn(&mut self, count: usize) -> Vec<Cell<F>> { + self.query_cells(CellType::Lookup(Table::U8), count) } pub(crate) fn query_cell(&mut self) -> Cell<F> { @@ -454,12 +484,6 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { self.query_cells(cell_type, 1).first().unwrap().clone() } - pub(crate) fn query_bool_with_type(&mut self, cell_type: CellType) -> Cell<F> { - let cell = self.query_cell_with_type(cell_type); - self.require_boolean("Constrain cell to be a bool", cell.expr()); - cell - } - fn query_cells(&mut self, cell_type: CellType, count: usize) -> Vec<Cell<F>> { if self.in_next_step { &mut self.next @@ -470,16 +494,12 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { .query_cells(self.meta, cell_type, count) } - pub(crate) fn word_rlc<const N: usize>(&self, bytes: [Expression<F>; N]) -> Expression<F> { - rlc::expr(&bytes, self.challenges.evm_word()) - } - pub(crate) fn keccak_rlc<const N: usize>(&self, bytes: [Expression<F>; N]) -> Expression<F> { rlc::expr(&bytes, self.challenges.keccak_input()) } - pub(crate) fn empty_code_hash_rlc(&self) -> Expression<F> { - self.word_rlc((*EMPTY_CODE_HASH_LE).map(|byte| byte.expr())) + pub(crate) fn empty_code_hash(&self) -> Word<Expression<F>> { + Word32::new(EMPTY_CODE_HASH_LE.map(|byte| byte.expr())).to_word() } pub(crate) fn require_next_state(&mut self, execution_state: ExecutionState) { @@ -490,11 +510,6 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { ); } - pub(crate) fn require_next_state_not(&mut self, execution_state: ExecutionState) { - let next_state = self.next.execution_state_selector([execution_state]); - self.add_constraint("Constrain next execution state not", next_state.expr()); - } - pub(crate) fn require_step_state_transition( &mut self, step_state_transition: StepStateTransition<F>, @@ -522,11 +537,29 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { }; } + macro_rules! constrain_word { + ($name:tt) => { + match step_state_transition.$name { + Transition::Same => self.require_equal_word( + concat!("State transition (same) constraint of ", stringify!($name)), + self.next.state.$name.to_word(), + self.curr.state.$name.to_word(), + ), + Transition::To(to) => self.require_equal_word( + concat!("State transition (to) constraint of ", stringify!($name)), + self.next.state.$name.to_word(), + to, + ), + _ => {} + } + }; + } + constrain!(rw_counter); constrain!(call_id); constrain!(is_root); constrain!(is_create); - constrain!(code_hash); + constrain_word!(code_hash); constrain!(program_counter); constrain!(stack_pointer); constrain!(gas_left); @@ -590,7 +623,7 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { self.add_lookup( "Opcode lookup", Lookup::Bytecode { - hash: self.curr.state.code_hash.expr(), + hash: self.curr.state.code_hash.to_word(), tag: BytecodeFieldTag::Byte.expr(), index, is_code, @@ -600,11 +633,9 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { ); } - // Bytecode table - pub(crate) fn bytecode_lookup( &mut self, - code_hash: Expression<F>, + code_hash: Word<Expression<F>>, index: Expression<F>, is_code: Expression<F>, value: Expression<F>, @@ -621,7 +652,7 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { ) } - pub(crate) fn bytecode_length(&mut self, code_hash: Expression<F>, value: Expression<F>) { + pub(crate) fn bytecode_length(&mut self, code_hash: Word<Expression<F>>, value: Expression<F>) { self.add_lookup( "Bytecode (length)", Lookup::Bytecode { @@ -643,18 +674,29 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { index: Option<Expression<F>>, ) -> Cell<F> { let cell = self.query_cell(); - self.tx_context_lookup(id, field_tag, index, cell.expr()); + // lookup read, unchecked is safe + self.tx_context_lookup(id, field_tag, index, Word::from_lo_unchecked(cell.expr())); cell } + pub(crate) fn tx_context_as_word32( + &mut self, + id: Expression<F>, + field_tag: TxContextFieldTag, + index: Option<Expression<F>>, + ) -> Word32Cell<F> { + let word = self.query_word32(); + self.tx_context_lookup(id, field_tag, index, word.to_word()); + word + } pub(crate) fn tx_context_as_word( &mut self, id: Expression<F>, field_tag: TxContextFieldTag, index: Option<Expression<F>>, - ) -> Word<F> { - let word = self.query_word_rlc(); - self.tx_context_lookup(id, field_tag, index, word.expr()); + ) -> WordCell<F> { + let word = self.query_word_unchecked(); + self.tx_context_lookup(id, field_tag, index, word.to_word()); word } @@ -663,7 +705,7 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { id: Expression<F>, field_tag: TxContextFieldTag, index: Option<Expression<F>>, - value: Expression<F>, + value: Word<Expression<F>>, ) { self.add_lookup( "Tx lookup", @@ -681,7 +723,7 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { &mut self, tag: Expression<F>, number: Option<Expression<F>>, - val: Expression<F>, + val: Word<Expression<F>>, ) { self.add_lookup( "Block lookup", @@ -772,22 +814,17 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { reversion_info.rw_counter_of_reversion(reversible_write_counter_inc_selector), true.expr(), tag, - RwValues { - value_prev: values.value, - value: values.value_prev, - ..values - }, + values.revert_value(), ) }); } } // Access list - - pub(crate) fn account_access_list_write( + pub(crate) fn account_access_list_write_unchecked( &mut self, tx_id: Expression<F>, - account_address: Expression<F>, + account_address: Word<Expression<F>>, value: Expression<F>, value_prev: Expression<F>, reversion_info: Option<&mut ReversionInfo<F>>, @@ -797,13 +834,12 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { Target::TxAccessListAccount, RwValues::new( tx_id, - account_address, - 0.expr(), - 0.expr(), - value, - value_prev, - 0.expr(), + address_word_to_expr(account_address), 0.expr(), + Word::zero(), + Word::from_lo_unchecked(value), + Word::from_lo_unchecked(value_prev), + Word::zero(), ), reversion_info, ); @@ -812,7 +848,7 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { pub(crate) fn account_access_list_read( &mut self, tx_id: Expression<F>, - account_address: Expression<F>, + account_address: Word<Expression<F>>, value: Expression<F>, ) { self.rw_lookup( @@ -821,24 +857,22 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { Target::TxAccessListAccount, RwValues::new( tx_id, - account_address, - 0.expr(), - 0.expr(), - value.clone(), - value, - 0.expr(), + address_word_to_expr(account_address), 0.expr(), + Word::zero(), + Word::from_lo_unchecked(value.clone()), + Word::from_lo_unchecked(value), + Word::zero(), ), ); } - pub(crate) fn account_storage_access_list_write( &mut self, tx_id: Expression<F>, - account_address: Expression<F>, - storage_key: Expression<F>, - value: Expression<F>, - value_prev: Expression<F>, + account_address: Word<Expression<F>>, + storage_key: Word<Expression<F>>, + value: Word<Expression<F>>, + value_prev: Word<Expression<F>>, reversion_info: Option<&mut ReversionInfo<F>>, ) { self.reversible_write( @@ -846,13 +880,12 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { Target::TxAccessListAccountStorage, RwValues::new( tx_id, - account_address, + address_word_to_expr(account_address), 0.expr(), storage_key, value, value_prev, - 0.expr(), - 0.expr(), + Word::zero(), ), reversion_info, ); @@ -861,9 +894,9 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { pub(crate) fn account_storage_access_list_read( &mut self, tx_id: Expression<F>, - account_address: Expression<F>, - storage_key: Expression<F>, - value: Expression<F>, + account_address: Word<Expression<F>>, + storage_key: Word<Expression<F>>, + value: Word<Expression<F>>, ) { self.rw_lookup( "TxAccessListAccountStorage read", @@ -871,20 +904,19 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { Target::TxAccessListAccountStorage, RwValues::new( tx_id, - account_address, + address_word_to_expr(account_address), 0.expr(), storage_key, value.clone(), value, - 0.expr(), - 0.expr(), + Word::zero(), ), ); } // Tx Refund - pub(crate) fn tx_refund_read(&mut self, tx_id: Expression<F>, value: Expression<F>) { + pub(crate) fn tx_refund_read(&mut self, tx_id: Expression<F>, value: Word<Expression<F>>) { self.rw_lookup( "TxRefund read", false.expr(), @@ -893,11 +925,10 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { tx_id, 0.expr(), 0.expr(), - 0.expr(), + Word::zero(), value.clone(), value, - 0.expr(), - 0.expr(), + Word::zero(), ), ); } @@ -905,8 +936,8 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { pub(crate) fn tx_refund_write( &mut self, tx_id: Expression<F>, - value: Expression<F>, - value_prev: Expression<F>, + value: Word<Expression<F>>, + value_prev: Word<Expression<F>>, reversion_info: Option<&mut ReversionInfo<F>>, ) { self.reversible_write( @@ -916,23 +947,21 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { tx_id, 0.expr(), 0.expr(), - 0.expr(), + Word::zero(), value, value_prev, - 0.expr(), - 0.expr(), + Word::zero(), ), reversion_info, ); } // Account - pub(crate) fn account_read( &mut self, - account_address: Expression<F>, + account_address: Word<Expression<F>>, field_tag: AccountFieldTag, - value: Expression<F>, + value: Word<Expression<F>>, ) { self.rw_lookup( "Account read", @@ -940,23 +969,22 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { Target::Account, RwValues::new( 0.expr(), - account_address, + address_word_to_expr(account_address), field_tag.expr(), - 0.expr(), + Word::zero(), value.clone(), value, - 0.expr(), - 0.expr(), + Word::zero(), ), ); } pub(crate) fn account_write( &mut self, - account_address: Expression<F>, + account_address: Word<Expression<F>>, field_tag: AccountFieldTag, - value: Expression<F>, - value_prev: Expression<F>, + value: Word<Expression<F>>, + value_prev: Word<Expression<F>>, reversion_info: Option<&mut ReversionInfo<F>>, ) { self.reversible_write( @@ -964,27 +992,25 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { Target::Account, RwValues::new( 0.expr(), - account_address, + address_word_to_expr(account_address), field_tag.expr(), - 0.expr(), + Word::zero(), value, value_prev, - 0.expr(), - 0.expr(), + Word::zero(), ), reversion_info, ); } // Account Storage - pub(crate) fn account_storage_read( &mut self, - account_address: Expression<F>, - key: Expression<F>, - value: Expression<F>, + account_address: Word<Expression<F>>, + key: Word<Expression<F>>, + value: Word<Expression<F>>, tx_id: Expression<F>, - committed_value: Expression<F>, + committed_value: Word<Expression<F>>, ) { self.rw_lookup( "account_storage_read", @@ -992,12 +1018,11 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { Target::Storage, RwValues::new( tx_id, - account_address, + address_word_to_expr(account_address), 0.expr(), key, value.clone(), value, - 0.expr(), committed_value, ), ); @@ -1006,12 +1031,12 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { #[allow(clippy::too_many_arguments)] pub(crate) fn account_storage_write( &mut self, - account_address: Expression<F>, - key: Expression<F>, - value: Expression<F>, - value_prev: Expression<F>, + account_address: Word<Expression<F>>, + key: Word<Expression<F>>, + value: Word<Expression<F>>, + value_prev: Word<Expression<F>>, tx_id: Expression<F>, - committed_value: Expression<F>, + committed_value: Word<Expression<F>>, reversion_info: Option<&mut ReversionInfo<F>>, ) { self.reversible_write( @@ -1019,12 +1044,11 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { Target::Storage, RwValues::new( tx_id, - account_address, + address_word_to_expr(account_address), 0.expr(), key, value, value_prev, - 0.expr(), committed_value, ), reversion_info, @@ -1043,40 +1067,64 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { _ => CellType::StoragePhase1, }; let cell = self.query_cell_with_type(phase); - self.call_context_lookup(false.expr(), call_id, field_tag, cell.expr()); + self.call_context_lookup_read( + call_id, + field_tag, + Word::from_lo_unchecked(cell.expr()), // lookup read, unchecked is safe + ); cell } - pub(crate) fn call_context_as_word( + pub(crate) fn call_context_read_as_word( &mut self, call_id: Option<Expression<F>>, field_tag: CallContextFieldTag, - ) -> Word<F> { - let word = self.query_word_rlc(); - self.call_context_lookup(false.expr(), call_id, field_tag, word.expr()); + ) -> Word<Cell<F>> { + let word = self.query_word_unchecked(); + self.call_context_lookup_read(call_id, field_tag, word.to_word()); word } - pub(crate) fn call_context_lookup( + pub(crate) fn call_context_lookup_read( &mut self, - is_write: Expression<F>, call_id: Option<Expression<F>>, field_tag: CallContextFieldTag, - value: Expression<F>, + value: Word<Expression<F>>, ) { self.rw_lookup( "CallContext lookup", - is_write, + 0.expr(), Target::CallContext, RwValues::new( call_id.unwrap_or_else(|| self.curr.state.call_id.expr()), 0.expr(), field_tag.expr(), - 0.expr(), + Word::zero(), value, + Word::zero(), + Word::zero(), + ), + ); + } + + pub(crate) fn call_context_lookup_write( + &mut self, + call_id: Option<Expression<F>>, + field_tag: CallContextFieldTag, + value: Word<Expression<F>>, + ) { + self.rw_lookup( + "CallContext lookup", + 1.expr(), + Target::CallContext, + RwValues::new( + call_id.unwrap_or_else(|| self.curr.state.call_id.expr()), 0.expr(), - 0.expr(), - 0.expr(), + field_tag.expr(), + Word::zero(), + value, + Word::zero(), + Word::zero(), ), ); } @@ -1092,7 +1140,20 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { ] .map(|field_tag| { let cell = self.query_cell(); - self.call_context_lookup(is_write.expr(), call_id.clone(), field_tag, cell.expr()); + if is_write { + self.call_context_lookup_write( + call_id.clone(), + field_tag, + Word::from_lo_unchecked(cell.expr()), + ); + } else { + self.call_context_lookup_read( + call_id.clone(), + field_tag, + Word::from_lo_unchecked(cell.expr()), + ); + } + cell }); @@ -1114,7 +1175,7 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { self.reversion_info(call_id, false) } - pub(crate) fn reversion_info_write( + pub(crate) fn reversion_info_write_unchecked( &mut self, call_id: Option<Expression<F>>, ) -> ReversionInfo<F> { @@ -1122,13 +1183,12 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { } // Stack - - pub(crate) fn stack_pop(&mut self, value: Expression<F>) { + pub(crate) fn stack_pop(&mut self, value: Word<Expression<F>>) { self.stack_lookup(false.expr(), self.stack_pointer_offset.clone(), value); self.stack_pointer_offset = self.stack_pointer_offset.clone() + self.condition_expr(); } - pub(crate) fn stack_push(&mut self, value: Expression<F>) { + pub(crate) fn stack_push(&mut self, value: Word<Expression<F>>) { self.stack_pointer_offset = self.stack_pointer_offset.clone() - self.condition_expr(); self.stack_lookup(true.expr(), self.stack_pointer_offset.expr(), value); } @@ -1137,7 +1197,7 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { &mut self, is_write: Expression<F>, stack_pointer_offset: Expression<F>, - value: Expression<F>, + value: Word<Expression<F>>, ) { self.rw_lookup( "Stack lookup", @@ -1147,11 +1207,10 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { self.curr.state.call_id.expr(), self.curr.state.stack_pointer.expr() + stack_pointer_offset, 0.expr(), - 0.expr(), + Word::zero(), value, - 0.expr(), - 0.expr(), - 0.expr(), + Word::zero(), + Word::zero(), ), ); } @@ -1173,11 +1232,11 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { call_id.unwrap_or_else(|| self.curr.state.call_id.expr()), memory_address, 0.expr(), - 0.expr(), - byte, - 0.expr(), - 0.expr(), - 0.expr(), + Word::zero(), + // TODO assure range check since write=true also possible + Word::from_lo_unchecked(byte), + Word::zero(), + Word::zero(), ), ); } @@ -1188,7 +1247,7 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { log_id: Expression<F>, field_tag: TxLogFieldTag, index: Expression<F>, - value: Expression<F>, + value: Word<Expression<F>>, ) { self.rw_lookup( "log data lookup", @@ -1198,17 +1257,15 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { tx_id, build_tx_log_expression(index, field_tag.expr(), log_id), 0.expr(), - 0.expr(), + Word::zero(), value, - 0.expr(), - 0.expr(), - 0.expr(), + Word::zero(), + Word::zero(), ), ); } // Tx Receipt - pub(crate) fn tx_receipt_lookup( &mut self, is_write: Expression<F>, @@ -1224,11 +1281,11 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { tx_id, 0.expr(), tag.expr(), - 0.expr(), - value, - 0.expr(), - 0.expr(), - 0.expr(), + Word::zero(), + // TODO assure range check since write=true also possible + Word::from_lo_unchecked(value), + Word::zero(), + Word::zero(), ), ); } @@ -1241,16 +1298,15 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { counter, 0.expr(), Target::Start, - RwValues { - id: 0.expr(), - address: 0.expr(), - field_tag: 0.expr(), - storage_key: 0.expr(), - value: 0.expr(), - value_prev: 0.expr(), - aux1: 0.expr(), - aux2: 0.expr(), - }, + RwValues::new( + 0.expr(), + 0.expr(), + 0.expr(), + Word::zero(), + Word::zero(), + Word::zero(), + Word::zero(), + ), ); } @@ -1259,9 +1315,9 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { #[allow(clippy::too_many_arguments)] pub(crate) fn copy_table_lookup( &mut self, - src_id: Expression<F>, + src_id: Word<Expression<F>>, src_tag: Expression<F>, - dst_id: Expression<F>, + dst_id: Word<Expression<F>>, dst_tag: Expression<F>, src_addr: Expression<F>, src_addr_end: Expression<F>, @@ -1314,19 +1370,18 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { } // Keccak Table - pub(crate) fn keccak_table_lookup( &mut self, input_rlc: Expression<F>, input_len: Expression<F>, - output_rlc: Expression<F>, + output: Word<Expression<F>>, ) { self.add_lookup( "keccak lookup", Lookup::KeccakTable { input_rlc, input_len, - output_rlc, + output, }, ); } @@ -1359,32 +1414,6 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { ret } - /// This function needs to be used with extra precaution. You need to make - /// sure the layout is the same as the gadget for `next_step_state`. - /// `query_cell` will return cells in the next step in the `constraint` - /// function. - pub(crate) fn constrain_next_step<R>( - &mut self, - next_step_state: ExecutionState, - condition: Option<Expression<F>>, - constraint: impl FnOnce(&mut Self) -> R, - ) -> R { - assert!(!self.in_next_step, "Already in the next step"); - self.in_next_step = true; - let ret = match condition { - None => { - self.require_next_state(next_step_state); - constraint(self) - } - Some(cond) => self.condition(cond, |cb| { - cb.require_next_state(next_step_state); - constraint(cb) - }), - }; - self.in_next_step = false; - ret - } - /// TODO: Doc fn constraint_at_location<R>( &mut self, @@ -1405,10 +1434,7 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { pub(crate) fn step_first<R>(&mut self, constraint: impl FnOnce(&mut Self) -> R) -> R { self.constraint_at_location(ConstraintLocation::StepFirst, constraint) } - /// TODO: Doc - pub(crate) fn step_last<R>(&mut self, constraint: impl FnOnce(&mut Self) -> R) -> R { - self.constraint_at_location(ConstraintLocation::StepLast, constraint) - } + /// TODO: Doc pub(crate) fn not_step_last<R>(&mut self, constraint: impl FnOnce(&mut Self) -> R) -> R { self.constraint_at_location(ConstraintLocation::NotStepLast, constraint) @@ -1419,7 +1445,6 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { match self.constraints_location { ConstraintLocation::Step => self.constraints.step.push((name, constraint)), ConstraintLocation::StepFirst => self.constraints.step_first.push((name, constraint)), - ConstraintLocation::StepLast => self.constraints.step_last.push((name, constraint)), ConstraintLocation::NotStepLast => { self.constraints.not_step_last.push((name, constraint)) } @@ -1545,4 +1570,8 @@ impl<'a, F: Field> EVMConstraintBuilder<'a, F> { None => 1.expr(), } } + + pub fn debug_expression<S: Into<String>>(&mut self, name: S, expr: Expression<F>) { + self.debug_expressions.push((name.into(), expr)); + } } diff --git a/zkevm-circuits/src/evm_circuit/util/instrumentation.rs b/zkevm-circuits/src/evm_circuit/util/instrumentation.rs index 6edbbf648e..1674fcb636 100644 --- a/zkevm-circuits/src/evm_circuit/util/instrumentation.rs +++ b/zkevm-circuits/src/evm_circuit/util/instrumentation.rs @@ -74,8 +74,11 @@ impl Instrument { CellType::StoragePermutation => { report.storage_perm = data_entry; } - CellType::LookupByte => { - report.byte_lookup = data_entry; + CellType::Lookup(Table::U8) => { + report.u8_lookup = data_entry; + } + CellType::Lookup(Table::U16) => { + report.u16_lookup = data_entry; } CellType::Lookup(Table::Fixed) => { report.fixed_table = data_entry; @@ -117,6 +120,8 @@ pub struct ExecStateReport { pub storage_1: StateReportRow, pub storage_2: StateReportRow, pub storage_perm: StateReportRow, + pub u8_lookup: StateReportRow, + pub u16_lookup: StateReportRow, pub byte_lookup: StateReportRow, pub fixed_table: StateReportRow, pub tx_table: StateReportRow, diff --git a/zkevm-circuits/src/evm_circuit/util/math_gadget.rs b/zkevm-circuits/src/evm_circuit/util/math_gadget.rs index f9e89543d9..c72c3bf632 100644 --- a/zkevm-circuits/src/evm_circuit/util/math_gadget.rs +++ b/zkevm-circuits/src/evm_circuit/util/math_gadget.rs @@ -4,14 +4,14 @@ use halo2_proofs::plonk::Expression; mod abs_word; mod add_words; -mod batched_is_zero; -mod binary_number; mod byte_size; mod cmp_words; mod comparison; mod constant_division; mod is_equal; +mod is_equal_word; mod is_zero; +mod is_zero_word; mod lt; mod lt_word; mod min_max; @@ -32,7 +32,9 @@ pub(crate) use cmp_words::CmpWordsGadget; pub(crate) use comparison::ComparisonGadget; pub(crate) use constant_division::ConstantDivisionGadget; pub(crate) use is_equal::IsEqualGadget; +pub(crate) use is_equal_word::IsEqualWordGadget; pub(crate) use is_zero::IsZeroGadget; +pub(crate) use is_zero_word::IsZeroWordGadget; pub(crate) use lt::LtGadget; pub(crate) use lt_word::LtWordGadget; pub(crate) use min_max::MinMaxGadget; diff --git a/zkevm-circuits/src/evm_circuit/util/math_gadget/abs_word.rs b/zkevm-circuits/src/evm_circuit/util/math_gadget/abs_word.rs index e7bbe5dc8e..119e7d77a2 100644 --- a/zkevm-circuits/src/evm_circuit/util/math_gadget/abs_word.rs +++ b/zkevm-circuits/src/evm_circuit/util/math_gadget/abs_word.rs @@ -1,14 +1,19 @@ use crate::{ - evm_circuit::util::{ - self, - constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, - from_bytes, - math_gadget::*, - CachedRegion, + evm_circuit::{ + param::N_BYTES_WORD, + util::{ + constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, + math_gadget::*, + CachedRegion, + }, + }, + util::{ + word::{Word32Cell, WordExpr}, + Expr, }, - util::Expr, }; use eth_types::{Field, ToLittleEndian, Word}; +use gadgets::util::sum; use halo2_proofs::plonk::Error; /// Construction of 256-bit word original and absolute values, which is useful @@ -19,23 +24,21 @@ use halo2_proofs::plonk::Error; /// (expressed as an U256 of `2^255`). #[derive(Clone, Debug)] pub(crate) struct AbsWordGadget<F> { - x: util::Word<F>, - x_abs: util::Word<F>, - sum: util::Word<F>, + x: Word32Cell<F>, + x_abs: Word32Cell<F>, + sum: Word32Cell<F>, is_neg: LtGadget<F, 1>, add_words: AddWordsGadget<F, 2, false>, } impl<F: Field> AbsWordGadget<F> { pub(crate) fn construct(cb: &mut EVMConstraintBuilder<F>) -> Self { - let x = cb.query_word_rlc(); - let x_abs = cb.query_word_rlc(); - let sum = cb.query_word_rlc(); - let x_lo = from_bytes::expr(&x.cells[0..16]); - let x_hi = from_bytes::expr(&x.cells[16..32]); - let x_abs_lo = from_bytes::expr(&x_abs.cells[0..16]); - let x_abs_hi = from_bytes::expr(&x_abs.cells[16..32]); - let is_neg = LtGadget::construct(cb, 127.expr(), x.cells[31].expr()); + let x = cb.query_word32(); + let x_abs = cb.query_word32(); + let sum = cb.query_word32(); + let (x_lo, x_hi) = x.to_word().to_lo_hi(); + let (x_abs_lo, x_abs_hi) = x_abs.to_word().to_lo_hi(); + let is_neg = LtGadget::construct(cb, 127.expr(), x.limbs[31].expr()); cb.add_constraint( "x_abs_lo == x_lo when x >= 0", @@ -51,7 +54,7 @@ impl<F: Field> AbsWordGadget<F> { let add_words = AddWordsGadget::construct(cb, [x.clone(), x_abs.clone()], sum.clone()); cb.add_constraint( "sum == 0 when x < 0", - is_neg.expr() * add_words.sum().expr(), + is_neg.expr() * sum::expr(add_words.sum().to_word_n::<N_BYTES_WORD>().limbs), ); cb.add_constraint( "carry_hi == 1 when x < 0", @@ -74,9 +77,8 @@ impl<F: Field> AbsWordGadget<F> { x: Word, x_abs: Word, ) -> Result<(), Error> { - self.x.assign(region, offset, Some(x.to_le_bytes()))?; - self.x_abs - .assign(region, offset, Some(x_abs.to_le_bytes()))?; + self.x.assign_u256(region, offset, x)?; + self.x_abs.assign_u256(region, offset, x_abs)?; self.is_neg.assign( region, offset, @@ -84,20 +86,19 @@ impl<F: Field> AbsWordGadget<F> { u64::from(x.to_le_bytes()[31]).into(), )?; let sum = x.overflowing_add(x_abs).0; - self.sum.assign(region, offset, Some(sum.to_le_bytes()))?; + self.sum.assign_u256(region, offset, sum)?; self.add_words.assign(region, offset, [x, x_abs], sum) } - pub(crate) fn x(&self) -> &util::Word<F> { - &self.x + pub(crate) fn is_neg(&self) -> &LtGadget<F, 1> { + &self.is_neg } - pub(crate) fn x_abs(&self) -> &util::Word<F> { - &self.x_abs + pub(crate) fn x(&self) -> &Word32Cell<F> { + &self.x } - - pub(crate) fn is_neg(&self) -> &LtGadget<F, 1> { - &self.is_neg + pub(crate) fn x_abs(&self) -> &Word32Cell<F> { + &self.x_abs } } diff --git a/zkevm-circuits/src/evm_circuit/util/math_gadget/add_words.rs b/zkevm-circuits/src/evm_circuit/util/math_gadget/add_words.rs index 704fd60fef..8ad2e86284 100644 --- a/zkevm-circuits/src/evm_circuit/util/math_gadget/add_words.rs +++ b/zkevm-circuits/src/evm_circuit/util/math_gadget/add_words.rs @@ -2,19 +2,22 @@ use crate::{ evm_circuit::util::{ self, constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, - from_bytes, pow_of_two_expr, split_u256, sum, CachedRegion, Cell, + pow_of_two_expr, split_u256, sum, CachedRegion, Cell, + }, + util::{ + word::{Word32Cell, WordExpr}, + Expr, }, - util::Expr, }; -use eth_types::{Field, ToLittleEndian, ToScalar, Word}; +use eth_types::{Field, ToScalar, Word}; use halo2_proofs::{circuit::Value, plonk::Error}; /// Construction of 2 256-bit words addition and result, which is useful for /// opcode ADD, SUB and balance operation #[derive(Clone, Debug)] pub(crate) struct AddWordsGadget<F, const N_ADDENDS: usize, const CHECK_OVERFLOW: bool> { - addends: [util::Word<F>; N_ADDENDS], - sum: util::Word<F>, + addends: [Word32Cell<F>; N_ADDENDS], + sum: Word32Cell<F>, carry_lo: Cell<F>, carry_hi: Option<Cell<F>>, } @@ -24,8 +27,8 @@ impl<F: Field, const N_ADDENDS: usize, const CHECK_OVERFLOW: bool> { pub(crate) fn construct( cb: &mut EVMConstraintBuilder<F>, - addends: [util::Word<F>; N_ADDENDS], - sum: util::Word<F>, + addends: [Word32Cell<F>; N_ADDENDS], + sum: Word32Cell<F>, ) -> Self { let carry_lo = cb.query_cell(); let carry_hi = if CHECK_OVERFLOW { @@ -36,14 +39,13 @@ impl<F: Field, const N_ADDENDS: usize, const CHECK_OVERFLOW: bool> let addends_lo = &addends .iter() - .map(|addend| from_bytes::expr(&addend.cells[..16])) + .map(|addend| addend.to_word().lo()) .collect::<Vec<_>>(); - let addends_hi = &addends + let addends_hi = addends .iter() - .map(|addend| from_bytes::expr(&addend.cells[16..])) + .map(|addend| addend.to_word().hi()) .collect::<Vec<_>>(); - let sum_lo = from_bytes::expr(&sum.cells[..16]); - let sum_hi = from_bytes::expr(&sum.cells[16..]); + let (sum_lo, sum_hi) = sum.to_word().to_lo_hi(); cb.require_equal( "sum(addends_lo) == sum_lo + carry_lo â‹… 2^128", @@ -92,9 +94,9 @@ impl<F: Field, const N_ADDENDS: usize, const CHECK_OVERFLOW: bool> sum: Word, ) -> Result<(), Error> { for (word, value) in self.addends.iter().zip(addends.iter()) { - word.assign(region, offset, Some(value.to_le_bytes()))?; + word.assign_u256(region, offset, *value)?; } - self.sum.assign(region, offset, Some(sum.to_le_bytes()))?; + self.sum.assign_u256(region, offset, sum)?; let (addends_lo, addends_hi): (Vec<_>, Vec<_>) = addends.iter().map(split_u256).unzip(); let (sum_lo, sum_hi) = split_u256(&sum); @@ -133,11 +135,15 @@ impl<F: Field, const N_ADDENDS: usize, const CHECK_OVERFLOW: bool> Ok(()) } - pub(crate) fn addends(&self) -> &[util::Word<F>] { + #[allow( + dead_code, + reason = "this method is a legit API but is currently only used in the tests" + )] + pub(crate) fn addends(&self) -> &[Word32Cell<F>] { &self.addends } - pub(crate) fn sum(&self) -> &util::Word<F> { + pub(crate) fn sum(&self) -> &Word32Cell<F> { &self.sum } @@ -161,16 +167,16 @@ mod tests { const CHECK_OVERFLOW: bool, > { addwords_gadget: AddWordsGadget<F, N_ADDENDS, CHECK_OVERFLOW>, - addends: [util::Word<F>; N_ADDENDS], - sum: util::Word<F>, + addends: [Word32Cell<F>; N_ADDENDS], + sum: Word32Cell<F>, } impl<F: Field, const N_ADDENDS: usize, const CARRY_HI: u64, const CHECK_OVERFLOW: bool> MathGadgetContainer<F> for AddWordsTestContainer<F, N_ADDENDS, CARRY_HI, CHECK_OVERFLOW> { fn configure_gadget_container(cb: &mut EVMConstraintBuilder<F>) -> Self { - let addends = [(); N_ADDENDS].map(|_| cb.query_word_rlc()); - let sum = cb.query_word_rlc(); + let addends = [(); N_ADDENDS].map(|_| cb.query_word32()); + let sum = cb.query_word32(); let addwords_gadget = AddWordsGadget::<F, N_ADDENDS, CHECK_OVERFLOW>::construct( cb, addends.clone(), @@ -201,10 +207,10 @@ mod tests { let offset = 0; for (i, addend) in self.addends.iter().enumerate() { let a = witnesses[i]; - addend.assign(region, offset, Some(a.to_le_bytes()))?; + addend.assign_u256(region, offset, a)?; } let sum = witnesses[N_ADDENDS]; - self.sum.assign(region, offset, Some(sum.to_le_bytes()))?; + self.sum.assign_u256(region, offset, sum)?; let addends = witnesses[0..N_ADDENDS].try_into().unwrap(); self.addwords_gadget.assign(region, 0, addends, sum)?; diff --git a/zkevm-circuits/src/evm_circuit/util/math_gadget/batched_is_zero.rs b/zkevm-circuits/src/evm_circuit/util/math_gadget/batched_is_zero.rs deleted file mode 100644 index 02c514843a..0000000000 --- a/zkevm-circuits/src/evm_circuit/util/math_gadget/batched_is_zero.rs +++ /dev/null @@ -1,187 +0,0 @@ -use crate::{ - evm_circuit::util::{ - constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, - transpose_val_ret, CachedRegion, Cell, CellType, - }, - util::Expr, -}; -use eth_types::Field; -use halo2_proofs::{ - circuit::Value, - plonk::{Error, Expression}, -}; - -#[derive(Clone, Debug)] -pub struct BatchedIsZeroGadget<F, const N: usize> { - is_zero: Cell<F>, - nonempty_witness: Cell<F>, -} - -impl<F: Field, const N: usize> BatchedIsZeroGadget<F, N> { - pub(crate) fn construct(cb: &mut EVMConstraintBuilder<F>, values: [Expression<F>; N]) -> Self { - let max_values_phase = values - .iter() - .map(CellType::expr_phase) - .max() - .expect("BatchedIsZeroGadget needs at least one expression"); - - let cell_type = CellType::storage_for_phase(max_values_phase); - let is_zero = cb.query_bool_with_type(cell_type); - let nonempty_witness = cb.query_cell_with_type(cell_type); - - for value in values.iter() { - cb.require_zero( - "is_zero is 0 if there is any non-zero value", - is_zero.expr() * value.clone(), - ); - } - - cb.require_zero( - "is_zero is 1 if values are all zero", - values.iter().fold(1.expr() - is_zero.expr(), |acc, value| { - acc * (1.expr() - value.expr() * nonempty_witness.clone().expr()) - }), - ); - - Self { - is_zero, - nonempty_witness, - } - } - - pub(crate) fn expr(&self) -> Expression<F> { - self.is_zero.expr() - } - - pub(crate) fn assign( - &self, - region: &mut CachedRegion<'_, '_, F>, - offset: usize, - values: [F; N], - ) -> Result<F, Error> { - let is_zero = - if let Some(inverse) = values.iter().find_map(|value| Option::from(value.invert())) { - self.nonempty_witness - .assign(region, offset, Value::known(inverse))?; - F::ZERO - } else { - F::ONE - }; - self.is_zero.assign(region, offset, Value::known(is_zero))?; - - Ok(is_zero) - } - - pub(crate) fn assign_value( - &self, - region: &mut CachedRegion<'_, '_, F>, - offset: usize, - values: [Value<F>; N], - ) -> Result<Value<F>, Error> { - let values: Value<[F; N]> = - Value::<Vec<F>>::from_iter(values).map(|vv| vv.try_into().unwrap()); - transpose_val_ret(values.map(|values| self.assign(region, offset, values))) - } -} - -#[cfg(test)] -mod tests { - use super::{super::test_util::*, *}; - use eth_types::*; - use halo2_proofs::{halo2curves::bn256::Fr, plonk::Error}; - - #[derive(Clone)] - /// IsZeroGadgetTestContainer: require(all(cells) == 0) - struct IsZeroGadgetTestContainer<F, const N: usize> { - z_gadget: BatchedIsZeroGadget<F, N>, - nums: [Cell<F>; N], - } - - impl<F: Field, const N: usize> MathGadgetContainer<F> for IsZeroGadgetTestContainer<F, N> { - fn configure_gadget_container(cb: &mut EVMConstraintBuilder<F>) -> Self { - let nums = [(); N].map(|_| cb.query_cell()); - let z_gadget = BatchedIsZeroGadget::<F, N>::construct( - cb, - nums.iter() - .map(|cell| cell.expr()) - .collect::<Vec<Expression<F>>>() - .try_into() - .unwrap(), - ); - cb.require_equal("Input must be all 0", z_gadget.expr(), 1.expr()); - IsZeroGadgetTestContainer { z_gadget, nums } - } - - fn assign_gadget_container( - &self, - witnesses: &[Word], - region: &mut CachedRegion<'_, '_, F>, - ) -> Result<(), Error> { - let values = witnesses - .iter() - .map(|num| num.to_scalar().unwrap()) - .collect::<Vec<F>>(); - let offset = 0; - - for (i, num) in self.nums.iter().enumerate() { - num.assign(region, offset, Value::known(values[i]))?; - } - self.z_gadget - .assign(region, offset, values.try_into().unwrap())?; - - Ok(()) - } - } - - #[test] - fn test_batched_iszero() { - try_test!(IsZeroGadgetTestContainer<Fr, 5>, [Word::from(0); 5], true); - } - - #[test] - fn test_batched_1_in_array_not_iszero() { - try_test!( - IsZeroGadgetTestContainer<Fr, 5>, - vec![ - Word::from(0), - Word::from(1), - Word::from(0), - Word::from(0), - Word::from(0), - ], - false - ); - } - - #[test] - fn test_batched_big_array_not_iszero() { - let mut test_nums = vec![Word::from(1)]; - test_nums.extend(vec![Word::from(0); 31]); - try_test!(IsZeroGadgetTestContainer<Fr, 32>, test_nums, false); - } - - #[test] - fn test_batched_single_cell_iszero() { - try_test!(IsZeroGadgetTestContainer<Fr, 1>, [Word::from(0)], true); - } - - #[test] - fn test_batched_single_cell_not_iszero() { - try_test!(IsZeroGadgetTestContainer<Fr, 1>, vec![WORD_LOW_MAX], false); - } - - #[test] - fn test_batched_wordmax_bytes_not_iszero() { - try_test!( - IsZeroGadgetTestContainer<Fr, 5>, - vec![ - WORD_LOW_MAX, - WORD_LOW_MAX, - WORD_LOW_MAX, - WORD_LOW_MAX, - WORD_LOW_MAX, - ], - false - ); - } -} diff --git a/zkevm-circuits/src/evm_circuit/util/math_gadget/binary_number.rs b/zkevm-circuits/src/evm_circuit/util/math_gadget/binary_number.rs deleted file mode 100644 index d872bfc6b7..0000000000 --- a/zkevm-circuits/src/evm_circuit/util/math_gadget/binary_number.rs +++ /dev/null @@ -1,68 +0,0 @@ -use eth_types::Field; -use gadgets::{binary_number::AsBits, util::Expr}; -use halo2_proofs::{ - circuit::Value, - plonk::{Error, Expression}, -}; - -use crate::evm_circuit::util::{ - constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, - CachedRegion, Cell, -}; - -#[derive(Clone, Debug)] -pub struct BinaryNumberGadget<F, const N: usize> { - bits: [Cell<F>; N], -} - -impl<F: Field, const N: usize> BinaryNumberGadget<F, N> { - pub(crate) fn construct(cb: &mut EVMConstraintBuilder<F>, value: Expression<F>) -> Self { - let bits = array_init::array_init(|_| cb.query_bool()); - - // the binary representation of value must be correct. - cb.require_equal( - "binary representation of value should be correct", - value, - bits.iter() - .fold(0.expr(), |res, bit| bit.expr() + res * 2.expr()), - ); - - Self { bits } - } - - pub(crate) fn assign<T>( - &self, - region: &mut CachedRegion<'_, '_, F>, - offset: usize, - value: T, - ) -> Result<(), Error> - where - T: AsBits<N>, - { - for (c, v) in self.bits.iter().zip(value.as_bits().iter()) { - c.assign(region, offset, Value::known(F::from(*v as u64)))?; - } - Ok(()) - } - - pub(crate) fn value(&self) -> Expression<F> { - self.bits - .iter() - .fold(0.expr(), |res, bit| bit.expr() + res * 2.expr()) - } - - pub(crate) fn value_equals<T>(&self, other: T) -> Expression<F> - where - T: AsBits<N>, - { - gadgets::util::and::expr(other.as_bits().iter().zip(self.bits.iter()).map( - |(other_bit, self_bit)| { - if *other_bit { - self_bit.expr() - } else { - gadgets::util::not::expr(self_bit.expr()) - } - }, - )) - } -} diff --git a/zkevm-circuits/src/evm_circuit/util/math_gadget/byte_size.rs b/zkevm-circuits/src/evm_circuit/util/math_gadget/byte_size.rs index e57dbaade3..1d82f26f0d 100644 --- a/zkevm-circuits/src/evm_circuit/util/math_gadget/byte_size.rs +++ b/zkevm-circuits/src/evm_circuit/util/math_gadget/byte_size.rs @@ -114,7 +114,7 @@ impl<F: Field> ByteSizeGadget<F> { #[cfg(test)] mod tests { use super::{super::test_util::*, *}; - use crate::evm_circuit::util; + use crate::util::word::Word32Cell; use eth_types::Word; use halo2_proofs::{halo2curves::bn256::Fr, plonk::Error}; @@ -122,22 +122,14 @@ mod tests { /// ByteSizeGadgetContainer: require(N = byte_size(a)) struct ByteSizeGadgetContainer<F, const N: u8> { bytesize_gadget: ByteSizeGadget<F>, - a: util::Word<F>, + a: Word32Cell<F>, } impl<F: Field, const N: u8> MathGadgetContainer<F> for ByteSizeGadgetContainer<F, N> { fn configure_gadget_container(cb: &mut EVMConstraintBuilder<F>) -> Self { - let value_rlc = cb.query_word_rlc(); - let bytesize_gadget = ByteSizeGadget::<F>::construct( - cb, - value_rlc - .cells - .iter() - .map(Expr::expr) - .collect::<Vec<_>>() - .try_into() - .unwrap(), - ); + let value_word32 = cb.query_word32(); + let bytesize_gadget = + ByteSizeGadget::<F>::construct(cb, value_word32.to_word_n().limbs); cb.require_equal( "byte size gadget must equal N", bytesize_gadget.byte_size(), @@ -145,7 +137,7 @@ mod tests { ); ByteSizeGadgetContainer { bytesize_gadget, - a: value_rlc, + a: value_word32, } } @@ -156,7 +148,7 @@ mod tests { ) -> Result<(), Error> { let offset = 0; let x = witnesses[0]; - self.a.assign(region, offset, Some(x.to_le_bytes()))?; + self.a.assign_u256(region, offset, x)?; self.bytesize_gadget.assign(region, offset, x)?; Ok(()) diff --git a/zkevm-circuits/src/evm_circuit/util/math_gadget/cmp_words.rs b/zkevm-circuits/src/evm_circuit/util/math_gadget/cmp_words.rs index 1a6f657bf1..ed170d9c64 100644 --- a/zkevm-circuits/src/evm_circuit/util/math_gadget/cmp_words.rs +++ b/zkevm-circuits/src/evm_circuit/util/math_gadget/cmp_words.rs @@ -1,48 +1,40 @@ +use std::marker::PhantomData; + use crate::{ evm_circuit::util::{ - self, constraint_builder::EVMConstraintBuilder, from_bytes, math_gadget::*, select, - CachedRegion, + constraint_builder::EVMConstraintBuilder, from_bytes, math_gadget::*, select, CachedRegion, }, - util::Expr, + util::{word::WordExpr, Expr}, }; use eth_types::{Field, ToLittleEndian, Word}; use halo2_proofs::plonk::{Error, Expression}; #[derive(Clone, Debug)] /// CmpWordsGadget compares two words, exposing `eq` and `lt` -pub(crate) struct CmpWordsGadget<F> { +pub(crate) struct CmpWordsGadget<F, T1, T2> { comparison_lo: ComparisonGadget<F, 16>, comparison_hi: ComparisonGadget<F, 16>, pub eq: Expression<F>, pub lt: Expression<F>, + _marker: PhantomData<(T1, T2)>, } -impl<F: Field> CmpWordsGadget<F> { - pub(crate) fn construct( - cb: &mut EVMConstraintBuilder<F>, - a: &util::Word<F>, - b: &util::Word<F>, - ) -> Self { - // `a[0..16] <= b[0..16]` - let comparison_lo = ComparisonGadget::construct( - cb, - from_bytes::expr(&a.cells[0..16]), - from_bytes::expr(&b.cells[0..16]), - ); +impl<F: Field, T1: WordExpr<F>, T2: WordExpr<F>> CmpWordsGadget<F, T1, T2> { + pub(crate) fn construct(cb: &mut EVMConstraintBuilder<F>, a: T1, b: T2) -> Self { + let (a_lo, a_hi) = a.to_word().to_lo_hi(); + let (b_lo, b_hi) = b.to_word().to_lo_hi(); + // `a.lo <= b.lo` + let comparison_lo = ComparisonGadget::construct(cb, a_lo, b_lo); let (lt_lo, eq_lo) = comparison_lo.expr(); - // `a[16..32] <= b[16..32]` - let comparison_hi = ComparisonGadget::construct( - cb, - from_bytes::expr(&a.cells[16..32]), - from_bytes::expr(&b.cells[16..32]), - ); + // `a.hi <= b.hi` + let comparison_hi = ComparisonGadget::construct(cb, a_hi, b_hi); let (lt_hi, eq_hi) = comparison_hi.expr(); // `a < b` when: - // - `a[16..32] < b[16..32]` OR - // - `a[16..32] == b[16..32]` AND `a[0..16] < b[0..16]` + // - `a.hi < b.hi` OR + // - `a.hi == b.hi` AND `a.lo < b.lo` let lt = select::expr(lt_hi, 1.expr(), eq_hi.clone() * lt_lo); // `a == b` when both parts are equal @@ -53,6 +45,7 @@ impl<F: Field> CmpWordsGadget<F> { comparison_hi, lt, eq, + _marker: Default::default(), } } @@ -86,25 +79,28 @@ impl<F: Field> CmpWordsGadget<F> { #[cfg(test)] mod tests { use super::{test_util::*, *}; - use crate::evm_circuit::util::constraint_builder::ConstrainBuilderCommon; + use crate::{ + evm_circuit::util::constraint_builder::ConstrainBuilderCommon, util::word::WordCell, + }; use eth_types::Word; use halo2_proofs::{halo2curves::bn256::Fr, plonk::Error}; #[derive(Clone)] /// CmpWordGadgetTestContainer: require(a == b if CHECK_EQ else a < b) struct CmpWordGadgetTestContainer<F, const CHECK_EQ: bool> { - cmp_gadget: CmpWordsGadget<F>, - a: util::Word<F>, - b: util::Word<F>, + cmp_gadget: CmpWordsGadget<F, WordCell<F>, WordCell<F>>, + a_word: WordCell<F>, + b_word: WordCell<F>, } impl<F: Field, const CHECK_EQ: bool> MathGadgetContainer<F> for CmpWordGadgetTestContainer<F, CHECK_EQ> { fn configure_gadget_container(cb: &mut EVMConstraintBuilder<F>) -> Self { - let a = cb.query_word_rlc(); - let b = cb.query_word_rlc(); - let cmp_gadget = CmpWordsGadget::<F>::construct(cb, &a, &b); + let a_word = cb.query_word_unchecked(); + let b_word = cb.query_word_unchecked(); + + let cmp_gadget = CmpWordsGadget::construct(cb, a_word.clone(), b_word.clone()); cb.require_equal( "(a < b) * (a == b) == 0", cmp_gadget.eq.clone() * cmp_gadget.lt.clone(), @@ -117,7 +113,11 @@ mod tests { cb.require_equal("a < b", cmp_gadget.lt.clone(), 1.expr()); } - CmpWordGadgetTestContainer { cmp_gadget, a, b } + CmpWordGadgetTestContainer { + cmp_gadget, + a_word, + b_word, + } } fn assign_gadget_container( @@ -129,8 +129,8 @@ mod tests { let b = witnesses[1]; let offset = 0; - self.a.assign(region, offset, Some(a.to_le_bytes()))?; - self.b.assign(region, offset, Some(b.to_le_bytes()))?; + self.a_word.assign_u256(region, offset, a)?; + self.b_word.assign_u256(region, offset, b)?; self.cmp_gadget.assign(region, offset, a, b)?; Ok(()) } diff --git a/zkevm-circuits/src/evm_circuit/util/math_gadget/constant_division.rs b/zkevm-circuits/src/evm_circuit/util/math_gadget/constant_division.rs index 838cc585c2..dff6e51a6b 100644 --- a/zkevm-circuits/src/evm_circuit/util/math_gadget/constant_division.rs +++ b/zkevm-circuits/src/evm_circuit/util/math_gadget/constant_division.rs @@ -2,7 +2,7 @@ use crate::{ evm_circuit::util::{ constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, math_gadget::*, - transpose_val_ret, CachedRegion, Cell, CellType, + CachedRegion, Cell, CellType, }, util::Expr, }; @@ -59,7 +59,7 @@ impl<F: Field, const N_BYTES: usize> ConstantDivisionGadget<F, N_BYTES> { pub(crate) fn quotient(&self) -> Expression<F> { self.quotient.expr() } - + #[allow(dead_code, reason = "remainder is a valid API but only used in tests")] pub(crate) fn remainder(&self) -> Expression<F> { self.remainder.expr() } @@ -84,17 +84,6 @@ impl<F: Field, const N_BYTES: usize> ConstantDivisionGadget<F, N_BYTES> { Ok((quotient, remainder)) } - - pub(crate) fn assign_value( - &self, - region: &mut CachedRegion<'_, '_, F>, - offset: usize, - numerator: Value<F>, - ) -> Result<Value<(u128, u128)>, Error> { - transpose_val_ret( - numerator.map(|numerator| self.assign(region, offset, numerator.get_lower_128())), - ) - } } #[cfg(test)] @@ -132,7 +121,7 @@ mod tests { ConstantDivisionGadget::<F, N_BYTES>::construct(cb, a.expr(), DENOMINATOR); cb.require_equal( - "correct reminder", + "correct remainder", constdiv_gadget.remainder(), REMAINDER.expr(), ); diff --git a/zkevm-circuits/src/evm_circuit/util/math_gadget/is_equal.rs b/zkevm-circuits/src/evm_circuit/util/math_gadget/is_equal.rs index 1c472181c6..f0ddb64048 100644 --- a/zkevm-circuits/src/evm_circuit/util/math_gadget/is_equal.rs +++ b/zkevm-circuits/src/evm_circuit/util/math_gadget/is_equal.rs @@ -1,11 +1,8 @@ use crate::evm_circuit::util::{ - constraint_builder::EVMConstraintBuilder, math_gadget::*, transpose_val_ret, CachedRegion, + constraint_builder::EVMConstraintBuilder, math_gadget::*, CachedRegion, }; use eth_types::Field; -use halo2_proofs::{ - circuit::Value, - plonk::{Error, Expression}, -}; +use halo2_proofs::plonk::{Error, Expression}; /// Returns `1` when `lhs == rhs`, and returns `0` otherwise. #[derive(Clone, Debug)] @@ -37,19 +34,6 @@ impl<F: Field> IsEqualGadget<F> { ) -> Result<F, Error> { self.is_zero.assign(region, offset, lhs - rhs) } - - pub(crate) fn assign_value( - &self, - region: &mut CachedRegion<'_, '_, F>, - offset: usize, - lhs: Value<F>, - rhs: Value<F>, - ) -> Result<Value<F>, Error> { - transpose_val_ret( - lhs.zip(rhs) - .map(|(lhs, rhs)| self.assign(region, offset, lhs, rhs)), - ) - } } #[cfg(test)] diff --git a/zkevm-circuits/src/evm_circuit/util/math_gadget/is_equal_word.rs b/zkevm-circuits/src/evm_circuit/util/math_gadget/is_equal_word.rs new file mode 100644 index 0000000000..5109d47061 --- /dev/null +++ b/zkevm-circuits/src/evm_circuit/util/math_gadget/is_equal_word.rs @@ -0,0 +1,83 @@ +use std::marker::PhantomData; + +use eth_types::Field; +use gadgets::util::and; +use halo2_proofs::{ + circuit::Value, + plonk::{Error, Expression}, +}; + +use crate::{ + evm_circuit::util::{ + constraint_builder::EVMConstraintBuilder, transpose_val_ret, CachedRegion, + }, + util::word::{Word, WordExpr}, +}; + +use super::IsZeroGadget; + +/// Returns `1` when `lhs == rhs`, and returns `0` otherwise. +#[derive(Clone, Debug)] +pub struct IsEqualWordGadget<F, T1, T2> { + is_zero_lo: IsZeroGadget<F>, + is_zero_hi: IsZeroGadget<F>, + _marker: PhantomData<(T1, T2)>, +} + +impl<F: Field, T1: WordExpr<F>, T2: WordExpr<F>> IsEqualWordGadget<F, T1, T2> { + pub(crate) fn construct(cb: &mut EVMConstraintBuilder<F>, lhs: &T1, rhs: &T2) -> Self { + let (lhs_lo, lhs_hi) = lhs.to_word().to_lo_hi(); + let (rhs_lo, rhs_hi) = rhs.to_word().to_lo_hi(); + let is_zero_lo = IsZeroGadget::construct(cb, lhs_lo - rhs_lo); + let is_zero_hi = IsZeroGadget::construct(cb, lhs_hi - rhs_hi); + + Self { + is_zero_lo, + is_zero_hi, + _marker: Default::default(), + } + } + + pub(crate) fn expr(&self) -> Expression<F> { + and::expr([self.is_zero_lo.expr(), self.is_zero_hi.expr()]) + } + + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + lhs: Word<F>, + rhs: Word<F>, + ) -> Result<F, Error> { + let (lhs_lo, lhs_hi) = lhs.to_lo_hi(); + let (rhs_lo, rhs_hi) = rhs.to_lo_hi(); + self.is_zero_lo.assign(region, offset, lhs_lo - rhs_lo)?; + self.is_zero_hi.assign(region, offset, lhs_hi - rhs_hi)?; + Ok(F::from(2)) + } + + pub(crate) fn assign_value( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + lhs: Value<Word<F>>, + rhs: Value<Word<F>>, + ) -> Result<Value<F>, Error> { + transpose_val_ret( + lhs.zip(rhs) + .map(|(lhs, rhs)| self.assign(region, offset, lhs, rhs)), + ) + } + + pub(crate) fn assign_u256( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + lhs: eth_types::Word, + rhs: eth_types::Word, + ) -> Result<F, Error> { + self.assign(region, offset, Word::from(lhs), Word::from(rhs)) + } +} + +// TODO add unittest diff --git a/zkevm-circuits/src/evm_circuit/util/math_gadget/is_zero.rs b/zkevm-circuits/src/evm_circuit/util/math_gadget/is_zero.rs index 9f7d3f252f..5e88655313 100644 --- a/zkevm-circuits/src/evm_circuit/util/math_gadget/is_zero.rs +++ b/zkevm-circuits/src/evm_circuit/util/math_gadget/is_zero.rs @@ -1,7 +1,7 @@ use crate::{ evm_circuit::util::{ constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, - transpose_val_ret, CachedRegion, Cell, CellType, + CachedRegion, Cell, CellType, }, util::Expr, }; @@ -54,15 +54,6 @@ impl<F: Field> IsZeroGadget<F> { F::ZERO }) } - - pub(crate) fn assign_value( - &self, - region: &mut CachedRegion<'_, '_, F>, - offset: usize, - value: Value<F>, - ) -> Result<Value<F>, Error> { - transpose_val_ret(value.map(|value| self.assign(region, offset, value))) - } } #[cfg(test)] diff --git a/zkevm-circuits/src/evm_circuit/util/math_gadget/is_zero_word.rs b/zkevm-circuits/src/evm_circuit/util/math_gadget/is_zero_word.rs new file mode 100644 index 0000000000..f74ccf6a96 --- /dev/null +++ b/zkevm-circuits/src/evm_circuit/util/math_gadget/is_zero_word.rs @@ -0,0 +1,107 @@ +use std::marker::PhantomData; + +use eth_types::Field; +use gadgets::util::{and, Expr}; +use halo2_proofs::{ + circuit::Value, + plonk::{Error, Expression}, +}; + +use crate::{ + evm_circuit::util::{ + constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, + transpose_val_ret, CachedRegion, Cell, CellType, + }, + util::word::{Word, WordExpr}, +}; + +/// Returns `1` when `word == 0`, and returns `0` otherwise. +#[derive(Clone, Debug)] +pub struct IsZeroWordGadget<F, T> { + inverse_lo: Cell<F>, + inverse_hi: Cell<F>, + is_zero: Expression<F>, + _marker: PhantomData<T>, +} + +impl<F: Field, T: WordExpr<F>> IsZeroWordGadget<F, T> { + pub(crate) fn construct(cb: &mut EVMConstraintBuilder<F>, word: &T) -> Self { + let (word_lo, word_hi) = word.to_word().to_lo_hi(); + let inverse_lo = cb.query_cell_with_type(CellType::storage_for_expr(&word_lo)); + let inverse_hi = cb.query_cell_with_type(CellType::storage_for_expr(&word_hi)); + + let is_zero_lo = 1.expr() - (word_lo.clone() * inverse_lo.expr()); + let is_zero_hi = 1.expr() - (word_hi.clone() * inverse_hi.expr()); + // when `value != 0` check `inverse = a.invert()`: value * (1 - value * + // inverse) + cb.add_constraint( + "word_lo â‹… (1 - word_lo â‹… word_lo_inv)", + word_lo * is_zero_lo.clone(), + ); + cb.add_constraint( + "word_hi â‹… (1 - word_hi â‹… word_hi_inv)", + word_hi * is_zero_hi.clone(), + ); + // when `value == 0` check `inverse = 0`: `inverse â‹… (1 - value * + // inverse)` + cb.add_constraint( + "word_lo_inv â‹… (1 - word_lo â‹… word_lo_inv)", + inverse_lo.expr() * is_zero_lo.clone(), + ); + cb.add_constraint( + "word_hi_inv â‹… (1 - word_hi â‹… word_hi_inv)", + inverse_hi.expr() * is_zero_hi.clone(), + ); + + Self { + inverse_lo, + inverse_hi, + is_zero: and::expr([is_zero_lo, is_zero_hi]), + _marker: Default::default(), + } + } + + pub(crate) fn expr(&self) -> Expression<F> { + self.is_zero.clone() + } + + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + value: Word<F>, + ) -> Result<F, Error> { + let (value_lo, value_hi) = value.to_lo_hi(); + let inverse_lo = value_lo.invert().unwrap_or(F::from(0)); + self.inverse_lo + .assign(region, offset, Value::known(inverse_lo))?; + let inverse_hi = value_hi.invert().unwrap_or(F::from(0)); + self.inverse_hi + .assign(region, offset, Value::known(inverse_hi))?; + Ok(if value_lo.is_zero().into() && value_hi.is_zero().into() { + F::from(2) + } else { + F::from(0) + }) + } + + pub(crate) fn assign_u256( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + value: eth_types::Word, + ) -> Result<F, Error> { + self.assign(region, offset, Word::from(value)) + } + + pub(crate) fn assign_value( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + value: Value<Word<F>>, + ) -> Result<Value<F>, Error> { + transpose_val_ret(value.map(|value| self.assign(region, offset, value))) + } +} + +// TODO adding unittest diff --git a/zkevm-circuits/src/evm_circuit/util/math_gadget/lt_word.rs b/zkevm-circuits/src/evm_circuit/util/math_gadget/lt_word.rs index 601d9a88e7..37899253b8 100644 --- a/zkevm-circuits/src/evm_circuit/util/math_gadget/lt_word.rs +++ b/zkevm-circuits/src/evm_circuit/util/math_gadget/lt_word.rs @@ -1,6 +1,8 @@ -use crate::evm_circuit::util::{ - self, constraint_builder::EVMConstraintBuilder, from_bytes, math_gadget::*, split_u256, - CachedRegion, +use crate::{ + evm_circuit::util::{ + constraint_builder::EVMConstraintBuilder, math_gadget::*, split_u256, CachedRegion, + }, + util::word::{self}, }; use eth_types::{Field, Word}; use halo2_proofs::plonk::{Error, Expression}; @@ -14,21 +16,15 @@ pub struct LtWordGadget<F> { } impl<F: Field> LtWordGadget<F> { - pub(crate) fn construct( + pub(crate) fn construct<T: Expr<F> + Clone>( cb: &mut EVMConstraintBuilder<F>, - lhs: &util::Word<F>, - rhs: &util::Word<F>, + lhs: &word::Word<T>, + rhs: &word::Word<T>, ) -> Self { - let comparison_hi = ComparisonGadget::construct( - cb, - from_bytes::expr(&lhs.cells[16..]), - from_bytes::expr(&rhs.cells[16..]), - ); - let lt_lo = LtGadget::construct( - cb, - from_bytes::expr(&lhs.cells[..16]), - from_bytes::expr(&rhs.cells[..16]), - ); + let (lhs_lo, lhs_hi) = lhs.to_lo_hi(); + let (rhs_lo, rhs_hi) = rhs.to_lo_hi(); + let comparison_hi = ComparisonGadget::construct(cb, lhs_hi.expr(), rhs_hi.expr()); + let lt_lo = LtGadget::construct(cb, lhs_lo.expr(), rhs_lo.expr()); Self { comparison_hi, lt_lo, @@ -46,46 +42,48 @@ impl<F: Field> LtWordGadget<F> { offset: usize, lhs: Word, rhs: Word, - ) -> Result<(), Error> { + ) -> Result<F, Error> { let (lhs_lo, lhs_hi) = split_u256(&lhs); let (rhs_lo, rhs_hi) = split_u256(&rhs); - self.comparison_hi.assign( + let (hi_lt, hi_eq) = self.comparison_hi.assign( region, offset, F::from_u128(lhs_hi.as_u128()), F::from_u128(rhs_hi.as_u128()), )?; - self.lt_lo.assign( + let (lt_lo, _) = self.lt_lo.assign( region, offset, F::from_u128(lhs_lo.as_u128()), F::from_u128(rhs_lo.as_u128()), )?; - Ok(()) + Ok(hi_lt + hi_eq * lt_lo) } } #[cfg(test)] mod tests { - use crate::evm_circuit::util::constraint_builder::ConstrainBuilderCommon; + use crate::{ + evm_circuit::util::constraint_builder::ConstrainBuilderCommon, + util::word::{Word32Cell, WordExpr}, + }; use super::{test_util::*, *}; - use eth_types::*; use halo2_proofs::{halo2curves::bn256::Fr, plonk::Error}; #[derive(Clone)] /// LtWordTestContainer: require(a < b) struct LtWordTestContainer<F> { ltword_gadget: LtWordGadget<F>, - a: util::Word<F>, - b: util::Word<F>, + a: Word32Cell<F>, + b: Word32Cell<F>, } impl<F: Field> MathGadgetContainer<F> for LtWordTestContainer<F> { fn configure_gadget_container(cb: &mut EVMConstraintBuilder<F>) -> Self { - let a = cb.query_word_rlc(); - let b = cb.query_word_rlc(); - let ltword_gadget = LtWordGadget::<F>::construct(cb, &a, &b); + let a = cb.query_word32(); + let b = cb.query_word32(); + let ltword_gadget = LtWordGadget::<F>::construct(cb, &a.to_word(), &b.to_word()); cb.require_equal("a < b", ltword_gadget.expr(), 1.expr()); LtWordTestContainer { ltword_gadget, @@ -103,8 +101,8 @@ mod tests { let b = witnesses[1]; let offset = 0; - self.a.assign(region, offset, Some(a.to_le_bytes()))?; - self.b.assign(region, offset, Some(b.to_le_bytes()))?; + self.a.assign_u256(region, offset, a)?; + self.b.assign_u256(region, offset, b)?; self.ltword_gadget.assign(region, 0, a, b)?; Ok(()) diff --git a/zkevm-circuits/src/evm_circuit/util/math_gadget/min_max.rs b/zkevm-circuits/src/evm_circuit/util/math_gadget/min_max.rs index e17f9c7b39..ee6b101ab8 100644 --- a/zkevm-circuits/src/evm_circuit/util/math_gadget/min_max.rs +++ b/zkevm-circuits/src/evm_circuit/util/math_gadget/min_max.rs @@ -1,12 +1,8 @@ use crate::evm_circuit::util::{ - constraint_builder::EVMConstraintBuilder, math_gadget::*, select, transpose_val_ret, - CachedRegion, + constraint_builder::EVMConstraintBuilder, math_gadget::*, select, CachedRegion, }; use eth_types::Field; -use halo2_proofs::{ - circuit::Value, - plonk::{Error, Expression}, -}; +use halo2_proofs::plonk::{Error, Expression}; /// Returns `rhs` when `lhs < rhs`, and returns `lhs` otherwise. /// lhs and rhs `< 256**N_BYTES` /// `N_BYTES` is required to be `<= MAX_N_BYTES_INTEGER`. @@ -52,19 +48,6 @@ impl<F: Field, const N_BYTES: usize> MinMaxGadget<F, N_BYTES> { (lhs, rhs) }) } - - pub(crate) fn assign_value( - &self, - region: &mut CachedRegion<'_, '_, F>, - offset: usize, - lhs: Value<F>, - rhs: Value<F>, - ) -> Result<Value<(F, F)>, Error> { - transpose_val_ret( - lhs.zip(rhs) - .map(|(lhs, rhs)| self.assign(region, offset, lhs, rhs)), - ) - } } #[cfg(test)] diff --git a/zkevm-circuits/src/evm_circuit/util/math_gadget/modulo.rs b/zkevm-circuits/src/evm_circuit/util/math_gadget/modulo.rs index d4b65f20b0..4a8fa8726e 100644 --- a/zkevm-circuits/src/evm_circuit/util/math_gadget/modulo.rs +++ b/zkevm-circuits/src/evm_circuit/util/math_gadget/modulo.rs @@ -1,14 +1,16 @@ use crate::{ evm_circuit::util::{ - self, constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, - math_gadget::*, - sum, CachedRegion, + math_gadget::{LtWordGadget, *}, + CachedRegion, + }, + util::{ + word::{self, Word32Cell, WordExpr}, + Expr, }, - util::Expr, }; -use eth_types::{Field, ToLittleEndian, Word}; -use halo2_proofs::plonk::Error; +use eth_types::{Field, Word}; +use halo2_proofs::{circuit::Value, plonk::Error}; /// Constraints for the words a, n, r: /// a mod n = r, if n!=0 @@ -21,24 +23,24 @@ use halo2_proofs::plonk::Error; /// this equation assures that r<n or r=n=0. #[derive(Clone, Debug)] pub(crate) struct ModGadget<F> { - k: util::Word<F>, - a_or_zero: util::Word<F>, + k: Word32Cell<F>, + a_or_zero: Word32Cell<F>, mul_add_words: MulAddWordsGadget<F>, - n_is_zero: IsZeroGadget<F>, - a_or_is_zero: IsZeroGadget<F>, - eq: IsEqualGadget<F>, + n_is_zero: IsZeroWordGadget<F, Word32Cell<F>>, + a_or_is_zero: IsZeroWordGadget<F, Word32Cell<F>>, + eq: IsEqualWordGadget<F, Word32Cell<F>, Word32Cell<F>>, lt: LtWordGadget<F>, } impl<F: Field> ModGadget<F> { - pub(crate) fn construct(cb: &mut EVMConstraintBuilder<F>, words: [&util::Word<F>; 3]) -> Self { + pub(crate) fn construct(cb: &mut EVMConstraintBuilder<F>, words: [&Word32Cell<F>; 3]) -> Self { let (a, n, r) = (words[0], words[1], words[2]); - let k = cb.query_word_rlc(); - let a_or_zero = cb.query_word_rlc(); - let n_is_zero = IsZeroGadget::construct(cb, sum::expr(&n.cells)); - let a_or_is_zero = IsZeroGadget::construct(cb, sum::expr(&a_or_zero.cells)); + let k = cb.query_word32(); + let a_or_zero = cb.query_word32(); + let n_is_zero = IsZeroWordGadget::construct(cb, n); + let a_or_is_zero = IsZeroWordGadget::construct(cb, &a_or_zero); let mul_add_words = MulAddWordsGadget::construct(cb, [&k, n, r, &a_or_zero]); - let eq = IsEqualGadget::construct(cb, a.expr(), a_or_zero.expr()); - let lt = LtWordGadget::construct(cb, r, n); + let eq = IsEqualWordGadget::construct(cb, a, &a_or_zero); + let lt = LtWordGadget::construct(cb, &r.to_word(), &n.to_word()); // Constrain the aux variable a_or_zero to be =a or =0 if n==0: // (a == a_or_zero) ^ (n == 0 & a_or_zero == 0) cb.add_constraint( @@ -78,22 +80,19 @@ impl<F: Field> ModGadget<F> { ) -> Result<(), Error> { let a_or_zero = if n.is_zero() { Word::zero() } else { a }; - self.k.assign(region, offset, Some(k.to_le_bytes()))?; - self.a_or_zero - .assign(region, offset, Some(a_or_zero.to_le_bytes()))?; - let n_sum = (0..32).fold(0, |acc, idx| acc + n.byte(idx) as u64); - let a_or_zero_sum = (0..32).fold(0, |acc, idx| acc + a_or_zero.byte(idx) as u64); - self.n_is_zero.assign(region, offset, F::from(n_sum))?; + self.k.assign_u256(region, offset, k)?; + self.a_or_zero.assign_u256(region, offset, a_or_zero)?; + self.n_is_zero.assign(region, offset, word::Word::from(n))?; self.a_or_is_zero - .assign(region, offset, F::from(a_or_zero_sum))?; + .assign(region, offset, word::Word::from(a_or_zero))?; self.mul_add_words .assign(region, offset, [k, n, r, a_or_zero])?; self.lt.assign(region, offset, r, n)?; self.eq.assign_value( region, offset, - region.word_rlc(a), - region.word_rlc(a_or_zero), + Value::known(word::Word::from(a)), + Value::known(word::Word::from(a_or_zero)), )?; Ok(()) @@ -110,16 +109,16 @@ mod tests { /// ModGadgetTestContainer: require(a % n == r) struct ModGadgetTestContainer<F> { mod_gadget: ModGadget<F>, - a: util::Word<F>, - n: util::Word<F>, - r: util::Word<F>, + a: Word32Cell<F>, + n: Word32Cell<F>, + r: Word32Cell<F>, } impl<F: Field> MathGadgetContainer<F> for ModGadgetTestContainer<F> { fn configure_gadget_container(cb: &mut EVMConstraintBuilder<F>) -> Self { - let a = cb.query_word_rlc(); - let n = cb.query_word_rlc(); - let r = cb.query_word_rlc(); + let a = cb.query_word32(); + let n = cb.query_word32(); + let r = cb.query_word32(); let mod_gadget = ModGadget::<F>::construct(cb, [&a, &n, &r]); ModGadgetTestContainer { mod_gadget, @@ -145,9 +144,9 @@ mod tests { let offset = 0; - self.a.assign(region, offset, Some(a.to_le_bytes()))?; - self.n.assign(region, offset, Some(n.to_le_bytes()))?; - self.r.assign(region, offset, Some(r.to_le_bytes()))?; + self.a.assign_u256(region, offset, a)?; + self.n.assign_u256(region, offset, n)?; + self.r.assign_u256(region, offset, r)?; self.mod_gadget.assign(region, 0, a, n, r, k) } diff --git a/zkevm-circuits/src/evm_circuit/util/math_gadget/mul_add_words.rs b/zkevm-circuits/src/evm_circuit/util/math_gadget/mul_add_words.rs index 1a212906a7..85b9ee0b7c 100644 --- a/zkevm-circuits/src/evm_circuit/util/math_gadget/mul_add_words.rs +++ b/zkevm-circuits/src/evm_circuit/util/math_gadget/mul_add_words.rs @@ -1,12 +1,14 @@ use crate::{ evm_circuit::util::{ - self, constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, from_bytes, pow_of_two_expr, split_u256, split_u256_limb64, CachedRegion, Cell, }, - util::Expr, + util::{ + word::{Word, Word32Cell, Word4, WordExpr}, + Expr, + }, }; -use eth_types::{Field, ToLittleEndian, Word}; +use eth_types::{Field, ToLittleEndian, Word as U256Word}; use halo2_proofs::{ circuit::Value, plonk::{Error, Expression}, @@ -50,7 +52,7 @@ pub(crate) struct MulAddWordsGadget<F> { } impl<F: Field> MulAddWordsGadget<F> { - pub(crate) fn construct(cb: &mut EVMConstraintBuilder<F>, words: [&util::Word<F>; 4]) -> Self { + pub(crate) fn construct(cb: &mut EVMConstraintBuilder<F>, words: [&Word32Cell<F>; 4]) -> Self { let (a, b, c, d) = (words[0], words[1], words[2], words[3]); let carry_lo = cb.query_bytes(); let carry_hi = cb.query_bytes(); @@ -59,15 +61,15 @@ impl<F: Field> MulAddWordsGadget<F> { let mut a_limbs = vec![]; let mut b_limbs = vec![]; - for trunk in 0..4 { - let idx = (trunk * 8) as usize; - a_limbs.push(from_bytes::expr(&a.cells[idx..idx + 8])); - b_limbs.push(from_bytes::expr(&b.cells[idx..idx + 8])); + let word4_a: Word4<Expression<F>> = a.to_word_n(); + let word4_b: Word4<Expression<F>> = b.to_word_n(); + for i in 0..4 { + a_limbs.push(word4_a.limbs[i].expr()); + b_limbs.push(word4_b.limbs[i].expr()); } - let c_lo = from_bytes::expr(&c.cells[0..16]); - let c_hi = from_bytes::expr(&c.cells[16..32]); - let d_lo = from_bytes::expr(&d.cells[0..16]); - let d_hi = from_bytes::expr(&d.cells[16..32]); + + let word_c: Word<Expression<F>> = c.to_word(); + let word_d: Word<Expression<F>> = d.to_word(); let t0 = a_limbs[0].clone() * b_limbs[0].clone(); let t1 = a_limbs[0].clone() * b_limbs[1].clone() + a_limbs[1].clone() * b_limbs[0].clone(); @@ -88,13 +90,13 @@ impl<F: Field> MulAddWordsGadget<F> { cb.require_equal( "(a * b)_lo + c_lo == d_lo + carry_lo â‹… 2^128", - t0.expr() + t1.expr() * pow_of_two_expr(64) + c_lo, - d_lo + carry_lo_expr.clone() * pow_of_two_expr(128), + t0.expr() + t1.expr() * pow_of_two_expr(64) + word_c.lo().expr(), + word_d.lo().expr() + carry_lo_expr.clone() * pow_of_two_expr(128), ); cb.require_equal( "(a * b)_hi + c_hi + carry_lo == d_hi + carry_hi â‹… 2^128", - t2.expr() + t3.expr() * pow_of_two_expr(64) + c_hi + carry_lo_expr, - d_hi + carry_hi_expr * pow_of_two_expr(128), + t2.expr() + t3.expr() * pow_of_two_expr(64) + word_c.hi().expr() + carry_lo_expr, + word_d.hi().expr() + carry_hi_expr * pow_of_two_expr(128), ); Self { @@ -108,7 +110,7 @@ impl<F: Field> MulAddWordsGadget<F> { &self, region: &mut CachedRegion<'_, '_, F>, offset: usize, - words: [Word; 4], + words: [U256Word; 4], ) -> Result<(), Error> { let (a, b, c, d) = (words[0], words[1], words[2], words[3]); @@ -158,19 +160,19 @@ mod tests { /// MulAddGadgetContainer: require(a*b + c == d + carry*(2**256)) struct MulAddGadgetContainer<F> { muladd_words_gadget: MulAddWordsGadget<F>, - a: util::Word<F>, - b: util::Word<F>, - c: util::Word<F>, - d: util::Word<F>, + a: Word32Cell<F>, + b: Word32Cell<F>, + c: Word32Cell<F>, + d: Word32Cell<F>, carry: Cell<F>, } impl<F: Field> MathGadgetContainer<F> for MulAddGadgetContainer<F> { fn configure_gadget_container(cb: &mut EVMConstraintBuilder<F>) -> Self { - let a = cb.query_word_rlc(); - let b = cb.query_word_rlc(); - let c = cb.query_word_rlc(); - let d = cb.query_word_rlc(); + let a = cb.query_word32(); + let b = cb.query_word32(); + let c = cb.query_word32(); + let d = cb.query_word32(); let carry = cb.query_cell(); let math_gadget = MulAddWordsGadget::<F>::construct(cb, [&a, &b, &c, &d]); cb.require_equal("carry is correct", math_gadget.overflow(), carry.expr()); @@ -190,14 +192,10 @@ mod tests { region: &mut CachedRegion<'_, '_, F>, ) -> Result<(), Error> { let offset = 0; - self.a - .assign(region, offset, Some(witnesses[0].to_le_bytes()))?; - self.b - .assign(region, offset, Some(witnesses[1].to_le_bytes()))?; - self.c - .assign(region, offset, Some(witnesses[2].to_le_bytes()))?; - self.d - .assign(region, offset, Some(witnesses[3].to_le_bytes()))?; + self.a.assign_u256(region, offset, witnesses[0])?; + self.b.assign_u256(region, offset, witnesses[1])?; + self.c.assign_u256(region, offset, witnesses[2])?; + self.d.assign_u256(region, offset, witnesses[3])?; self.carry.assign( region, offset, diff --git a/zkevm-circuits/src/evm_circuit/util/math_gadget/mul_add_words512.rs b/zkevm-circuits/src/evm_circuit/util/math_gadget/mul_add_words512.rs index 7548cb8ada..c4becb836e 100644 --- a/zkevm-circuits/src/evm_circuit/util/math_gadget/mul_add_words512.rs +++ b/zkevm-circuits/src/evm_circuit/util/math_gadget/mul_add_words512.rs @@ -1,13 +1,18 @@ use crate::{ evm_circuit::util::{ - self, constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, from_bytes, pow_of_two_expr, split_u256, split_u256_limb64, CachedRegion, Cell, }, - util::Expr, + util::{ + word::{self, Word4, WordExpr}, + Expr, + }, }; use eth_types::{Field, ToLittleEndian, Word}; -use halo2_proofs::{circuit::Value, plonk::Error}; +use halo2_proofs::{ + circuit::Value, + plonk::{Error, Expression}, +}; /// Construct the gadget that checks a * b + c == d * 2**256 + e /// where a, b, c, d, e are 256-bit words. @@ -52,8 +57,8 @@ impl<F: Field> MulAddWords512Gadget<F> { /// Addend is the optional c. pub(crate) fn construct( cb: &mut EVMConstraintBuilder<F>, - words: [&util::Word<F>; 4], - addend: Option<&util::Word<F>>, + words: [&word::Word32Cell<F>; 4], + addend: Option<&word::Word32Cell<F>>, ) -> Self { let carry_0 = cb.query_bytes(); let carry_1 = cb.query_bytes(); @@ -65,16 +70,15 @@ impl<F: Field> MulAddWords512Gadget<F> { // Split input words in limbs let mut a_limbs = vec![]; let mut b_limbs = vec![]; - for trunk in 0..4 { - let idx = (trunk * 8) as usize; - a_limbs.push(from_bytes::expr(&words[0].cells[idx..idx + 8])); - b_limbs.push(from_bytes::expr(&words[1].cells[idx..idx + 8])); + let word4_a: Word4<Expression<F>> = words[0].to_word_n(); + let word4_b: Word4<Expression<F>> = words[1].to_word_n(); + for i in 0..4 { + a_limbs.push(word4_a.limbs[i].expr()); + b_limbs.push(word4_b.limbs[i].expr()); } - let d_lo = from_bytes::expr(&words[2].cells[0..16]); - let d_hi = from_bytes::expr(&words[2].cells[16..32]); - let e_lo = from_bytes::expr(&words[3].cells[0..16]); - let e_hi = from_bytes::expr(&words[3].cells[16..32]); + let (d_lo, d_hi) = words[2].to_word().to_lo_hi(); + let (e_lo, e_hi) = words[3].to_word().to_lo_hi(); // Limb multiplication let t0 = a_limbs[0].clone() * b_limbs[0].clone(); @@ -93,8 +97,8 @@ impl<F: Field> MulAddWords512Gadget<F> { let t6 = a_limbs[3].clone() * b_limbs[3].clone(); if let Some(c) = addend { - let c_lo = from_bytes::expr(&c.cells[0..16]); - let c_hi = from_bytes::expr(&c.cells[16..32]); + let c = c.to_word(); + let (c_lo, c_hi) = c.to_lo_hi(); cb.require_equal( "(t0 + t1 â‹… 2^64) + c_lo == e_lo + carry_0 â‹… 2^128", t0.expr() + t1.expr() * pow_of_two_expr(64) + c_lo, @@ -203,20 +207,20 @@ mod tests { /// MulAddWords512GadgetContainer: require(a * b + c == d * 2**256 + e) struct MulAddWords512GadgetContainer<F> { math_gadget: MulAddWords512Gadget<F>, - a: util::Word<F>, - b: util::Word<F>, - d: util::Word<F>, - e: util::Word<F>, - addend: util::Word<F>, + a: word::Word32Cell<F>, + b: word::Word32Cell<F>, + d: word::Word32Cell<F>, + e: word::Word32Cell<F>, + addend: word::Word32Cell<F>, } impl<F: Field> MathGadgetContainer<F> for MulAddWords512GadgetContainer<F> { fn configure_gadget_container(cb: &mut EVMConstraintBuilder<F>) -> Self { - let a = cb.query_word_rlc(); - let b = cb.query_word_rlc(); - let d = cb.query_word_rlc(); - let e = cb.query_word_rlc(); - let addend = cb.query_word_rlc(); + let a = cb.query_word32(); + let b = cb.query_word32(); + let d = cb.query_word32(); + let e = cb.query_word32(); + let addend = cb.query_word32(); let math_gadget = MulAddWords512Gadget::<F>::construct(cb, [&a, &b, &d, &e], Some(&addend)); MulAddWords512GadgetContainer { @@ -235,16 +239,11 @@ mod tests { region: &mut CachedRegion<'_, '_, F>, ) -> Result<(), Error> { let offset = 0; - self.a - .assign(region, offset, Some(witnesses[0].to_le_bytes()))?; - self.b - .assign(region, offset, Some(witnesses[1].to_le_bytes()))?; - self.d - .assign(region, offset, Some(witnesses[2].to_le_bytes()))?; - self.e - .assign(region, offset, Some(witnesses[3].to_le_bytes()))?; - self.addend - .assign(region, offset, Some(witnesses[4].to_le_bytes()))?; + self.a.assign_u256(region, offset, witnesses[0])?; + self.b.assign_u256(region, offset, witnesses[1])?; + self.d.assign_u256(region, offset, witnesses[2])?; + self.e.assign_u256(region, offset, witnesses[3])?; + self.addend.assign_u256(region, offset, witnesses[4])?; self.math_gadget.assign( region, offset, diff --git a/zkevm-circuits/src/evm_circuit/util/math_gadget/mul_word_u64.rs b/zkevm-circuits/src/evm_circuit/util/math_gadget/mul_word_u64.rs index 1c5ce03e1e..220235a002 100644 --- a/zkevm-circuits/src/evm_circuit/util/math_gadget/mul_word_u64.rs +++ b/zkevm-circuits/src/evm_circuit/util/math_gadget/mul_word_u64.rs @@ -4,9 +4,12 @@ use crate::{ constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, from_bytes, pow_of_two_expr, split_u256, CachedRegion, }, - util::Expr, + util::{ + word::{Word32Cell, WordExpr}, + Expr, + }, }; -use eth_types::{Field, ToLittleEndian, Word}; +use eth_types::{Field, Word}; use halo2_proofs::{ circuit::Value, plonk::{Error, Expression}, @@ -16,28 +19,24 @@ use halo2_proofs::{ /// which disallows overflow. #[derive(Clone, Debug)] pub(crate) struct MulWordByU64Gadget<F> { - multiplicand: util::Word<F>, - product: util::Word<F>, + multiplicand: Word32Cell<F>, + product: Word32Cell<F>, carry_lo: [util::Cell<F>; 8], } impl<F: Field> MulWordByU64Gadget<F> { pub(crate) fn construct( cb: &mut EVMConstraintBuilder<F>, - multiplicand: util::Word<F>, + multiplicand: Word32Cell<F>, multiplier: Expression<F>, ) -> Self { let gadget = Self { multiplicand, - product: cb.query_word_rlc(), + product: cb.query_word32(), carry_lo: cb.query_bytes(), }; - - let multiplicand_lo = from_bytes::expr(&gadget.multiplicand.cells[..16]); - let multiplicand_hi = from_bytes::expr(&gadget.multiplicand.cells[16..]); - - let product_lo = from_bytes::expr(&gadget.product.cells[..16]); - let product_hi = from_bytes::expr(&gadget.product.cells[16..]); + let (multiplicand_lo, multiplicand_hi) = gadget.multiplicand.to_word().to_lo_hi(); + let (product_lo, product_hi) = gadget.product.to_word().to_lo_hi(); let carry_lo = from_bytes::expr(&gadget.carry_lo[..8]); @@ -65,9 +64,8 @@ impl<F: Field> MulWordByU64Gadget<F> { product: Word, ) -> Result<(), Error> { self.multiplicand - .assign(region, offset, Some(multiplicand.to_le_bytes()))?; - self.product - .assign(region, offset, Some(product.to_le_bytes()))?; + .assign_u256(region, offset, multiplicand)?; + self.product.assign_u256(region, offset, product)?; let (multiplicand_lo, _) = split_u256(&multiplicand); let (product_lo, _) = split_u256(&product); @@ -85,7 +83,7 @@ impl<F: Field> MulWordByU64Gadget<F> { Ok(()) } - pub(crate) fn product(&self) -> &util::Word<F> { + pub(crate) fn product(&self) -> &Word32Cell<F> { &self.product } } @@ -94,23 +92,23 @@ impl<F: Field> MulWordByU64Gadget<F> { mod tests { use super::{super::test_util::*, *}; use crate::evm_circuit::util::Cell; - use eth_types::Word; + use eth_types::{ToLittleEndian, Word}; use halo2_proofs::{halo2curves::bn256::Fr, plonk::Error}; #[derive(Clone)] /// MulWordByU64TestContainer: require(product = a*(b as u64)) struct MulWordByU64TestContainer<F> { mulwords_u64_gadget: MulWordByU64Gadget<F>, - a: util::Word<F>, + a: Word32Cell<F>, b: Cell<F>, - product: util::Word<F>, + product: Word32Cell<F>, } impl<F: Field> MathGadgetContainer<F> for MulWordByU64TestContainer<F> { fn configure_gadget_container(cb: &mut EVMConstraintBuilder<F>) -> Self { - let a = cb.query_word_rlc(); + let a = cb.query_word32(); let b = cb.query_cell(); - let product = cb.query_word_rlc(); + let product = cb.query_word32(); let mulwords_u64_gadget = MulWordByU64Gadget::<F>::construct(cb, a.clone(), b.expr()); MulWordByU64TestContainer { mulwords_u64_gadget, @@ -130,10 +128,9 @@ mod tests { let product = witnesses[2]; let offset = 0; - self.a.assign(region, offset, Some(a.to_le_bytes()))?; + self.a.assign_u256(region, offset, a)?; self.b.assign(region, offset, Value::known(F::from(b)))?; - self.product - .assign(region, offset, Some(product.to_le_bytes()))?; + self.product.assign_u256(region, offset, product)?; self.mulwords_u64_gadget.assign(region, 0, a, b, product)?; Ok(()) diff --git a/zkevm-circuits/src/evm_circuit/util/math_gadget/rlp.rs b/zkevm-circuits/src/evm_circuit/util/math_gadget/rlp.rs index f8f7f69274..4b6419b881 100644 --- a/zkevm-circuits/src/evm_circuit/util/math_gadget/rlp.rs +++ b/zkevm-circuits/src/evm_circuit/util/math_gadget/rlp.rs @@ -1,16 +1,23 @@ -use eth_types::{Address, Field, ToLittleEndian, ToScalar, Word}; +use crate::{ + evm_circuit::util::rlc, + util::word::{Word32Cell, WordExpr}, +}; +use eth_types::{Address, Field, ToScalar, Word}; use gadgets::util::{and, expr_from_bytes, not, select, sum, Expr}; use halo2_proofs::{ circuit::Value, plonk::{Error, Expression}, }; -use crate::evm_circuit::{ - param::{N_BYTES_ACCOUNT_ADDRESS, N_BYTES_U64, N_BYTES_WORD}, - util::{ - constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, - CachedRegion, Cell, RandomLinearCombination, +use crate::{ + evm_circuit::{ + param::{N_BYTES_U64, N_BYTES_WORD}, + util::{ + constraint_builder::{ConstrainBuilderCommon, EVMConstraintBuilder}, + AccountAddress, CachedRegion, Cell, RandomLinearCombination, + }, }, + util::word, }; use super::IsZeroGadget; @@ -197,7 +204,7 @@ impl<F: Field> RlpU64Gadget<F> { #[derive(Clone, Debug)] pub struct ContractCreateGadget<F, const IS_CREATE2: bool> { /// Sender address of the contract creation tx. - caller_address: RandomLinearCombination<F, N_BYTES_ACCOUNT_ADDRESS>, + caller_address: AccountAddress<F>, /// Sender nonce of the contract creation tx. nonce: RlpU64Gadget<F>, /// Keccak256 hash of init code, used for CREATE2. We don't use a @@ -205,18 +212,18 @@ pub struct ContractCreateGadget<F, const IS_CREATE2: bool> { /// RLC in the case of init code hash, for BeginTx and /// CREATE2 respectively. Instead, we store just the bytes and calculate the /// appropriate RLC wherever needed. - code_hash: [Cell<F>; N_BYTES_WORD], + code_hash: Word32Cell<F>, /// Random salt for CREATE2. - salt: [Cell<F>; N_BYTES_WORD], + salt: Word32Cell<F>, } impl<F: Field, const IS_CREATE2: bool> ContractCreateGadget<F, IS_CREATE2> { /// Configure and construct the gadget. pub(crate) fn construct(cb: &mut EVMConstraintBuilder<F>) -> Self { - let caller_address = cb.query_keccak_rlc(); + let caller_address = cb.query_account_address(); let nonce = RlpU64Gadget::construct(cb); - let code_hash = array_init::array_init(|_| cb.query_byte()); - let salt = array_init::array_init(|_| cb.query_byte()); + let code_hash = cb.query_word32(); + let salt = cb.query_word32(); Self { caller_address, @@ -243,27 +250,18 @@ impl<F: Field, const IS_CREATE2: bool> ContractCreateGadget<F, IS_CREATE2> { self.nonce.assign(region, offset, caller_nonce)?; - for (c, v) in self - .code_hash - .iter() - .zip(code_hash.map(|v| v.to_le_bytes()).unwrap_or_default()) - { - c.assign(region, offset, Value::known(F::from(v as u64)))?; - } - for (c, v) in self - .salt - .iter() - .zip(salt.map(|v| v.to_le_bytes()).unwrap_or_default()) - { - c.assign(region, offset, Value::known(F::from(v as u64)))?; - } + self.code_hash + .assign_u256(region, offset, code_hash.unwrap_or_default())?; + + self.salt + .assign_u256(region, offset, salt.unwrap_or_default())?; Ok(()) } /// Caller address' value. - pub(crate) fn caller_address(&self) -> Expression<F> { - expr_from_bytes(&self.caller_address.cells) + pub(crate) fn caller_address(&self) -> word::Word<Expression<F>> { + self.caller_address.to_word() } /// Caller nonce's value. @@ -272,21 +270,15 @@ impl<F: Field, const IS_CREATE2: bool> ContractCreateGadget<F, IS_CREATE2> { } /// Code hash word RLC. - pub(crate) fn code_hash_word_rlc(&self, cb: &EVMConstraintBuilder<F>) -> Expression<F> { - cb.word_rlc::<N_BYTES_WORD>( - self.code_hash - .iter() - .map(Expr::expr) - .collect::<Vec<_>>() - .try_into() - .unwrap(), - ) + pub(crate) fn code_hash(&self) -> word::Word<Expression<F>> { + self.code_hash.to_word() } /// Code hash keccak RLC. pub(crate) fn code_hash_keccak_rlc(&self, cb: &EVMConstraintBuilder<F>) -> Expression<F> { cb.keccak_rlc::<N_BYTES_WORD>( self.code_hash + .limbs .iter() .map(Expr::expr) .collect::<Vec<_>>() @@ -295,22 +287,15 @@ impl<F: Field, const IS_CREATE2: bool> ContractCreateGadget<F, IS_CREATE2> { ) } - /// Salt EVM word RLC. - pub(crate) fn salt_word_rlc(&self, cb: &EVMConstraintBuilder<F>) -> Expression<F> { - cb.word_rlc::<N_BYTES_WORD>( - self.salt - .iter() - .map(Expr::expr) - .collect::<Vec<_>>() - .try_into() - .unwrap(), - ) + pub(crate) fn salt(&self) -> word::Word<Expression<F>> { + self.salt.to_word() } /// Salt keccak RLC. pub(crate) fn salt_keccak_rlc(&self, cb: &EVMConstraintBuilder<F>) -> Expression<F> { cb.keccak_rlc::<N_BYTES_WORD>( self.salt + .limbs .iter() .map(Expr::expr) .collect::<Vec<_>>() @@ -320,13 +305,11 @@ impl<F: Field, const IS_CREATE2: bool> ContractCreateGadget<F, IS_CREATE2> { } /// Caller address' RLC value. - pub(crate) fn caller_address_rlc(&self) -> Expression<F> { - self.caller_address.expr() - } - - /// Caller nonce's RLC value. - pub(crate) fn caller_nonce_rlc(&self) -> Expression<F> { - self.nonce.value_rlc.expr() + pub(crate) fn caller_address_rlc(&self, cb: &EVMConstraintBuilder<F>) -> Expression<F> { + rlc::expr( + &self.caller_address.limbs.clone().map(|x| x.expr()), + cb.challenges().keccak_input(), + ) } /// Length of the input data to the keccak hash function. @@ -359,13 +342,13 @@ impl<F: Field, const IS_CREATE2: bool> ContractCreateGadget<F, IS_CREATE2> { let challenge_power_64 = challenge_power_32.clone().square(); let challenge_power_84 = challenge_power_64.clone() * challenge_power_20; (0xff.expr() * challenge_power_84) - + (self.caller_address_rlc() * challenge_power_64) + + (self.caller_address_rlc(cb) * challenge_power_64) + (self.salt_keccak_rlc(cb) * challenge_power_32) + self.code_hash_keccak_rlc(cb) } else { // RLC(RLP([caller_address, caller_nonce])) let challenge_power_21 = challenges[20].clone(); - ((self.caller_address_rlc() + ((self.caller_address_rlc(cb) + (148.expr() * challenge_power_20) + ((213.expr() + self.nonce.rlp_length()) * challenge_power_21)) * self.nonce.challenge_power_rlp_length(cb)) diff --git a/zkevm-circuits/src/evm_circuit/util/math_gadget/test_util.rs b/zkevm-circuits/src/evm_circuit/util/math_gadget/test_util.rs index 3717bdb3fe..472658dbbe 100644 --- a/zkevm-circuits/src/evm_circuit/util/math_gadget/test_util.rs +++ b/zkevm-circuits/src/evm_circuit/util/math_gadget/test_util.rs @@ -21,9 +21,7 @@ pub(crate) use halo2_proofs::circuit::{Layouter, Value}; use halo2_proofs::{ circuit::SimpleFloorPlanner, dev::MockProver, - plonk::{ - Circuit, ConstraintSystem, Error, Expression, FirstPhase, SecondPhase, Selector, ThirdPhase, - }, + plonk::{Circuit, ConstraintSystem, Error, FirstPhase, SecondPhase, Selector, ThirdPhase}, }; pub(crate) const WORD_LOW_MAX: Word = U256([u64::MAX, u64::MAX, 0, 0]); @@ -40,10 +38,6 @@ pub(crate) const WORD_CELL_MAX: Word = U256([ pub(crate) const WORD_SIGNED_MAX: Word = U256([u64::MAX, u64::MAX, u64::MAX, i64::MAX as _]); pub(crate) const WORD_SIGNED_MIN: Word = U256([0, 0, 0, i64::MIN as _]); -pub(crate) fn generate_power_of_randomness<F: Field>(randomness: F) -> Vec<F> { - (1..32).map(|exp| randomness.pow([exp, 0, 0, 0])).collect() -} - pub(crate) trait MathGadgetContainer<F: Field>: Clone { fn configure_gadget_container(cb: &mut EVMConstraintBuilder<F>) -> Self where @@ -68,19 +62,16 @@ where stored_expressions: Vec<StoredExpression<F>>, math_gadget_container: G, _marker: PhantomData<F>, - challenges: Challenges<Expression<F>>, } pub(crate) struct UnitTestMathGadgetBaseCircuit<G> { - size: usize, witnesses: Vec<Word>, _marker: PhantomData<G>, } impl<G> UnitTestMathGadgetBaseCircuit<G> { - fn new(size: usize, witnesses: Vec<Word>) -> Self { + fn new(witnesses: Vec<Word>) -> Self { UnitTestMathGadgetBaseCircuit { - size, witnesses, _marker: PhantomData, } @@ -94,7 +85,6 @@ impl<F: Field, G: MathGadgetContainer<F>> Circuit<F> for UnitTestMathGadgetBaseC fn without_witnesses(&self) -> Self { UnitTestMathGadgetBaseCircuit { - size: 0, witnesses: vec![], _marker: PhantomData, } @@ -172,7 +162,6 @@ impl<F: Field, G: MathGadgetContainer<F>> Circuit<F> for UnitTestMathGadgetBaseC stored_expressions, math_gadget_container, _marker: PhantomData, - challenges: challenges_exprs, }, challenges, ) @@ -257,7 +246,7 @@ pub(crate) fn test_math_gadget_container<F: Field, G: MathGadgetContainer<F>>( expected_success: bool, ) { const K: usize = 12; - let circuit = UnitTestMathGadgetBaseCircuit::<G>::new(K, witnesses); + let circuit = UnitTestMathGadgetBaseCircuit::<G>::new(witnesses); let prover = MockProver::<F>::run(K as u32, &circuit, vec![]).unwrap(); if expected_success { diff --git a/zkevm-circuits/src/evm_circuit/util/memory_gadget.rs b/zkevm-circuits/src/evm_circuit/util/memory_gadget.rs index 53f4be5bbc..85182d7e4c 100644 --- a/zkevm-circuits/src/evm_circuit/util/memory_gadget.rs +++ b/zkevm-circuits/src/evm_circuit/util/memory_gadget.rs @@ -1,38 +1,38 @@ -use super::{constraint_builder::ConstrainBuilderCommon, CachedRegion}; +use super::{constraint_builder::ConstrainBuilderCommon, CachedRegion, MemoryAddress, WordExpr}; use crate::{ evm_circuit::{ - param::{N_BYTES_GAS, N_BYTES_MEMORY_ADDRESS, N_BYTES_MEMORY_WORD_SIZE}, + param::{N_BYTES_GAS, N_BYTES_MEMORY_ADDRESS, N_BYTES_MEMORY_WORD_SIZE, N_BYTES_U64}, util::{ + and, constraint_builder::EVMConstraintBuilder, from_bytes, - math_gadget::{ConstantDivisionGadget, IsZeroGadget, MinMaxGadget, RangeCheckGadget}, - select, sum, MemoryAddress, + math_gadget::{ + AddWordsGadget, ConstantDivisionGadget, IsZeroGadget, LtGadget, MinMaxGadget, + RangeCheckGadget, + }, + or, select, sum, Cell, }, }, util::{ - cell_manager::{Cell, CellType}, + word::{Word, WordCell}, Expr, }, }; use array_init::array_init; -use eth_types::{evm_types::GasCost, Field, ToLittleEndian, U256}; +use eth_types::{ + evm_types::{GasCost, MAX_EXPANDED_MEMORY_ADDRESS}, + Field, ToLittleEndian, U256, +}; +use gadgets::util::not; use halo2_proofs::{ circuit::Value, plonk::{Error, Expression}, }; +use itertools::Itertools; /// Decodes the usable part of an address stored in a Word pub(crate) mod address_low { - use crate::evm_circuit::{ - param::N_BYTES_MEMORY_ADDRESS, - util::{from_bytes, Word}, - }; - use eth_types::Field; - use halo2_proofs::plonk::Expression; - - pub(crate) fn expr<F: Field>(address: &Word<F>) -> Expression<F> { - from_bytes::expr(&address.cells[..N_BYTES_MEMORY_ADDRESS]) - } + use crate::evm_circuit::param::N_BYTES_MEMORY_ADDRESS; pub(crate) fn value(address: [u8; 32]) -> u64 { let mut bytes = [0; 8]; @@ -41,23 +41,30 @@ pub(crate) mod address_low { } } -/// The sum of bytes of the address that are unused for most calculations on the -/// address -pub(crate) mod address_high { - use crate::evm_circuit::{ - param::N_BYTES_MEMORY_ADDRESS, - util::{sum, Word}, - }; - use eth_types::Field; - use halo2_proofs::plonk::Expression; +/// Memory address trait to adapt for right and Uint overflow cases. +pub(crate) trait CommonMemoryAddressGadget<F: Field> { + fn construct_self(cb: &mut EVMConstraintBuilder<F>) -> Self; - pub(crate) fn expr<F: Field>(address: &Word<F>) -> Expression<F> { - sum::expr(&address.cells[N_BYTES_MEMORY_ADDRESS..]) - } + /// Return the memory address (offset + length). + fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + memory_offset: U256, + memory_length: U256, + ) -> Result<u64, Error>; - pub(crate) fn value<F: Field>(address: [u8; 32]) -> F { - sum::value::<F>(&address[N_BYTES_MEMORY_ADDRESS..]) - } + /// Return original word of memory offset. + fn offset_word(&self) -> Word<Expression<F>>; + + /// Return original word of memory length. + fn length_word(&self) -> Word<Expression<F>>; + + /// Return valid memory length of Uint64. + fn length(&self) -> Expression<F>; + + /// Return valid memory offset plus length. + fn address(&self) -> Expression<F>; } /// Convert the dynamic memory offset and length from random linear combination @@ -66,8 +73,8 @@ pub(crate) mod address_high { /// the RLC value for `memory_offset` need not match the bytes. #[derive(Clone, Debug)] pub(crate) struct MemoryAddressGadget<F> { - memory_offset: Cell<F>, memory_offset_bytes: MemoryAddress<F>, + memory_offset: WordCell<F>, memory_length: MemoryAddress<F>, memory_length_is_zero: IsZeroGadget<F>, } @@ -75,34 +82,48 @@ pub(crate) struct MemoryAddressGadget<F> { impl<F: Field> MemoryAddressGadget<F> { pub(crate) fn construct( cb: &mut EVMConstraintBuilder<F>, - memory_offset: Cell<F>, + memory_offset: WordCell<F>, memory_length: MemoryAddress<F>, ) -> Self { - debug_assert_eq!( - CellType::StoragePhase2, - cb.curr.cell_manager.columns()[memory_offset.column_idx].cell_type - ); - let memory_length_is_zero = IsZeroGadget::construct(cb, sum::expr(&memory_length.cells)); - let memory_offset_bytes = cb.query_word_rlc(); + let memory_length_is_zero = IsZeroGadget::construct(cb, memory_length.sum_expr()); + let memory_offset_bytes = cb.query_memory_address(); let has_length = 1.expr() - memory_length_is_zero.expr(); cb.condition(has_length, |cb| { - cb.require_equal( + cb.require_equal_word( "Offset decomposition into 5 bytes", - memory_offset_bytes.expr(), - memory_offset.expr(), + Word::from_lo_unchecked(memory_offset_bytes.expr()), + memory_offset.to_word(), ); }); Self { - memory_offset, memory_offset_bytes, + memory_offset, memory_length, memory_length_is_zero, } } - pub(crate) fn assign( + pub(crate) fn has_length(&self) -> Expression<F> { + 1.expr() - self.memory_length_is_zero.expr() + } + + // offset is the valid offset. It might not equal the offset pop from stack if + // `self.has_length()` is zero + pub(crate) fn offset(&self) -> Expression<F> { + self.has_length() * self.memory_offset_bytes.expr() + } +} + +impl<F: Field> CommonMemoryAddressGadget<F> for MemoryAddressGadget<F> { + fn construct_self(cb: &mut EVMConstraintBuilder<F>) -> Self { + let offset = cb.query_word_unchecked(); + let length = cb.query_memory_address(); + Self::construct(cb, offset, length) + } + + fn assign( &self, region: &mut CachedRegion<'_, '_, F>, offset: usize, @@ -112,31 +133,21 @@ impl<F: Field> MemoryAddressGadget<F> { let memory_offset_bytes = memory_offset.to_le_bytes(); let memory_length_bytes = memory_length.to_le_bytes(); let memory_length_is_zero = memory_length.is_zero(); - self.memory_offset.assign( - region, - offset, - region.word_rlc(U256::from_little_endian(&memory_offset_bytes)), - )?; self.memory_offset_bytes.assign( region, offset, - Some(if memory_length_is_zero { - [0; 5] + if memory_length_is_zero { + Some([0; 5]) } else { memory_offset_bytes[..N_BYTES_MEMORY_ADDRESS] .try_into() - .unwrap() - }), - )?; - self.memory_length.assign( - region, - offset, - Some( - memory_length_bytes[..N_BYTES_MEMORY_ADDRESS] - .try_into() - .unwrap(), - ), + .ok() + }, )?; + self.memory_offset + .assign_u256(region, offset, memory_offset)?; + self.memory_length + .assign_u256(region, offset, memory_length)?; self.memory_length_is_zero .assign(region, offset, sum::value(&memory_length_bytes))?; Ok(if memory_length_is_zero { @@ -146,28 +157,176 @@ impl<F: Field> MemoryAddressGadget<F> { }) } - pub(crate) fn has_length(&self) -> Expression<F> { - 1.expr() - self.memory_length_is_zero.expr() + fn offset_word(&self) -> Word<Expression<F>> { + self.memory_offset.to_word() } - pub(crate) fn offset(&self) -> Expression<F> { - self.has_length() * from_bytes::expr(&self.memory_offset_bytes.cells) + fn length_word(&self) -> Word<Expression<F>> { + self.memory_length.to_word() } - pub(crate) fn offset_rlc(&self) -> Expression<F> { - self.memory_offset.expr() + // real length + fn length(&self) -> Expression<F> { + self.memory_length.expr() } - pub(crate) fn length(&self) -> Expression<F> { - from_bytes::expr(&self.memory_length.cells) + fn address(&self) -> Expression<F> { + self.offset() + self.length() } +} - pub(crate) fn length_rlc(&self) -> Expression<F> { - self.memory_length.expr() +/// Check if memory offset plus length is within range or Uint overflow. +/// The sum of memory offset and length should also be less than or equal to +/// `0x1FFFFFFFE0` (which is less than `u64::MAX - 31`). +/// Reference go-ethereum code as: +/// . [calcMemSize64WithUint](https://github.com/ethereum/go-ethereum/blob/db18293c32f6dc5d6886e5e68ab8bfd12e33cad6/core/vm/common.go#L37) +/// . [memoryGasCost](https://github.com/ethereum/go-ethereum/blob/db18293c32f6dc5d6886e5e68ab8bfd12e33cad6/core/vm/gas_table.go#L38) +/// . [toWordSize](https://github.com/ethereum/go-ethereum/blob/db18293c32f6dc5d6886e5e68ab8bfd12e33cad6/core/vm/common.go#L67) +#[derive(Clone, Debug)] +pub(crate) struct MemoryExpandedAddressGadget<F> { + length_is_zero: IsZeroGadget<F>, + offset_length_sum: AddWordsGadget<F, 2, false>, + sum_lt_cap: LtGadget<F, N_BYTES_U64>, + sum_within_u64: IsZeroGadget<F>, +} + +impl<F: Field> CommonMemoryAddressGadget<F> for MemoryExpandedAddressGadget<F> { + fn construct_self(cb: &mut EVMConstraintBuilder<F>) -> Self { + let offset = cb.query_word32(); + let length = cb.query_word32(); + let sum = cb.query_word32(); + + let sum_lt_cap = LtGadget::construct( + cb, + from_bytes::expr(&sum.limbs[..N_BYTES_U64]), + (MAX_EXPANDED_MEMORY_ADDRESS + 1).expr(), + ); + + let sum_overflow_hi = sum::expr(&sum.limbs[N_BYTES_U64..]); + let sum_within_u64 = IsZeroGadget::construct(cb, sum_overflow_hi); + + let length_is_zero = IsZeroGadget::construct(cb, sum::expr(&length.limbs)); + let offset_length_sum = AddWordsGadget::construct(cb, [offset, length], sum); + + Self { + length_is_zero, + offset_length_sum, + sum_lt_cap, + sum_within_u64, + } } - pub(crate) fn address(&self) -> Expression<F> { - self.offset() + self.length() + fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + memory_offset: U256, + memory_length: U256, + ) -> Result<u64, Error> { + let length_bytes = memory_length + .to_le_bytes() + .iter() + .fold(0, |acc, val| acc + u64::from(*val)); + self.length_is_zero + .assign(region, offset, F::from(length_bytes))?; + + let (sum, sum_word_overflow) = memory_offset.overflowing_add(memory_length); + self.offset_length_sum + .assign(region, offset, [memory_offset, memory_length], sum)?; + + self.sum_lt_cap.assign( + region, + offset, + F::from(sum.low_u64()), + F::from(MAX_EXPANDED_MEMORY_ADDRESS + 1), + )?; + + let sum_overflow_hi_bytes = sum.to_le_bytes()[N_BYTES_U64..] + .iter() + .fold(0, |acc, val| acc + u64::from(*val)); + self.sum_within_u64 + .assign(region, offset, F::from(sum_overflow_hi_bytes))?; + + let address = if length_bytes == 0 + || sum_overflow_hi_bytes != 0 + || sum_word_overflow + || sum.low_u64() > MAX_EXPANDED_MEMORY_ADDRESS + { + 0 + } else { + sum.low_u64() + }; + + Ok(address) + } + + fn offset_word(&self) -> Word<Expression<F>> { + let addends = self.offset_length_sum.addends(); + addends[0].to_word() + } + + fn length_word(&self) -> Word<Expression<F>> { + let addends = self.offset_length_sum.addends(); + addends[1].to_word() + } + + fn length(&self) -> Expression<F> { + let addends = self.offset_length_sum.addends(); + select::expr( + self.within_range(), + from_bytes::expr(&addends[1].limbs[..N_BYTES_U64]), + 0.expr(), + ) + } + + /// Return expanded address if within range, otherwise return 0. + fn address(&self) -> Expression<F> { + select::expr( + self.length_is_zero.expr(), + 0.expr(), + select::expr( + self.within_range(), + from_bytes::expr(&self.offset_length_sum.sum().limbs[..N_BYTES_U64]), + 0.expr(), + ), + ) + } +} + +impl<F: Field> MemoryExpandedAddressGadget<F> { + /// Return the valid length value corresponding to function `length` + /// (which returns an Expression). + pub(crate) fn length_value(memory_offset: U256, memory_length: U256) -> u64 { + if memory_length.is_zero() { + return 0; + } + + memory_offset + .checked_add(memory_length) + .map_or(0, |address| { + if address > MAX_EXPANDED_MEMORY_ADDRESS.into() { + 0 + } else { + memory_length.as_u64() + } + }) + } + + /// Check if overflow. + pub(crate) fn overflow(&self) -> Expression<F> { + not::expr(self.within_range()) + } + + /// Check if within range. + pub(crate) fn within_range(&self) -> Expression<F> { + or::expr([ + self.length_is_zero.expr(), + and::expr([ + self.sum_lt_cap.expr(), + self.sum_within_u64.expr(), + not::expr(self.offset_length_sum.carry().as_ref().unwrap()), + ]), + ]) } } @@ -358,8 +517,6 @@ pub(crate) struct MemoryCopierGasGadget<F, const GAS_COPY: u64> { } impl<F: Field, const GAS_COPY: u64> MemoryCopierGasGadget<F, GAS_COPY> { - pub const WORD_SIZE: u64 = 32u64; - /// Input requirements: /// - `curr_memory_size < 256**MAX_MEMORY_SIZE_IN_BYTES` /// - `address < 32 * 256**MAX_MEMORY_SIZE_IN_BYTES` @@ -415,11 +572,6 @@ pub(crate) struct BufferReaderGadget<F, const MAX_BYTES: usize, const N_BYTES_ME /// The selectors that indicate if the corrsponding byte contains real data /// or is padded selectors: [Cell<F>; MAX_BYTES], - /// `bound_dist` is defined as `max(addr_end - addr_start - i, 0)` for `i` - /// in 0..MAX_BYTES - bound_dist: [Cell<F>; MAX_BYTES], - /// Check if bound_dist is zero - bound_dist_is_zero: [IsZeroGadget<F>; MAX_BYTES], /// The min gadget to take the minimum of addr_start and addr_end min_gadget: MinMaxGadget<F, N_BYTES_MEMORY_ADDRESS>, } @@ -434,39 +586,6 @@ impl<F: Field, const MAX_BYTES: usize, const ADDR_SIZE_IN_BYTES: usize> ) -> Self { let bytes = array_init(|_| cb.query_byte()); let selectors = array_init(|_| cb.query_bool()); - let bound_dist = array_init(|_| cb.query_cell()); - let bound_dist_is_zero = - array_init(|idx| IsZeroGadget::construct(cb, bound_dist[idx].expr())); - - // Define bound_dist[i] = max(addr_end - addr_start - i, 0) - // The purpose of bound_dist is to check if the access to the buffer - // is out of bound. When bound_dist[i] == 0, it indicates OOB access - // and so bytes[i] has to be 0. - // Because the bound_dist is decreasing by at most 1 each time, we can - // use this property to reduce the use of LtGadget by adding constraints - // to the diff between two consecutive bound_dists. - - // The constraints on bound_dist[0]. - // bound_dist[0] == addr_end - addr_start if addr_start < addr_end - // bound_dist[0] == 0 if addr_start >= addr_end - let min_gadget = MinMaxGadget::construct(cb, addr_start, addr_end.clone()); - cb.require_equal( - "bound_dist[0] == addr_end - min(addr_start, add_end)", - bound_dist[0].expr(), - addr_end - min_gadget.min(), - ); - // Constraints on bound_dist[1..MAX_BYTES] - // diff = bound_dist[idx - 1] - bound_dist[idx] - // diff == 1 if bound_dist[idx - 1] != 0 - // diff == 0 if bound_dist[idx - 1] == 0 - for idx in 1..MAX_BYTES { - let diff = bound_dist[idx - 1].expr() - bound_dist[idx].expr(); - cb.require_equal( - "diff == 0 if bound_dist[i - 1] == 0; otherwise 1", - diff, - select::expr(bound_dist_is_zero[idx - 1].expr(), 0.expr(), 1.expr()), - ) - } // Constraints on bytes and selectors for i in 0..MAX_BYTES { @@ -486,17 +605,38 @@ impl<F: Field, const MAX_BYTES: usize, const ADDR_SIZE_IN_BYTES: usize> "bytes[i] == 0 when selectors[i] == 0", (1.expr() - selectors[i].expr()) * bytes[i].expr(), ); - cb.add_constraint( - "bytes[i] == 0 when bound_dist[i] == 0", - bound_dist_is_zero[i].expr() * bytes[i].expr(), - ) } + // Look at the data length, which can be negative, or within the buffer span, or larger. + // Decide what is the other operand of the MinMaxGadget gadget. If the buffer is empty + // because end <= start, compare the length to 0. Otherwise, compare to the buffer size. + let is_empty = not::expr(&selectors[0]); + let cap = select::expr(is_empty.expr(), 0.expr(), MAX_BYTES.expr()); + let signed_len = addr_end - addr_start; + let min_gadget = MinMaxGadget::construct(cb, cap, signed_len); + + // If we claim that the buffer is empty, we prove that the end is at or before the start. + // buffer_len = max(0, signed_len) = 0 + cb.condition(is_empty.expr(), |cb| { + cb.require_zero("addr_end <= addr_start", min_gadget.max()); + }); + + // Otherwise, the buffer length equals the data length, capped at the buffer size. + // buffer_len = min(MAX_BYTES, signed_len) + cb.condition(not::expr(is_empty), |cb| { + let buffer_len = sum::expr(&selectors); + let capped_len = min_gadget.min(); + + cb.require_equal( + "buffer length == end - start (capped)", + buffer_len, + capped_len, + ); + }); + BufferReaderGadget { bytes, selectors, - bound_dist, - bound_dist_is_zero, min_gadget, } } @@ -508,25 +648,32 @@ impl<F: Field, const MAX_BYTES: usize, const ADDR_SIZE_IN_BYTES: usize> addr_start: u64, addr_end: u64, bytes: &[u8], - selectors: &[bool], ) -> Result<(), Error> { - self.min_gadget - .assign(region, offset, F::from(addr_start), F::from(addr_end))?; - - assert_eq!(selectors.len(), MAX_BYTES); - for (idx, selector) in selectors.iter().enumerate() { - self.selectors[idx].assign(region, offset, Value::known(F::from(*selector as u64)))?; - self.bytes[idx].assign(region, offset, Value::known(F::from(bytes[idx] as u64)))?; - // assign bound_dist and bound_dist_is_zero - let oob = addr_start + idx as u64 >= addr_end; - let bound_dist = if oob { - F::ZERO - } else { - F::from(addr_end - addr_start - idx as u64) - }; - self.bound_dist[idx].assign(region, offset, Value::known(bound_dist))?; - self.bound_dist_is_zero[idx].assign(region, offset, bound_dist)?; + assert_eq!(bytes.len(), MAX_BYTES); + for (idx, ((byte_col, &byte_val), selector_col)) in self + .bytes + .iter() + .zip_eq(bytes.iter()) + .zip_eq(self.selectors.iter()) + .enumerate() + { + let selector = (addr_start + idx as u64) < addr_end; + selector_col.assign(region, offset, Value::known(F::from(selector as u64)))?; + byte_col.assign(region, offset, Value::known(F::from(byte_val as u64)))?; } + + let is_empty = addr_start >= addr_end; + let cap = if is_empty { 0 } else { MAX_BYTES }; + let signed_len = if is_empty { + -F::from(addr_start - addr_end) + } else { + F::from(addr_end - addr_start) + }; + self.min_gadget + .assign(region, offset, F::from(cap as u64), signed_len)?; + + // Completeness: MinMaxGadget requires `signed_len ∈ (cap-RANGE; cap+RANGE]`, covering all + // cases. If is_empty, signed_len ∈ (-RANGE; 0], otherwise signed_len ∈ [1; RANGE). Ok(()) } @@ -534,16 +681,8 @@ impl<F: Field, const MAX_BYTES: usize, const ADDR_SIZE_IN_BYTES: usize> self.bytes[idx].expr() } - pub(crate) fn has_data(&self, idx: usize) -> Expression<F> { - self.selectors[idx].expr() - } - /// Indicate whether the bytes\[idx\] is read from the buffer pub(crate) fn read_flag(&self, idx: usize) -> Expression<F> { - self.has_data(idx) * (1.expr() - self.bound_dist_is_zero[idx].expr()) - } - - pub(crate) fn num_bytes(&self) -> Expression<F> { - sum::expr(&self.selectors) + self.selectors[idx].expr() } } diff --git a/zkevm-circuits/src/exp_circuit.rs b/zkevm-circuits/src/exp_circuit.rs index 8d108a9557..80a8173385 100644 --- a/zkevm-circuits/src/exp_circuit.rs +++ b/zkevm-circuits/src/exp_circuit.rs @@ -1,11 +1,11 @@ //! Exponentiation verification circuit. -#[cfg(any(feature = "test", test, feature = "test-circuits"))] +#[cfg(any(test, feature = "test-circuits"))] mod dev; pub(crate) mod param; -#[cfg(any(feature = "test", test))] +#[cfg(test)] mod test; -#[cfg(any(feature = "test", test, feature = "test-circuits"))] +#[cfg(feature = "test-circuits")] pub use dev::ExpCircuit as TestExpCircuit; use crate::{ diff --git a/zkevm-circuits/src/exp_circuit/test.rs b/zkevm-circuits/src/exp_circuit/test.rs index 1c190231e8..5e6fa3c0bf 100644 --- a/zkevm-circuits/src/exp_circuit/test.rs +++ b/zkevm-circuits/src/exp_circuit/test.rs @@ -1,4 +1,3 @@ -#![allow(unused_imports)] use crate::{ evm_circuit::witness::{block_convert, Block}, exp_circuit::ExpCircuit, @@ -6,13 +5,10 @@ use crate::{ }; use bus_mapping::{ circuit_input_builder::{CircuitInputBuilder, FixedCParams}, - evm::OpcodeId, mock::BlockData, }; use eth_types::{bytecode, geth_types::GethData, Bytecode, Field, Word}; -use halo2_proofs::{ - circuit::SimpleFloorPlanner, dev::MockProver, halo2curves::bn256::Fr, plonk::Circuit, -}; +use halo2_proofs::{dev::MockProver, halo2curves::bn256::Fr}; use mock::TestContext; #[test] diff --git a/zkevm-circuits/src/instance.rs b/zkevm-circuits/src/instance.rs new file mode 100644 index 0000000000..f58222d1a1 --- /dev/null +++ b/zkevm-circuits/src/instance.rs @@ -0,0 +1,285 @@ +//! The instance definition. + +use eth_types::{geth_types::BlockConstants, BigEndianHash, Field, Keccak}; +use std::{iter, ops::Deref}; + +use eth_types::{geth_types::Transaction, Address, ToBigEndian, Word, H256}; +use itertools::Itertools; + +use crate::{util::word, witness::Block}; + +pub(super) const ZERO_BYTE_GAS_COST: u64 = 4; +pub(super) const NONZERO_BYTE_GAS_COST: u64 = 16; + +/// Values of the block table (as in the spec) +#[derive(Clone, Default, Debug)] +pub struct BlockValues { + /// coinbase + pub coinbase: Address, + /// gas_limit + pub gas_limit: u64, + /// number + pub number: u64, + /// timestamp + pub timestamp: u64, + /// difficulty + pub difficulty: Word, + /// base_fee + pub base_fee: Word, // NOTE: BaseFee was added by EIP-1559 and is ignored in legacy headers. + /// chain_id + pub chain_id: u64, + /// history_hashes + pub history_hashes: Vec<H256>, +} + +/// Values of the tx table (as in the spec) +#[derive(Default, Debug, Clone)] +pub struct TxValues { + /// nonce + pub nonce: u64, + /// gas_limit + pub gas_limit: u64, + /// gas_price + pub gas_price: Word, + /// from_addr + pub from_addr: Address, + /// to_addr + pub to_addr: Address, + /// is_create + pub is_create: u64, + /// value + pub value: Word, + /// call_data_len + pub call_data_len: u64, + /// call_data_gas_cost + pub call_data_gas_cost: u64, + /// tx_sign_hash + pub tx_sign_hash: [u8; 32], +} + +/// Extra values (not contained in block or tx tables) +#[derive(Default, Debug, Clone)] +pub struct ExtraValues { + /// block_hash + pub block_hash: H256, + /// state_root + pub state_root: H256, + /// prev_state_root + pub prev_state_root: H256, +} + +/// PublicData contains all the values that the PiCircuit recieves as input +#[derive(Debug, Clone)] +pub struct PublicData { + /// chain id + pub chain_id: Word, + /// History hashes contains the most recent 256 block hashes in history, + /// where the latest one is at history_hashes[history_hashes.len() - 1]. + pub history_hashes: Vec<Word>, + /// Block Transactions + pub transactions: Vec<Transaction>, + /// Block State Root + pub state_root: H256, + /// Previous block root + pub prev_state_root: H256, + /// Constants related to Ethereum block + pub block_constants: BlockConstants, + /// Block Hash + pub block_hash: Option<H256>, +} + +impl Default for PublicData { + fn default() -> Self { + PublicData { + chain_id: Word::default(), + history_hashes: vec![], + transactions: vec![], + state_root: H256::zero(), + prev_state_root: H256::zero(), + block_constants: BlockConstants::default(), + block_hash: None, + } + } +} + +impl PublicData { + /// Returns struct with values for the block table + pub fn get_block_table_values(&self) -> BlockValues { + let history_hashes = [ + vec![H256::zero(); 256 - self.history_hashes.len()], + self.history_hashes + .iter() + .map(|&hash| H256::from(hash.to_be_bytes())) + .collect(), + ] + .concat(); + BlockValues { + coinbase: self.block_constants.coinbase, + gas_limit: self.block_constants.gas_limit.as_u64(), + number: self.block_constants.number.as_u64(), + timestamp: self.block_constants.timestamp.as_u64(), + difficulty: self.block_constants.difficulty, + base_fee: self.block_constants.base_fee, + chain_id: self.chain_id.as_u64(), + history_hashes, + } + } + + /// Returns struct with values for the tx table + pub fn get_tx_table_values(&self) -> Vec<TxValues> { + let chain_id: u64 = self + .chain_id + .try_into() + .expect("Error converting chain_id to u64"); + let mut tx_vals = vec![]; + for tx in &self.transactions { + let sign_data_res = tx.sign_data(chain_id); + let msg_hash_le = + sign_data_res.map_or_else(|_| [0u8; 32], |sign_data| sign_data.msg_hash.to_bytes()); + tx_vals.push(TxValues { + nonce: tx.nonce.low_u64(), + gas_price: tx.gas_price, + gas_limit: tx.gas(), + from_addr: tx.from, + to_addr: tx.to.unwrap_or_else(Address::zero), + is_create: (tx.to.is_none() as u64), + value: tx.value, + call_data_len: tx.call_data.0.len() as u64, + call_data_gas_cost: tx.call_data.0.iter().fold(0, |acc, byte| { + acc + if *byte == 0 { + ZERO_BYTE_GAS_COST + } else { + NONZERO_BYTE_GAS_COST + } + }), + tx_sign_hash: msg_hash_le, + }); + } + tx_vals + } + + /// Returns struct with the extra values + pub fn get_extra_values(&self) -> ExtraValues { + ExtraValues { + block_hash: self.block_hash.unwrap_or_else(H256::zero), + state_root: self.state_root, + prev_state_root: self.prev_state_root, + } + } + + /// get the serialized public data bytes + pub fn get_pi_bytes(&self, max_txs: usize, max_calldata: usize) -> Vec<u8> { + // Assign block table + let block_values = self.get_block_table_values(); + let result = iter::empty() + .chain(0u8.to_be_bytes()) // zero byte + .chain(block_values.coinbase.to_fixed_bytes()) // coinbase + .chain(block_values.gas_limit.to_be_bytes()) // gas_limit + .chain(block_values.number.to_be_bytes()) // number + .chain(block_values.timestamp.to_be_bytes()) // timestamp + .chain(block_values.difficulty.to_be_bytes()) // difficulty + .chain(block_values.base_fee.to_be_bytes()) // base_fee + .chain(block_values.chain_id.to_be_bytes()) // chain_id + .chain( + block_values + .history_hashes + .iter() + .flat_map(|prev_hash| prev_hash.to_fixed_bytes()), + ); // history_hashes + + // Assign extra fields + let extra_vals = self.get_extra_values(); + let result = result + .chain(extra_vals.block_hash.to_fixed_bytes()) // block hash + .chain(extra_vals.state_root.to_fixed_bytes()) // block state root + .chain(extra_vals.prev_state_root.to_fixed_bytes()); // previous block state root + + // Assign Tx table + let tx_field_byte_fn = |tx_id: u64, index: u64, value_bytes: &[u8]| { + iter::empty() + .chain(tx_id.to_be_bytes()) // tx_id + .chain(index.to_be_bytes()) // index + .chain(value_bytes.to_vec()) // value + }; + let tx_bytes_fn = |tx_id: u64, index: u64, tx: &TxValues| { + vec![ + tx.nonce.to_be_bytes().to_vec(), // nonce + tx.gas_limit.to_be_bytes().to_vec(), // gas_limit + tx.gas_price.to_be_bytes().to_vec(), // gas price + tx.from_addr.as_fixed_bytes().to_vec(), // from_addr + tx.to_addr.as_fixed_bytes().to_vec(), // to_addr + tx.is_create.to_be_bytes().to_vec(), // is_create + tx.value.to_be_bytes().to_vec(), // value + tx.call_data_len.to_be_bytes().to_vec(), // call_data_len + tx.call_data_gas_cost.to_be_bytes().to_vec(), // call_data_gas_cost + tx.tx_sign_hash.iter().rev().copied().collect_vec(), // tx sign hash + ] + .iter() + .flat_map(move |value_bytes| tx_field_byte_fn(tx_id, index, value_bytes)) + .collect_vec() + }; + + let txs_values = self.get_tx_table_values(); + let tx_values_default = TxValues::default(); + + // all tx bytes including tx padding + let all_tx_bytes = iter::empty() + .chain(&txs_values) + .chain((0..(max_txs - txs_values.len())).map(|_| &tx_values_default)) + .enumerate() + .flat_map(|(i, tx)| { + let i: u64 = i.try_into().unwrap(); + tx_bytes_fn(i + 1, 0, tx) + }); + + // first tx empty row happened here + let result = result + .chain(tx_field_byte_fn(0, 0, &[0u8; 1])) // empty row + .chain(all_tx_bytes); + + // Tx Table CallData + let all_calldata = self + .transactions + .iter() + .flat_map(|tx| tx.call_data.0.as_ref().iter().copied()) + .collect_vec(); + let calldata_count = all_calldata.len(); + // concat call data with call data padding + let calldata_chain = iter::empty() + .chain(all_calldata) + .chain((0..max_calldata - calldata_count).map(|_| 0u8)); + result.chain(calldata_chain).collect_vec() + } + + /// generate public data from validator perspective + pub fn get_rpi_digest_word<F: Field>( + &self, + max_txs: usize, + max_calldata: usize, + ) -> word::Word<F> { + let mut keccak = Keccak::default(); + keccak.update(&self.get_pi_bytes(max_txs, max_calldata)); + let digest = keccak.digest(); + word::Word::from(Word::from_big_endian(&digest)) + } +} + +/// convert witness block to public data +pub fn public_data_convert<F: Field>(block: &Block<F>) -> PublicData { + PublicData { + chain_id: block.context.chain_id, + history_hashes: block.context.history_hashes.clone(), + transactions: block.txs.iter().map(|tx| tx.deref().clone()).collect_vec(), + state_root: block.eth_block.state_root, + prev_state_root: H256::from_uint(&block.prev_state_root), + block_hash: block.eth_block.hash, + block_constants: BlockConstants { + coinbase: block.context.coinbase, + timestamp: block.context.timestamp, + number: block.context.number.as_u64().into(), + difficulty: block.context.difficulty, + gas_limit: block.context.gas_limit.into(), + base_fee: block.context.base_fee, + }, + } +} diff --git a/zkevm-circuits/src/keccak_circuit.rs b/zkevm-circuits/src/keccak_circuit.rs index 029ec196a6..4671cc0134 100644 --- a/zkevm-circuits/src/keccak_circuit.rs +++ b/zkevm-circuits/src/keccak_circuit.rs @@ -1,5 +1,4 @@ //! The keccak circuit implementation. -mod cell_manager; /// Keccak packed multi pub mod keccak_packed_multi; mod param; @@ -7,18 +6,17 @@ mod table; /// Util mod util; -#[cfg(any(feature = "test", test, feature = "test-circuits"))] +#[cfg(any(test, feature = "test-circuits"))] mod dev; -#[cfg(any(feature = "test", test))] +#[cfg(test)] mod test; -#[cfg(any(feature = "test", test, feature = "test-circuits"))] +#[cfg(feature = "test-circuits")] pub use dev::KeccakCircuit as TestKeccakCircuit; use std::marker::PhantomData; pub use KeccakCircuitConfig as KeccakConfig; use self::{ - cell_manager::*, keccak_packed_multi::{keccak_unusable_rows, multi_keccak, KeccakRow}, param::*, table::*, @@ -32,7 +30,11 @@ use crate::{ split, split_uniform, transform, transform_to, Part, }, table::{KeccakTable, LookupTable}, - util::{Challenges, SubCircuit, SubCircuitConfig}, + util::{ + cell_manager::{CMFixedHeightStrategy, Cell, CellManager, CellType}, + word::{self, WordExpr}, + Challenges, SubCircuit, SubCircuitConfig, + }, witness, }; use eth_types::Field; @@ -44,6 +46,8 @@ use halo2_proofs::{ }; use log::debug; +pub(crate) static DEFAULT_CELL_TYPE: CellType = CellType::StoragePhase1; + /// KeccakConfig #[derive(Clone, Debug)] pub struct KeccakCircuitConfig<F> { @@ -56,7 +60,7 @@ pub struct KeccakCircuitConfig<F> { q_padding_last: Column<Fixed>, /// The columns for other circuits to lookup Keccak hash results pub keccak_table: KeccakTable, - cell_manager: CellManager<F>, + cell_manager: CellManager<CMFixedHeightStrategy>, round_cst: Column<Fixed>, normalize_3: [TableColumn; 2], normalize_4: [TableColumn; 2], @@ -101,7 +105,7 @@ impl<F: Field> SubCircuitConfig<F> for KeccakCircuitConfig<F> { let is_final = keccak_table.is_enabled; let length = keccak_table.input_len; let data_rlc = keccak_table.input_rlc; - let hash_rlc = keccak_table.output_rlc; + let hash_word = keccak_table.output; let normalize_3 = array_init::array_init(|_| meta.lookup_table_column()); let normalize_4 = array_init::array_init(|_| meta.lookup_table_column()); @@ -109,7 +113,11 @@ impl<F: Field> SubCircuitConfig<F> for KeccakCircuitConfig<F> { let chi_base_table = array_init::array_init(|_| meta.lookup_table_column()); let pack_table = array_init::array_init(|_| meta.lookup_table_column()); - let mut cell_manager = CellManager::new(get_num_rows_per_round()); + let mut cell_manager = CellManager::new(CMFixedHeightStrategy::new( + get_num_rows_per_round(), + DEFAULT_CELL_TYPE, + )); + let mut cb = BaseConstraintBuilder::new(MAX_DEGREE); let mut total_lookup_counter = 0; @@ -129,15 +137,15 @@ impl<F: Field> SubCircuitConfig<F> for KeccakCircuitConfig<F> { let mut s_next = vec![vec![0u64.expr(); 5]; 5]; for i in 0..5 { for j in 0..5 { - let cell = cell_manager.query_cell(meta); + let cell = cell_manager.query_cell(meta, DEFAULT_CELL_TYPE); s[i][j] = cell.expr(); s_next[i][j] = cell.at_offset(meta, get_num_rows_per_round() as i32).expr(); } } // Absorb data - let absorb_from = cell_manager.query_cell(meta); - let absorb_data = cell_manager.query_cell(meta); - let absorb_result = cell_manager.query_cell(meta); + let absorb_from = cell_manager.query_cell(meta, DEFAULT_CELL_TYPE); + let absorb_data = cell_manager.query_cell(meta, DEFAULT_CELL_TYPE); + let absorb_result = cell_manager.query_cell(meta, DEFAULT_CELL_TYPE); let mut absorb_from_next = vec![0u64.expr(); NUM_WORDS_TO_ABSORB]; let mut absorb_data_next = vec![0u64.expr(); NUM_WORDS_TO_ABSORB]; let mut absorb_result_next = vec![0u64.expr(); NUM_WORDS_TO_ABSORB]; @@ -158,12 +166,12 @@ impl<F: Field> SubCircuitConfig<F> for KeccakCircuitConfig<F> { // done simply by doing state + data and then normalizing the result to [0,1]. // We also need to convert the input data into bytes to calculate the input data // rlc. - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); let mut lookup_counter = 0; let part_size = get_num_bits_per_absorb_lookup(); let input = absorb_from.expr() + absorb_data.expr(); let absorb_fat = split::expr(meta, &mut cell_manager, &mut cb, input, 0, part_size); - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); let absorb_res = transform::expr( "absorb", meta, @@ -187,7 +195,7 @@ impl<F: Field> SubCircuitConfig<F> for KeccakCircuitConfig<F> { // "Absorb" happens at the first round. However, the input is witnessed and // processed over the first 17 rounds. Each round converts a word into 8 // bytes. - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); let mut lookup_counter = 0; // Potential optimization: could do multiple bytes per lookup let packed_parts = split::expr( @@ -198,7 +206,7 @@ impl<F: Field> SubCircuitConfig<F> for KeccakCircuitConfig<F> { 0, NUM_BYTES_PER_WORD, ); - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); let input_bytes = transform::expr( "input unpack", meta, @@ -215,10 +223,10 @@ impl<F: Field> SubCircuitConfig<F> for KeccakCircuitConfig<F> { ); // Padding data - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); let mut is_paddings = Vec::new(); for _ in input_bytes.iter() { - is_paddings.push(cell_manager.query_cell(meta)); + is_paddings.push(cell_manager.query_cell(meta, DEFAULT_CELL_TYPE)); } debug!("- Post padding:"); debug!("Lookups: {}", lookup_counter); @@ -232,7 +240,7 @@ impl<F: Field> SubCircuitConfig<F> for KeccakCircuitConfig<F> { // - `t[i] = bc[(i + 4) % 5] + rot(bc[(i + 1)% 5], 1)` // This is done by splitting the bc values in parts in a way // that allows us to also calculate the rotated value "for free". - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); let mut lookup_counter = 0; let part_size_c = get_num_bits_per_theta_c_lookup(); let mut c_parts = Vec::new(); @@ -249,7 +257,7 @@ impl<F: Field> SubCircuitConfig<F> for KeccakCircuitConfig<F> { )); } // Now calculate `bc` by normalizing `c` - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); let mut bc = Vec::new(); for c in c_parts { // Normalize c @@ -290,7 +298,7 @@ impl<F: Field> SubCircuitConfig<F> for KeccakCircuitConfig<F> { // re-splitting the words again before chi. Instead we do chi directly // on the output parts of rho/pi. For rho/pi specically we do // `s[j][2 * i + 3 * j) % 5] = normalize(rot(s[i][j], RHOM[i][j]))`. - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); let mut lookup_counter = 0; let part_size = get_num_bits_per_base_chi_lookup(); // To combine the rho/pi/chi steps we have to ensure a specific layout so @@ -310,24 +318,27 @@ impl<F: Field> SubCircuitConfig<F> for KeccakCircuitConfig<F> { let mut num_columns = 0; let mut column_starts = [0usize; 3]; for p in 0..3 { - column_starts[p] = cell_manager.start_region(); + column_starts[p] = cell_manager.get_strategy().start_region(); let mut row_idx = 0; num_columns = 0; for j in 0..5 { for _ in 0..num_word_parts { for i in 0..5 { - rho_pi_chi_cells[p][i][j] - .push(cell_manager.query_cell_at_row(meta, row_idx)); + rho_pi_chi_cells[p][i][j].push(cell_manager.query_cell_with_affinity( + meta, + DEFAULT_CELL_TYPE, + row_idx, + )); } if row_idx == 0 { num_columns += 1; } - row_idx = (((row_idx as usize) + 1) % get_num_rows_per_round()) as i32; + row_idx = (row_idx + 1) % get_num_rows_per_round(); } } } // Do the transformation, resulting in the word parts also being normalized. - let pi_region_start = cell_manager.start_region(); + let pi_region_start = cell_manager.get_strategy().start_region(); let mut os_parts = vec![vec![Vec::new(); 5]; 5]; for (j, os_part) in os_parts.iter_mut().enumerate() { for i in 0..5 { @@ -354,15 +365,15 @@ impl<F: Field> SubCircuitConfig<F> for KeccakCircuitConfig<F> { os_part[(2 * i + 3 * j) % 5] = s_parts.clone(); } } - let pi_region_end = cell_manager.start_region(); + let pi_region_end = cell_manager.get_strategy().start_region(); // Pi parts range checks // To make the uniform stuff work we had to combine some parts together // in new cells (see split_uniform). Here we make sure those parts are range // checked. Potential improvement: Could combine multiple smaller parts // in a single lookup but doesn't save that much. for c in pi_region_start..pi_region_end { - meta.lookup("pi part range check", |_| { - vec![(cell_manager.columns()[c].expr.clone(), normalize_4[0])] + meta.lookup("pi part range check", |meta| { + vec![(cell_manager.columns()[c].expr_vc(meta), normalize_4[0])] }); lookup_counter += 1; } @@ -383,10 +394,10 @@ impl<F: Field> SubCircuitConfig<F> for KeccakCircuitConfig<F> { let mut output: [Expression<F>; 5] = array_init::array_init(|_| 0.expr()); for c in 0..5 { input[c] = cell_manager.columns()[column_starts[1] + idx * 5 + c] - .expr + .expr(meta) .clone(); output[c] = cell_manager.columns()[column_starts[2] + idx * 5 + c] - .expr + .expr(meta) .clone(); } // Now calculate `a ^ ((~b) & c)` by doing `lookup[3 - 2*a + b - c]` @@ -424,11 +435,11 @@ impl<F: Field> SubCircuitConfig<F> for KeccakCircuitConfig<F> { // iota // Simply do the single xor on state [0][0]. - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); let part_size = get_num_bits_per_absorb_lookup(); let input = s[0][0].clone() + round_cst_expr.clone(); let iota_parts = split::expr(meta, &mut cell_manager, &mut cb, input, 0, part_size); - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); // Could share columns with absorb which may end up using 1 lookup/column // fewer... s[0][0] = decode::expr(transform::expr( @@ -452,10 +463,10 @@ impl<F: Field> SubCircuitConfig<F> for KeccakCircuitConfig<F> { total_lookup_counter += lookup_counter; let mut lookup_counter = 0; - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); // Squeeze data - let squeeze_from = cell_manager.query_cell(meta); + let squeeze_from = cell_manager.query_cell(meta, DEFAULT_CELL_TYPE); let mut squeeze_from_prev = vec![0u64.expr(); NUM_WORDS_TO_SQUEEZE]; for (idx, squeeze_from_prev) in squeeze_from_prev.iter_mut().enumerate() { let rot = (-(idx as i32) - 1) * get_num_rows_per_round() as i32; @@ -466,12 +477,12 @@ impl<F: Field> SubCircuitConfig<F> for KeccakCircuitConfig<F> { // over those 24 rounds. In a single round (in 4 of the 24 rounds) a // single word is converted to bytes. // Potential optimization: could do multiple bytes per lookup - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); // Unpack a single word into bytes (for the squeeze) // Potential optimization: could do multiple bytes per lookup let squeeze_from_parts = split::expr(meta, &mut cell_manager, &mut cb, squeeze_from.expr(), 0, 8); - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); let squeeze_bytes = transform::expr( "squeeze unpack", meta, @@ -565,12 +576,12 @@ impl<F: Field> SubCircuitConfig<F> for KeccakCircuitConfig<F> { }); } let hash_bytes_le = hash_bytes.into_iter().rev().collect::<Vec<_>>(); - let rlc = compose_rlc::expr(&hash_bytes_le, challenges.evm_word()); + cb.condition(start_new_hash, |cb| { - cb.require_equal( - "hash rlc check", - rlc, - meta.query_advice(hash_rlc, Rotation::cur()), + cb.require_equal_word( + "output check", + word::Word32::new(hash_bytes_le.try_into().expect("32 limbs")).to_word(), + hash_word.map(|col| meta.query_advice(col, Rotation::cur())), ); }); cb.gate(meta.query_fixed(q_round_last, Rotation::cur())) @@ -827,7 +838,10 @@ impl<F: Field> SubCircuitConfig<F> for KeccakCircuitConfig<F> { debug!("Minimum rows: {}", meta.minimum_rows()); debug!("Total Lookups: {}", total_lookup_counter); debug!("Total Columns: {}", cell_manager.get_width()); - debug!("num unused cells: {}", cell_manager.get_num_unused_cells()); + debug!( + "num unused cells: {}", + cell_manager.get_strategy().get_num_unused_cells() + ); debug!("part_size absorb: {}", get_num_bits_per_absorb_lookup()); debug!("part_size theta: {}", get_num_bits_per_theta_c_lookup()); debug!( @@ -921,7 +935,8 @@ impl<F: Field> KeccakCircuitConfig<F> { Value::known(F::from(row.is_final as u64)), row.data_rlc, Value::known(F::from(row.length as u64)), - row.hash_rlc, + row.hash.lo(), + row.hash.hi(), ], )?; diff --git a/zkevm-circuits/src/keccak_circuit/cell_manager.rs b/zkevm-circuits/src/keccak_circuit/cell_manager.rs deleted file mode 100644 index 0706ac93a7..0000000000 --- a/zkevm-circuits/src/keccak_circuit/cell_manager.rs +++ /dev/null @@ -1,207 +0,0 @@ -use crate::keccak_circuit::util::extract_field; -use eth_types::Field; -use gadgets::util::Expr; -use halo2_proofs::{ - circuit::Value, - plonk::{Advice, Column, ConstraintSystem, Expression, VirtualCells}, - poly::Rotation, -}; - -use super::keccak_packed_multi::KeccakRegion; - -#[derive(Clone, Debug)] -pub(crate) struct Cell<F> { - pub(crate) expression: Expression<F>, - pub(crate) column_expression: Expression<F>, - pub(crate) column: Option<Column<Advice>>, - pub(crate) column_idx: usize, - pub(crate) rotation: i32, -} - -impl<F: Field> Cell<F> { - pub(crate) fn new( - meta: &mut VirtualCells<F>, - column: Column<Advice>, - column_idx: usize, - rotation: i32, - ) -> Self { - Self { - expression: meta.query_advice(column, Rotation(rotation)), - column_expression: meta.query_advice(column, Rotation::cur()), - column: Some(column), - column_idx, - rotation, - } - } - - pub(crate) fn new_value(column_idx: usize, rotation: i32) -> Self { - Self { - expression: 0.expr(), - column_expression: 0.expr(), - column: None, - column_idx, - rotation, - } - } - - pub(crate) fn at_offset(&self, meta: &mut ConstraintSystem<F>, offset: i32) -> Self { - let mut expression = 0.expr(); - meta.create_gate("Query cell", |meta| { - expression = meta.query_advice(self.column.unwrap(), Rotation(self.rotation + offset)); - vec![0.expr()] - }); - - Self { - expression, - column_expression: self.column_expression.clone(), - column: self.column, - column_idx: self.column_idx, - rotation: self.rotation + offset, - } - } - - pub(crate) fn assign(&self, region: &mut KeccakRegion<F>, offset: i32, value: F) { - region.assign(self.column_idx, (offset + self.rotation) as usize, value); - } - - pub(crate) fn assign_value(&self, region: &mut KeccakRegion<F>, offset: i32, value: Value<F>) { - // This is really ugly. But since there's no way to easily adapt the CellManager - // API customized for this impl specifically, for now I'm opening the - // value and extracting it. Once https://github.com/privacy-scaling-explorations/zkevm-circuits/issues/933 is resolved, - // this shouldn't be needed. - let value_f = extract_field(value); - - region.assign(self.column_idx, (offset + self.rotation) as usize, value_f); - } -} - -impl<F: Field> Expr<F> for Cell<F> { - fn expr(&self) -> Expression<F> { - self.expression.clone() - } -} - -impl<F: Field> Expr<F> for &Cell<F> { - fn expr(&self) -> Expression<F> { - self.expression.clone() - } -} - -/// CellColumn -#[derive(Clone, Debug)] -pub(crate) struct CellColumn<F> { - pub(crate) advice: Column<Advice>, - pub(crate) expr: Expression<F>, -} - -/// CellManager -#[derive(Clone, Debug)] -pub(crate) struct CellManager<F> { - height: usize, - columns: Vec<CellColumn<F>>, - rows: Vec<usize>, - num_unused_cells: usize, -} - -impl<F: Field> CellManager<F> { - pub(crate) fn new(height: usize) -> Self { - Self { - height, - columns: Vec::new(), - rows: vec![0; height], - num_unused_cells: 0, - } - } - - pub(crate) fn query_cell(&mut self, meta: &mut ConstraintSystem<F>) -> Cell<F> { - let (row_idx, column_idx) = self.get_position(); - self.query_cell_at_pos(meta, row_idx as i32, column_idx) - } - - pub(crate) fn query_cell_at_row( - &mut self, - meta: &mut ConstraintSystem<F>, - row_idx: i32, - ) -> Cell<F> { - let column_idx = self.rows[row_idx as usize]; - self.rows[row_idx as usize] += 1; - self.query_cell_at_pos(meta, row_idx, column_idx) - } - - pub(crate) fn query_cell_value(&mut self) -> Cell<F> { - let (row_idx, column_idx) = self.get_position(); - self.query_cell_value_at_pos(row_idx as i32, column_idx) - } - - pub(crate) fn query_cell_value_at_row(&mut self, row_idx: i32) -> Cell<F> { - let column_idx = self.rows[row_idx as usize]; - self.rows[row_idx as usize] += 1; - self.query_cell_value_at_pos(row_idx, column_idx) - } - - pub(crate) fn start_region(&mut self) -> usize { - // Make sure all rows start at the same column - let width = self.get_width(); - for row in self.rows.iter_mut() { - self.num_unused_cells += width - *row; - *row = width; - } - width - } - - pub(crate) fn get_width(&self) -> usize { - self.rows.iter().cloned().max().unwrap() - } - - pub(crate) fn columns(&self) -> &[CellColumn<F>] { - &self.columns - } - - pub(crate) fn get_num_unused_cells(&self) -> usize { - self.num_unused_cells - } - - fn query_cell_at_pos( - &mut self, - meta: &mut ConstraintSystem<F>, - row_idx: i32, - column_idx: usize, - ) -> Cell<F> { - let column = if column_idx < self.columns.len() { - self.columns[column_idx].advice - } else { - let advice = meta.advice_column(); - let mut expr = 0.expr(); - meta.create_gate("Query column", |meta| { - expr = meta.query_advice(advice, Rotation::cur()); - vec![0.expr()] - }); - self.columns.push(CellColumn { advice, expr }); - advice - }; - - let mut cells = Vec::new(); - meta.create_gate("Query cell", |meta| { - cells.push(Cell::new(meta, column, column_idx, row_idx)); - vec![0.expr()] - }); - cells[0].clone() - } - - fn query_cell_value_at_pos(&mut self, row_idx: i32, column_idx: usize) -> Cell<F> { - Cell::new_value(column_idx, row_idx) - } - - fn get_position(&mut self) -> (usize, usize) { - let mut best_row_idx = 0usize; - let mut best_row_pos = 100000usize; - for (row_idx, row) in self.rows.iter().enumerate() { - if *row < best_row_pos { - best_row_pos = *row; - best_row_idx = row_idx; - } - } - self.rows[best_row_idx] += 1; - (best_row_idx, best_row_pos) - } -} diff --git a/zkevm-circuits/src/keccak_circuit/keccak_packed_multi.rs b/zkevm-circuits/src/keccak_circuit/keccak_packed_multi.rs index 3c1e93999d..35adb1e887 100644 --- a/zkevm-circuits/src/keccak_circuit/keccak_packed_multi.rs +++ b/zkevm-circuits/src/keccak_circuit/keccak_packed_multi.rs @@ -1,5 +1,9 @@ -use super::{cell_manager::*, param::*, util::*}; -use crate::{evm_circuit::util::rlc, util::Challenges}; +use super::{param::*, util::*, DEFAULT_CELL_TYPE}; +use crate::util::{ + cell_manager::{CMFixedHeightStrategy, Cell, CellManager}, + word::Word, + Challenges, +}; use eth_types::Field; use halo2_proofs::{ circuit::Value, @@ -39,6 +43,16 @@ pub(crate) fn get_num_bits_per_base_chi_lookup() -> usize { get_num_bits_per_lookup(CHI_BASE_LOOKUP_RANGE.max(RHO_PI_LOOKUP_RANGE)) } +pub(crate) trait AssignKeccakRegion { + fn assign_keccak_region<F: Field>(&self, region: &mut KeccakRegion<F>, value: F); +} + +impl<F2> AssignKeccakRegion for Cell<F2> { + fn assign_keccak_region<F: Field>(&self, region: &mut KeccakRegion<F>, value: F) { + region.assign(self.get_column_idx(), self.get_rotation(), value); + } +} + /// AbsorbData #[derive(Clone, Default, Debug, PartialEq)] pub(crate) struct AbsorbData<F: Field> { @@ -67,7 +81,7 @@ pub(crate) struct KeccakRow<F: Field> { pub(crate) cell_values: Vec<F>, pub(crate) length: usize, pub(crate) data_rlc: Value<F>, - pub(crate) hash_rlc: Value<F>, + pub(crate) hash: Word<Value<F>>, } /// Part @@ -130,11 +144,17 @@ pub(crate) mod decode { /// Splits a word into parts pub(crate) mod split { - use super::{decode, CellManager, KeccakRegion, Part, PartValue}; + use super::{decode, AssignKeccakRegion, KeccakRegion, Part, PartValue}; use crate::{ evm_circuit::util::constraint_builder::{BaseConstraintBuilder, ConstrainBuilderCommon}, - keccak_circuit::util::{pack, pack_part, unpack, WordParts}, - util::Expr, + keccak_circuit::{ + util::{pack, pack_part, unpack, WordParts}, + DEFAULT_CELL_TYPE, + }, + util::{ + cell_manager::{CMFixedHeightStrategy, Cell, CellManager}, + Expr, + }, }; use eth_types::Field; use halo2_proofs::plonk::{ConstraintSystem, Expression}; @@ -142,7 +162,7 @@ pub(crate) mod split { #[allow(clippy::too_many_arguments)] pub(crate) fn expr<F: Field>( meta: &mut ConstraintSystem<F>, - cell_manager: &mut CellManager<F>, + cell_manager: &mut CellManager<CMFixedHeightStrategy>, cb: &mut BaseConstraintBuilder<F>, input: Expression<F>, rot: usize, @@ -151,7 +171,7 @@ pub(crate) mod split { let mut parts = Vec::new(); let word = WordParts::new(target_part_size, rot, false); for word_part in word.parts { - let cell = cell_manager.query_cell(meta); + let cell = cell_manager.query_cell(meta, DEFAULT_CELL_TYPE); parts.push(Part { num_bits: word_part.bits.len(), cell: cell.clone(), @@ -164,7 +184,7 @@ pub(crate) mod split { } pub(crate) fn value<F: Field>( - cell_manager: &mut CellManager<F>, + cell_manager: &mut CellManager<CMFixedHeightStrategy>, region: &mut KeccakRegion<F>, input: F, rot: usize, @@ -176,12 +196,12 @@ pub(crate) mod split { let word = WordParts::new(target_part_size, rot, false); for word_part in word.parts { let value = pack_part(&input_bits, &word_part); - let cell = cell_manager.query_cell_value(); + let cell: Cell<F> = cell_manager.query_cell_value(DEFAULT_CELL_TYPE); - cell.assign(region, 0, F::from(value)); + cell.assign_keccak_region(region, F::from(value)); parts.push(PartValue { num_bits: word_part.bits.len(), - rot: cell.rotation, + rot: cell.get_rotation() as i32, value: F::from(value), }); } @@ -193,14 +213,18 @@ pub(crate) mod split { // Split into parts, but storing the parts in a specific way to have the same // table layout in `output_cells` regardless of rotation. pub(crate) mod split_uniform { - use super::{decode, target_part_sizes, Cell, CellManager, KeccakRegion, Part, PartValue}; + use super::{decode, target_part_sizes, AssignKeccakRegion, KeccakRegion, Part, PartValue}; use crate::{ evm_circuit::util::constraint_builder::{BaseConstraintBuilder, ConstrainBuilderCommon}, keccak_circuit::{ param::BIT_COUNT, util::{pack, pack_part, rotate, rotate_rev, unpack, WordParts}, + DEFAULT_CELL_TYPE, + }, + util::{ + cell_manager::{CMFixedHeightStrategy, Cell, CellManager}, + Expr, }, - util::Expr, }; use eth_types::Field; use halo2_proofs::plonk::{ConstraintSystem, Expression}; @@ -209,7 +233,7 @@ pub(crate) mod split_uniform { pub(crate) fn expr<F: Field>( meta: &mut ConstraintSystem<F>, output_cells: &[Cell<F>], - cell_manager: &mut CellManager<F>, + cell_manager: &mut CellManager<CMFixedHeightStrategy>, cb: &mut BaseConstraintBuilder<F>, input: Expression<F>, rot: usize, @@ -244,8 +268,8 @@ pub(crate) mod split_uniform { // Needs two cells here to store the parts // These still need to be range checked elsewhere! - let part_a = cell_manager.query_cell(meta); - let part_b = cell_manager.query_cell(meta); + let part_a = cell_manager.query_cell(meta, DEFAULT_CELL_TYPE); + let part_b = cell_manager.query_cell(meta, DEFAULT_CELL_TYPE); // Make sure the parts combined equal the value in the uniform output let expr = part_a.expr() @@ -283,7 +307,7 @@ pub(crate) mod split_uniform { pub(crate) fn value<F: Field>( output_cells: &[Cell<F>], - cell_manager: &mut CellManager<F>, + cell_manager: &mut CellManager<CMFixedHeightStrategy>, region: &mut KeccakRegion<F>, input: F, rot: usize, @@ -304,15 +328,15 @@ pub(crate) mod split_uniform { while let Some(word_part) = word_iter.next() { if word_part.bits.len() == target_sizes[counter] { let value = pack_part(&input_bits, word_part); - output_cells[counter].assign(region, 0, F::from(value)); + output_cells[counter].assign_keccak_region(region, F::from(value)); input_parts.push(PartValue { num_bits: word_part.bits.len(), - rot: output_cells[counter].rotation, + rot: output_cells[counter].get_rotation() as i32, value: F::from(value), }); output_parts.push(PartValue { num_bits: word_part.bits.len(), - rot: output_cells[counter].rotation, + rot: output_cells[counter].get_rotation() as i32, value: F::from(value), }); counter += 1; @@ -322,33 +346,33 @@ pub(crate) mod split_uniform { target_sizes[counter] ); - let part_a = cell_manager.query_cell_value(); - let part_b = cell_manager.query_cell_value(); + let part_a: Cell<F> = cell_manager.query_cell_value(DEFAULT_CELL_TYPE); + let part_b: Cell<F> = cell_manager.query_cell_value(DEFAULT_CELL_TYPE); let value_a = pack_part(&input_bits, word_part); let value_b = pack_part(&input_bits, extra_part); - part_a.assign(region, 0, F::from(value_a)); - part_b.assign(region, 0, F::from(value_b)); + part_a.assign_keccak_region(region, F::from(value_a)); + part_b.assign_keccak_region(region, F::from(value_b)); let value = value_a + value_b * (1u64 << (BIT_COUNT * word_part.bits.len())); - output_cells[counter].assign(region, 0, F::from(value)); + output_cells[counter].assign_keccak_region(region, F::from(value)); input_parts.push(PartValue { num_bits: word_part.bits.len(), value: F::from(value_a), - rot: part_a.rotation, + rot: part_a.get_rotation() as i32, }); input_parts.push(PartValue { num_bits: extra_part.bits.len(), value: F::from(value_b), - rot: part_b.rotation, + rot: part_b.get_rotation() as i32, }); output_parts.push(PartValue { num_bits: target_sizes[counter], value: F::from(value), - rot: output_cells[counter].rotation, + rot: output_cells[counter].get_rotation() as i32, }); counter += 1; } else { @@ -363,7 +387,12 @@ pub(crate) mod split_uniform { // Transform values using a lookup table pub(crate) mod transform { - use super::{transform_to, CellManager, KeccakRegion, Part, PartValue}; + use crate::{ + keccak_circuit::DEFAULT_CELL_TYPE, + util::cell_manager::{CMFixedHeightStrategy, CellManager}, + }; + + use super::{transform_to, KeccakRegion, Part, PartValue}; use eth_types::Field; use halo2_proofs::plonk::{ConstraintSystem, TableColumn}; @@ -371,7 +400,7 @@ pub(crate) mod transform { pub(crate) fn expr<F: Field>( name: &'static str, meta: &mut ConstraintSystem<F>, - cell_manager: &mut CellManager<F>, + cell_manager: &mut CellManager<CMFixedHeightStrategy>, lookup_counter: &mut usize, input: Vec<Part<F>>, transform_table: [TableColumn; 2], @@ -380,9 +409,13 @@ pub(crate) mod transform { let mut cells = Vec::new(); for input_part in input.iter() { cells.push(if uniform_lookup { - cell_manager.query_cell_at_row(meta, input_part.cell.rotation) + cell_manager.query_cell_with_affinity( + meta, + DEFAULT_CELL_TYPE, + input_part.cell.get_rotation(), + ) } else { - cell_manager.query_cell(meta) + cell_manager.query_cell(meta, DEFAULT_CELL_TYPE) }); } transform_to::expr( @@ -397,7 +430,7 @@ pub(crate) mod transform { } pub(crate) fn value<F: Field>( - cell_manager: &mut CellManager<F>, + cell_manager: &mut CellManager<CMFixedHeightStrategy>, region: &mut KeccakRegion<F>, input: Vec<PartValue<F>>, do_packing: bool, @@ -407,9 +440,10 @@ pub(crate) mod transform { let mut cells = Vec::new(); for input_part in input.iter() { cells.push(if uniform_lookup { - cell_manager.query_cell_value_at_row(input_part.rot) + cell_manager + .query_cell_value_with_affinity(DEFAULT_CELL_TYPE, input_part.rot as usize) } else { - cell_manager.query_cell_value() + cell_manager.query_cell_value(DEFAULT_CELL_TYPE) }); } transform_to::value(&cells, region, input, do_packing, f) @@ -418,7 +452,7 @@ pub(crate) mod transform { // Transfroms values to cells pub(crate) mod transform_to { - use super::{Cell, KeccakRegion, Part, PartValue}; + use super::{AssignKeccakRegion, Cell, KeccakRegion, Part, PartValue}; use crate::{ keccak_circuit::util::{pack, to_bytes, unpack}, util::Expr, @@ -439,7 +473,7 @@ pub(crate) mod transform_to { let mut output = Vec::new(); for (idx, input_part) in input.iter().enumerate() { let output_part = cells[idx].clone(); - if !uniform_lookup || input_part.cell.rotation == 0 { + if !uniform_lookup || input_part.cell.get_rotation() == 0 { meta.lookup(name, |_| { vec![ (input_part.expr.clone(), transform_table[0]), @@ -474,10 +508,10 @@ pub(crate) mod transform_to { F::from(to_bytes::value(&output_bits)[0] as u64) }; let output_part = cells[idx].clone(); - output_part.assign(region, 0, value); + output_part.assign_keccak_region(region, value); output.push(PartValue { num_bits: input_part.num_bits, - rot: output_part.rotation, + rot: output_part.get_rotation() as i32, value, }); } @@ -528,11 +562,14 @@ pub(crate) fn keccak<F: Field>( let mut cell_managers = Vec::new(); let mut regions = Vec::new(); - let mut hash_rlc = Value::known(F::ZERO); + let mut hash = Word::default(); let mut round_lengths = Vec::new(); let mut round_data_rlcs = Vec::new(); for round in 0..NUM_ROUNDS + 1 { - let mut cell_manager = CellManager::new(get_num_rows_per_round()); + let mut cell_manager = CellManager::new(CMFixedHeightStrategy::new( + get_num_rows_per_round(), + DEFAULT_CELL_TYPE, + )); let mut region = KeccakRegion::new(); let mut absorb_row = AbsorbData::default(); @@ -543,25 +580,25 @@ pub(crate) fn keccak<F: Field>( // State data for s in &s { for s in s { - let cell = cell_manager.query_cell_value(); - cell.assign(&mut region, 0, *s); + let cell: Cell<F> = cell_manager.query_cell_value(DEFAULT_CELL_TYPE); + cell.assign_keccak_region(&mut region, *s); } } // Absorb data - let absorb_from = cell_manager.query_cell_value(); - let absorb_data = cell_manager.query_cell_value(); - let absorb_result = cell_manager.query_cell_value(); - absorb_from.assign(&mut region, 0, absorb_row.from); - absorb_data.assign(&mut region, 0, absorb_row.absorb); - absorb_result.assign(&mut region, 0, absorb_row.result); + let absorb_from: Cell<F> = cell_manager.query_cell_value(DEFAULT_CELL_TYPE); + let absorb_data: Cell<F> = cell_manager.query_cell_value(DEFAULT_CELL_TYPE); + let absorb_result: Cell<F> = cell_manager.query_cell_value(DEFAULT_CELL_TYPE); + absorb_from.assign_keccak_region(&mut region, absorb_row.from); + absorb_data.assign_keccak_region(&mut region, absorb_row.absorb); + absorb_result.assign_keccak_region(&mut region, absorb_row.result); // Absorb - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); let part_size = get_num_bits_per_absorb_lookup(); let input = absorb_row.from + absorb_row.absorb; let absorb_fat = split::value(&mut cell_manager, &mut region, input, 0, part_size); - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); let _absorb_result = transform::value( &mut cell_manager, &mut region, @@ -572,18 +609,18 @@ pub(crate) fn keccak<F: Field>( ); // Padding - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); // Unpack a single word into bytes (for the absorption) // Potential optimization: could do multiple bytes per lookup let packed = split::value(&mut cell_manager, &mut region, absorb_row.absorb, 0, 8); - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); let input_bytes = transform::value(&mut cell_manager, &mut region, packed, false, |v| *v, true); - cell_manager.start_region(); - let mut is_paddings = Vec::new(); + cell_manager.get_strategy().start_region(); + let mut is_paddings: Vec<Cell<F>> = Vec::new(); let mut data_rlcs = vec![Value::known(F::ZERO); get_num_rows_per_round()]; for _ in input_bytes.iter() { - is_paddings.push(cell_manager.query_cell_value()); + is_paddings.push(cell_manager.query_cell_value(DEFAULT_CELL_TYPE)); } if round < NUM_WORDS_TO_ABSORB { let mut paddings = Vec::new(); @@ -596,7 +633,8 @@ pub(crate) fn keccak<F: Field>( false }; paddings.push(padding); - is_padding.assign(&mut region, 0, if padding { F::ONE } else { F::ZERO }); + is_padding + .assign_keccak_region(&mut region, if padding { F::ONE } else { F::ZERO }); } data_rlcs[NUM_BYTES_PER_WORD] = data_rlc; // Start at 0 or forward the previous value. @@ -613,7 +651,7 @@ pub(crate) fn keccak<F: Field>( } // Other positions of data_rlcs are not constrained and we leave them at 0. - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); if round != NUM_ROUNDS { // Theta @@ -624,7 +662,7 @@ pub(crate) fn keccak<F: Field>( let bc_fat = split::value(&mut cell_manager, &mut region, c, 1, part_size); bcf.push(bc_fat); } - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); let mut bc = Vec::new(); for bc_fat in bcf { let bc_norm = transform::value( @@ -637,7 +675,7 @@ pub(crate) fn keccak<F: Field>( ); bc.push(bc_norm); } - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); let mut os = [[F::ZERO; 5]; 5]; for i in 0..5 { let t = decode::value(bc[(i + 4) % 5].clone()) @@ -647,7 +685,7 @@ pub(crate) fn keccak<F: Field>( } } s = os; - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); // Rho/Pi let part_size = get_num_bits_per_base_chi_lookup(); @@ -659,19 +697,21 @@ pub(crate) fn keccak<F: Field>( }); let mut column_starts = [0usize; 3]; for p in 0..3 { - column_starts[p] = cell_manager.start_region(); + column_starts[p] = cell_manager.get_strategy().start_region(); let mut row_idx = 0; for j in 0..5 { for _ in 0..num_word_parts { for i in 0..5 { - rho_pi_chi_cells[p][i][j] - .push(cell_manager.query_cell_value_at_row(row_idx as i32)); + rho_pi_chi_cells[p][i][j].push( + cell_manager + .query_cell_value_with_affinity(DEFAULT_CELL_TYPE, row_idx), + ); } row_idx = (row_idx + 1) % get_num_rows_per_round(); } } } - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); let mut os_parts: [[Vec<PartValue<F>>; 5]; 5] = array_init::array_init(|_| array_init::array_init(|_| Vec::new())); for (j, os_part) in os_parts.iter_mut().enumerate() { @@ -695,7 +735,7 @@ pub(crate) fn keccak<F: Field>( os_part[(2 * i + 3 * j) % 5] = s_parts.clone(); } } - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); // Chi let part_size_base = get_num_bits_per_base_chi_lookup(); @@ -727,14 +767,14 @@ pub(crate) fn keccak<F: Field>( } } s = os; - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); // iota let part_size = get_num_bits_per_absorb_lookup(); let input = s[0][0] + pack_u64::<F>(ROUND_CST[round]); let iota_parts = split::value::<F>(&mut cell_manager, &mut region, input, 0, part_size); - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); s[0][0] = decode::value(transform::value( &mut cell_manager, &mut region, @@ -747,18 +787,21 @@ pub(crate) fn keccak<F: Field>( // The rlc of the hash let is_final = is_final_block && round == NUM_ROUNDS; - hash_rlc = if is_final { + hash = if is_final { let hash_bytes_le = s .into_iter() .take(4) .flat_map(|a| to_bytes::value(&unpack(a[0]))) .rev() .collect::<Vec<_>>(); - challenges - .evm_word() - .map(|challenge_value| rlc::value(&hash_bytes_le, challenge_value)) + + let word: Word<Value<F>> = Word::from(eth_types::Word::from_little_endian( + hash_bytes_le.as_slice(), + )) + .map(Value::known); + word } else { - Value::known(F::ZERO) + Word::default().into_value() }; // The words to squeeze out @@ -776,13 +819,13 @@ pub(crate) fn keccak<F: Field>( let cell_manager = &mut cell_managers[num_rounds - 2 - idx]; let region = &mut regions[num_rounds - 2 - idx]; - cell_manager.start_region(); - let squeeze_packed = cell_manager.query_cell_value(); - squeeze_packed.assign(region, 0, *word); + cell_manager.get_strategy().start_region(); + let squeeze_packed: Cell<F> = cell_manager.query_cell_value(DEFAULT_CELL_TYPE); + squeeze_packed.assign_keccak_region(region, *word); - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); let packed = split::value(cell_manager, region, *word, 0, 8); - cell_manager.start_region(); + cell_manager.get_strategy().start_region(); transform::value(cell_manager, region, packed, false, |v| *v, true); } @@ -800,7 +843,7 @@ pub(crate) fn keccak<F: Field>( is_final: is_final_block && round == NUM_ROUNDS && row_idx == 0, length: round_lengths[round], data_rlc: round_data_rlcs[round][row_idx], - hash_rlc, + hash, cell_values: regions[round].rows[row_idx].clone(), }); } @@ -845,7 +888,7 @@ pub(crate) fn multi_keccak<F: Field>( is_final: false, length: 0usize, data_rlc: Value::known(F::ZERO), - hash_rlc: Value::known(F::ZERO), + hash: Word::default().into_value(), cell_values: Vec::new(), }); } diff --git a/zkevm-circuits/src/keccak_circuit/param.rs b/zkevm-circuits/src/keccak_circuit/param.rs index 847c10e8e6..504229b49a 100644 --- a/zkevm-circuits/src/keccak_circuit/param.rs +++ b/zkevm-circuits/src/keccak_circuit/param.rs @@ -8,16 +8,11 @@ pub(crate) const CHI_BASE_LOOKUP_RANGE: usize = 5; pub(crate) const NUM_BITS_PER_BYTE: usize = 8; pub(crate) const NUM_BYTES_PER_WORD: usize = 8; pub(crate) const NUM_BITS_PER_WORD: usize = NUM_BYTES_PER_WORD * NUM_BITS_PER_BYTE; -pub(crate) const KECCAK_WIDTH: usize = 5 * 5; -pub(crate) const KECCAK_WIDTH_IN_BITS: usize = KECCAK_WIDTH * NUM_BITS_PER_WORD; pub(crate) const NUM_ROUNDS: usize = 24; pub(crate) const NUM_WORDS_TO_ABSORB: usize = 17; pub(crate) const NUM_WORDS_TO_SQUEEZE: usize = 4; -pub(crate) const ABSORB_WIDTH_PER_ROW: usize = NUM_BITS_PER_WORD; -pub(crate) const ABSORB_WIDTH_PER_ROW_BYTES: usize = ABSORB_WIDTH_PER_ROW / NUM_BITS_PER_BYTE; pub(crate) const RATE: usize = NUM_WORDS_TO_ABSORB * NUM_BYTES_PER_WORD; pub(crate) const RATE_IN_BITS: usize = RATE * NUM_BITS_PER_BYTE; -pub(crate) const THETA_C_WIDTH: usize = 5 * NUM_BITS_PER_WORD; pub(crate) const RHO_MATRIX: [[usize; 5]; 5] = [ [0, 36, 3, 41, 18], [1, 44, 10, 45, 2], @@ -52,8 +47,6 @@ pub(crate) const ROUND_CST: [u64; NUM_ROUNDS + 1] = [ 0x8000000080008008, 0x0000000000000000, // absorb round ]; -// Bit positions that have a non-zero value in `IOTA_ROUND_CST`. -pub(crate) const ROUND_CST_BIT_POS: [usize; 7] = [0, 1, 3, 7, 15, 31, 63]; // The number of bits used in the sparse word representation per bit pub(crate) const BIT_COUNT: usize = 3; @@ -62,5 +55,3 @@ pub(crate) const BIT_SIZE: usize = 2usize.pow(BIT_COUNT as u32); // `a ^ ((~b) & c)` is calculated by doing `lookup[3 - 2*a + b - c]` pub(crate) const CHI_BASE_LOOKUP_TABLE: [u8; 5] = [0, 1, 1, 0, 0]; -// `a ^ ((~b) & c) ^ d` is calculated by doing `lookup[5 - 2*a - b + c - 2*d]` -pub(crate) const CHI_EXT_LOOKUP_TABLE: [u8; 7] = [0, 0, 1, 1, 0, 0, 1]; diff --git a/zkevm-circuits/src/keccak_circuit/table.rs b/zkevm-circuits/src/keccak_circuit/table.rs index 5ab2fc5e23..c632496a51 100644 --- a/zkevm-circuits/src/keccak_circuit/table.rs +++ b/zkevm-circuits/src/keccak_circuit/table.rs @@ -167,15 +167,11 @@ mod tests { fn chi_table() { // Check the base pattern for all combinations of bits. for i in 0..16_usize { - let (a, b, c, d) = (i & 1, (i >> 1) & 1, (i >> 2) & 1, (i >> 3) & 1); + let (a, b, c) = (i & 1, (i >> 1) & 1, (i >> 2) & 1); assert_eq!( CHI_BASE_LOOKUP_TABLE[3 - 2 * a + b - c], (a ^ ((!b) & c)) as u8 ); - assert_eq!( - CHI_EXT_LOOKUP_TABLE[5 - 2 * a - b + c - 2 * d], - (a ^ ((!b) & c) ^ d) as u8 - ); } // Check the table with multiple parts per row. diff --git a/zkevm-circuits/src/keccak_circuit/test.rs b/zkevm-circuits/src/keccak_circuit/test.rs index 9711f978d5..04e4b541d6 100644 --- a/zkevm-circuits/src/keccak_circuit/test.rs +++ b/zkevm-circuits/src/keccak_circuit/test.rs @@ -1,13 +1,7 @@ -#![allow(unused_imports)] use super::*; use crate::util::unusable_rows; use eth_types::Field; -use halo2_proofs::{ - circuit::{Layouter, SimpleFloorPlanner}, - dev::MockProver, - halo2curves::bn256::Fr, - plonk::{Circuit, ConstraintSystem, Error}, -}; +use halo2_proofs::{dev::MockProver, halo2curves::bn256::Fr}; use log::error; use std::iter::zip; diff --git a/zkevm-circuits/src/keccak_circuit/util.rs b/zkevm-circuits/src/keccak_circuit/util.rs index 48b819046e..c11a98b470 100644 --- a/zkevm-circuits/src/keccak_circuit/util.rs +++ b/zkevm-circuits/src/keccak_circuit/util.rs @@ -2,7 +2,6 @@ use super::{keccak_packed_multi::keccak_unusable_rows, param::*}; use eth_types::{Field, ToScalar, Word}; -use halo2_proofs::circuit::Value; use std::env::var; /// Description of which bits (positions) a part contains @@ -80,13 +79,6 @@ pub(crate) fn rotate_rev<T>(parts: Vec<T>, count: usize, part_size: usize) -> Ve rotated_parts } -/// Rotates bits left -pub(crate) fn rotate_left(bits: &[u8], count: usize) -> [u8; NUM_BITS_PER_WORD] { - let mut rotated = bits.to_vec(); - rotated.rotate_left(count); - rotated.try_into().unwrap() -} - /// The words that absorb data pub(crate) fn get_absorb_positions() -> Vec<(usize, usize)> { let mut absorb_positions = Vec::new(); @@ -233,31 +225,6 @@ pub(crate) fn get_num_bits_per_lookup_impl(range: usize, log_height: usize) -> u num_bits as usize } -pub(crate) fn extract_field<F: Field>(value: Value<F>) -> F { - let mut field = F::ZERO; - let _ = value.map(|f| { - field = f; - f - }); - field -} - -/// Encodes the data using rlc -pub(crate) mod compose_rlc { - use eth_types::Field; - use halo2_proofs::plonk::Expression; - - pub(crate) fn expr<F: Field>(expressions: &[Expression<F>], r: Expression<F>) -> Expression<F> { - let mut rlc = expressions[0].clone(); - let mut multiplier = r.clone(); - for expression in expressions[1..].iter() { - rlc = rlc + expression.clone() * multiplier.clone(); - multiplier = multiplier * r.clone(); - } - rlc - } -} - /// Scatters a value into a packed word constant pub(crate) mod scatter { use super::pack; @@ -271,24 +238,6 @@ pub(crate) mod scatter { /// Packs bits into bytes pub(crate) mod to_bytes { - use eth_types::Field; - use gadgets::util::Expr; - use halo2_proofs::plonk::Expression; - - pub(crate) fn expr<F: Field>(bits: &[Expression<F>]) -> Vec<Expression<F>> { - debug_assert!(bits.len() % 8 == 0, "bits not a multiple of 8"); - let mut bytes = Vec::new(); - for byte_bits in bits.chunks(8) { - let mut value = 0.expr(); - let mut multiplier = F::ONE; - for byte in byte_bits.iter() { - value = value + byte.expr() * multiplier; - multiplier *= F::from(2); - } - bytes.push(value); - } - bytes - } pub(crate) fn value(bits: &[u8]) -> Vec<u8> { debug_assert!(bits.len() % 8 == 0, "bits not a multiple of 8"); diff --git a/zkevm-circuits/src/lib.rs b/zkevm-circuits/src/lib.rs index a5eb0ad76f..fe25729425 100644 --- a/zkevm-circuits/src/lib.rs +++ b/zkevm-circuits/src/lib.rs @@ -5,10 +5,10 @@ #![allow(incomplete_features)] // Needed by DummyGadget in evm circuit #![feature(adt_const_params)] +// Required for adding reasons in allow(dead_code) +#![feature(lint_reasons)] // Needed by some builder patterns in testing modules. #![cfg_attr(docsrs, feature(doc_cfg))] -// Temporary until we have more of the crate implemented. -#![allow(dead_code)] // We want to have UPPERCASE idents sometimes. #![allow(clippy::upper_case_acronyms)] // Catch documentation errors caused by code changes. @@ -18,19 +18,24 @@ #![deny(clippy::debug_assert_with_mut_call)] pub mod bytecode_circuit; +#[allow(dead_code, reason = "under active development")] +pub mod circuit_tools; pub mod copy_circuit; pub mod evm_circuit; pub mod exp_circuit; pub mod keccak_circuit; +#[allow(dead_code, reason = "under active development")] +pub mod mpt_circuit; pub mod pi_circuit; pub mod root_circuit; pub mod state_circuit; pub mod super_circuit; pub mod table; -#[cfg(any(feature = "test", test))] +#[cfg(any(test, feature = "test-util"))] pub mod test_util; +pub mod instance; pub mod tx_circuit; pub mod util; pub mod witness; diff --git a/zkevm-circuits/src/mpt_circuit.rs b/zkevm-circuits/src/mpt_circuit.rs new file mode 100644 index 0000000000..42d01b4af8 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit.rs @@ -0,0 +1,858 @@ +//! The MPT circuit implementation. +use eth_types::Field; +use gadgets::{impl_expr, util::Scalar}; +use halo2_proofs::{ + circuit::{Layouter, SimpleFloorPlanner, Value}, + plonk::{ + Advice, Circuit, Column, ConstraintSystem, Error, Expression, Fixed, SecondPhase, + VirtualCells, + }, + poly::Rotation, +}; + +use std::{convert::TryInto, env::var, marker::PhantomData}; + +mod account_leaf; +mod branch; +mod extension; +mod extension_branch; +mod helpers; +mod param; +mod rlp_gadgets; +mod start; +mod storage_leaf; +/// MPT witness row +pub mod witness_row; + +use self::{ + account_leaf::AccountLeafConfig, + helpers::{key_memory, RLPItemView}, + param::RLP_UNIT_NUM_BYTES, + rlp_gadgets::decode_rlp, + witness_row::{ + AccountRowType, ExtensionBranchRowType, Node, StartRowType, StorageRowType, + NODE_RLP_TYPES_ACCOUNT, NODE_RLP_TYPES_BRANCH, NODE_RLP_TYPES_START, + NODE_RLP_TYPES_STORAGE, + }, +}; +use crate::{ + assign, assignf, circuit, + circuit_tools::{ + cached_region::CachedRegion, + cell_manager::{CellManager, DynamicLookupTable}, + memory::Memory, + }, + mpt_circuit::{ + helpers::{ + main_memory, parent_memory, MPTConstraintBuilder, MainRLPGadget, MptCellType, + MptTableType, FIXED, KECCAK, MULT, + }, + start::StartConfig, + storage_leaf::StorageLeafConfig, + }, + table::{KeccakTable, LookupTable, MPTProofType, MptTable}, + util::Challenges, +}; +use extension_branch::ExtensionBranchConfig; +use param::HASH_WIDTH; + +#[derive(Debug, Eq, PartialEq)] +pub(crate) enum MPTRegion { + Default, + RLP, + Start, + Branch, + Account, + Storage, + Count, +} + +/// State machine config. +#[derive(Clone, Debug)] +pub struct StateMachineConfig<F> { + is_start: Column<Advice>, + is_branch: Column<Advice>, + is_account: Column<Advice>, + is_storage: Column<Advice>, + + start_config: StartConfig<F>, + branch_config: ExtensionBranchConfig<F>, + storage_config: StorageLeafConfig<F>, + account_config: AccountLeafConfig<F>, +} + +impl<F: Field> StateMachineConfig<F> { + /// Construct a new StateMachine + pub(crate) fn construct(meta: &mut ConstraintSystem<F>) -> Self { + Self { + is_start: meta.advice_column(), + is_branch: meta.advice_column(), + is_account: meta.advice_column(), + is_storage: meta.advice_column(), + start_config: StartConfig::default(), + branch_config: ExtensionBranchConfig::default(), + storage_config: StorageLeafConfig::default(), + account_config: AccountLeafConfig::default(), + } + } + + /// Returns all state selectors + pub(crate) fn state_selectors(&self) -> Vec<Column<Advice>> { + vec![ + self.is_start, + self.is_branch, + self.is_account, + self.is_storage, + ] + } + + pub(crate) fn step_constraints( + &self, + meta: &mut VirtualCells<'_, F>, + cb: &mut MPTConstraintBuilder<F>, + height: usize, + ) { + circuit!([meta, cb], { + // Because the state machine state is this height, we're already querying cells + // at all of these rotations, so may as well keep things simple. + // State selectors are already enforced to be boolean on each row. + let mut sum = 0.expr(); + for rot in 1..height { + for state_selector in self.state_selectors() { + sum = sum + a!(state_selector, rot); + } + } + require!(sum => 0); + // It should not be necessary to force the next row to have a state enabled + // because we never use relative offsets between state machine states. + }) + } +} + +/// Merkle Patricia Trie context +#[derive(Clone, Debug)] +pub struct MPTContext<F> { + pub(crate) mpt_table: MptTable, + pub(crate) rlp_item: MainRLPGadget<F>, + pub(crate) memory: Memory<F, MptCellType>, + pub(crate) params: MPTCircuitParams, +} + +/// RLP item type +#[derive(Copy, Clone, Debug, PartialEq)] +pub enum RlpItemType { + /// Node (string with len == 0 or 32, OR list with len <= 31) + Node, + /// Value (string with len <= 32) + Value, + /// Hash (string with len == 32) + Hash, + /// Key (string with len <= 33) + Key, + /// Nibbles + Nibbles, +} + +impl<F: Field> MPTContext<F> { + pub(crate) fn rlp_item( + &self, + meta: &mut VirtualCells<F>, + cb: &mut MPTConstraintBuilder<F>, + idx: usize, + item_type: RlpItemType, + ) -> RLPItemView<F> { + self.rlp_item.create_view(meta, cb, idx, item_type) + } +} + +/// Merkle Patricia Trie config. +#[derive(Clone)] +pub struct MPTConfig<F> { + pub(crate) q_enable: Column<Fixed>, + pub(crate) q_first: Column<Fixed>, + pub(crate) q_last: Column<Fixed>, + pub(crate) memory: Memory<F, MptCellType>, + pub(crate) mpt_table: MptTable, + keccak_table: KeccakTable, + fixed_table: [Column<Fixed>; 6], + mult_table: [Column<Advice>; 2], + rlp_item: MainRLPGadget<F>, + state_machine: StateMachineConfig<F>, + params: MPTCircuitParams, + cb: MPTConstraintBuilder<F>, +} + +/// Enumerator to determine the type of row in the fixed table. +#[derive(Clone, Copy, Debug)] +pub enum FixedTableTag { + /// All zero lookup data + Disabled, + /// 0 - 15 + Range16, + /// 0 - 255 + Range256, + /// For checking there are 0s after the RLP stream ends + RangeKeyLen256, + /// For checking there are 0s after the RLP stream ends + RangeKeyLen16, + /// Extesion key odd key + ExtOddKey, + /// RLP decoding + RLP, +} +impl_expr!(FixedTableTag); + +#[derive(Default)] +pub(crate) struct MPTState<F> { + pub(crate) memory: Memory<F, MptCellType>, +} + +impl<F: Field> MPTState<F> { + fn new(memory: &Memory<F, MptCellType>) -> Self { + Self { + memory: memory.clone(), + } + } +} + +impl<F: Field> MPTConfig<F> { + /// Configure MPT Circuit + pub fn new( + meta: &mut ConstraintSystem<F>, + challenges: Challenges<Expression<F>>, + keccak_table: KeccakTable, + params: MPTCircuitParams, + ) -> Self { + let q_enable = meta.fixed_column(); + let q_first = meta.fixed_column(); + let q_last = meta.fixed_column(); + + let mpt_table = MptTable::construct(meta); + + let fixed_table: [Column<Fixed>; 6] = (0..6) + .map(|_| meta.fixed_column()) + .collect::<Vec<_>>() + .try_into() + .unwrap(); + + let mult_table: [Column<Advice>; 2] = + [meta.advice_column(), meta.advice_column_in(SecondPhase)]; + + let memory_columns = (0..5).map(|_| meta.advice_column()).collect::<Vec<_>>(); + + let mut state_machine = StateMachineConfig::construct(meta); + let mut rlp_item = MainRLPGadget::default(); + + let mut memory = Memory::new(memory_columns); + memory.allocate(meta, key_memory(false), MptCellType::MemKeyCTable); + memory.allocate(meta, key_memory(true), MptCellType::MemKeySTable); + memory.allocate(meta, parent_memory(false), MptCellType::MemParentCTable); + memory.allocate(meta, parent_memory(true), MptCellType::MemParentSTable); + memory.allocate(meta, main_memory(), MptCellType::MemMainTable); + + let mut ctx = MPTContext { + mpt_table, + rlp_item: rlp_item.clone(), + memory: memory.clone(), + params, + }; + + let rlp_cm = CellManager::new( + meta, + // Type, #cols, phase, permutable + vec![ + (MptCellType::StoragePhase1, 60, 1, false), + (MptCellType::StoragePhase2, 5, 2, false), + (MptCellType::StoragePhase3, 5, 3, false), + (MptCellType::LookupByte, 4, 1, false), + (MptCellType::Lookup(MptTableType::Fixed), 4, 3, false), + (MptCellType::Lookup(MptTableType::Mult), 2, 3, false), + ], + 0, + 1, + ); + let state_cm = CellManager::new( + meta, + // Type, #cols, phase, permutable + vec![ + (MptCellType::StoragePhase1, 20, 1, false), + (MptCellType::StoragePhase2, 6, 2, false), + (MptCellType::StoragePhase3, 5, 3, false), + (MptCellType::LookupByte, 4, 1, false), + (MptCellType::Lookup(MptTableType::Fixed), 3, 3, false), + (MptCellType::Lookup(MptTableType::Keccak), 1, 3, false), + (MptCellType::Lookup(MptTableType::Mult), 2, 3, false), + (MptCellType::MemParentSInput, 1, 3, false), + (MptCellType::MemParentSTable, 1, 3, false), + (MptCellType::MemParentCInput, 1, 3, false), + (MptCellType::MemParentCTable, 1, 3, false), + (MptCellType::MemKeySInput, 1, 3, false), + (MptCellType::MemKeySTable, 1, 3, false), + (MptCellType::MemKeyCInput, 1, 3, false), + (MptCellType::MemKeyCTable, 1, 3, false), + (MptCellType::MemMainInput, 1, 3, false), + (MptCellType::MemMainTable, 1, 3, false), + ], + 0, + 50, + ); + + let parent_s_table = DynamicLookupTable::from(&state_cm, MptCellType::MemParentSTable); + let parent_c_table = DynamicLookupTable::from(&state_cm, MptCellType::MemParentCTable); + let key_s_table = DynamicLookupTable::from(&state_cm, MptCellType::MemKeySTable); + let key_c_table = DynamicLookupTable::from(&state_cm, MptCellType::MemKeyCTable); + let main_table = DynamicLookupTable::from(&state_cm, MptCellType::MemMainTable); + + let mut cb = MPTConstraintBuilder::new(5, Some(challenges), None); + meta.create_gate("MPT", |meta| { + circuit!([meta, cb], { + // Populate lookup tables + require!(@KECCAK => <KeccakTable as LookupTable<F>>::advice_columns(&keccak_table).iter().map(|table| a!(table)).collect()); + require!(@FIXED => fixed_table.iter().map(|table| f!(table)).collect()); + require!(@MULT => mult_table.iter().map(|table| a!(table)).collect()); + + ifx!{f!(q_enable) => { + // Mult table verification + ifx! {f!(q_first) => { + require!(a!(mult_table[0]) => 0); + require!(a!(mult_table[1]) => 1); + }} + require!(a!(mult_table[0], 1) => a!(mult_table[0]) + 1.expr()); + require!(a!(mult_table[1], 1) => a!(mult_table[1]) * cb.keccak_r.expr()); + + // RLP item decoding unit + cb.base.set_cell_manager(rlp_cm.clone()); + cb.base.push_region(MPTRegion::RLP as usize); + rlp_item = MainRLPGadget::construct(&mut cb, params); + cb.base.pop_region(); + ctx.rlp_item = rlp_item.clone(); + + // Main MPT circuit + // State machine + cb.base.set_cell_manager(state_cm.clone()); + ifx! {f!(q_first) + f!(q_last) => { + require!(a!(state_machine.is_start) => true); + }}; + // Main state machine + matchx! { + a!(state_machine.is_start) => { + state_machine.step_constraints(meta, &mut cb, StartRowType::Count as usize); + cb.base.push_region(MPTRegion::Start as usize); + state_machine.start_config = StartConfig::configure(meta, &mut cb, ctx.clone()); + ctx.memory.build_constraints(&mut cb.base, f!(q_first)); + cb.base.pop_region(); + }, + a!(state_machine.is_branch) => { + state_machine.step_constraints(meta, &mut cb, ExtensionBranchRowType::Count as usize); + cb.base.push_region(MPTRegion::Branch as usize); + state_machine.branch_config = ExtensionBranchConfig::configure(meta, &mut cb, ctx.clone()); + ctx.memory.build_constraints(&mut cb.base, f!(q_first)); + cb.base.pop_region(); + }, + a!(state_machine.is_account) => { + state_machine.step_constraints(meta, &mut cb, AccountRowType::Count as usize); + cb.base.push_region(MPTRegion::Account as usize); + state_machine.account_config = AccountLeafConfig::configure(meta, &mut cb, ctx.clone()); + ctx.memory.build_constraints(&mut cb.base, f!(q_first)); + cb.base.pop_region(); + }, + a!(state_machine.is_storage) => { + state_machine.step_constraints(meta, &mut cb, StorageRowType::Count as usize); + cb.base.push_region(MPTRegion::Storage as usize); + state_machine.storage_config = StorageLeafConfig::configure(meta, &mut cb, ctx.clone()); + ctx.memory.build_constraints(&mut cb.base, f!(q_first)); + cb.base.pop_region(); + }, + _ => ctx.memory.build_constraints(&mut cb.base, f!(q_first)), + }; + // Only account and storage rows can have lookups, disable lookups on all other rows + ifx! {not!(a!(state_machine.is_account) + a!(state_machine.is_storage)) => { + require!(a!(ctx.mpt_table.proof_type) => MPTProofType::Disabled.expr()); + }} + }} + }); + + cb.base.build_constraints() + }); + + let disable_lookups: usize = var("DISABLE_LOOKUPS") + .unwrap_or_else(|_| "0".to_string()) + .parse() + .expect("Cannot parse DISABLE_LOOKUPS env var as usize"); + if disable_lookups == 0 { + cb.base.build_lookups( + meta, + vec![rlp_cm, state_cm], + vec![ + (MptCellType::Lookup(MptTableType::Keccak), &keccak_table), + (MptCellType::Lookup(MptTableType::Fixed), &fixed_table), + (MptCellType::Lookup(MptTableType::Mult), &mult_table), + (MptCellType::MemParentSInput, &parent_s_table), + (MptCellType::MemParentCInput, &parent_c_table), + (MptCellType::MemKeySInput, &key_s_table), + (MptCellType::MemKeyCInput, &key_c_table), + (MptCellType::MemMainInput, &main_table), + ], + ); + cb.base.build_dynamic_lookups( + meta, + &[vec![FIXED]].concat(), + vec![(FIXED, &fixed_table)], + ); + } else if disable_lookups == 1 { + cb.base.build_dynamic_lookups( + meta, + &[vec![KECCAK], ctx.memory.tags()].concat(), + vec![(MptCellType::Lookup(MptTableType::Fixed), &fixed_table)], + ); + } else if disable_lookups == 2 { + cb.base.build_dynamic_lookups( + meta, + &ctx.memory.tags(), + vec![(MptCellType::Lookup(MptTableType::Fixed), &fixed_table)], + ); + } else if disable_lookups == 3 { + cb.base.build_dynamic_lookups( + meta, + &[FIXED, KECCAK], + vec![(MptCellType::Lookup(MptTableType::Fixed), &fixed_table)], + ); + } else if disable_lookups == 4 { + cb.base.build_dynamic_lookups( + meta, + &[KECCAK], + vec![(MptCellType::Lookup(MptTableType::Fixed), &fixed_table)], + ); + } + + println!("max expression degree: {}", meta.degree()); + println!("num lookups: {}", meta.lookups().len()); + println!("num advices: {}", meta.num_advice_columns()); + println!("num fixed: {}", meta.num_fixed_columns()); + // cb.base.print_stats(); + + MPTConfig { + q_enable, + q_first, + q_last, + memory, + keccak_table, + fixed_table, + mult_table, + state_machine, + rlp_item, + params, + mpt_table, + cb, + } + } + + /// Make the assignments to the MPTCircuit + pub fn assign( + &self, + layouter: &mut impl Layouter<F>, + nodes: &[Node], + challenges: &Challenges<Value<F>>, + ) -> Result<usize, Error> { + let mut height = 0; + layouter.assign_region( + || "MPT", + |mut region| { + let mut keccak_r = F::ZERO; + challenges.keccak_input().map(|v| keccak_r = v); + + let mut pv = MPTState::new(&self.memory); + + let mut offset = 0; + for node in nodes.iter() { + //println!("offset: {}", offset); + let mut cached_region = CachedRegion::new( + &mut region, + keccak_r, + ); + + let item_types = if node.start.is_some() { + NODE_RLP_TYPES_START.to_vec() + } else if node.extension_branch.is_some() { + NODE_RLP_TYPES_BRANCH.to_vec() + } else if node.account.is_some() { + NODE_RLP_TYPES_ACCOUNT.to_vec() + } else if node.storage.is_some() { + NODE_RLP_TYPES_STORAGE.to_vec() + } else { + unreachable!() + }; + + // Assign bytes + let mut rlp_values = Vec::new(); + // Decompose RLP + for (idx, (bytes, item_type)) in node.values.iter().zip(item_types.iter()).enumerate() { + cached_region.push_region(offset + idx, MPTRegion::RLP as usize); + let rlp_value = self.rlp_item.assign( + &mut cached_region, + offset + idx, + bytes, + *item_type, + )?; + rlp_values.push(rlp_value); + cached_region.pop_region(); + } + + // Assign nodes + if node.start.is_some() { + //println!("{}: start", offset); + cached_region.push_region(offset, MPTRegion::Start as usize); + assign!(cached_region, (self.state_machine.is_start, offset) => "is_start", true.scalar())?; + self.state_machine.start_config.assign( + &mut cached_region, + self, + &mut pv, + offset, + node, + &rlp_values, + )?; + cached_region.pop_region(); + } else if node.extension_branch.is_some() { + //println!("{}: branch", offset); + cached_region.push_region(offset, MPTRegion::Branch as usize); + assign!(cached_region, (self.state_machine.is_branch, offset) => "is_branch", true.scalar())?; + self.state_machine.branch_config.assign( + &mut cached_region, + self, + &mut pv, + offset, + node, + &rlp_values, + )?; + cached_region.pop_region(); + } else if node.account.is_some() { + //println!("{}: account", offset); + cached_region.push_region(offset, MPTRegion::Account as usize); + assign!(cached_region, (self.state_machine.is_account, offset) => "is_account", true.scalar())?; + self.state_machine.account_config.assign( + &mut cached_region, + self, + &mut pv, + offset, + node, + &rlp_values, + )?; + cached_region.pop_region(); + } else if node.storage.is_some() { + //println!("{}: storage", offset); + cached_region.push_region(offset, MPTRegion::Storage as usize); + assign!(cached_region, (self.state_machine.is_storage, offset) => "is_storage", true.scalar())?; + self.state_machine.storage_config.assign( + &mut cached_region, + self, + &mut pv, + offset, + node, + &rlp_values, + )?; + cached_region.pop_region(); + } + + offset += node.values.len(); + + pv.memory.assign(&mut cached_region, offset)?; + + cached_region.assign_stored_expressions(&self.cb.base, challenges)?; + } + height = offset; + + // Make sure the circuit is high enough for the mult table + while height < (2 * HASH_WIDTH + 1) { + height += 1; + } + + for offset in 0..height { + assignf!(region, (self.q_enable, offset) => true.scalar())?; + assignf!(region, (self.q_first, offset) => (offset == 0).scalar())?; + assignf!(region, (self.q_last, offset) => (offset == height - 2).scalar())?; + } + + Ok(()) + }, + )?; + + // memory.assign(layouter, height)?; + + Ok(height) + } + + fn load_fixed_table(&self, layouter: &mut impl Layouter<F>) -> Result<(), Error> { + layouter.assign_region( + || "fixed table", + |mut region| { + let mut offset = 0; + + // Zero lookup + for fixed_table in self.fixed_table.iter() { + assignf!(region, (*fixed_table, offset) => 0.scalar())?; + } + offset += 1; + + // Byte range table + for ind in 0..256 { + assignf!(region, (self.fixed_table[0], offset) => FixedTableTag::Range256.scalar())?; + assignf!(region, (self.fixed_table[1], offset) => ind.scalar())?; + offset += 1; + } + + // Nibble range table + for ind in 0..16 { + assignf!(region, (self.fixed_table[0], offset) => FixedTableTag::Range16.scalar())?; + assignf!(region, (self.fixed_table[1], offset) => ind.scalar())?; + offset += 1; + } + + // Byte range with length table + // This allows us to easily check whether there are zeros in the unused columns (the number of unused columns vary). + // The lookups ensure that when the unused columns start, the values in these columns are zeros - + // when the unused columns start, the value that is used for the lookup in the last column is zero or negative + // and thus a zero is enforced. + for (tag, range, out_of_range) in [ + (FixedTableTag::RangeKeyLen256, 256, 1), + (FixedTableTag::RangeKeyLen16, 16, 16), + ] { + let get_range = |n: i32| { + if n <= 0 { out_of_range } else { range } + }; + let max_length = RLP_UNIT_NUM_BYTES as i32; + for idx in -max_length..=max_length { + if self.params.is_two_byte_lookup_enabled() { + let range1 = get_range(idx); + for byte1 in 0..range1 { + let range2 = get_range(idx - 1); + for byte2 in 0..range2 { + assignf!(region, (self.fixed_table[0], offset) => tag.scalar())?; + assignf!(region, (self.fixed_table[1], offset) => idx.scalar())?; + assignf!(region, (self.fixed_table[2], offset) => byte1.scalar())?; + assignf!(region, (self.fixed_table[3], offset) => byte2.scalar())?; + offset += 1; + } + } + } else { + let range = get_range(idx); + for byte in 0..range { + assignf!(region, (self.fixed_table[0], offset) => tag.scalar())?; + assignf!(region, (self.fixed_table[1], offset) => idx.scalar())?; + assignf!(region, (self.fixed_table[2], offset) => byte.scalar())?; + offset += 1; + } + } + } + } + + // Compact encoding of the extension key, find out if the key is odd or not. + // Even - The full byte is simply 0. + assignf!(region, (self.fixed_table[0], offset) => FixedTableTag::ExtOddKey.scalar())?; + assignf!(region, (self.fixed_table[1], offset) => 0.scalar())?; + assignf!(region, (self.fixed_table[2], offset) => false.scalar())?; + offset += 1; + // Odd - First nibble is 1, the second nibble can be any value. + for idx in 0..16 { + assignf!(region, (self.fixed_table[0], offset) => FixedTableTag::ExtOddKey.scalar())?; + assignf!(region, (self.fixed_table[1], offset) => ((0b1_0000) + idx).scalar())?; + assignf!(region, (self.fixed_table[2], offset) => true.scalar())?; + offset += 1; + } + + // RLP + for byte in 0..255 { + let (is_list, is_short, is_long, is_very_long) = decode_rlp(byte); + assignf!(region, (self.fixed_table[0], offset) => FixedTableTag::RLP.scalar())?; + assignf!(region, (self.fixed_table[1], offset) => byte.scalar())?; + assignf!(region, (self.fixed_table[2], offset) => is_list.scalar())?; + assignf!(region, (self.fixed_table[3], offset) => is_short.scalar())?; + assignf!(region, (self.fixed_table[4], offset) => is_long.scalar())?; + assignf!(region, (self.fixed_table[5], offset) => is_very_long.scalar())?; + offset += 1; + } + + Ok(()) + }, + ) + } + + fn load_mult_table( + &self, + layouter: &mut impl Layouter<F>, + challenges: &Challenges<Value<F>>, + height: usize, + ) -> Result<(), Error> { + layouter.assign_region( + || "mult table", + |mut region| { + let mut r = F::ZERO; + challenges.keccak_input().map(|k| r = k); + + let mut mult = F::ONE; + for idx in 0..=height { + assign!(region, (self.mult_table[0], idx) => idx.scalar())?; + assign!(region, (self.mult_table[1], idx) => mult)?; + mult *= r; + } + Ok(()) + }, + ) + } +} + +/// MPT Circuit for proving the storage modification is valid. +#[derive(Default)] +pub struct MPTCircuit<F: Field> { + /// MPT nodes + pub nodes: Vec<Node>, + /// MPT keccak_data + pub keccak_data: Vec<Vec<u8>>, + /// log2(height) + pub degree: usize, + /// disable_preimage_check + /// Can be used to test artificially created tests with keys without known their known + /// preimage. ONLY ENABLE FOR TESTS! + pub disable_preimage_check: bool, + /// Marker + pub _marker: PhantomData<F>, +} + +/// MPT Circuit configuration parameters +#[derive(Copy, Clone, Debug, Default)] +pub struct MPTCircuitParams { + degree: usize, + disable_preimage_check: bool, +} + +impl MPTCircuitParams { + fn is_two_byte_lookup_enabled(&self) -> bool { + self.degree >= 22 + } + + fn is_preimage_check_enabled(&self) -> bool { + !self.disable_preimage_check + } +} + +impl<F: Field> Circuit<F> for MPTCircuit<F> { + type Config = (MPTConfig<F>, Challenges); + type FloorPlanner = SimpleFloorPlanner; + type Params = MPTCircuitParams; + + fn without_witnesses(&self) -> Self { + Self::default() + } + + fn params(&self) -> Self::Params { + MPTCircuitParams { + degree: self.degree, + disable_preimage_check: self.disable_preimage_check, + } + } + + fn configure_with_params(meta: &mut ConstraintSystem<F>, params: Self::Params) -> Self::Config { + let challenges = Challenges::construct(meta); + let challenges_expr = challenges.exprs(meta); + let keccak_table = KeccakTable::construct(meta); + ( + MPTConfig::new(meta, challenges_expr, keccak_table, params), + challenges, + ) + } + + fn configure(_meta: &mut ConstraintSystem<F>) -> Self::Config { + unreachable!(); + } + + fn synthesize( + &self, + (config, _challenges): Self::Config, + mut layouter: impl Layouter<F>, + ) -> Result<(), Error> { + let challenges = _challenges.values(&mut layouter); + let height = config.assign(&mut layouter, &self.nodes, &challenges)?; + config.load_fixed_table(&mut layouter)?; + config.load_mult_table(&mut layouter, &challenges, height)?; + config + .keccak_table + .dev_load(&mut layouter, &self.keccak_data, &challenges)?; + + Ok(()) + } +} + +/// Loads an MPT proof from disk +pub fn load_proof(path: &str) -> Vec<Node> { + let file = std::fs::File::open(path); + let reader = std::io::BufReader::new(file.unwrap()); + let mut nodes: Vec<Node> = serde_json::from_reader(reader).unwrap(); + + // Add the address and the key to the list of values in the Account and Storage nodes + for node in nodes.iter_mut() { + if node.account.is_some() { + let account = node.account.clone().unwrap(); + node.values.push([vec![148], account.address].concat()); + node.values.push([vec![160], account.key].concat()); + } + if node.storage.is_some() { + let storage: witness_row::StorageNode = node.storage.clone().unwrap(); + node.values.push([vec![160], storage.address].concat()); + node.values.push([vec![160], storage.key].concat()); + } + } + nodes +} + +#[cfg(test)] +mod tests { + use super::*; + use halo2_proofs::{dev::MockProver, halo2curves::bn256::Fr}; + use std::fs; + + #[test] + fn test_mpt() { + let path = "src/mpt_circuit/tests"; + let files = fs::read_dir(path).unwrap(); + files + .filter_map(Result::ok) + .filter(|d| { + if let Some(e) = d.path().extension() { + e == "json" + } else { + false + } + }) + .enumerate() + .for_each(|(idx, f)| { + let path = f.path(); + let mut parts = path.to_str().unwrap().split('-'); + parts.next(); + + let nodes = load_proof(path.to_str().unwrap()); + let num_rows: usize = nodes.iter().map(|node| node.values.len()).sum(); + + let mut keccak_data = vec![]; + for node in nodes.iter() { + for k in node.keccak_data.iter() { + keccak_data.push(k.clone()); + } + } + + let disable_preimage_check = nodes[0].start.clone().unwrap().disable_preimage_check; + let degree = 14; + let circuit = MPTCircuit::<Fr> { + nodes, + keccak_data, + degree, + disable_preimage_check, + _marker: PhantomData, + }; + + println!("{} {:?}", idx, path); + let prover = MockProver::<Fr>::run(degree as u32, &circuit, vec![]).unwrap(); + assert_eq!(prover.verify_at_rows(0..num_rows, 0..num_rows,), Ok(())); + // assert_eq!(prover.verify_par(), Ok(())); + // prover.assert_satisfied(); + }); + } +} diff --git a/zkevm-circuits/src/mpt_circuit/account_leaf.rs b/zkevm-circuits/src/mpt_circuit/account_leaf.rs new file mode 100644 index 0000000000..682700fb5b --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/account_leaf.rs @@ -0,0 +1,680 @@ +use eth_types::Field; +use gadgets::util::{pow, Scalar}; +use halo2_proofs::{ + circuit::Value, + plonk::{Error, Expression, VirtualCells}, +}; + +use super::{ + helpers::{KeyDataWitness, ListKeyGadget, MainData, ParentDataWitness}, + rlp_gadgets::RLPItemWitness, + witness_row::{AccountRowType, Node}, +}; +use crate::{ + circuit, + circuit_tools::{ + cached_region::CachedRegion, + cell_manager::Cell, + constraint_builder::{RLCChainableRev, RLCable}, + gadgets::IsEqualGadget, + }, + evm_circuit::util::from_bytes, + mpt_circuit::{ + helpers::{ + key_memory, main_memory, num_nibbles, parent_memory, DriftedGadget, Indexable, + IsPlaceholderLeafGadget, KeyData, MPTConstraintBuilder, ParentData, WrongGadget, + KECCAK, + }, + param::{KEY_LEN_IN_NIBBLES, RLP_LIST_LONG, RLP_LONG}, + MPTConfig, MPTContext, MPTState, RlpItemType, + }, + table::MPTProofType, + util::word::{self, Word}, + witness::MptUpdateRow, +}; + +#[derive(Clone, Debug, Default)] +pub(crate) struct AccountLeafConfig<F> { + main_data: MainData<F>, + key_data: [KeyData<F>; 2], + parent_data: [ParentData<F>; 2], + rlp_key: [ListKeyGadget<F>; 2], + value_rlp_bytes: [[Cell<F>; 2]; 2], + value_list_rlp_bytes: [[Cell<F>; 2]; 2], + is_placeholder_leaf: [IsPlaceholderLeafGadget<F>; 2], + drifted: DriftedGadget<F>, + wrong: WrongGadget<F>, + is_non_existing_account_proof: IsEqualGadget<F>, + is_account_delete_mod: IsEqualGadget<F>, + is_nonce_mod: IsEqualGadget<F>, + is_balance_mod: IsEqualGadget<F>, + is_storage_mod: IsEqualGadget<F>, + is_codehash_mod: IsEqualGadget<F>, +} + +impl<F: Field> AccountLeafConfig<F> { + pub fn configure( + meta: &mut VirtualCells<'_, F>, + cb: &mut MPTConstraintBuilder<F>, + ctx: MPTContext<F>, + ) -> Self { + cb.base + .cell_manager + .as_mut() + .unwrap() + .reset(AccountRowType::Count as usize); + let mut config = AccountLeafConfig::default(); + + circuit!([meta, cb], { + let key_items = [ + ctx.rlp_item(meta, cb, AccountRowType::KeyS as usize, RlpItemType::Key), + ctx.rlp_item(meta, cb, AccountRowType::KeyC as usize, RlpItemType::Key), + ]; + config.value_rlp_bytes = [cb.query_bytes(), cb.query_bytes()]; + config.value_list_rlp_bytes = [cb.query_bytes(), cb.query_bytes()]; + let nonce_items = [ + ctx.rlp_item( + meta, + cb, + AccountRowType::NonceS as usize, + RlpItemType::Value, + ), + ctx.rlp_item( + meta, + cb, + AccountRowType::NonceC as usize, + RlpItemType::Value, + ), + ]; + let balance_items = [ + ctx.rlp_item( + meta, + cb, + AccountRowType::BalanceS as usize, + RlpItemType::Value, + ), + ctx.rlp_item( + meta, + cb, + AccountRowType::BalanceC as usize, + RlpItemType::Value, + ), + ]; + let storage_items = [ + ctx.rlp_item( + meta, + cb, + AccountRowType::StorageS as usize, + RlpItemType::Hash, + ), + ctx.rlp_item( + meta, + cb, + AccountRowType::StorageC as usize, + RlpItemType::Hash, + ), + ]; + let codehash_items = [ + ctx.rlp_item( + meta, + cb, + AccountRowType::CodehashS as usize, + RlpItemType::Hash, + ), + ctx.rlp_item( + meta, + cb, + AccountRowType::CodehashC as usize, + RlpItemType::Hash, + ), + ]; + let drifted_bytes = + ctx.rlp_item(meta, cb, AccountRowType::Drifted as usize, RlpItemType::Key); + let wrong_bytes = + ctx.rlp_item(meta, cb, AccountRowType::Wrong as usize, RlpItemType::Key); + let address_item = ctx.rlp_item( + meta, + cb, + AccountRowType::Address as usize, + RlpItemType::Value, + ); + let key_item = ctx.rlp_item(meta, cb, AccountRowType::Key as usize, RlpItemType::Hash); + + config.main_data = + MainData::load("main storage", cb, &ctx.memory[main_memory()], 0.expr()); + + // Don't allow an account node to follow an account node + require!(config.main_data.is_below_account => false); + + let mut key_rlc = vec![0.expr(); 2]; + let mut nonce = vec![Word::<Expression<F>>::new([0.expr(), 0.expr()]); 2]; + let mut balance = vec![Word::<Expression<F>>::new([0.expr(), 0.expr()]); 2]; + let mut storage = vec![Word::<Expression<F>>::new([0.expr(), 0.expr()]); 2]; + let mut codehash = vec![Word::<Expression<F>>::new([0.expr(), 0.expr()]); 2]; + let mut leaf_no_key_rlc = vec![0.expr(); 2]; + let mut leaf_no_key_rlc_mult = vec![0.expr(); 2]; + let mut value_list_num_bytes = vec![0.expr(); 2]; + for is_s in [true, false] { + // Key data + let key_data = &mut config.key_data[is_s.idx()]; + *key_data = KeyData::load(cb, &ctx.memory[key_memory(is_s)], 0.expr()); + + // Parent data + let parent_data = &mut config.parent_data[is_s.idx()]; + *parent_data = ParentData::load( + "account load", + cb, + &ctx.memory[parent_memory(is_s)], + 0.expr(), + ); + + // Placeholder leaf checks + config.is_placeholder_leaf[is_s.idx()] = + IsPlaceholderLeafGadget::construct(cb, parent_data.hash.expr()); + + // Calculate the key RLC + let rlp_key = &mut config.rlp_key[is_s.idx()]; + *rlp_key = ListKeyGadget::construct(cb, &key_items[is_s.idx()]); + + let nonce_rlp_rlc; + let balance_rlp_rlc; + let storage_rlp_rlc; + let codehash_rlp_rlc; + (nonce[is_s.idx()], nonce_rlp_rlc) = ( + nonce_items[is_s.idx()].word(), + nonce_items[is_s.idx()].rlc_chain_data(), + ); + (balance[is_s.idx()], balance_rlp_rlc) = ( + balance_items[is_s.idx()].word(), + balance_items[is_s.idx()].rlc_chain_data(), + ); + (storage[is_s.idx()], storage_rlp_rlc) = ( + storage_items[is_s.idx()].word(), + storage_items[is_s.idx()].rlc_chain_data(), + ); + (codehash[is_s.idx()], codehash_rlp_rlc) = ( + codehash_items[is_s.idx()].word(), + codehash_items[is_s.idx()].rlc_chain_data(), + ); + + // Calculate the leaf RLC + let keccak_r = &cb.keccak_r; + let value_rlp_bytes = config.value_rlp_bytes[is_s.idx()].to_expr_vec(); + let value_list_rlp_bytes = config.value_list_rlp_bytes[is_s.idx()].to_expr_vec(); + leaf_no_key_rlc[is_s.idx()] = value_rlp_bytes + .rlc_rev(keccak_r) + .rlc_chain_rev(( + value_list_rlp_bytes.rlc_rev(keccak_r), + pow::expr(keccak_r.expr(), 2), + )) + .rlc_chain_rev(nonce_rlp_rlc.clone()) + .rlc_chain_rev(balance_rlp_rlc.clone()) + .rlc_chain_rev(storage_rlp_rlc.clone()) + .rlc_chain_rev(codehash_rlp_rlc.clone()); + leaf_no_key_rlc_mult[is_s.idx()] = pow::expr(keccak_r.expr(), 4) + * nonce_rlp_rlc.1 + * balance_rlp_rlc.1 + * storage_rlp_rlc.1 + * codehash_rlp_rlc.1; + let leaf_rlc = rlp_key.rlc2(&cb.keccak_r).rlc_chain_rev(( + leaf_no_key_rlc[is_s.idx()].expr(), + leaf_no_key_rlc_mult[is_s.idx()].expr(), + )); + + // Key + key_rlc[is_s.idx()] = key_data.rlc.expr() + + rlp_key.key.expr( + cb, + rlp_key.key_value.clone(), + key_data.mult.expr(), + key_data.is_odd.expr(), + &cb.key_r.expr(), + ); + // Total number of nibbles needs to be KEY_LEN_IN_NIBBLES. + let num_nibbles = + num_nibbles::expr(rlp_key.key_value.len(), key_data.is_odd.expr()); + require!(key_data.num_nibbles.expr() + num_nibbles.expr() => KEY_LEN_IN_NIBBLES); + + // Check if the account is in its parent. + // Check is skipped for placeholder leaves which are dummy leaves + ifx! {not!(and::expr(&[not!(parent_data.is_placeholder), config.is_placeholder_leaf[is_s.idx()].expr()])) => { + let hash = parent_data.hash.expr(); + require!(vec![1.expr(), leaf_rlc, rlp_key.rlp_list.num_bytes(), hash.lo(), hash.hi()] => @KECCAK); + }} + + // Check the RLP encoding consistency. + // RLP encoding: account = [key, "[nonce, balance, storage, codehash]"] + // We always store between 55 and 256 bytes of data in the values list. + require!(value_rlp_bytes[0] => RLP_LONG + 1); + // The RLP encoded list always has 2 RLP bytes. + require!(value_rlp_bytes[1] => value_list_rlp_bytes[1].expr() + 2.expr()); + // The first RLP byte of the list is always RLP_LIST_LONG + 1. + require!(value_list_rlp_bytes[0] => RLP_LIST_LONG + 1); + // The length of the list is `#(nonce) + #(balance) + 2 * (1 + #(hash))`. + require!(value_list_rlp_bytes[1] => nonce_items[is_s.idx()].num_bytes() + balance_items[is_s.idx()].num_bytes() + (2 * (1 + 32)).expr()); + // Now check that the the key and value list length matches the account length. + // The RLP encoded string always has 2 RLP bytes. + value_list_num_bytes[is_s.idx()] = value_rlp_bytes[1].expr() + 2.expr(); + + // Account length needs to equal all key bytes and all values list bytes. + require!(config.rlp_key[is_s.idx()].rlp_list.len() => config.rlp_key[is_s.idx()].key_value.num_bytes() + value_list_num_bytes[is_s.idx()].expr()); + + // Key done, set the starting values + KeyData::store_defaults(cb, &ctx.memory[key_memory(is_s)]); + // Store the new parent + ParentData::store( + cb, + &ctx.memory[parent_memory(is_s)], + storage_items[is_s.idx()].word(), + 0.expr(), + true.expr(), + false.expr(), + storage_items[is_s.idx()].word(), + ); + } + // Proof types + config.is_non_existing_account_proof = IsEqualGadget::construct( + &mut cb.base, + config.main_data.proof_type.expr(), + MPTProofType::AccountDoesNotExist.expr(), + ); + config.is_account_delete_mod = IsEqualGadget::construct( + &mut cb.base, + config.main_data.proof_type.expr(), + MPTProofType::AccountDestructed.expr(), + ); + config.is_nonce_mod = IsEqualGadget::construct( + &mut cb.base, + config.main_data.proof_type.expr(), + MPTProofType::NonceChanged.expr(), + ); + config.is_balance_mod = IsEqualGadget::construct( + &mut cb.base, + config.main_data.proof_type.expr(), + MPTProofType::BalanceChanged.expr(), + ); + config.is_storage_mod = IsEqualGadget::construct( + &mut cb.base, + config.main_data.proof_type.expr(), + MPTProofType::StorageChanged.expr(), + ); + config.is_codehash_mod = IsEqualGadget::construct( + &mut cb.base, + config.main_data.proof_type.expr(), + MPTProofType::CodeHashChanged.expr(), + ); + + // Drifted leaf handling + config.drifted = DriftedGadget::construct( + cb, + &value_list_num_bytes, + &config.parent_data, + &config.key_data, + &key_rlc, + &leaf_no_key_rlc, + &leaf_no_key_rlc_mult, + &drifted_bytes, + &cb.key_r.expr(), + ); + + // Wrong leaf handling + config.wrong = WrongGadget::construct( + cb, + key_item.hash_rlc(), + config.is_non_existing_account_proof.expr(), + &config.rlp_key[true.idx()].key_value, + &key_rlc[true.idx()], + &wrong_bytes, + config.is_placeholder_leaf[true.idx()].expr(), + config.key_data[true.idx()].clone(), + &cb.key_r.expr(), + ); + + // Anything following this node is below the account + // TODO(Brecht): For non-existing accounts it should be impossible to prove + // storage leaves unless it's also a non-existing proof? + MainData::store( + cb, + &ctx.memory[main_memory()], + [ + config.main_data.proof_type.expr(), + true.expr(), + address_item.word().lo() + + address_item.word().hi() * pow::value::<F>(256.scalar(), 16), + config.main_data.new_root.lo().expr(), + config.main_data.new_root.hi().expr(), + config.main_data.old_root.lo().expr(), + config.main_data.old_root.hi().expr(), + ], + ); + + ifx! {config.is_account_delete_mod => { + // Account delete + // We need to make sure there is no leaf when account is deleted. Two possible + // cases: + // - 1. Account leaf is deleted and there is a nil object in + // branch. In this case we have a placeholder leaf. + // - 2. Account leaf is deleted from a branch with two leaves, the remaining + // leaf moves one level up and replaces the branch. In this case we + // have a branch placeholder. + require!(or::expr([ + config.is_placeholder_leaf[false.idx()].expr(), + config.parent_data[false.idx()].is_placeholder.expr() + ]) => true); + } elsex { + // Check that there is only one modification (except when the account is being deleted). + // Nonce needs to remain the same when not modifying the nonce + ifx!{not!(config.is_nonce_mod) => { + require!(nonce[false.idx()] => nonce[true.idx()]); + }} + // Balance needs to remain the same when not modifying the balance + ifx!{not!(config.is_balance_mod) => { + require!(balance[false.idx()] => balance[true.idx()]); + }} + // Storage root needs to remain the same when not modifying the storage root + ifx!{not!(config.is_storage_mod) => { + require!(storage[false.idx()] => storage[true.idx()]); + }} + // Codehash root needs to remain the same when not modifying the codehash + ifx!{not!(config.is_codehash_mod) => { + require!(codehash[false.idx()] => codehash[true.idx()]); + }} + }} + ifx! {config.is_non_existing_account_proof => { + // For non-existing proofs the tree needs to remain the same + require!(config.main_data.new_root => config.main_data.old_root); + require!(key_rlc[true.idx()] => key_rlc[false.idx()]); + }} + + // Put the data in the lookup table + let (proof_type, old_value_lo, old_value_hi, new_value_lo, new_value_hi) = _matchx! {cb, + config.is_nonce_mod => (MPTProofType::NonceChanged.expr(), nonce[true.idx()].lo(), nonce[true.idx()].hi(), nonce[false.idx()].lo(), nonce[false.idx()].hi()), + config.is_balance_mod => (MPTProofType::BalanceChanged.expr(), balance[true.idx()].lo(), balance[true.idx()].hi(), balance[false.idx()].lo(), balance[false.idx()].hi()), + config.is_storage_mod => (MPTProofType::StorageChanged.expr(), storage[true.idx()].lo(), storage[true.idx()].hi(), storage[false.idx()].lo(), storage[false.idx()].hi()), + config.is_codehash_mod => (MPTProofType::CodeHashChanged.expr(), codehash[true.idx()].lo(), codehash[true.idx()].hi(), codehash[false.idx()].lo(), codehash[false.idx()].hi()), + config.is_account_delete_mod => (MPTProofType::AccountDestructed.expr(), 0.expr(), 0.expr(), 0.expr(), 0.expr()), + config.is_non_existing_account_proof => (MPTProofType::AccountDoesNotExist.expr(), 0.expr(), 0.expr(), 0.expr(), 0.expr()), + _ => (MPTProofType::Disabled.expr(), 0.expr(), 0.expr(), 0.expr(), 0.expr()), + }; + ifx! {not!(config.is_non_existing_account_proof) => { + let key_rlc = ifx!{not!(config.parent_data[true.idx()].is_placeholder) => { + key_rlc[true.idx()].expr() + } elsex { + key_rlc[false.idx()].expr() + }}; + // Check that the key item contains the correct key for the path that was taken + require!(key_item.hash_rlc() => key_rlc); + // Check if the key is correct for the given address + if ctx.params.is_preimage_check_enabled() { + let key = key_item.word(); + require!(vec![1.expr(), address_item.bytes_le()[1..21].rlc(&cb.keccak_r), 20.expr(), key.lo(), key.hi()] => @KECCAK); + } + }}; + let to_hi = Expression::<F>::Constant(pow::value::<F>(256.scalar(), 16)); + let lo = address_item.word().lo(); + let hi = address_item.word().hi() * to_hi; + let address = lo + hi; + ctx.mpt_table.constrain( + meta, + &mut cb.base, + address, + proof_type, + Word::<Expression<F>>::new([0.expr(), 0.expr()]), + config.main_data.new_root.expr(), + config.main_data.old_root.expr(), + Word::<Expression<F>>::new([new_value_lo, new_value_hi]), + Word::<Expression<F>>::new([old_value_lo, old_value_hi]), + ); + }); + + config + } + + #[allow(clippy::too_many_arguments)] + pub fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + mpt_config: &MPTConfig<F>, + pv: &mut MPTState<F>, + offset: usize, + node: &Node, + rlp_values: &[RLPItemWitness], + ) -> Result<(), Error> { + let account = &node.account.clone().unwrap(); + + let key_items = [ + rlp_values[AccountRowType::KeyS as usize].clone(), + rlp_values[AccountRowType::KeyC as usize].clone(), + ]; + let nonce_items = [ + rlp_values[AccountRowType::NonceS as usize].clone(), + rlp_values[AccountRowType::NonceC as usize].clone(), + ]; + let balance_items = [ + rlp_values[AccountRowType::BalanceS as usize].clone(), + rlp_values[AccountRowType::BalanceC as usize].clone(), + ]; + let storage_items = [ + rlp_values[AccountRowType::StorageS as usize].clone(), + rlp_values[AccountRowType::StorageC as usize].clone(), + ]; + let codehash_items = [ + rlp_values[AccountRowType::CodehashS as usize].clone(), + rlp_values[AccountRowType::CodehashC as usize].clone(), + ]; + let drifted_item = rlp_values[AccountRowType::Drifted as usize].clone(); + let expected_item = rlp_values[AccountRowType::Wrong as usize].clone(); + let address_item = rlp_values[AccountRowType::Address as usize].clone(); + let _key_item = rlp_values[AccountRowType::Key as usize].clone(); + + let main_data = + self.main_data + .witness_load(region, offset, &pv.memory[main_memory()], 0)?; + + // Key + let mut key_rlc = vec![0.scalar(); 2]; + let mut nonce = vec![Word::<F>::new([0.scalar(), 0.scalar()]); 2]; + let mut balance = vec![Word::<F>::new([0.scalar(), 0.scalar()]); 2]; + let mut storage = vec![Word::<F>::new([0.scalar(), 0.scalar()]); 2]; + let mut codehash = vec![Word::<F>::new([0.scalar(), 0.scalar()]); 2]; + let mut key_data = vec![KeyDataWitness::default(); 2]; + let mut parent_data = vec![ParentDataWitness::default(); 2]; + for is_s in [true, false] { + for (cell, byte) in self.value_rlp_bytes[is_s.idx()] + .iter() + .zip(account.value_rlp_bytes[is_s.idx()].iter()) + { + cell.assign(region, offset, byte.scalar())?; + } + + for (cell, byte) in self.value_list_rlp_bytes[is_s.idx()] + .iter() + .zip(account.value_list_rlp_bytes[is_s.idx()].iter()) + { + cell.assign(region, offset, byte.scalar())?; + } + + key_data[is_s.idx()] = self.key_data[is_s.idx()].witness_load( + region, + offset, + &pv.memory[key_memory(is_s)], + 0, + )?; + + parent_data[is_s.idx()] = self.parent_data[is_s.idx()].witness_load( + region, + offset, + &pv.memory[parent_memory(is_s)], + 0, + )?; + + self.is_placeholder_leaf[is_s.idx()].assign( + region, + offset, + parent_data[is_s.idx()].hash, + )?; + + let rlp_key_witness = self.rlp_key[is_s.idx()].assign( + region, + offset, + &account.list_rlp_bytes[is_s.idx()], + &key_items[is_s.idx()], + )?; + + nonce[is_s.idx()] = nonce_items[is_s.idx()].word(); + balance[is_s.idx()] = balance_items[is_s.idx()].word(); + storage[is_s.idx()] = storage_items[is_s.idx()].word(); + codehash[is_s.idx()] = codehash_items[is_s.idx()].word(); + + // Key + (key_rlc[is_s.idx()], _) = rlp_key_witness.key.key( + rlp_key_witness.key_item.clone(), + key_data[is_s.idx()].rlc, + key_data[is_s.idx()].mult, + region.key_r, + ); + + // Update key and parent state + KeyData::witness_store( + region, + offset, + &mut pv.memory[key_memory(is_s)], + F::ZERO, + F::ONE, + 0, + F::ZERO, + F::ONE, + 0, + )?; + ParentData::witness_store( + region, + offset, + &mut pv.memory[parent_memory(is_s)], + storage_items[is_s.idx()].word(), + 0.scalar(), + true, + false, + storage_items[is_s.idx()].word(), + )?; + } + + // Proof types + let is_non_existing_proof = self.is_non_existing_account_proof.assign( + region, + offset, + main_data.proof_type.scalar(), + MPTProofType::AccountDoesNotExist.scalar(), + )? == true.scalar(); + let is_account_delete_mod = self.is_account_delete_mod.assign( + region, + offset, + main_data.proof_type.scalar(), + MPTProofType::AccountDestructed.scalar(), + )? == true.scalar(); + let is_nonce_mod = self.is_nonce_mod.assign( + region, + offset, + main_data.proof_type.scalar(), + MPTProofType::NonceChanged.scalar(), + )? == true.scalar(); + let is_balance_mod = self.is_balance_mod.assign( + region, + offset, + main_data.proof_type.scalar(), + MPTProofType::BalanceChanged.scalar(), + )? == true.scalar(); + let is_storage_mod = self.is_storage_mod.assign( + region, + offset, + main_data.proof_type.scalar(), + MPTProofType::StorageChanged.scalar(), + )? == true.scalar(); + let is_codehash_mod = self.is_codehash_mod.assign( + region, + offset, + main_data.proof_type.scalar(), + MPTProofType::CodeHashChanged.scalar(), + )? == true.scalar(); + // Drifted leaf handling + self.drifted.assign( + region, + offset, + &parent_data, + &account.drifted_rlp_bytes, + &drifted_item, + region.key_r, + )?; + + // Wrong leaf handling + self.wrong.assign( + region, + offset, + is_non_existing_proof, + &key_rlc, + &account.wrong_rlp_bytes, + &expected_item, + true, + key_data[true.idx()].clone(), + region.key_r, + )?; + + // Anything following this node is below the account + let lo = address_item.word::<F>().lo(); + let hi: F = address_item.word::<F>().hi() * pow::value::<F>(256.scalar(), 16); + let address = lo + hi; + MainData::witness_store( + region, + offset, + &mut pv.memory[main_memory()], + main_data.proof_type, + true, + address, + main_data.new_root, + main_data.old_root, + )?; + + // Put the data in the lookup table + let (proof_type, value) = if is_nonce_mod { + (MPTProofType::NonceChanged, nonce) + } else if is_balance_mod { + (MPTProofType::BalanceChanged, balance) + } else if is_storage_mod { + (MPTProofType::StorageChanged, storage) + } else if is_codehash_mod { + (MPTProofType::CodeHashChanged, codehash) + } else if is_account_delete_mod { + ( + MPTProofType::AccountDestructed, + vec![Word::<F>::new([0.scalar(), 0.scalar()]); 2], + ) + } else if is_non_existing_proof { + ( + MPTProofType::AccountDoesNotExist, + vec![Word::<F>::new([0.scalar(), 0.scalar()]); 2], + ) + } else { + ( + MPTProofType::Disabled, + vec![Word::<F>::new([0.scalar(), 0.scalar()]); 2], + ) + }; + + mpt_config.mpt_table.assign_cached( + region, + offset, + &MptUpdateRow { + address: Value::known(from_bytes::value( + &account.address.iter().cloned().rev().collect::<Vec<_>>(), + )), + storage_key: word::Word::<F>::new([0.scalar(), 0.scalar()]).into_value(), + proof_type: Value::known(proof_type.scalar()), + new_root: main_data.new_root.into_value(), + old_root: main_data.old_root.into_value(), + new_value: value[false.idx()].into_value(), + old_value: value[true.idx()].into_value(), + }, + )?; + + Ok(()) + } +} diff --git a/zkevm-circuits/src/mpt_circuit/branch.rs b/zkevm-circuits/src/mpt_circuit/branch.rs new file mode 100644 index 0000000000..21d56ae9d7 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/branch.rs @@ -0,0 +1,400 @@ +use eth_types::Field; +use gadgets::util::Scalar; +use halo2_proofs::plonk::{Error, Expression, VirtualCells}; + +use super::{ + helpers::{MPTConstraintBuilder, RLPItemView}, + param::ARITY, + rlp_gadgets::{RLPItemWitness, RLPListDataGadget}, + witness_row::Node, + MPTContext, +}; +use crate::{ + circuit, + circuit_tools::{ + cached_region::CachedRegion, + cell_manager::{Cell, WordCell}, + constraint_builder::RLCChainableRev, + gadgets::LtGadget, + }, + mpt_circuit::{ + helpers::{nibble_rlc, Indexable, MptCellType, KECCAK}, + param::{HASH_WIDTH, RLP_NIL}, + MPTConfig, MPTState, RlpItemType, + }, + util::word::{self, Word}, +}; + +#[derive(Clone, Debug)] +pub(crate) struct BranchState<F> { + pub(crate) key_rlc_post_branch: Expression<F>, + pub(crate) key_mult_post_branch: Expression<F>, + pub(crate) key_rlc_post_drifted: Expression<F>, + pub(crate) key_mult_post_drifted: Expression<F>, + pub(crate) num_nibbles: Expression<F>, + pub(crate) is_key_odd: Expression<F>, + pub(crate) mod_word: [Word<Expression<F>>; 2], + pub(crate) mod_rlc: [Expression<F>; 2], +} + +#[derive(Clone, Debug, Default)] +pub(crate) struct BranchGadget<F> { + rlp_list: [RLPListDataGadget<F>; 2], + is_modified: [Cell<F>; ARITY], + is_drifted: [Cell<F>; ARITY], + mod_word: [WordCell<F>; 2], + mod_rlc: [Cell<F>; 2], + is_not_hashed: [LtGadget<F, 2>; 2], + + // Post branch state + post_state: Option<BranchState<F>>, +} + +impl<F: Field> BranchGadget<F> { + #[allow(clippy::too_many_arguments)] + pub fn configure( + meta: &mut VirtualCells<'_, F>, + cb: &mut MPTConstraintBuilder<F>, + ctx: MPTContext<F>, + is_placeholder: &[Cell<F>; 2], + parent_hash: &[word::Word<Expression<F>>; 2], + parent_rlc: &[Expression<F>; 2], + is_root: &[Expression<F>; 2], + key_rlc: Expression<F>, + key_mult: Expression<F>, + num_nibbles: Expression<F>, + is_key_odd: Expression<F>, + ) -> Self { + let mut config = BranchGadget::default(); + + circuit!([meta, cb], { + // Data + let children: [RLPItemView<F>; ARITY + 1] = + array_init::array_init(|i| ctx.rlp_item(meta, cb, i, RlpItemType::Node)); + + let mut num_bytes_left = vec![0.expr(); 2]; + let mut node_rlc = vec![0.expr(); 2]; + for is_s in [true, false] { + // Read the list + config.rlp_list[is_s.idx()] = RLPListDataGadget::construct(cb); + // Start RLC encoding the RLP data starting with the list RLP bytes + node_rlc[is_s.idx()] = config.rlp_list[is_s.idx()] + .rlp_list + .rlc_rlp_only_rev(&cb.keccak_r) + .0; + + // Keep track of how many bytes the branch contains to make sure it's correct. + num_bytes_left[is_s.idx()] = config.rlp_list[is_s.idx()].rlp_list.len(); + + config.mod_word[is_s.idx()] = cb.query_word_unchecked(); + config.mod_rlc[is_s.idx()] = cb.query_cell_with_type(MptCellType::StoragePhase2); + + // Check if the branch is hashed or not + config.is_not_hashed[is_s.idx()] = LtGadget::construct( + &mut cb.base, + config.rlp_list[is_s.idx()].rlp_list.num_bytes(), + HASH_WIDTH.expr(), + ); + } + + let mut modified_index = 0.expr(); + let mut drifted_index = 0.expr(); + for node_index in 0..ARITY { + config.is_modified[node_index] = cb.base.query_bool(); + config.is_drifted[node_index] = cb.base.query_bool(); + + // Calculate the modified and drifted index from `is_modified`/`is_drifted` + modified_index = modified_index.expr() + + config.is_modified[node_index].expr() * node_index.expr(); + drifted_index = + drifted_index.expr() + config.is_drifted[node_index].expr() * node_index.expr(); + } + + // Process the branch children + for node_index in 0..ARITY { + for is_s in [true, false] { + // Get the correct child. + // All s children are stored directly in the circuit, but the only modified + // child branch for c is stored in child 0. + let child = &children[node_index + 1]; + let mod_child = &children[0]; + let (rlc, rlc_mult, num_bytes, length) = if is_s { + ( + child.rlc_chain_data().0, + child.rlc_chain_data().1, + child.num_bytes(), + child.len(), + ) + } else { + ifx! {config.is_modified[node_index] => { + (mod_child.rlc_chain_data().0, mod_child.rlc_chain_data().1, mod_child.num_bytes(), mod_child.len()) + } elsex { + (child.rlc_chain_data().0, child.rlc_chain_data().1, child.num_bytes(), child.len()) + }} + }; + + // Keep track of how many bytes of the list we've processed + num_bytes_left[is_s.idx()] = + num_bytes_left[is_s.idx()].expr() - num_bytes.expr(); + + // Update the full branch node RLC with the data of this branch + node_rlc[is_s.idx()] = node_rlc[is_s.idx()].rlc_chain_rev((rlc, rlc_mult)); + + // When in a placeholder branch, both branches are the same - the placeholder + // branch and its parallel counterpart, which is not a + // placeholder, but a regular branch (newly added branch). + // The regular branch has only two non-nil nodes, + // because the placeholder branch appears only when an existing + // leaf drifts down into a newly added branch. Besides an + // existing leaf, we have a leaf that was being added and that caused + // a new branch to be added. So we need to check that there are exactly two + // non-nil nodes (otherwise the attacker could add more + // new leaves at the same time). The non-nil nodes need to be at + // `is_modified` and `is_drifted`, elsewhere there have + // to be zeros. + ifx! {is_placeholder[is_s.idx()] => { + ifx! {or::expr(&[config.is_modified[node_index].expr(), config.is_drifted[node_index].expr()]) => { + require!(length => HASH_WIDTH); + } elsex { + require!(length => 0); + }} + // Make sure that `modified_index != drifted_index` + require!(config.is_modified[node_index].expr() + config.is_drifted[node_index].expr() => bool); + }} + } + } + for is_s in [true, false] { + // Number of bytes left needs to be 1 because ValueNode which occupies 1 byte + require!(num_bytes_left[is_s.idx()] => 1); + // TODO: acc currently doesn't have branch ValueNode info + node_rlc[is_s.idx()] = + node_rlc[is_s.idx()].rlc_chain_rev((RLP_NIL.expr(), cb.keccak_r.expr())); + } + + // `is_modified` needs to be set to 1 at exactly 1 branch child + let is_modified_values = (0..ARITY) + .map(|rot| config.is_modified[rot].expr()) + .collect::<Vec<_>>(); + require!(sum::expr(&is_modified_values) => 1); + // When there's a placeholder, `is_drifted` needs to be set to 1 at exactly 1 + // branch child + ifx! {or::expr(&[is_placeholder[true.idx()].expr(), is_placeholder[false.idx()].expr()]) => { + let is_drifted_values = (0..ARITY).map(|rot| config.is_drifted[rot].expr()).collect::<Vec<_>>(); + require!(sum::expr(&is_drifted_values) => 1); + }} + + // Check if the branch is in its parent + for is_s in [true, false] { + let (rlc, num_bytes, is_not_hashed) = { + ( + node_rlc[is_s.idx()].expr(), + config.rlp_list[is_s.idx()].rlp_list.num_bytes(), + config.is_not_hashed[is_s.idx()].expr(), + ) + }; + + ifx! {not!(is_placeholder[is_s.idx()]) => { + ifx!{or::expr(&[is_root[is_s.idx()].expr(), not!(is_not_hashed)]) => { + // Hashed branch hash in parent branch + let hash = &parent_hash[is_s.idx()]; + require!(vec![1.expr(), rlc.expr(), num_bytes, hash.lo(), hash.hi()] => @KECCAK); + } elsex { + // Non-hashed branch hash in parent branch + require!(rlc => parent_rlc[is_s.idx()].expr()); + }} + }} + } + + // Update the key RLC and multiplier for the branch nibble. + let (key_rlc_post_branch, key_mult_post_branch) = nibble_rlc( + cb, + key_rlc.expr(), + key_mult.expr(), + is_key_odd.expr(), + modified_index.expr(), + &cb.key_r.expr(), + ); + // Also calculate the key RLC and multiplier for the drifted nibble. + let (key_rlc_post_drifted, key_mult_post_drifted) = nibble_rlc( + cb, + key_rlc.expr(), + key_mult.expr(), + is_key_odd.expr(), + drifted_index.expr(), + &cb.key_r.expr(), + ); + + // Update the nibble counter + let num_nibbles = num_nibbles + 1.expr(); + // Update key parity + let is_key_odd = not!(is_key_odd); + + // Set the branch we'll take + for is_s in [true, false] { + ifx! {is_placeholder[is_s.idx()] => { + for node_index in 0..ARITY { + ifx!{config.is_drifted[node_index].expr() => { + require!(config.mod_rlc[is_s.idx()] => + children[node_index + 1].rlc_rlp()); + require!(config.mod_word[is_s.idx()] => + children[node_index + 1].word()); + }} + } + } elsex { + if is_s { + for node_index in 0..ARITY { + ifx!{config.is_modified[node_index].expr() => { + require!(config.mod_rlc[is_s.idx()] => + children[node_index + 1].rlc_rlp()); + require!(config.mod_word[is_s.idx()] => + children[node_index + 1].word()); + }} + } + } else { + require!(config.mod_rlc[is_s.idx()] => children[0].rlc_rlp()); + require!(config.mod_word[is_s.idx()] => children[0].word()); + } + }} + } + + // Store the post branch state + config.post_state = Some(BranchState { + key_rlc_post_branch, + key_mult_post_branch, + key_rlc_post_drifted, + key_mult_post_drifted, + num_nibbles, + is_key_odd, + mod_word: [ + config.mod_word[true.idx()].expr(), + config.mod_word[false.idx()].expr(), + ], + mod_rlc: [ + config.mod_rlc[true.idx()].expr(), + config.mod_rlc[false.idx()].expr(), + ], + }); + }); + + config + } + + pub(crate) fn get_post_state(&self) -> BranchState<F> { + self.post_state.as_ref().unwrap().clone() + } + + #[allow(clippy::collapsible_else_if)] + #[allow(clippy::too_many_arguments)] + #[allow(clippy::type_complexity)] + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + _mpt_config: &MPTConfig<F>, + _pv: &mut MPTState<F>, + offset: usize, + is_placeholder: &[bool; 2], + key_rlc: &mut F, + key_mult: &mut F, + num_nibbles: &mut usize, + is_key_odd: &mut bool, + node: &Node, + rlp_values: &[RLPItemWitness], + ) -> Result<(F, F, F, [word::Word<F>; 2], [F; 2]), Error> { + let branch = &node.extension_branch.clone().unwrap().branch; + + for is_s in [true, false] { + let rlp_list_witness = self.rlp_list[is_s.idx()].assign( + region, + offset, + &branch.list_rlp_bytes[is_s.idx()], + )?; + self.is_not_hashed[is_s.idx()].assign( + region, + offset, + rlp_list_witness.num_bytes().scalar(), + HASH_WIDTH.scalar(), + )?; + } + + for node_index in 0..ARITY { + self.is_modified[node_index].assign( + region, + offset, + (node_index == branch.modified_index).scalar(), + )?; + self.is_drifted[node_index].assign( + region, + offset, + (node_index == branch.drifted_index).scalar(), + )?; + } + + // one nibble is used for position in branch + *num_nibbles += 1; + // Update key parity + *is_key_odd = !*is_key_odd; + + // Update the key RLC and multiplier for the branch nibble. + let (nibble_mult, mult): (F, F) = if *is_key_odd { + // The nibble will be added as the most significant nibble using the same + // multiplier + (16.scalar(), 1.scalar()) + } else { + // The nibble will be added as the least significant nibble, the multiplier + // needs to advance + (1.scalar(), region.key_r) + }; + let key_rlc_post_branch = + *key_rlc + F::from(branch.modified_index as u64) * nibble_mult * *key_mult; + let key_rlc_post_drifted = + *key_rlc + F::from(branch.drifted_index as u64) * nibble_mult * *key_mult; + let key_mult_post_branch = *key_mult * mult; + + // Set the branch we'll take + let mut mod_node_hash_word = [word::Word::<F>::new([0.scalar(), 0.scalar()]); 2]; + let mut mod_node_hash_rlc = [0.scalar(); 2]; + for is_s in [true, false] { + ( + mod_node_hash_rlc[is_s.idx()], + mod_node_hash_word[is_s.idx()], + ) = if is_placeholder[is_s.idx()] { + ( + rlp_values[1 + branch.drifted_index].rlc_rlp_rev(region.keccak_r), + rlp_values[1 + branch.drifted_index].word(), + ) + } else { + if is_s { + ( + rlp_values[1 + branch.modified_index].rlc_rlp_rev(region.keccak_r), + rlp_values[1 + branch.modified_index].word(), + ) + } else { + ( + rlp_values[0].rlc_rlp_rev(region.keccak_r), + rlp_values[0].word(), + ) + } + }; + self.mod_word[is_s.idx()].lo().assign( + region, + offset, + mod_node_hash_word[is_s.idx()].lo(), + )?; + self.mod_word[is_s.idx()].hi().assign( + region, + offset, + mod_node_hash_word[is_s.idx()].hi(), + )?; + + self.mod_rlc[is_s.idx()].assign(region, offset, mod_node_hash_rlc[is_s.idx()])?; + } + + Ok(( + key_rlc_post_branch, + key_rlc_post_drifted, + key_mult_post_branch, + mod_node_hash_word, + mod_node_hash_rlc, + )) + } +} diff --git a/zkevm-circuits/src/mpt_circuit/extension.rs b/zkevm-circuits/src/mpt_circuit/extension.rs new file mode 100644 index 0000000000..9398c17cdd --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/extension.rs @@ -0,0 +1,301 @@ +use eth_types::Field; +use gadgets::util::{pow, Scalar}; +use halo2_proofs::plonk::{Error, Expression, VirtualCells}; + +use super::{ + helpers::{KeyDataWitness, ListKeyGadget, MPTConstraintBuilder}, + rlp_gadgets::RLPItemWitness, + witness_row::{ExtensionBranchRowType, Node}, + MPTContext, +}; +use crate::{ + circuit, + circuit_tools::{ + cached_region::CachedRegion, cell_manager::Cell, constraint_builder::RLCChainableRev, + gadgets::LtGadget, + }, + mpt_circuit::{ + helpers::{ + ext_key_rlc_calc_value, ext_key_rlc_expr, num_nibbles, Indexable, KeyData, MptCellType, + ParentData, FIXED, KECCAK, MULT, + }, + param::HASH_WIDTH, + FixedTableTag, MPTConfig, MPTState, RlpItemType, + }, + util::word::Word, +}; + +#[derive(Clone, Debug)] +pub(crate) struct ExtState<F> { + pub(crate) key_rlc: Expression<F>, + pub(crate) key_mult: Expression<F>, + pub(crate) num_nibbles: Expression<F>, + pub(crate) is_key_odd: Expression<F>, + + pub(crate) branch_rlp_word: [Word<Expression<F>>; 2], + pub(crate) branch_rlp_rlc: [Expression<F>; 2], +} + +#[derive(Clone, Debug, Default)] +pub(crate) struct ExtensionGadget<F> { + rlp_key: ListKeyGadget<F>, + is_not_hashed: LtGadget<F, 2>, + is_key_part_odd: Cell<F>, + mult_key: Cell<F>, + + // Post extension state + post_state: Option<ExtState<F>>, +} + +impl<F: Field> ExtensionGadget<F> { + pub fn configure( + meta: &mut VirtualCells<'_, F>, + cb: &mut MPTConstraintBuilder<F>, + ctx: MPTContext<F>, + key_data: &KeyData<F>, + parent_data: &[ParentData<F>; 2], + is_placeholder: &[Cell<F>; 2], + ) -> Self { + let mut config = ExtensionGadget::default(); + + circuit!([meta, cb], { + // Data + let key_items = [ + // Special case, requring string fail tests + ctx.rlp_item( + meta, + cb, + ExtensionBranchRowType::KeyS as usize, + RlpItemType::Key, + ), + ctx.rlp_item( + meta, + cb, + ExtensionBranchRowType::KeyC as usize, + RlpItemType::Nibbles, + ), + ]; + let rlp_value = [ + ctx.rlp_item( + meta, + cb, + ExtensionBranchRowType::ValueS as usize, + RlpItemType::Node, + ), + ctx.rlp_item( + meta, + cb, + ExtensionBranchRowType::ValueC as usize, + RlpItemType::Node, + ), + ]; + + config.rlp_key = ListKeyGadget::construct(cb, &key_items[0]); + config.is_key_part_odd = cb.query_cell(); + let first_byte = matchx! { + key_items[true.idx()].is_short() => key_items[true.idx()].bytes_be()[0].expr(), + key_items[true.idx()].is_long() => key_items[true.idx()].bytes_be()[1].expr(), + key_items[true.idx()].is_very_long() => key_items[true.idx()].bytes_be()[2].expr(), + }; + require!((FixedTableTag::ExtOddKey.expr(), first_byte, config.is_key_part_odd.expr()) => @FIXED); + + let mut branch_rlp_rlc = vec![0.expr(); 2]; + let mut branch_rlp_word = vec![Word::<Expression<F>>::new([0.expr(), 0.expr()]); 2]; + for is_s in [true, false] { + // In C we have the key nibbles, we check below only for S. + if is_s { + // RLP encoding checks: [key, branch] + // Verify that the lengths are consistent. + require!(config.rlp_key.rlp_list.len() => config.rlp_key.key_value.num_bytes() + rlp_value[is_s.idx()].num_bytes()); + } + + // Extension node RLC + let node_rlc = config + .rlp_key + .rlc2(&cb.keccak_r) + .rlc_chain_rev(rlp_value[is_s.idx()].rlc_chain_data()); + + // The branch expected in the extension node + branch_rlp_rlc[is_s.idx()] = rlp_value[is_s.idx()].rlc_rlp(); + branch_rlp_word[is_s.idx()] = rlp_value[is_s.idx()].word(); + + // Check if the extension node is in its parent. + let (rlc, num_bytes, is_not_hashed) = { + if is_s { + config.is_not_hashed = LtGadget::construct( + &mut cb.base, + config.rlp_key.rlp_list.num_bytes(), + HASH_WIDTH.expr(), + ); + } + ( + node_rlc.expr(), + config.rlp_key.rlp_list.num_bytes(), + config.is_not_hashed.expr(), + ) + }; + ifx! {not!(is_placeholder[is_s.idx()]) => { + ifx!{or::expr(&[parent_data[is_s.idx()].is_root.expr(), not!(is_not_hashed)]) => { + // Hashed branch hash in parent branch + require!(vec![1.expr(), rlc.expr(), num_bytes.expr(), parent_data[is_s.idx()].hash.lo().expr(), parent_data[is_s.idx()].hash.hi().expr()] => @KECCAK); + } elsex { + // Non-hashed branch hash in parent branch + require!(rlc => parent_data[is_s.idx()].rlc); + }} + }} + } + + // Calculate the number of bytes + let key_len = config.rlp_key.key_value.len(); + // Calculate the number of nibbles + let num_nibbles = num_nibbles::expr(key_len.expr(), config.is_key_part_odd.expr()); + // Make sure the nibble counter is updated correctly + let num_nibbles = key_data.num_nibbles.expr() + num_nibbles.expr(); + + // The parity alternates when there's an even number of nibbles, remains the + // same otherwise + let is_key_odd = ifx! {config.is_key_part_odd => { + not!(key_data.is_odd) + } elsex { + key_data.is_odd.expr() + }}; + + // Calculate the extension node key RLC when in an extension node + // Currently, the extension node S and extension node C both have the same key + // RLC - however, sometimes extension node can be replaced by a + // shorter extension node (in terms of nibbles), this is still to be + // implemented. + let key_rlc = key_data.rlc.expr() + + ext_key_rlc_expr( + cb, + config.rlp_key.key_value.clone(), + key_data.mult.expr(), + config.is_key_part_odd.expr(), + not!(is_key_odd), + key_items + .iter() + .map(|item| item.bytes_be()) + .collect::<Vec<_>>() + .try_into() + .unwrap(), + &cb.key_r.expr(), + ); + + // Get the length of the key + // Unless both parts of the key are odd, subtract 1 from the key length. + let key_len = config.rlp_key.key_value.len(); + let key_num_bytes_for_mult = key_len + - ifx! {not!(key_data.is_odd.expr() * config.is_key_part_odd.expr()) => { 1.expr() }}; + // Get the multiplier for this key length + config.mult_key = cb.query_cell_with_type(MptCellType::StoragePhase2); + require!((key_num_bytes_for_mult, config.mult_key.expr()) => @MULT); + + // Store the post ext state + config.post_state = Some(ExtState { + key_rlc, + key_mult: key_data.mult.expr() * config.mult_key.expr(), + num_nibbles, + is_key_odd, + branch_rlp_word: branch_rlp_word.try_into().unwrap(), + branch_rlp_rlc: branch_rlp_rlc.try_into().unwrap(), + }); + }); + + config + } + + pub(crate) fn get_post_state(&self) -> ExtState<F> { + self.post_state.as_ref().unwrap().clone() + } + + #[allow(clippy::too_many_arguments)] + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + _mpt_config: &MPTConfig<F>, + _pv: &mut MPTState<F>, + offset: usize, + key_data: &KeyDataWitness<F>, + key_rlc: &mut F, + key_mult: &mut F, + num_nibbles: &mut usize, + is_key_odd: &mut bool, + node: &Node, + rlp_values: &[RLPItemWitness], + ) -> Result<(), Error> { + let extension = &node.extension_branch.clone().unwrap().extension; + + // Data + let key_items = [ + rlp_values[ExtensionBranchRowType::KeyS as usize].clone(), + rlp_values[ExtensionBranchRowType::KeyC as usize].clone(), + ]; + let _value_bytes = [ + rlp_values[ExtensionBranchRowType::ValueS as usize].clone(), + rlp_values[ExtensionBranchRowType::ValueC as usize].clone(), + ]; + + let rlp_key = self.rlp_key.assign( + region, + offset, + &extension.list_rlp_bytes, + &key_items[true.idx()], + )?; + + let first_key_byte = key_items[true.idx()].bytes[rlp_key.key_item.num_rlp_bytes()]; + // Compact encoding + let is_key_part_odd = first_key_byte >> 4 == 1; + if is_key_part_odd { + assert!(first_key_byte < 0b10_0000); + } else { + assert!(first_key_byte == 0); + } + self.is_key_part_odd + .assign(region, offset, is_key_part_odd.scalar())?; + + self.is_not_hashed.assign( + region, + offset, + rlp_key.rlp_list.num_bytes().scalar(), + HASH_WIDTH.scalar(), + )?; + + let mut key_len_mult = rlp_key.key_item.len(); + if !(*is_key_odd && is_key_part_odd) { + key_len_mult -= 1; + } + + // Update number of nibbles + *num_nibbles += num_nibbles::value(rlp_key.key_item.len(), is_key_part_odd); + + // Update parity + *is_key_odd = if is_key_part_odd { + !*is_key_odd + } else { + *is_key_odd + }; + + // Key RLC + let (key_rlc_ext, _) = ext_key_rlc_calc_value( + rlp_key.key_item, + key_data.mult, + is_key_part_odd, + !*is_key_odd, + key_items + .iter() + .map(|item| item.bytes.clone()) + .collect::<Vec<_>>() + .try_into() + .unwrap(), + region.key_r, + ); + *key_rlc = key_data.rlc + key_rlc_ext; + + // Key mult + let mult_key = pow::value(region.key_r, key_len_mult); + self.mult_key.assign(region, offset, mult_key)?; + *key_mult = key_data.mult * mult_key; + + Ok(()) + } +} diff --git a/zkevm-circuits/src/mpt_circuit/extension_branch.rs b/zkevm-circuits/src/mpt_circuit/extension_branch.rs new file mode 100644 index 0000000000..a1ec2b091a --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/extension_branch.rs @@ -0,0 +1,329 @@ +use eth_types::Field; +use gadgets::util::Scalar; +use halo2_proofs::plonk::{Error, Expression, VirtualCells}; + +use super::{ + branch::BranchGadget, + extension::ExtensionGadget, + helpers::{MPTConstraintBuilder, ParentDataWitness}, + rlp_gadgets::RLPItemWitness, + witness_row::Node, + MPTContext, +}; +use crate::{ + circuit, + circuit_tools::{cached_region::CachedRegion, cell_manager::Cell}, + mpt_circuit::{ + helpers::{key_memory, parent_memory, Indexable, KeyData, ParentData}, + witness_row::ExtensionBranchRowType, + MPTConfig, MPTState, + }, + util::word::Word, +}; + +#[derive(Clone, Debug, Default)] +pub(crate) struct ExtensionBranchConfig<F> { + key_data: KeyData<F>, + parent_data: [ParentData<F>; 2], + is_placeholder: [Cell<F>; 2], + is_extension: Cell<F>, + extension: ExtensionGadget<F>, + branch: BranchGadget<F>, +} + +impl<F: Field> ExtensionBranchConfig<F> { + pub fn configure( + meta: &mut VirtualCells<'_, F>, + cb: &mut MPTConstraintBuilder<F>, + ctx: MPTContext<F>, + ) -> Self { + cb.base + .cell_manager + .as_mut() + .unwrap() + .reset(ExtensionBranchRowType::Count as usize); + let mut config = ExtensionBranchConfig::default(); + + circuit!([meta, cb], { + // General inputs + config.is_extension = cb.query_bool(); + // If we're in a placeholder, both the extension and the branch parts are + // placeholders + for is_s in [true, false] { + config.is_placeholder[is_s.idx()] = cb.query_bool(); + } + // Don't allow both branches to be placeholders + require!(config.is_placeholder[true.idx()].expr() + config.is_placeholder[false.idx()].expr() => bool); + + // Load the last key values + config.key_data = KeyData::load(cb, &ctx.memory[key_memory(true)], 0.expr()); + // Load the parent values + for is_s in [true, false] { + config.parent_data[is_s.idx()] = ParentData::load( + "branch load", + cb, + &ctx.memory[parent_memory(is_s)], + 0.expr(), + ); + // A branch cannot follow a placeholder branch + require!(config.parent_data[is_s.idx()].is_placeholder => false); + } + + // Extension + let ( + num_nibbles, + is_key_odd, + key_rlc_post_ext, + key_mult_post_ext, + is_root_s, + is_root_c, + parent_word_s_lo, + parent_word_s_hi, + parent_word_c_lo, + parent_word_c_hi, + parent_rlc_s, + parent_rlc_c, + ) = ifx! {config.is_extension => { + config.extension = ExtensionGadget::configure( + meta, + cb, + ctx.clone(), + &config.key_data, + &config.parent_data, + &config.is_placeholder, + ); + let ext = config.extension.get_post_state(); + ( + ext.num_nibbles, + ext.is_key_odd, + ext.key_rlc, + ext.key_mult, + false.expr(), + false.expr(), + ext.branch_rlp_word[true.idx()].lo(), + ext.branch_rlp_word[true.idx()].hi(), + ext.branch_rlp_word[false.idx()].lo(), + ext.branch_rlp_word[false.idx()].hi(), + ext.branch_rlp_rlc[true.idx()].expr(), + ext.branch_rlp_rlc[false.idx()].expr(), + ) + } elsex { + ( + config.key_data.num_nibbles.expr(), + config.key_data.is_odd.expr(), + config.key_data.rlc.expr(), + config.key_data.mult.expr(), + config.parent_data[true.idx()].is_root.expr(), + config.parent_data[false.idx()].is_root.expr(), + config.parent_data[true.idx()].hash.lo().expr(), + config.parent_data[true.idx()].hash.hi().expr(), + config.parent_data[false.idx()].hash.lo().expr(), + config.parent_data[false.idx()].hash.hi().expr(), + config.parent_data[true.idx()].rlc.expr(), + config.parent_data[false.idx()].rlc.expr(), + ) + }}; + let parent_word = [ + Word::<Expression<F>>::new([parent_word_s_lo, parent_word_s_hi]), + Word::<Expression<F>>::new([parent_word_c_lo, parent_word_c_hi]), + ]; + let parent_rlc = [parent_rlc_s, parent_rlc_c]; + let is_root = [is_root_s, is_root_c]; + + // Branch + config.branch = BranchGadget::configure( + meta, + cb, + ctx.clone(), + &config.is_placeholder, + &parent_word, + &parent_rlc, + &is_root, + key_rlc_post_ext.expr(), + key_mult_post_ext.expr(), + num_nibbles.expr(), + is_key_odd.expr(), + ); + let branch = config.branch.get_post_state(); + + // Set the new keys + for is_s in [true, false] { + ifx! {not!(config.is_placeholder[is_s.idx()].expr()) => { + KeyData::store( + cb, + &ctx.memory[key_memory(is_s)], + branch.key_rlc_post_branch.expr(), + branch.key_mult_post_branch.expr(), + branch.num_nibbles.expr(), + branch.is_key_odd.expr(), + 0.expr(), + 0.expr(), + 0.expr(), + false.expr(), + ); + ParentData::store( + cb, + &ctx.memory[parent_memory(is_s)], + branch.mod_word[is_s.idx()].clone(), + branch.mod_rlc[is_s.idx()].expr(), + false.expr(), + false.expr(), + Word::<Expression<F>>::new([0.expr(), 0.expr()]) + ); + } elsex { + KeyData::store( + cb, + &ctx.memory[key_memory(is_s)], + config.key_data.rlc.expr(), + config.key_data.mult.expr(), + config.key_data.num_nibbles.expr(), + config.key_data.is_odd.expr(), + branch.key_rlc_post_drifted.expr(), + branch.key_mult_post_drifted.expr(), + branch.num_nibbles.expr(), + branch.is_key_odd.expr(), + ); + ParentData::store( + cb, + &ctx.memory[parent_memory(is_s)], + config.parent_data[is_s.idx()].hash.expr(), + config.parent_data[is_s.idx()].rlc.expr(), + config.parent_data[is_s.idx()].is_root.expr(), + true.expr(), + branch.mod_word[is_s.idx()].clone(), + ); + }} + } + }); + + config + } + + #[allow(clippy::too_many_arguments)] + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + mpt_config: &MPTConfig<F>, + pv: &mut MPTState<F>, + offset: usize, + node: &Node, + rlp_values: &[RLPItemWitness], + ) -> Result<(), Error> { + let extension_branch = &node.extension_branch.clone().unwrap(); + + self.is_extension + .assign(region, offset, extension_branch.is_extension.scalar())?; + + let key_data = + self.key_data + .witness_load(region, offset, &pv.memory[key_memory(true)], 0)?; + let mut parent_data = vec![ParentDataWitness::default(); 2]; + for is_s in [true, false] { + parent_data[is_s.idx()] = self.parent_data[is_s.idx()].witness_load( + region, + offset, + &pv.memory[parent_memory(is_s)], + 0, + )?; + self.is_placeholder[is_s.idx()].assign( + region, + offset, + extension_branch.is_placeholder[is_s.idx()].scalar(), + )?; + } + + let mut key_rlc = key_data.rlc; + let mut key_mult = key_data.mult; + let mut num_nibbles = key_data.num_nibbles; + let mut is_key_odd = key_data.is_odd; + + // Extension + if extension_branch.is_extension { + self.extension.assign( + region, + mpt_config, + pv, + offset, + &key_data, + &mut key_rlc, + &mut key_mult, + &mut num_nibbles, + &mut is_key_odd, + node, + rlp_values, + )?; + } + + // Branch + let ( + key_rlc_post_branch, + key_rlc_post_drifted, + key_mult_post_branch, + mod_node_hash_word, + mod_node_hash_rlc, + ) = self.branch.assign( + region, + mpt_config, + pv, + offset, + &extension_branch.is_placeholder, + &mut key_rlc, + &mut key_mult, + &mut num_nibbles, + &mut is_key_odd, + node, + rlp_values, + )?; + + // Set the new parent and key + for is_s in [true, false] { + if !extension_branch.is_placeholder[is_s.idx()] { + KeyData::witness_store( + region, + offset, + &mut pv.memory[key_memory(is_s)], + key_rlc_post_branch, + key_mult_post_branch, + num_nibbles, + 0.scalar(), + 0.scalar(), + 0, + )?; + ParentData::witness_store( + region, + offset, + &mut pv.memory[parent_memory(is_s)], + mod_node_hash_word[is_s.idx()], + mod_node_hash_rlc[is_s.idx()], + false, + false, + Word::<F>::new([0.scalar(), 0.scalar()]), + )?; + } else { + KeyData::witness_store( + region, + offset, + &mut pv.memory[key_memory(is_s)], + key_data.rlc, + key_data.mult, + key_data.num_nibbles, + key_rlc_post_drifted, + key_mult_post_branch, + num_nibbles, + )?; + ParentData::witness_store( + region, + offset, + &mut pv.memory[parent_memory(is_s)], + parent_data[is_s.idx()].hash, + parent_data[is_s.idx()].rlc, + parent_data[is_s.idx()].is_root, + true, + mod_node_hash_word[is_s.idx()], + )?; + } + } + + Ok(()) + } +} diff --git a/zkevm-circuits/src/mpt_circuit/helpers.rs b/zkevm-circuits/src/mpt_circuit/helpers.rs new file mode 100644 index 0000000000..28c307fab5 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/helpers.rs @@ -0,0 +1,1659 @@ +use crate::{ + assign, circuit, + circuit_tools::{ + cached_region::{CachedRegion, ChallengeSet}, + cell_manager::{Cell, CellManager, CellType, WordCell}, + constraint_builder::{ + ConstraintBuilder, RLCChainable, RLCChainableRev, RLCChainableValue, RLCable, + }, + gadgets::{IsEqualGadget, IsEqualWordGadget, LtGadget}, + memory::MemoryBank, + }, + evm_circuit::util::from_bytes, + matchw, + mpt_circuit::{ + param::{ + EMPTY_TRIE_HASH, HASH_WIDTH, KEY_LEN_IN_NIBBLES, KEY_PREFIX_EVEN, + KEY_TERMINAL_PREFIX_EVEN, RLP_UNIT_NUM_BYTES, RLP_UNIT_NUM_VALUE_BYTES, + }, + rlp_gadgets::{get_ext_odd_nibble, get_terminal_odd_nibble}, + }, + util::{ + word::{self, Word}, + Challenges, Expr, + }, +}; +use eth_types::{Field, Word as U256}; +use gadgets::util::{not, or, pow, Scalar}; +use halo2_proofs::{ + circuit::Value, + plonk::{Error, Expression, VirtualCells}, +}; +use strum_macros::EnumIter; + +use super::{ + rlp_gadgets::{ + get_ext_odd_nibble_value, RLPItemGadget, RLPItemWitness, RLPListGadget, RLPListWitness, + }, + FixedTableTag, MPTCircuitParams, RlpItemType, +}; + +impl<F: Field> ChallengeSet<F> for crate::util::Challenges<Value<F>> { + fn indexed(&self) -> Vec<&Value<F>> { + self.indexed().to_vec() + } +} + +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, EnumIter)] +pub enum MptTableType { + Fixed, + Keccak, + Mult, +} + +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum MptCellType { + StoragePhase1, + StoragePhase2, + StoragePhase3, + StoragePermutation, + LookupByte, + Lookup(MptTableType), + MemParentSInput, + MemParentSTable, + MemParentCInput, + MemParentCTable, + MemKeySInput, + MemKeySTable, + MemKeyCInput, + MemKeyCTable, + MemMainInput, + MemMainTable, +} + +impl Default for MptCellType { + fn default() -> Self { + Self::StoragePhase1 + } +} + +impl CellType for MptCellType { + fn byte_type() -> Option<Self> { + Some(MptCellType::LookupByte) + } + + fn storage_for_phase(phase: u8) -> Self { + match phase { + 0 => MptCellType::StoragePhase1, + 1 => MptCellType::StoragePhase2, + 2 => MptCellType::StoragePhase3, + _ => unreachable!(), + } + } +} + +pub const FIXED: MptCellType = MptCellType::Lookup(MptTableType::Fixed); +pub const KECCAK: MptCellType = MptCellType::Lookup(MptTableType::Keccak); +pub const MULT: MptCellType = MptCellType::Lookup(MptTableType::Mult); + +/// Indexable object +pub trait Indexable { + /// Convert to index + fn idx(&self) -> usize; +} + +impl Indexable for bool { + fn idx(&self) -> usize { + usize::from(!(*self)) + } +} + +#[derive(Clone, Debug, Default)] +pub(crate) struct LeafKeyGadget<F> { + has_no_nibbles: IsEqualGadget<F>, +} + +#[derive(Clone, Debug, Default)] +pub(crate) struct LeafKeyWitness { + has_no_nibble: bool, +} + +impl<F: Field> LeafKeyGadget<F> { + pub(crate) fn construct(cb: &mut MPTConstraintBuilder<F>, rlp_key: RLPItemView<F>) -> Self { + circuit!([meta, cb], { + let has_no_nibbles = IsEqualGadget::<F>::construct( + &mut cb.base, + rlp_key.bytes_be()[0].expr(), + KEY_TERMINAL_PREFIX_EVEN.expr(), + ); + LeafKeyGadget { has_no_nibbles } + }) + } + + pub(crate) fn expr( + &self, + cb: &mut MPTConstraintBuilder<F>, + rlp_key: RLPItemView<F>, + key_mult_prev: Expression<F>, + is_key_odd: Expression<F>, + r: &Expression<F>, + ) -> Expression<F> { + circuit!([meta, cb.base], { + let calc_rlc = |cb: &mut MPTConstraintBuilder<F>, + bytes: &[Expression<F>], + is_key_odd: Expression<F>| { + leaf_key_rlc(cb, bytes, key_mult_prev.expr(), is_key_odd.expr(), r) + }; + matchx! { + rlp_key.is_short() => { + // When no nibbles: only terminal prefix at `bytes[0]`. + // Else: Terminal prefix + single nibble at `bytes[0]` + let is_odd = not!(self.has_no_nibbles); + calc_rlc(cb, &rlp_key.bytes_be()[0..1], is_odd) + }, + rlp_key.is_long() => { + // First key byte is at `bytes[1]`. + calc_rlc(cb, &rlp_key.bytes_be()[1..34], is_key_odd.expr()) + }, + } + }) + } + + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + bytes: &[u8], + ) -> Result<LeafKeyWitness, Error> { + let has_no_nibble = self.has_no_nibbles.assign( + region, + offset, + F::from(bytes[0] as u64), + F::from(KEY_TERMINAL_PREFIX_EVEN as u64), + )?; + Ok(LeafKeyWitness { + has_no_nibble: has_no_nibble != 0.scalar(), + }) + } +} + +impl LeafKeyWitness { + pub(crate) fn key<F: Field>( + &self, + rlp_key: RLPItemWitness, + key_rlc: F, + key_mult: F, + r: F, + ) -> (F, F) { + if rlp_key.len() <= 1 { + return (key_rlc, key_mult); + } + + let start = 0; + let len = rlp_key.len(); + let even_num_of_nibbles = rlp_key.bytes[start + 1] == 32; + + let mut key_rlc = key_rlc; + let mut key_mult = key_mult; + if !even_num_of_nibbles { + // If odd number of nibbles, we have nibble+48 in s_advices[0]. + key_rlc += F::from((rlp_key.bytes[start + 1] - 48) as u64) * key_mult; + key_mult *= r; + } + (key_rlc, key_mult) + .rlc_chain_value(rlp_key.bytes[start + 2..start + 2 + len - 1].to_vec(), r) + } +} + +pub(crate) fn ext_key_rlc_expr<F: Field>( + cb: &mut MPTConstraintBuilder<F>, + key_value: RLPItemView<F>, + key_mult_prev: Expression<F>, + is_key_part_odd: Expression<F>, + is_key_odd: Expression<F>, + data: [Vec<Expression<F>>; 2], + r: &Expression<F>, +) -> Expression<F> { + circuit!([meta, cb.base], { + let (is_short, is_long) = (key_value.is_short(), key_value.is_long()); + let mult_first_odd = ifx! {is_key_odd => { 1.expr() } elsex { 16.expr() }}; + let calc_rlc = |cb: &mut MPTConstraintBuilder<F>, + bytes: &[Expression<F>], + key_mult_first_even: Expression<F>| { + ext_key_rlc( + cb, + bytes, + key_mult_prev.expr(), + is_key_part_odd.expr(), + mult_first_odd.expr(), + key_mult_first_even, + r, + ) + }; + matchx! { + and::expr(&[is_long.expr(), not!(is_key_odd)]) => { + // Here we need to multiply nibbles over bytes with different r's so we need to rlc over separate nibbles. + // Note that there can be at max 31 key bytes because 32 same bytes would mean + // the two keys being the same - update operation, not splitting into extension node. + // So, we do not need to look further than `s_main.bytes` even if `s_main.bytes[0]` + // is not used (when even number of nibbles). + let mut key_bytes = vec![data[0][1].expr()]; + key_bytes.append(&mut data[0][1..].iter().skip(1).zip(data[1][2..].iter()).map(|(byte, nibble_hi)| { + let nibble_lo = (byte.expr() - nibble_hi.expr()) * invert!(16); + // Check that `nibble_hi` is correct. + require!(byte => nibble_lo.expr() * 16.expr() + nibble_hi.expr()); + // Collect bytes + (nibble_hi.expr() * 16.expr() * r.expr()) + nibble_lo.expr() + }).collect::<Vec<_>>()); + calc_rlc(cb, &key_bytes, 1.expr()) + }, + and::expr(&[is_long.expr(), is_key_odd.expr()]) => { + let additional_mult = ifx! {is_key_part_odd => { r.expr() } elsex { 1.expr() }}; + calc_rlc(cb, &data[0][1..], additional_mult) + }, + is_short => { + calc_rlc(cb, &data[0][..1], 1.expr()) + }, + } + }) +} + +pub(crate) fn ext_key_rlc_calc_value<F: Field>( + key_value: RLPItemWitness, + key_mult_prev: F, + is_key_part_odd: bool, + is_key_odd: bool, + data: [Vec<u8>; 2], + r: F, +) -> (F, F) { + let (is_short, is_long) = (key_value.is_short(), key_value.is_long()); + let mult_first_odd = if is_key_odd { 1.scalar() } else { 16.scalar() }; + let calc_rlc = |bytes: &[F], key_mult_first_even: F| { + ext_key_rlc_value( + bytes, + key_mult_prev, + is_key_part_odd, + mult_first_odd, + key_mult_first_even, + r, + ) + }; + matchw! { + is_long && !is_key_odd => { + // Here we need to multiply nibbles over bytes with different r's so we need to rlc over separate nibbles. + // Note that there can be at max 31 key bytes because 32 same bytes would mean + // the two keys being the same - update operation, not splitting into extension node. + let mut key_bytes = vec![data[0][1].scalar()]; + key_bytes.append(&mut data[0][1..].iter().skip(1).zip(data[1][2..].iter()).map(|(byte, nibble_hi)| { + let nibble_lo = (byte - nibble_hi) >> 4; + // Check that `nibble_hi` is correct. + assert!(*byte == nibble_lo * 16 + nibble_hi); + // Collect bytes + (F::from(*nibble_hi as u64) * F::from(16_u64) * r) + F::from(nibble_lo as u64) + }).collect::<Vec<_>>()); + calc_rlc(&key_bytes, 1.scalar()) + }, + is_long && is_key_odd => { + let additional_mult = if is_key_part_odd { r } else { 1.scalar() }; + calc_rlc(&data[0][1..].iter().map(|byte| byte.scalar()).collect::<Vec<_>>(), additional_mult) + }, + is_short => { + calc_rlc(&data[0][..1].iter().map(|byte| byte.scalar()).collect::<Vec<_>>(), 1.scalar()) + }, + } +} + +#[derive(Clone, Debug, Default)] +pub(crate) struct ListKeyGadget<F> { + pub(crate) rlp_list_bytes: [Cell<F>; 3], + pub(crate) rlp_list: RLPListGadget<F>, + pub(crate) key_value: RLPItemView<F>, + pub(crate) key: LeafKeyGadget<F>, +} + +#[derive(Clone, Debug, Default)] +pub(crate) struct ListKeyWitness { + pub(crate) rlp_list: RLPListWitness, + pub(crate) key_item: RLPItemWitness, + pub(crate) key: LeafKeyWitness, +} + +impl<F: Field> ListKeyGadget<F> { + pub(crate) fn construct(cb: &mut MPTConstraintBuilder<F>, key_value: &RLPItemView<F>) -> Self { + let rlp_list_bytes = cb.query_bytes(); + let rlp_list_bytes_expr = rlp_list_bytes.iter().map(|c| c.expr()).collect::<Vec<_>>(); + let key = LeafKeyGadget::construct(cb, key_value.clone()); + ListKeyGadget { + rlp_list_bytes, + rlp_list: RLPListGadget::construct(cb, &rlp_list_bytes_expr), + key_value: key_value.clone(), + key, + } + } + + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + list_bytes: &[u8], + key_item: &RLPItemWitness, + ) -> Result<ListKeyWitness, Error> { + for (cell, byte) in self.rlp_list_bytes.iter().zip(list_bytes.iter()) { + cell.assign(region, offset, byte.scalar())?; + } + let rlp_list = self.rlp_list.assign(region, offset, list_bytes)?; + let key = self.key.assign(region, offset, &key_item.bytes)?; + + Ok(ListKeyWitness { + rlp_list, + key_item: key_item.clone(), + key, + }) + } + + pub(crate) fn rlc(&self, r: &Expression<F>) -> Expression<F> { + self.rlp_list + .rlc_rlp_only(r) + .rlc_chain(self.key_value.rlc_rlp()) + } + + pub(crate) fn rlc2(&self, r: &Expression<F>) -> Expression<F> { + self.rlp_list + .rlc_rlp_only_rev(r) + .0 + .rlc_chain_rev(self.key_value.rlc_chain_data()) + } +} + +impl ListKeyWitness { + /// Number of bytes of RLP (including list RLP bytes) and key + pub(crate) fn rlc_leaf<F: Field>(&self, r: F) -> (F, F) { + self.rlp_list + .rlc_rlp_only(r) + .rlc_chain_value(self.key_item.bytes[..self.key_item.num_bytes()].to_vec(), r) + } +} + +#[derive(Clone, Debug, Default)] +pub(crate) struct KeyData<F> { + pub(crate) rlc: Cell<F>, + pub(crate) mult: Cell<F>, + pub(crate) num_nibbles: Cell<F>, + pub(crate) is_odd: Cell<F>, + pub(crate) drifted_rlc: Cell<F>, + pub(crate) drifted_mult: Cell<F>, + pub(crate) drifted_num_nibbles: Cell<F>, + pub(crate) drifted_is_odd: Cell<F>, +} + +#[derive(Clone, Debug, Default)] +pub(crate) struct KeyDataWitness<F> { + pub(crate) rlc: F, + pub(crate) mult: F, + pub(crate) num_nibbles: usize, + pub(crate) is_odd: bool, + pub(crate) drifted_rlc: F, + pub(crate) drifted_mult: F, + pub(crate) drifted_num_nibbles: usize, + pub(crate) drifted_is_odd: bool, +} + +impl<F: Field> KeyData<F> { + pub(crate) fn load( + cb: &mut MPTConstraintBuilder<F>, + memory: &MemoryBank<F, MptCellType>, + offset: Expression<F>, + ) -> Self { + let key_data = KeyData { + rlc: cb.query_cell_with_type(MptCellType::StoragePhase2), + mult: cb.query_cell_with_type(MptCellType::StoragePhase2), + num_nibbles: cb.query_cell(), + is_odd: cb.query_cell(), + drifted_rlc: cb.query_cell_with_type(MptCellType::StoragePhase2), + drifted_mult: cb.query_cell_with_type(MptCellType::StoragePhase2), + drifted_num_nibbles: cb.query_cell(), + drifted_is_odd: cb.query_cell(), + }; + circuit!([meta, cb.base], { + memory.load( + "key load", + &mut cb.base, + offset, + &[ + key_data.rlc.expr(), + key_data.mult.expr(), + key_data.num_nibbles.expr(), + key_data.is_odd.expr(), + key_data.drifted_rlc.expr(), + key_data.drifted_mult.expr(), + key_data.drifted_num_nibbles.expr(), + key_data.drifted_is_odd.expr(), + ], + ); + }); + key_data + } + + #[allow(clippy::too_many_arguments)] + pub(crate) fn store( + cb: &mut MPTConstraintBuilder<F>, + memory: &MemoryBank<F, MptCellType>, + rlc: Expression<F>, + mult: Expression<F>, + num_nibbles: Expression<F>, + is_odd: Expression<F>, + drifted_rlc: Expression<F>, + drifted_mult: Expression<F>, + drifted_num_nibbles: Expression<F>, + drifted_is_odd: Expression<F>, + ) { + memory.store( + &mut cb.base, + &[ + rlc, + mult, + num_nibbles, + is_odd, + drifted_rlc, + drifted_mult, + drifted_num_nibbles, + drifted_is_odd, + ], + ); + } + + pub(crate) fn store_defaults( + cb: &mut MPTConstraintBuilder<F>, + memory: &MemoryBank<F, MptCellType>, + ) { + memory.store(&mut cb.base, &KeyData::default_values_expr()); + } + + pub(crate) fn default_values_expr() -> [Expression<F>; 8] { + [ + 0.expr(), + 1.expr(), + 0.expr(), + false.expr(), + 0.expr(), + 1.expr(), + 0.expr(), + false.expr(), + ] + } + + #[allow(clippy::too_many_arguments)] + pub(crate) fn witness_store( + _region: &mut CachedRegion<'_, '_, F>, + offset: usize, + memory: &mut MemoryBank<F, MptCellType>, + rlc: F, + mult: F, + num_nibbles: usize, + drifted_rlc: F, + drifted_mult: F, + drifted_num_nibbles: usize, + ) -> Result<(), Error> { + let values = [ + rlc, + mult, + num_nibbles.scalar(), + (num_nibbles % 2 == 1).scalar(), + drifted_rlc, + drifted_mult, + drifted_num_nibbles.scalar(), + (drifted_num_nibbles % 2 == 1).scalar(), + ]; + memory.witness_store(offset, &values); + + Ok(()) + } + + pub(crate) fn witness_load( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + memory: &MemoryBank<F, MptCellType>, + load_offset: usize, + ) -> Result<KeyDataWitness<F>, Error> { + let values = memory.witness_load(load_offset); + + self.rlc.assign(region, offset, values[0])?; + self.mult.assign(region, offset, values[1])?; + self.num_nibbles.assign(region, offset, values[2])?; + self.is_odd.assign(region, offset, values[3])?; + self.drifted_rlc.assign(region, offset, values[4])?; + self.drifted_mult.assign(region, offset, values[5])?; + self.drifted_num_nibbles.assign(region, offset, values[6])?; + self.drifted_is_odd.assign(region, offset, values[7])?; + + Ok(KeyDataWitness { + rlc: values[0], + mult: values[1], + num_nibbles: values[2].get_lower_32() as usize, + is_odd: values[3] != F::ZERO, + drifted_rlc: values[4], + drifted_mult: values[5], + drifted_num_nibbles: values[6].get_lower_32() as usize, + drifted_is_odd: values[7] != F::ZERO, + }) + } +} + +#[derive(Clone, Debug, Default)] +pub(crate) struct ParentData<F> { + pub(crate) hash: WordCell<F>, + pub(crate) rlc: Cell<F>, + pub(crate) is_root: Cell<F>, + pub(crate) is_placeholder: Cell<F>, + pub(crate) drifted_parent_hash: WordCell<F>, +} + +#[derive(Clone, Debug, Default)] +pub(crate) struct ParentDataWitness<F> { + pub(crate) hash: word::Word<F>, + pub(crate) rlc: F, + pub(crate) is_root: bool, + pub(crate) is_placeholder: bool, + pub(crate) drifted_parent_hash: word::Word<F>, +} + +impl<F: Field> ParentData<F> { + pub(crate) fn load( + description: &'static str, + cb: &mut MPTConstraintBuilder<F>, + memory: &MemoryBank<F, MptCellType>, + offset: Expression<F>, + ) -> Self { + let parent_data = ParentData { + hash: cb.query_word_unchecked(), + rlc: cb.query_cell_with_type(MptCellType::StoragePhase2), + is_root: cb.query_cell(), + is_placeholder: cb.query_cell(), + drifted_parent_hash: cb.query_word_unchecked(), + }; + circuit!([meta, cb.base], { + memory.load( + description, + &mut cb.base, + offset, + &[ + parent_data.hash.lo().expr(), + parent_data.hash.hi().expr(), + parent_data.rlc.expr(), + parent_data.is_root.expr(), + parent_data.is_placeholder.expr(), + parent_data.drifted_parent_hash.lo().expr(), + parent_data.drifted_parent_hash.hi().expr(), + ], + ); + }); + parent_data + } + + pub(crate) fn store( + cb: &mut MPTConstraintBuilder<F>, + memory: &MemoryBank<F, MptCellType>, + hash: word::Word<Expression<F>>, + rlc: Expression<F>, + is_root: Expression<F>, + is_placeholder: Expression<F>, + drifted_parent_hash: word::Word<Expression<F>>, + ) { + memory.store( + &mut cb.base, + &[ + hash.lo(), + hash.hi(), + rlc, + is_root, + is_placeholder, + drifted_parent_hash.lo(), + drifted_parent_hash.hi(), + ], + ); + } + + #[allow(clippy::too_many_arguments)] + pub(crate) fn witness_store( + _region: &mut CachedRegion<'_, '_, F>, + offset: usize, + memory: &mut MemoryBank<F, MptCellType>, + hash: word::Word<F>, + rlc: F, + force_hashed: bool, + is_placeholder: bool, + drifted_parent_hash: word::Word<F>, + ) -> Result<(), Error> { + memory.witness_store( + offset, + &[ + hash.lo(), + hash.hi(), + rlc, + force_hashed.scalar(), + is_placeholder.scalar(), + drifted_parent_hash.lo(), + drifted_parent_hash.hi(), + ], + ); + Ok(()) + } + + pub(crate) fn witness_load( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + memory: &MemoryBank<F, MptCellType>, + load_offset: usize, + ) -> Result<ParentDataWitness<F>, Error> { + let values = memory.witness_load(load_offset); + + self.hash.lo().assign(region, offset, values[0])?; + self.hash.hi().assign(region, offset, values[1])?; + self.rlc.assign(region, offset, values[2])?; + self.is_root.assign(region, offset, values[3])?; + self.is_placeholder.assign(region, offset, values[4])?; + self.drifted_parent_hash + .lo() + .assign(region, offset, values[5])?; + self.drifted_parent_hash + .hi() + .assign(region, offset, values[6])?; + + Ok(ParentDataWitness { + hash: word::Word::new([values[0], values[1]]), + rlc: values[2], + is_root: values[3] == 1.scalar(), + is_placeholder: values[4] == 1.scalar(), + drifted_parent_hash: word::Word::new([values[5], values[6]]), + }) + } +} + +#[derive(Clone, Debug, Default)] +pub(crate) struct MainData<F> { + pub(crate) proof_type: Cell<F>, + pub(crate) is_below_account: Cell<F>, + pub(crate) address: Cell<F>, + pub(crate) new_root: WordCell<F>, + pub(crate) old_root: WordCell<F>, +} + +#[derive(Clone, Debug, Default)] +pub(crate) struct MainDataWitness<F> { + pub(crate) proof_type: usize, + pub(crate) is_below_account: bool, + pub(crate) address: F, + pub(crate) new_root: word::Word<F>, + pub(crate) old_root: word::Word<F>, +} + +impl<F: Field> MainData<F> { + pub(crate) fn load( + description: &'static str, + cb: &mut MPTConstraintBuilder<F>, + memory: &MemoryBank<F, MptCellType>, + offset: Expression<F>, + ) -> Self { + let main_data = MainData { + proof_type: cb.query_cell(), + is_below_account: cb.query_cell(), + address: cb.query_cell(), + new_root: cb.query_word_unchecked(), + old_root: cb.query_word_unchecked(), + }; + circuit!([meta, cb.base], { + memory.load( + description, + &mut cb.base, + offset, + &[ + main_data.proof_type.expr(), + main_data.is_below_account.expr(), + main_data.address.expr(), + main_data.new_root.lo().expr(), + main_data.new_root.hi().expr(), + main_data.old_root.lo().expr(), + main_data.old_root.hi().expr(), + ], + ); + }); + main_data + } + + pub(crate) fn store( + cb: &mut MPTConstraintBuilder<F>, + memory: &MemoryBank<F, MptCellType>, + values: [Expression<F>; 7], + ) { + memory.store(&mut cb.base, &values); + } + + #[allow(clippy::too_many_arguments)] + pub(crate) fn witness_store( + _region: &mut CachedRegion<'_, '_, F>, + offset: usize, + memory: &mut MemoryBank<F, MptCellType>, + proof_type: usize, + is_below_account: bool, + address: F, + new_root: word::Word<F>, + old_root: word::Word<F>, + ) -> Result<(), Error> { + let values = [ + proof_type.scalar(), + is_below_account.scalar(), + address, + new_root.lo(), + new_root.hi(), + old_root.lo(), + old_root.hi(), + ]; + memory.witness_store(offset, &values); + + Ok(()) + } + + pub(crate) fn witness_load( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + memory: &MemoryBank<F, MptCellType>, + load_offset: usize, + ) -> Result<MainDataWitness<F>, Error> { + let values = memory.witness_load(load_offset); + + self.proof_type.assign(region, offset, values[0])?; + self.is_below_account.assign(region, offset, values[1])?; + self.address.assign(region, offset, values[2])?; + self.new_root.lo().assign(region, offset, values[3])?; + self.new_root.hi().assign(region, offset, values[4])?; + self.old_root.lo().assign(region, offset, values[5])?; + self.old_root.hi().assign(region, offset, values[6])?; + + Ok(MainDataWitness { + proof_type: values[0].get_lower_32() as usize, + is_below_account: values[1] == 1.scalar(), + address: values[2], + new_root: word::Word::new([values[3], values[4]]), + old_root: word::Word::new([values[5], values[6]]), + }) + } +} + +/// Add the nibble from the drifted branch +pub(crate) fn nibble_rlc<F: Field>( + cb: &mut MPTConstraintBuilder<F>, + key_rlc: Expression<F>, + key_mult_prev: Expression<F>, + is_key_odd: Expression<F>, + nibble: Expression<F>, + r: &Expression<F>, +) -> (Expression<F>, Expression<F>) { + circuit!([meta, cb.base], { + let (nibble_mult, mult) = ifx! {is_key_odd => { + // The nibble will be added as the least significant nibble, the multiplier needs to advance + (1.expr(), r.expr()) + } elsex { + // The nibble will be added as the most significant nibble, the multiplier needs to stay the same + (16.expr(), 1.expr()) + }}; + ( + key_rlc + nibble * nibble_mult * key_mult_prev.expr(), + key_mult_prev * mult, + ) + }) +} + +pub(crate) fn leaf_key_rlc<F: Field>( + cb: &mut MPTConstraintBuilder<F>, + bytes: &[Expression<F>], + key_mult_prev: Expression<F>, + is_key_odd: Expression<F>, + r: &Expression<F>, +) -> Expression<F> { + circuit!([meta, cb.base], { + // Add the odd nibble first if we have one. + let (rlc, mult) = ifx! {is_key_odd => { + (get_terminal_odd_nibble(bytes[0].expr()) * key_mult_prev.expr(), r.expr()) + } elsex { + require!(bytes[0] => KEY_TERMINAL_PREFIX_EVEN); + (0.expr(), 1.expr()) + }}; + (rlc, key_mult_prev * mult).rlc_chain(bytes[1..].rlc(r)) + }) +} + +pub(crate) fn ext_key_rlc<F: Field>( + cb: &mut MPTConstraintBuilder<F>, + bytes: &[Expression<F>], + key_mult_prev: Expression<F>, + is_odd: Expression<F>, + rlc_mult_first_odd: Expression<F>, + key_mult_first_odd: Expression<F>, + r: &Expression<F>, +) -> Expression<F> { + circuit!([meta, cb.base], { + // Add the odd nibble first if we have one. + let (rlc, mult) = ifx! {is_odd => { + (get_ext_odd_nibble(bytes[0].expr()) * key_mult_prev.expr() * rlc_mult_first_odd, key_mult_first_odd.expr()) + } elsex { + require!(bytes[0] => KEY_PREFIX_EVEN); + (0.expr(), 1.expr()) + }}; + (rlc, key_mult_prev * mult).rlc_chain(bytes[1..].rlc(r)) + }) +} + +pub(crate) fn ext_key_rlc_value<F: Field>( + bytes: &[F], + key_mult_prev: F, + is_odd: bool, + rlc_mult_first_odd: F, + key_mult_first_odd: F, + r: F, +) -> (F, F) { + // Add the odd nibble first if we have one. + let (rlc, mult) = if is_odd { + ( + get_ext_odd_nibble_value(bytes[0]) * key_mult_prev * rlc_mult_first_odd, + key_mult_first_odd, + ) + } else { + assert!(bytes[0] == KEY_PREFIX_EVEN.scalar()); + (0.scalar(), 1.scalar()) + }; + (rlc, key_mult_prev * mult).rlc_chain_value(bytes[1..].iter().collect::<Vec<&F>>(), r) +} + +// Returns the number of nibbles stored in a key value +pub(crate) mod num_nibbles { + use crate::{_cb, circuit, circuit_tools::constraint_builder::ConstraintBuilder}; + use eth_types::Field; + use halo2_proofs::plonk::Expression; + + pub(crate) fn expr<F: Field>( + key_len: Expression<F>, + is_key_odd: Expression<F>, + ) -> Expression<F> { + circuit!([meta, _cb!()], { + ifx! {is_key_odd => { + key_len.expr() * 2.expr() - 1.expr() + } elsex { + (key_len.expr() - 1.expr()) * 2.expr() + }} + }) + } + pub(crate) fn value(key_len: usize, is_key_odd: bool) -> usize { + if is_key_odd { + key_len * 2 - 1 + } else { + (key_len - 1) * 2 + } + } +} + +pub(crate) fn parent_memory(is_s: bool) -> MptCellType { + if is_s { + MptCellType::MemParentSInput + } else { + MptCellType::MemParentCInput + } +} + +pub(crate) fn key_memory(is_s: bool) -> MptCellType { + if is_s { + MptCellType::MemKeySInput + } else { + MptCellType::MemKeyCInput + } +} + +pub(crate) fn main_memory() -> MptCellType { + MptCellType::MemMainInput +} + +/// MPTConstraintBuilder +#[derive(Clone)] +pub struct MPTConstraintBuilder<F> { + pub base: ConstraintBuilder<F, MptCellType>, + pub challenges: Option<Challenges<Expression<F>>>, + pub key_r: Expression<F>, + pub keccak_r: Expression<F>, +} + +impl<F: Field> MPTConstraintBuilder<F> { + pub(crate) fn new( + max_degree: usize, + challenges: Option<Challenges<Expression<F>>>, + cell_manager: Option<CellManager<F, MptCellType>>, + ) -> Self { + MPTConstraintBuilder { + base: ConstraintBuilder::new( + max_degree, + cell_manager, + Some(challenges.clone().unwrap().lookup_input().expr()), + ), + key_r: challenges.clone().unwrap().keccak_input().expr(), + keccak_r: challenges.clone().unwrap().keccak_input().expr(), + challenges, + } + } + + pub(crate) fn push_condition(&mut self, condition: Expression<F>) { + self.base.push_condition(condition) + } + + pub(crate) fn pop_condition(&mut self) { + self.base.pop_condition() + } + + pub(crate) fn query_bool(&mut self) -> Cell<F> { + self.base.query_bool() + } + + pub(crate) fn query_byte(&mut self) -> Cell<F> { + self.base.query_one(MptCellType::LookupByte) + } + + pub(crate) fn query_bytes<const N: usize>(&mut self) -> [Cell<F>; N] { + self.base + .query_cells_dyn(MptCellType::LookupByte, N) + .try_into() + .unwrap() + } + + pub(crate) fn query_bytes_dyn(&mut self, count: usize) -> Vec<Cell<F>> { + self.base.query_cells_dyn(MptCellType::StoragePhase1, count) + } + + pub(crate) fn query_cell(&mut self) -> Cell<F> { + self.base.query_default() + } + + pub(crate) fn query_cells<const N: usize>(&mut self) -> [Cell<F>; N] { + self.base + .query_cells_dyn(MptCellType::default(), N) + .try_into() + .unwrap() + } + + pub(crate) fn query_cell_with_type(&mut self, cell_type: MptCellType) -> Cell<F> { + self.base.query_cell_with_type(cell_type) + } + + // default query_word is 2 limbs. Each limb is not guaranteed to be 128 bits. + pub(crate) fn query_word_unchecked(&mut self) -> WordCell<F> { + self.base.query_word_unchecked() + } + + pub(crate) fn require_equal( + &mut self, + name: &'static str, + lhs: Expression<F>, + rhs: Expression<F>, + ) { + self.base.require_equal(name, lhs, rhs) + } + + pub(crate) fn require_in_set( + &mut self, + name: &'static str, + value: Expression<F>, + set: Vec<Expression<F>>, + ) { + self.base.require_in_set(name, value, set) + } + + pub(crate) fn require_boolean(&mut self, name: &'static str, value: Expression<F>) { + self.base.require_boolean(name, value) + } + + pub(crate) fn add_dynamic_lookup( + &mut self, + description: &'static str, + tag: MptCellType, + values: Vec<Expression<F>>, + is_fixed: bool, + compress: bool, + is_split: bool, + ) { + self.base + .add_dynamic_lookup(description, tag, values, is_fixed, compress, is_split) + } + + pub(crate) fn add_lookup( + &mut self, + description: &'static str, + cell_type: MptCellType, + values: Vec<Expression<F>>, + ) { + self.base.add_lookup(description, cell_type, values) + } + + pub(crate) fn store_dynamic_table( + &mut self, + description: &'static str, + tag: MptCellType, + values: Vec<Expression<F>>, + compress: bool, + is_split: bool, + ) { + self.base + .store_dynamic_table(description, tag, values, compress, is_split) + } +} + +/// Checks if a leaf is a placeholder leaf (a leaf in an empty tree) +#[derive(Clone, Debug, Default)] +pub struct IsPlaceholderLeafGadget<F> { + is_empty_trie: IsEqualWordGadget<F>, + is_nil_in_branch_at_mod_index: IsEqualWordGadget<F>, +} + +impl<F: Field> IsPlaceholderLeafGadget<F> { + pub(crate) fn construct( + cb: &mut MPTConstraintBuilder<F>, + parent_word: Word<Expression<F>>, + ) -> Self { + circuit!([meta, cb.base], { + let empty_hash = Word::<F>::from(U256::from_big_endian(&EMPTY_TRIE_HASH)); + let is_empty_trie = IsEqualWordGadget::construct( + &mut cb.base, + &parent_word, + &Word::<Expression<F>>::new([ + Expression::Constant(empty_hash.lo()), + Expression::Constant(empty_hash.hi()), + ]), + ); + let is_nil_in_branch_at_mod_index = IsEqualWordGadget::construct( + &mut cb.base, + &parent_word, + &Word::<Expression<F>>::new([0.expr(), 0.expr()]), + ); + + Self { + is_empty_trie, + is_nil_in_branch_at_mod_index, + } + }) + } + + pub(crate) fn expr(&self) -> Expression<F> { + or::expr(&[ + self.is_empty_trie.expr(), + self.is_nil_in_branch_at_mod_index.expr(), + ]) + } + + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + hash: Word<F>, + ) -> Result<(), Error> { + let empty_hash = Word::<F>::from(U256::from_big_endian(&EMPTY_TRIE_HASH)); + self.is_empty_trie + .assign(region, offset, hash, empty_hash)?; + self.is_nil_in_branch_at_mod_index.assign( + region, + offset, + hash, + Word::<F>::from(U256::zero()), + )?; + Ok(()) + } +} + +/// Handles drifted leaves +#[derive(Clone, Debug, Default)] +pub struct DriftedGadget<F> { + drifted_rlp_key: ListKeyGadget<F>, +} + +impl<F: Field> DriftedGadget<F> { + #[allow(clippy::too_many_arguments)] + pub(crate) fn construct( + cb: &mut MPTConstraintBuilder<F>, + value_list_num_bytes: &[Expression<F>], + parent_data: &[ParentData<F>], + key_data: &[KeyData<F>], + expected_key_rlc: &[Expression<F>], + leaf_no_key_rlc: &[Expression<F>], + leaf_no_key_rlc_mult: &[Expression<F>], + drifted_item: &RLPItemView<F>, + r: &Expression<F>, + ) -> Self { + let mut config = DriftedGadget::default(); + circuit!([meta, cb], { + ifx! {parent_data[true.idx()].is_placeholder.expr() + parent_data[false.idx()].is_placeholder.expr() => { + config.drifted_rlp_key = ListKeyGadget::construct(cb, drifted_item); + for is_s in [true, false] { + ifx! {parent_data[is_s.idx()].is_placeholder.expr() => { + // Check that the drifted leaf is unchanged and is stored at `drifted_index`. + + // Make sure the RLP is still consistent with the new key part + require!( + config.drifted_rlp_key.rlp_list.len() + => config.drifted_rlp_key.key_value.num_bytes() + value_list_num_bytes[is_s.idx()].clone() + ); + + // Calculate the drifted key RLC + // Get the key RLC for the drifted branch + let (key_rlc, key_mult, key_num_nibbles, is_key_odd) = ( + key_data[is_s.idx()].drifted_rlc.expr(), + key_data[is_s.idx()].drifted_mult.expr(), + key_data[is_s.idx()].drifted_num_nibbles.expr(), + key_data[is_s.idx()].drifted_is_odd.expr(), + ); + let key_rlc = key_rlc.expr() + config.drifted_rlp_key.key.expr( + cb, + config.drifted_rlp_key.key_value.clone(), + key_mult.expr(), + is_key_odd.expr(), + r + ); + // The key of the drifted leaf needs to match the key of the leaf + require!(key_rlc => expected_key_rlc[is_s.idx()]); + + // Total number of nibbles needs to be KEY_LEN_IN_NIBBLES + // (RLC encoding could be the same for addresses with zero's at the end) + let num_nibbles = num_nibbles::expr(config.drifted_rlp_key.key_value.len(), is_key_odd.expr()); + require!(key_num_nibbles.expr() + num_nibbles => KEY_LEN_IN_NIBBLES); + + // Complete the drifted leaf rlc by adding the bytes on the value row + //let leaf_rlc = (config.drifted_rlp_key.rlc(be_r), mult.expr()).rlc_chain(leaf_no_key_rlc[is_s.idx()].expr()); + let leaf_rlc = config.drifted_rlp_key.rlc2(&cb.keccak_r).rlc_chain_rev((leaf_no_key_rlc[is_s.idx()].expr(), leaf_no_key_rlc_mult[is_s.idx()].expr())); + // The drifted leaf needs to be stored in the branch at `drifted_index`. + let hash = parent_data[is_s.idx()].drifted_parent_hash.expr(); + require!(vec![1.expr(), leaf_rlc.expr(), config.drifted_rlp_key.rlp_list.num_bytes(), hash.lo(), hash.hi()] => @KECCAK); + } + }} + }} + config + }) + } + + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + parent_data: &[ParentDataWitness<F>], + drifted_list_bytes: &[u8], + drifted_item: &RLPItemWitness, + _r: F, + ) -> Result<(), Error> { + if parent_data[true.idx()].is_placeholder || parent_data[false.idx()].is_placeholder { + self.drifted_rlp_key + .assign(region, offset, drifted_list_bytes, drifted_item)?; + } + Ok(()) + } +} + +/// Handles wrong leaves +#[derive(Clone, Debug, Default)] +pub struct WrongGadget<F> { + wrong_rlp_key: ListKeyGadget<F>, + is_key_equal: IsEqualGadget<F>, +} + +impl<F: Field> WrongGadget<F> { + #[allow(clippy::too_many_arguments)] + pub(crate) fn construct( + cb: &mut MPTConstraintBuilder<F>, + expected_key: Expression<F>, + is_non_existing: Expression<F>, + key_value: &RLPItemView<F>, + key_rlc: &Expression<F>, + expected_item: &RLPItemView<F>, + is_in_empty_tree: Expression<F>, + key_data: KeyData<F>, + r: &Expression<F>, + ) -> Self { + let mut config = WrongGadget::default(); + circuit!([meta, cb.base], { + // Get the previous key data + ifx! {is_non_existing, not!(is_in_empty_tree) => { + // Calculate the key + config.wrong_rlp_key = ListKeyGadget::construct(cb, expected_item); + let key_rlc_wrong = key_data.rlc.expr() + config.wrong_rlp_key.key.expr( + cb, + config.wrong_rlp_key.key_value.clone(), + key_data.mult.expr(), + key_data.is_odd.expr(), + r, + ); + // Check that it's the key as expected + require!(key_rlc_wrong => expected_key); + + // Now make sure this address is different than the one of the leaf + config.is_key_equal = IsEqualGadget::construct( + &mut cb.base, + key_rlc.expr(), + expected_key, + ); + require!(config.is_key_equal.expr() => false); + // Make sure the lengths of the keys are the same + require!(config.wrong_rlp_key.key_value.len() => key_value.len()); + }} + config + }) + } + + #[allow(clippy::too_many_arguments)] + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + is_non_existing: bool, + key_rlc: &[F], + list_bytes: &[u8], + expected_item: &RLPItemWitness, + for_placeholder_s: bool, + key_data: KeyDataWitness<F>, + r: F, + ) -> Result<(F, F), Error> { + if is_non_existing { + let wrong_witness = + self.wrong_rlp_key + .assign(region, offset, list_bytes, expected_item)?; + let (key_rlc_wrong, _) = wrong_witness.key.key( + wrong_witness.key_item.clone(), + key_data.rlc, + key_data.mult, + r, + ); + + let is_key_equal_witness = self.is_key_equal.assign( + region, + offset, + key_rlc[for_placeholder_s.idx()], + key_rlc_wrong, + )?; + + // When key is not equal, we have a non existing account + Ok((key_rlc_wrong, is_key_equal_witness.neg())) + } else { + // existing account + Ok((key_rlc[for_placeholder_s.idx()], false.scalar())) + } + } +} + +/// Main RLP item +#[derive(Clone, Debug, Default)] +pub struct MainRLPGadget<F> { + rlp_byte: Cell<F>, + bytes: Vec<Cell<F>>, + rlp: RLPItemGadget<F>, + below_limit: LtGadget<F, 1>, + num_bytes: Cell<F>, + len: Cell<F>, + mult_inv: Cell<F>, + mult_diff: Cell<F>, + hash_rlc: Cell<F>, + rlc_rlp: Cell<F>, + word: WordCell<F>, + tag: Cell<F>, + max_len: Cell<F>, + is_rlp: Cell<F>, + is_big_endian: Cell<F>, + is_hash: Cell<F>, + keccak_r: Option<Expression<F>>, +} + +impl<F: Field> MainRLPGadget<F> { + pub(crate) fn construct(cb: &mut MPTConstraintBuilder<F>, params: MPTCircuitParams) -> Self { + circuit!([meta, cb], { + let mut config = MainRLPGadget { + rlp_byte: cb.query_cell(), + rlp: RLPItemGadget::default(), + bytes: cb.query_cells::<RLP_UNIT_NUM_VALUE_BYTES>().to_vec(), + below_limit: LtGadget::default(), + num_bytes: cb.query_cell(), + len: cb.query_cell(), + mult_inv: cb.query_cell_with_type(MptCellType::StoragePhase2), + mult_diff: cb.query_cell_with_type(MptCellType::StoragePhase2), + hash_rlc: cb.query_cell_with_type(MptCellType::StoragePhase2), + rlc_rlp: cb.query_cell_with_type(MptCellType::StoragePhase2), + word: cb.query_word_unchecked(), + tag: cb.query_cell(), + max_len: cb.query_cell(), + is_rlp: cb.query_cell(), + is_big_endian: cb.query_cell(), + is_hash: cb.query_cell(), + keccak_r: Some(cb.keccak_r.expr()), + }; + let all_bytes = vec![vec![config.rlp_byte.clone()], config.bytes.clone()].concat(); + + // Decode the RLP item + config.rlp = + RLPItemGadget::construct(cb, &[config.rlp_byte.expr(), 0.expr(), 0.expr()]); + + // Make sure the RLP item length is within a valid range + config.below_limit = LtGadget::construct( + &mut cb.base, + config.rlp.len(), + config.max_len.expr() + 1.expr(), + ); + require!(config.below_limit.expr() => true); + + // Store RLP properties for easy access + require!(config.num_bytes => config.rlp.num_bytes()); + require!(config.len => config.rlp.len()); + + // Cache the rlc of the hash + ifx! {config.is_hash.expr() => { + require!(config.hash_rlc => config.bytes[..32].rlc_rev(&cb.key_r)); + }} + + // Cache some RLP related values + ifx! {config.is_rlp.expr() => { + // The key bytes are stored differently than all other value types (BE vs LE) + ifx!{config.is_big_endian => { + require!(config.rlc_rlp => all_bytes.rlc_rev(&cb.keccak_r.expr()) * config.mult_inv.expr()); + } elsex { + // Special case for single byte string values as those values are stored in the RLP byte itself + ifx!{and::expr(&[not!(config.rlp.is_list()), config.rlp.is_short()]) => { + require!(config.rlc_rlp => config.rlp_byte); + require!(config.word => [config.rlp_byte.expr(), 0.expr()]); + } elsex { + let lo = from_bytes::expr(&config.bytes[0..16]); + let hi = from_bytes::expr(&config.bytes[16..32]); + require!(config.word => [lo, hi]); + require!(config.rlc_rlp => config.rlp_byte.expr().rlc_chain_rev(( + config.bytes.rlc(&cb.keccak_r.expr()), + config.mult_diff.expr(), + ))); + }} + }} + }} + + // `num_bytes - 1` because the RLP byte is handled separately + require!((config.rlp.num_bytes() - 1.expr(), config.mult_diff.expr()) => @MULT); + require!(config.mult_inv.expr() * pow::expr(cb.keccak_r.expr(), RLP_UNIT_NUM_BYTES - 1) => config.mult_diff.expr()); + + // Lists always need to be short + ifx! {config.rlp.is_list() => { + require!(config.rlp.is_short() => true); + }} + + // Range/zero checks + // These range checks ensure that the bytes are all valid byte + // values. These lookups also enforce the byte value to be zero when + // the byte index >= num_bytes. + // We enable dynamic lookups because otherwise these lookup would require a lot of extra + // cells. + // TODO(Brecht): Ensure minimal RLP encoding: add leading zero check here because for LE + // values the MSB is at a variable position + if params.is_two_byte_lookup_enabled() { + assert!(all_bytes.len() % 2 == 0); + for idx in (0..all_bytes.len()).step_by(2) { + require!(( + config.tag.expr(), + config.num_bytes.expr() - idx.expr(), + all_bytes[idx], + all_bytes[idx + 1] + ) => @FIXED, true, true, false); + } + } else { + for (idx, byte) in all_bytes.iter().enumerate() { + require!((config.tag.expr(), config.num_bytes.expr() - idx.expr(), byte.expr()) => @FIXED, true, true, false); + } + } + + config + }) + } + + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + bytes: &[u8], + item_type: RlpItemType, + ) -> Result<RLPItemWitness, Error> { + // Always pad the bytes to the full length with zeros + let mut bytes = bytes.to_vec(); + while bytes.len() < RLP_UNIT_NUM_BYTES { + bytes.push(0); + } + + // Decode the RLP item + let rlp = self.rlp.assign(region, offset, &bytes)?; + + // Depending on the RLP item type, we store the data in little endian or big endian. + // Little endian makes it much easer to decode the lo/hi split representation. + let mut value_bytes = bytes[1..].to_vec(); + let mut len: usize = rlp.len(); + while len < 33 { + if self.is_big_endian(item_type) { + // Just pad + value_bytes.push(0); + } else { + // Push the bytes to the right + value_bytes.insert(0, 0); + } + len += 1; + } + let mut value_bytes = value_bytes[0..33].to_vec(); + if !self.is_big_endian(item_type) { + value_bytes.reverse(); + } + // Assign the bytes + assign!(region, self.rlp_byte, offset => bytes[0].scalar())?; + for (byte, column) in value_bytes.iter().zip(self.bytes.iter()) { + assign!(region, (column.column(), offset) => byte.scalar())?; + } + + // Make sure the RLP item is within a valid range + let max_len = if item_type == RlpItemType::Node { + if rlp.is_string() { + self.max_length(item_type) + } else { + HASH_WIDTH - 1 + } + } else { + self.max_length(item_type) + }; + self.max_len.assign(region, offset, max_len.scalar())?; + self.below_limit + .assign(region, offset, rlp.len().scalar(), (max_len + 1).scalar())?; + + // Compute the denominator needed for BE + let mult_inv = pow::value(region.keccak_r, RLP_UNIT_NUM_BYTES - rlp.num_bytes()) + .invert() + .unwrap_or(F::ZERO); + + // Store RLP properties for easy access + self.num_bytes + .assign(region, offset, rlp.num_bytes().scalar())?; + self.len.assign(region, offset, rlp.len().scalar())?; + self.hash_rlc + .assign(region, offset, rlp.rlc_content(region.key_r))?; + self.rlc_rlp + .assign(region, offset, rlp.rlc_rlp_rev(region.keccak_r))?; + + // Assign the word + self.word.lo().assign(region, offset, rlp.word().lo())?; + self.word.hi().assign(region, offset, rlp.word().hi())?; + + // Assign the RLC helper variables + self.mult_inv.assign(region, offset, mult_inv)?; + self.mult_diff.assign( + region, + offset, + pow::value(region.keccak_r, rlp.num_bytes() - 1), + )?; + + // Assign free inputs + assign!(region, self.tag, offset => self.tag(item_type).scalar())?; + assign!(region, self.is_rlp, offset => (item_type != RlpItemType::Nibbles).scalar())?; + assign!(region, self.is_big_endian, offset => self.is_big_endian(item_type).scalar())?; + assign!(region, self.is_hash, offset => (item_type == RlpItemType::Hash).scalar())?; + + Ok(rlp) + } + + pub(crate) fn create_view( + &self, + meta: &mut VirtualCells<F>, + cb: &mut MPTConstraintBuilder<F>, + rot: usize, + item_type: RlpItemType, + ) -> RLPItemView<F> { + circuit!([meta, cb.base], { + let is_string = self.rlp.is_string_at(meta, rot); + let tag = self.tag.rot(meta, rot); + let max_len = self.max_len.rot(meta, rot); + let len = self.len.rot(meta, rot); + let is_rlp = self.is_rlp.rot(meta, rot); + let is_big_endian = self.is_big_endian.rot(meta, rot); + let is_hash = self.is_hash.rot(meta, rot); + + // Check the tag value + require!(tag => self.tag(item_type).expr()); + // Check that values and keys are always strings + if item_type == RlpItemType::Value || item_type == RlpItemType::Key { + require!(is_string => true); + } + // Hashes always are strings and have length 32 + if item_type == RlpItemType::Hash { + require!(is_string => true); + require!(len => HASH_WIDTH); + } + if item_type == RlpItemType::Node { + // Nodes always have length 0 or 32 when a string, or are < 32 when a list + ifx! {is_string => { + require!(max_len => self.max_length(item_type).expr()); + require!(len => [0, HASH_WIDTH]); + } elsex { + require!(max_len => HASH_WIDTH - 1); + }} + } else { + require!(max_len => self.max_length(item_type).expr()); + } + // Set the "free" inputs + require!(is_rlp => self.is_rlp(item_type)); + require!(is_big_endian => self.is_big_endian(item_type)); + require!(is_hash => (item_type == RlpItemType::Hash)); + }); + RLPItemView { + is_big_endian: self.is_big_endian(item_type), + can_use_word: self.is_rlp(item_type) && !self.is_big_endian(item_type), + num_bytes: Some(self.num_bytes.rot(meta, rot)), + len: Some(self.len.rot(meta, rot)), + mult: Some(self.mult_diff.rot(meta, rot) * cb.keccak_r.expr()), + hash_rlc: Some(self.hash_rlc.rot(meta, rot)), + rlc_rlp: Some(self.rlc_rlp.rot(meta, rot)), + bytes: [vec![self.rlp_byte.clone()], self.bytes.clone()] + .concat() + .iter() + .map(|byte| byte.rot(meta, rot)) + .collect(), + is_short: Some(self.rlp.value.is_short.rot(meta, rot)), + is_long: Some(self.rlp.value.is_long.rot(meta, rot)), + word: Some(Word::new([ + self.word.lo().rot(meta, rot), + self.word.hi().rot(meta, rot), + ])), + } + } + + fn tag(&self, item_type: RlpItemType) -> FixedTableTag { + if item_type == RlpItemType::Nibbles { + FixedTableTag::RangeKeyLen16 + } else { + FixedTableTag::RangeKeyLen256 + } + } + + fn max_length(&self, item_type: RlpItemType) -> usize { + match item_type { + RlpItemType::Node => 32, + RlpItemType::Value => 32, + RlpItemType::Hash => 32, + RlpItemType::Key => 33, + RlpItemType::Nibbles => 32, + } + } + + fn is_big_endian(&self, item_type: RlpItemType) -> bool { + item_type == RlpItemType::Key || item_type == RlpItemType::Nibbles + } + + fn is_rlp(&self, item_type: RlpItemType) -> bool { + item_type != RlpItemType::Nibbles + } +} + +/// Main RLP item +#[derive(Clone, Debug, Default)] +pub struct RLPItemView<F> { + is_big_endian: bool, + can_use_word: bool, + bytes: Vec<Expression<F>>, + num_bytes: Option<Expression<F>>, + len: Option<Expression<F>>, + mult: Option<Expression<F>>, + hash_rlc: Option<Expression<F>>, + rlc_rlp: Option<Expression<F>>, + is_short: Option<Expression<F>>, + is_long: Option<Expression<F>>, + word: Option<Word<Expression<F>>>, +} + +impl<F: Field> RLPItemView<F> { + pub(crate) fn num_bytes(&self) -> Expression<F> { + self.num_bytes.clone().unwrap() + } + + pub(crate) fn len(&self) -> Expression<F> { + self.len.clone().unwrap() + } + + pub(crate) fn mult(&self) -> Expression<F> { + self.mult.clone().unwrap() + } + + pub(crate) fn hash_rlc(&self) -> Expression<F> { + self.hash_rlc.clone().unwrap() + } + + pub(crate) fn rlc_rlp(&self) -> Expression<F> { + self.rlc_rlp.clone().unwrap() + } + + pub(crate) fn rlc_chain_data(&self) -> (Expression<F>, Expression<F>) { + (self.rlc_rlp(), self.mult()) + } + + pub(crate) fn bytes_be(&self) -> Vec<Expression<F>> { + assert!(self.is_big_endian); + self.bytes.clone() + } + + pub(crate) fn bytes_le(&self) -> Vec<Expression<F>> { + assert!(!self.is_big_endian); + self.bytes.clone() + } + + pub(crate) fn is_short(&self) -> Expression<F> { + self.is_short.clone().unwrap() + } + + pub(crate) fn is_long(&self) -> Expression<F> { + self.is_long.clone().unwrap() + } + + pub(crate) fn is_very_long(&self) -> Expression<F> { + not::expr(self.is_short() + self.is_long()) + } + + pub(crate) fn word(&self) -> Word<Expression<F>> { + assert!(self.can_use_word); + self.word.clone().unwrap() + } +} diff --git a/zkevm-circuits/src/mpt_circuit/lib.rs b/zkevm-circuits/src/mpt_circuit/lib.rs new file mode 100644 index 0000000000..b4c0247823 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/lib.rs @@ -0,0 +1,10 @@ +pub mod account_leaf; +pub mod branch; +pub mod branch_node; +pub mod columns; +pub mod extension; +pub mod helpers; +pub mod mpt; +pub mod param; +pub mod storage_leaf; +pub mod witness_row; diff --git a/zkevm-circuits/src/mpt_circuit/param.rs b/zkevm-circuits/src/mpt_circuit/param.rs new file mode 100644 index 0000000000..dab10a691f --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/param.rs @@ -0,0 +1,32 @@ +pub const ARITY: usize = 16; +// Currently using 32 - each hash byte goes into its own cell, this might be +// compressed for optimization purposes in the future. +pub const HASH_WIDTH: usize = 32; // number of columns used for hash output + +// Compact encoding key prefixes +pub const KEY_PREFIX_EVEN: u8 = 0b0000_0000; +pub const KEY_PREFIX_ODD: u8 = 0b0001_0000; +pub const KEY_TERMINAL_PREFIX_EVEN: u8 = 0b0010_0000; +pub const KEY_TERMINAL_PREFIX_ODD: u8 = 0b0011_0000; + +// RLP prefixes +pub const RLP_SHORT: u8 = 128; // 0x80 +pub const RLP_LONG: u8 = 183; // 0xb7 +pub const RLP_LIST_SHORT: u8 = 192; // 0xc0 +pub const RLP_LIST_LONG: u8 = 247; // 0xf7 +pub const RLP_NIL: u8 = 128; // 0x80 +pub const RLP_HASH_VALUE: u8 = 128 + 32; // 0x80 + +// Key parameters +pub const KEY_LEN: usize = 32; +pub const KEY_LEN_IN_NIBBLES: usize = KEY_LEN * 2; + +// Empty trie +pub const EMPTY_TRIE_HASH: [u8; 32] = [ + 86, 232, 31, 23, 27, 204, 85, 166, 255, 131, 69, 230, 146, 192, 248, 110, 91, 72, 224, 27, 153, + 108, 173, 192, 1, 98, 47, 181, 227, 99, 180, 33, +]; + +// Number of bytes required to decode an RLP item +pub const RLP_UNIT_NUM_BYTES: usize = 34; +pub const RLP_UNIT_NUM_VALUE_BYTES: usize = RLP_UNIT_NUM_BYTES - 1; diff --git a/zkevm-circuits/src/mpt_circuit/rlp_gadgets.rs b/zkevm-circuits/src/mpt_circuit/rlp_gadgets.rs new file mode 100644 index 0000000000..dad4b98333 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/rlp_gadgets.rs @@ -0,0 +1,894 @@ +use crate::{ + _cb, circuit, + circuit_tools::{ + cached_region::CachedRegion, + cell_manager::Cell, + constraint_builder::{ConstraintBuilder, RLCable, RLCableValue}, + }, + evm_circuit::util::from_bytes, + matchw, + mpt_circuit::{ + helpers::FIXED, + param::{RLP_LIST_LONG, RLP_LIST_SHORT, RLP_SHORT}, + FixedTableTag, + }, + util::{word, Expr}, +}; +use eth_types::Field; +use gadgets::util::{not, pow, Scalar}; +use halo2_proofs::plonk::{Error, Expression, VirtualCells}; + +use super::{ + helpers::MPTConstraintBuilder, + param::{KEY_PREFIX_ODD, KEY_TERMINAL_PREFIX_ODD, RLP_LONG}, +}; + +// Decodes the first byte of an RLP data stream to return (is_list, is_short, is_long, is_very_long) +pub(crate) fn decode_rlp(byte: u8) -> (bool, bool, bool, bool) { + if byte < RLP_LIST_SHORT { + const RLP_SHORT_INCLUSIVE: u8 = RLP_SHORT - 1; + const RLP_LONG_EXCLUSIVE: u8 = RLP_LONG + 1; + const RLP_VALUE_MAX: u8 = RLP_LIST_SHORT - 1; + + let mut is_short = false; + let mut is_long = false; + let mut is_very_long = false; + match byte { + 0..=RLP_SHORT_INCLUSIVE => is_short = true, + RLP_SHORT..=RLP_LONG => is_long = true, + RLP_LONG_EXCLUSIVE..=RLP_VALUE_MAX => is_very_long = true, + _ => unreachable!(), + } + (false, is_short, is_long, is_very_long) + } else { + const RLP_LIST_LONG_1: u8 = RLP_LIST_LONG + 1; + const RLP_LIST_LONG_2: u8 = RLP_LIST_LONG + 2; + + let mut is_short = false; + let mut is_long = false; + let mut is_very_long = false; + match byte { + RLP_LIST_SHORT..=RLP_LIST_LONG => is_short = true, + RLP_LIST_LONG_1 => is_long = true, + RLP_LIST_LONG_2 => is_very_long = true, + _ => (), + } + (true, is_short, is_long, is_very_long) + } +} + +#[derive(Clone, Debug, Default)] +pub(crate) struct RLPListGadget<F> { + pub(crate) is_short: Cell<F>, + pub(crate) is_long: Cell<F>, + pub(crate) is_very_long: Cell<F>, + pub(crate) is_string: Cell<F>, + pub(crate) bytes: Vec<Expression<F>>, +} + +#[derive(Clone, Debug, Default)] +pub(crate) struct RLPListWitness { + pub(crate) is_short: bool, + pub(crate) is_long: bool, + pub(crate) is_very_long: bool, + pub(crate) is_string: bool, + pub(crate) bytes: Vec<u8>, +} + +impl<F: Field> RLPListGadget<F> { + pub(crate) fn construct(cb: &mut MPTConstraintBuilder<F>, bytes: &[Expression<F>]) -> Self { + circuit!([meta, cb], { + let is_short = cb.query_cell(); + let is_long = cb.query_cell(); + let is_very_long = cb.query_cell(); + let is_string = cb.query_cell(); + + require!(vec![ + FixedTableTag::RLP.expr(), + bytes[0].expr(), + not!(is_string), + is_short.expr(), + is_long.expr(), + is_very_long.expr(), + ] => @FIXED + ); + + RLPListGadget { + is_short, + is_long, + is_very_long, + is_string, + bytes: bytes.to_vec(), + } + }) + } + + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + bytes: &[u8], + ) -> Result<RLPListWitness, Error> { + let (is_list, is_short, is_long, is_very_long) = decode_rlp(bytes[0]); + let is_string = !is_list; + + self.is_short.assign(region, offset, is_short.scalar())?; + self.is_long.assign(region, offset, is_long.scalar())?; + self.is_very_long + .assign(region, offset, is_very_long.scalar())?; + self.is_string.assign(region, offset, is_string.scalar())?; + + Ok(RLPListWitness { + is_short, + is_long, + is_very_long, + is_string, + bytes: bytes.to_vec(), + }) + } + + pub(crate) fn is_list(&self) -> Expression<F> { + not::expr(self.is_string.expr()) + } + + pub(crate) fn is_list_at(&self, meta: &mut VirtualCells<F>, rot: usize) -> Expression<F> { + not::expr(self.is_string.rot(meta, rot)) + } + + // Single RLP byte, length at most 55 bytes + pub(crate) fn is_short(&self) -> Expression<F> { + self.is_short.expr() + } + + // RLP byte followed by the length in 1 byte, followed by the length + pub(crate) fn is_long(&self) -> Expression<F> { + self.is_long.expr() + } + + pub(crate) fn is_long_at(&self, meta: &mut VirtualCells<F>, rot: usize) -> Expression<F> { + self.is_long.rot(meta, rot) + } + + // RLP byte followed by the length in 1 byte, followed by the length + pub(crate) fn is_very_long(&self) -> Expression<F> { + self.is_very_long.expr() + } + + /// Number of RLP bytes + pub(crate) fn num_rlp_bytes(&self) -> Expression<F> { + circuit!([meta, _cb!()], { + matchx! { + self.is_short() => 1.expr(), + self.is_long() => 2.expr(), + self.is_very_long() => 3.expr(), + } + }) + } + + /// Returns the total length of the list (including RLP bytes) + pub(crate) fn num_bytes(&self) -> Expression<F> { + self.num_rlp_bytes() + self.len() + } + + /// Returns the length of the list (excluding RLP bytes) + pub(crate) fn len(&self) -> Expression<F> { + circuit!([meta, _cb!()], { + matchx! { + self.is_short() => get_len_list_short::expr(self.bytes[0].expr()), + self.is_long() => self.bytes[1].expr(), + self.is_very_long() => self.bytes[1].expr() * 256.expr() + self.bytes[2].expr(), + } + }) + } + + /// Returns the rlc of all the list data provided + pub(crate) fn rlc_rlp(&self, r: &Expression<F>) -> Expression<F> { + self.bytes.rlc(r) + } + + /// Returns the rlc of all the list data provided + pub(crate) fn rlc_rlp_rev(&self, r: &Expression<F>) -> Expression<F> { + self.bytes.rlc_rev(r) + } + + /// Returns the rlc of only the RLP bytes + pub(crate) fn rlc_rlp_only(&self, r: &Expression<F>) -> (Expression<F>, Expression<F>) { + circuit!([meta, _cb!()], { + matchx! { + self.is_short() => (self.bytes[..1].rlc(r), pow::expr(r.expr(), 1)), + self.is_long() => (self.bytes[..2].rlc(r), pow::expr(r.expr(), 2)), + self.is_very_long() => (self.bytes[..3].rlc(r), pow::expr(r.expr(), 3)), + } + }) + } + + pub(crate) fn rlc_rlp_only_rev(&self, r: &Expression<F>) -> (Expression<F>, Expression<F>) { + circuit!([meta, _cb!()], { + matchx! { + self.is_short() => (self.bytes[..1].rlc_rev(r), pow::expr(r.expr(), 1)), + self.is_long() => (self.bytes[..2].rlc_rev(r), pow::expr(r.expr(), 2)), + self.is_very_long() => (self.bytes[..3].rlc_rev(r), pow::expr(r.expr(), 3)), + } + }) + } +} + +impl RLPListWitness { + pub(crate) fn is_list(&self) -> bool { + !self.is_string + } + + // Single RLP byte, length at most 55 bytes + pub(crate) fn is_short(&self) -> bool { + self.is_short + } + + // RLP byte followed by the number of bytes in length, followed by the length + pub(crate) fn is_long(&self) -> bool { + self.is_long + } + + // RLP byte followed by the number of bytes in length, followed by the length + pub(crate) fn is_very_long(&self) -> bool { + self.is_very_long + } + + /// Number of RLP bytes + pub(crate) fn num_rlp_bytes(&self) -> usize { + matchw! { + self.is_short() => 1, + self.is_long() => 2, + self.is_very_long() => 3, + } + } + + /// Returns the total length of the list (including RLP bytes) + pub(crate) fn num_bytes(&self) -> usize { + matchw! { + self.is_short => get_num_bytes_list_short::value(self.bytes[0]), + self.is_long => 2 + (self.bytes[1] as usize), + self.is_very_long => 3 + (self.bytes[1] as usize) * 256 + (self.bytes[2] as usize), + } + } + + /// Returns the length of the list (excluding RLP bytes) + pub(crate) fn len(&self) -> usize { + matchw! { + self.is_short() => get_len_list_short::value(self.bytes[0]), + self.is_long() => self.bytes[1] as usize, + } + } + + /// Returns the rlc of the complete list value and the complete list + /// (including RLP bytes) + pub(crate) fn rlc_rlp<F: Field>(&self, r: F) -> F { + self.bytes.rlc_value(r) + } + + /// Returns the rlc of the complete list value and the complete list + /// (including RLP bytes) + pub(crate) fn rlc_rlp_rev<F: Field>(&self, r: F) -> F { + self.bytes.rlc_value_rev(r) + } + + /// Returns the rlc of the RLP bytes + pub(crate) fn rlc_rlp_only<F: Field>(&self, r: F) -> (F, F) { + matchw! { + self.is_short() => (self.bytes[..1].rlc_value(r), r), + self.is_long() => (self.bytes[..2].rlc_value(r), r*r), + self.is_very_long() => (self.bytes[..3].rlc_value(r), r*r*r), + } + } +} + +#[derive(Clone, Debug, Default)] +pub(crate) struct RLPListDataGadget<F> { + pub(crate) rlp_list_bytes: [Cell<F>; 3], + pub(crate) rlp_list: RLPListGadget<F>, +} + +impl<F: Field> RLPListDataGadget<F> { + pub(crate) fn construct(cb: &mut MPTConstraintBuilder<F>) -> Self { + let rlp_list_bytes = cb.query_bytes(); + let rlp_list_bytes_expr = rlp_list_bytes.iter().map(|c| c.expr()).collect::<Vec<_>>(); + RLPListDataGadget { + rlp_list: RLPListGadget::construct(cb, &rlp_list_bytes_expr), + rlp_list_bytes, + } + } + + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + list_bytes: &[u8], + ) -> Result<RLPListWitness, Error> { + for (cell, byte) in self.rlp_list_bytes.iter().zip(list_bytes.iter()) { + cell.assign(region, offset, byte.scalar())?; + } + self.rlp_list.assign(region, offset, list_bytes) + } + + pub(crate) fn rlc_rlp(&self, r: &Expression<F>) -> (Expression<F>, Expression<F>) { + self.rlp_list.rlc_rlp_only(r) + } +} + +#[derive(Clone, Debug, Default)] +pub(crate) struct RLPValueGadget<F> { + pub(crate) is_short: Cell<F>, + pub(crate) is_long: Cell<F>, + pub(crate) is_very_long: Cell<F>, + pub(crate) is_list: Cell<F>, + pub(crate) bytes: Vec<Expression<F>>, +} + +#[derive(Clone, Debug, Default)] +pub(crate) struct RLPValueWitness { + pub(crate) is_short: bool, + pub(crate) is_long: bool, + pub(crate) is_very_long: bool, + pub(crate) is_list: bool, + pub(crate) bytes: Vec<u8>, +} + +impl<F: Field> RLPValueGadget<F> { + pub(crate) fn construct(cb: &mut MPTConstraintBuilder<F>, bytes: &[Expression<F>]) -> Self { + circuit!([meta, cb], { + let is_short = cb.query_cell(); + let is_long = cb.query_cell(); + let is_very_long = cb.query_cell(); + let is_list = cb.query_cell(); + + require!(vec![ + FixedTableTag::RLP.expr(), + bytes[0].expr(), + is_list.expr(), + is_short.expr(), + is_long.expr(), + is_very_long.expr(), + ] => @FIXED + ); + + RLPValueGadget { + is_short, + is_long, + is_very_long, + is_list, + bytes: bytes.to_vec(), + } + }) + } + + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + bytes: &[u8], + ) -> Result<RLPValueWitness, Error> { + let (is_list, is_short, is_long, is_very_long) = decode_rlp(bytes[0]); + + self.is_short.assign(region, offset, is_short.scalar())?; + self.is_long.assign(region, offset, is_long.scalar())?; + self.is_very_long + .assign(region, offset, is_very_long.scalar())?; + self.is_list.assign(region, offset, is_list.scalar())?; + + Ok(RLPValueWitness { + is_short, + is_long, + is_very_long, + is_list, + bytes: bytes.to_vec(), + }) + } + + // Returns true if this is indeed a string RLP + pub(crate) fn is_string(&self) -> Expression<F> { + not::expr(self.is_list.expr()) + } + + pub(crate) fn is_string_at(&self, meta: &mut VirtualCells<F>, rot: usize) -> Expression<F> { + not::expr(self.is_list.rot(meta, rot)) + } + + // Single RLP byte containing the byte value + pub(crate) fn is_short(&self) -> Expression<F> { + self.is_short.expr() + } + + // Single RLP byte containing the length of the value + pub(crate) fn is_long(&self) -> Expression<F> { + self.is_long.expr() + } + + pub(crate) fn is_long_at(&self, meta: &mut VirtualCells<F>, rot: usize) -> Expression<F> { + self.is_long.rot(meta, rot) + } + + // RLP byte containing the lenght of the length, + // followed by the length, followed by the actual data + pub(crate) fn is_very_long(&self) -> Expression<F> { + self.is_very_long.expr() + } + + /// Number of RLP bytes + pub(crate) fn num_rlp_bytes(&self) -> Expression<F> { + circuit!([meta, _cb!()], { + matchx! { + self.is_short() => 0.expr(), + self.is_long() => 1.expr(), + self.is_very_long() => 2.expr(), + } + }) + } + + /// Number of bytes in total (including RLP bytes) + pub(crate) fn num_bytes(&self) -> Expression<F> { + circuit!([meta, _cb!()], { + matchx! { + self.is_short() => 1.expr(), + self.is_long() => get_num_bytes_short::expr(self.bytes[0].expr()), + self.is_very_long() => { + unreachablex!(); + 0.expr() + }, + } + }) + } + + /// Length of the value (excluding RLP bytes) + pub(crate) fn len(&self) -> Expression<F> { + circuit!([meta, _cb!()], { + matchx! { + self.is_short() => 1.expr(), + self.is_long() => get_len_short::expr(self.bytes[0].expr()), + self.is_very_long() => { + unreachablex!(); + 0.expr() + }, + } + }) + } + + pub(crate) fn rlc_rlp(&self, r: &Expression<F>) -> Expression<F> { + self.bytes.rlc(r) + } + + pub(crate) fn rlc_rlp_rev(&self, r: &Expression<F>) -> Expression<F> { + self.bytes.rlc_rev(r) + } + + pub(crate) fn rlc_rlp_only_rev(&self, r: &Expression<F>) -> (Expression<F>, Expression<F>) { + circuit!([meta, _cb!()], { + matchx! { + self.is_short() => (self.bytes[..1].rlc_rev(r), pow::expr(r.expr(), 1)), + self.is_long() => (self.bytes[..1].rlc_rev(r), pow::expr(r.expr(), 1)), + self.is_very_long() => { + unreachablex!(); + (0.expr(), 0.expr()) + }, + } + }) + } + + pub(crate) fn rlc_value(&self, r: &Expression<F>) -> Expression<F> { + circuit!([meta, _cb!()], { + matchx! { + self.is_short() => { + self.bytes[0].expr() + }, + self.is_long() => { + self.bytes[1..].rlc(r) + }, + self.is_very_long() => { + unreachablex!(); + 0.expr() + }, + } + }) + } +} + +impl RLPValueWitness { + pub(crate) fn is_string(&self) -> bool { + !self.is_list + } + + // Single RLP byte containing the byte value + pub(crate) fn is_short(&self) -> bool { + self.is_short + } + + // Single RLP byte containing the length of the value + pub(crate) fn is_long(&self) -> bool { + self.is_long + } + + // RLP byte containing the lenght of the length, + // followed by the length, followed by the actual data + pub(crate) fn is_very_long(&self) -> bool { + self.is_very_long + } + + /// Number of RLP bytes + pub(crate) fn num_rlp_bytes(&self) -> usize { + matchw! { + self.is_short() => 0, + self.is_long() => 1, + self.is_very_long() => 2, + } + } + + /// Number of bytes in total (including RLP bytes) + pub(crate) fn num_bytes(&self) -> usize { + matchw! { + self.is_short() => 1, + self.is_long() => get_num_bytes_short::value(self.bytes[0]), + self.is_very_long() => unreachable!(), + } + } + + /// Length of the value (excluding RLP bytes) + pub(crate) fn len(&self) -> usize { + matchw! { + self.is_short() => 1, + self.is_long() => get_len_short::value(self.bytes[0]), + self.is_very_long() => unreachable!(), + } + } + + pub(crate) fn rlc_rlp_rev<F: Field>(&self, r: F) -> F { + self.bytes.rlc_value_rev(r) + } + + pub(crate) fn rlc_value<F: Field>(&self, r: F) -> F { + matchw! { + self.is_short() => { + self.bytes[0].scalar() + }, + self.is_long() => { + self.bytes[1..].rlc_value(r) + }, + self.is_very_long() => { + unreachable!(); + }, + } + } +} + +pub(crate) fn get_terminal_odd_nibble<F: Field>(byte: Expression<F>) -> Expression<F> { + // The odd nible is stored in the same byte as the prefix + byte - KEY_TERMINAL_PREFIX_ODD.expr() +} + +pub(crate) fn get_ext_odd_nibble<F: Field>(byte: Expression<F>) -> Expression<F> { + // The odd nible is stored in the same byte as the prefix + byte - KEY_PREFIX_ODD.expr() +} + +pub(crate) fn get_ext_odd_nibble_value<F: Field>(byte: F) -> F { + // The odd nible is stored in the same byte as the prefix + byte - F::from(KEY_PREFIX_ODD as u64) +} + +// A single RLP byte +pub(crate) mod get_len_short { + use crate::mpt_circuit::param::RLP_SHORT; + use eth_types::Field; + use gadgets::util::Expr; + use halo2_proofs::plonk::Expression; + + pub(crate) fn expr<F: Field>(byte: Expression<F>) -> Expression<F> { + byte - RLP_SHORT.expr() + } + pub(crate) fn value(byte: u8) -> usize { + (byte - RLP_SHORT) as usize + } +} + +// A single RLP byte + the encoded length +pub(crate) mod get_num_bytes_short { + use super::get_len_short; + use eth_types::Field; + use gadgets::util::Expr; + use halo2_proofs::plonk::Expression; + + pub(crate) fn expr<F: Field>(byte: Expression<F>) -> Expression<F> { + 1.expr() + get_len_short::expr(byte) + } + pub(crate) fn value(byte: u8) -> usize { + 1 + get_len_short::value(byte) + } +} + +pub(crate) mod get_len_list_short { + use crate::mpt_circuit::param::RLP_LIST_SHORT; + use eth_types::Field; + use gadgets::util::Expr; + use halo2_proofs::plonk::Expression; + + pub(crate) fn expr<F: Field>(byte: Expression<F>) -> Expression<F> { + byte - RLP_LIST_SHORT.expr() + } + pub(crate) fn value(byte: u8) -> usize { + (byte - RLP_LIST_SHORT) as usize + } +} + +// A single RLP byte + the encoded length +pub(crate) mod get_num_bytes_list_short { + use super::get_len_list_short; + use eth_types::Field; + use gadgets::util::Expr; + use halo2_proofs::plonk::Expression; + + pub(crate) fn expr<F: Field>(byte: Expression<F>) -> Expression<F> { + 1.expr() + get_len_list_short::expr(byte) + } + pub(crate) fn value(byte: u8) -> usize { + 1 + get_len_list_short::value(byte) + } +} + +#[derive(Clone, Debug, Default)] +pub(crate) struct RLPItemGadget<F> { + pub(crate) value: RLPValueGadget<F>, + pub(crate) list: RLPListGadget<F>, +} + +#[derive(Clone, Debug, Default)] +pub(crate) struct RLPItemWitness { + pub(crate) value: RLPValueWitness, + pub(crate) list: RLPListWitness, + pub(crate) bytes: Vec<u8>, +} + +impl<F: Field> RLPItemGadget<F> { + pub(crate) fn construct(cb: &mut MPTConstraintBuilder<F>, bytes: &[Expression<F>]) -> Self { + RLPItemGadget { + value: RLPValueGadget::construct(cb, bytes), + list: RLPListGadget::construct(cb, bytes), + } + } + + pub(crate) fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + bytes: &[u8], + ) -> Result<RLPItemWitness, Error> { + let value_witness = self.value.assign(region, offset, bytes)?; + let list_witness = self.list.assign(region, offset, bytes)?; + assert!(!(value_witness.is_string() && list_witness.is_list())); + Ok(RLPItemWitness { + value: value_witness, + list: list_witness, + bytes: bytes.to_vec(), + }) + } + + pub(crate) fn is_string(&self) -> Expression<F> { + self.value.is_string() + } + + pub(crate) fn is_string_at(&self, meta: &mut VirtualCells<F>, rot: usize) -> Expression<F> { + self.value.is_string_at(meta, rot) + } + + pub(crate) fn is_list(&self) -> Expression<F> { + self.list.is_list() + } + + pub(crate) fn is_list_at(&self, meta: &mut VirtualCells<F>, rot: usize) -> Expression<F> { + self.list.is_list_at(meta, rot) + } + + // Single RLP byte containing the byte value + pub(crate) fn is_short(&self) -> Expression<F> { + circuit!([meta, _cb!()], { + matchx! { + self.value.is_string() => self.value.is_short(), + self.list.is_list() => self.list.is_short(), + } + }) + } + + // Single RLP byte containing the length of the value + pub(crate) fn is_long(&self) -> Expression<F> { + circuit!([meta, _cb!()], { + matchx! { + self.value.is_string() => self.value.is_long(), + self.list.is_list() => self.list.is_long(), + } + }) + } + + // Single RLP byte containing the length of the value + pub(crate) fn is_long_at(&self, meta: &mut VirtualCells<F>, rot: usize) -> Expression<F> { + circuit!([meta, _cb!()], { + matchx! { + self.value.is_string() => self.value.is_long_at(meta, rot), + self.list.is_list() => self.list.is_long_at(meta, rot), + } + }) + } + + // RLP byte containing the lenght of the length, + // followed by the length, followed by the actual data + pub(crate) fn is_very_long(&self) -> Expression<F> { + circuit!([meta, _cb!()], { + matchx! { + self.value.is_string() => self.value.is_very_long(), + self.list.is_list() => self.list.is_very_long(), + } + }) + } + + /// Number of RLP bytes + pub(crate) fn num_rlp_bytes(&self) -> Expression<F> { + circuit!([meta, _cb!()], { + matchx! { + self.value.is_string() => self.value.num_rlp_bytes(), + self.list.is_list() => self.list.num_rlp_bytes(), + } + }) + } + + /// Number of bytes in total (including RLP bytes) + pub(crate) fn num_bytes(&self) -> Expression<F> { + circuit!([meta, _cb!()], { + matchx! { + self.value.is_string() => self.value.num_bytes(), + self.list.is_list() => self.list.num_bytes(), + } + }) + } + + /// Length of the value (excluding RLP bytes) + pub(crate) fn len(&self) -> Expression<F> { + circuit!([meta, _cb!()], { + matchx! { + self.value.is_string() => self.value.len(), + self.list.is_list() => self.list.len(), + } + }) + } + + // Returns the RLC of the value if the RLP is a string, + // returns the RLC of the full string if the RLP is a list. + pub(crate) fn rlc_content(&self, r: &Expression<F>) -> Expression<F> { + circuit!([meta, _cb!()], { + matchx! { + self.value.is_string() => self.value.rlc_value(r), + self.list.is_list() => self.list.rlc_rlp(r), + } + }) + } +} + +impl RLPItemWitness { + /// Number of bytes in total (including RLP bytes) + pub(crate) fn num_bytes(&self) -> usize { + matchw! { + self.value.is_string() => self.value.num_bytes(), + self.list.is_list() => self.list.num_bytes(), + } + } + + /// Number of bytes in total (including RLP bytes) + pub(crate) fn num_rlp_bytes(&self) -> usize { + matchw! { + self.value.is_string() => self.value.num_rlp_bytes(), + self.list.is_list() => self.list.num_rlp_bytes(), + } + } + + /// Length of the value (excluding RLP bytes) + pub(crate) fn len(&self) -> usize { + matchw! { + self.value.is_string() => self.value.len(), + self.list.is_list() => self.list.len(), + } + } + + pub(crate) fn is_string(&self) -> bool { + self.value.is_string() + } + + pub(crate) fn is_list(&self) -> bool { + self.list.is_list() + } + + pub(crate) fn is_short(&self) -> bool { + matchw! { + self.value.is_string() => self.value.is_short(), + self.list.is_list() => self.list.is_short(), + } + } + + pub(crate) fn is_long(&self) -> bool { + matchw! { + self.value.is_string() => self.value.is_long(), + self.list.is_list() => self.list.is_long(), + } + } + + pub(crate) fn rlc_content<F: Field>(&self, r: F) -> F { + matchw! { + self.value.is_string() => self.value.rlc_value(r), + self.list.is_list() => self.list.rlc_rlp(r), + } + } + + pub(crate) fn rlc_rlp_rev<F: Field>(&self, r: F) -> F { + // Compute the denominator needed for BE + let mult_inv = pow::value(r, 34 - self.num_bytes()) + .invert() + .unwrap_or(F::ZERO); + matchw! { + self.value.is_string() => self.value.rlc_rlp_rev(r) * mult_inv, + self.list.is_list() => self.list.rlc_rlp_rev(r) * mult_inv, + } + } + + pub(crate) fn word<F: Field>(&self) -> word::Word<F> { + // word::Word::from(Word::from_big_endian(&self.bytes[1..33])) + let (lo, hi) = if self.is_string() { + if self.is_short() { + let lo: F = self.bytes[0].scalar(); + let hi: F = 0.scalar(); + (lo, hi) + } else { + let mut bytes = self.bytes[1..].to_vec(); + let mut len = self.len(); + while len < 33 { + bytes.insert(0, 0); + len += 1; + } + let lo = from_bytes::value( + bytes[17..33] + .iter() + .cloned() + .rev() + .collect::<Vec<u8>>() + .as_slice(), + ); + let hi = from_bytes::value( + bytes[1..17] + .iter() + .cloned() + .rev() + .collect::<Vec<u8>>() + .as_slice(), + ); + (lo, hi) + } + } else { + let mut bytes = self.bytes[1..].to_vec(); + let mut len = self.len(); + while len < 33 { + bytes.insert(0, 0); + len += 1; + } + let lo = from_bytes::value( + bytes[17..33] + .iter() + .cloned() + .rev() + .collect::<Vec<u8>>() + .as_slice(), + ); + let hi = from_bytes::value( + bytes[1..17] + .iter() + .cloned() + .rev() + .collect::<Vec<u8>>() + .as_slice(), + ); + (lo, hi) + }; + word::Word::new([lo, hi]) + } +} diff --git a/zkevm-circuits/src/mpt_circuit/start.rs b/zkevm-circuits/src/mpt_circuit/start.rs new file mode 100644 index 0000000000..399ff203a1 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/start.rs @@ -0,0 +1,146 @@ +use super::{ + helpers::Indexable, + rlp_gadgets::RLPItemWitness, + witness_row::{Node, StartRowType}, +}; +use crate::{ + circuit, + circuit_tools::{cached_region::CachedRegion, cell_manager::Cell}, + mpt_circuit::{ + helpers::{ + key_memory, main_memory, parent_memory, KeyData, MPTConstraintBuilder, MainData, + ParentData, + }, + MPTConfig, MPTContext, MPTState, RlpItemType, + }, + util::word::Word, +}; +use eth_types::Field; +use gadgets::util::Scalar; +use halo2_proofs::plonk::{Error, VirtualCells}; + +#[derive(Clone, Debug, Default)] +pub(crate) struct StartConfig<F> { + proof_type: Cell<F>, +} + +impl<F: Field> StartConfig<F> { + pub fn configure( + meta: &mut VirtualCells<'_, F>, + cb: &mut MPTConstraintBuilder<F>, + ctx: MPTContext<F>, + ) -> Self { + cb.base + .cell_manager + .as_mut() + .unwrap() + .reset(StartRowType::Count as usize); + let mut config = StartConfig::default(); + + circuit!([meta, cb], { + let root_items = [ + ctx.rlp_item(meta, cb, StartRowType::RootS as usize, RlpItemType::Hash), + ctx.rlp_item(meta, cb, StartRowType::RootC as usize, RlpItemType::Hash), + ]; + + config.proof_type = cb.query_cell(); + + let mut root = vec![Word::new([0.expr(), 0.expr()]); 2]; + for is_s in [true, false] { + root[is_s.idx()] = root_items[is_s.idx()].word(); + } + + MainData::store( + cb, + &ctx.memory[main_memory()], + [ + config.proof_type.expr(), + false.expr(), + 0.expr(), + root[true.idx()].lo().expr(), + root[true.idx()].hi().expr(), + root[false.idx()].lo().expr(), + root[false.idx()].hi().expr(), + ], + ); + + for is_s in [true, false] { + ParentData::store( + cb, + &ctx.memory[parent_memory(is_s)], + root[is_s.idx()].clone(), + 0.expr(), + true.expr(), + false.expr(), + root[is_s.idx()].clone(), + ); + KeyData::store_defaults(cb, &ctx.memory[key_memory(is_s)]); + } + }); + + config + } + + #[allow(clippy::too_many_arguments)] + pub fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + _mpt_config: &MPTConfig<F>, + pv: &mut MPTState<F>, + offset: usize, + node: &Node, + rlp_values: &[RLPItemWitness], + ) -> Result<(), Error> { + let start = &node.start.clone().unwrap(); + + let _root_items = [ + rlp_values[StartRowType::RootS as usize].clone(), + rlp_values[StartRowType::RootC as usize].clone(), + ]; + + self.proof_type + .assign(region, offset, start.proof_type.scalar())?; + + let mut root = vec![Word::new([0.scalar(), 0.scalar()]); 2]; + for is_s in [true, false] { + root[is_s.idx()] = rlp_values[is_s.idx()].word(); + } + + MainData::witness_store( + region, + offset, + &mut pv.memory[main_memory()], + start.proof_type as usize, + false, + 0.scalar(), + root[true.idx()], + root[false.idx()], + )?; + + for is_s in [true, false] { + ParentData::witness_store( + region, + offset, + &mut pv.memory[parent_memory(is_s)], + root[is_s.idx()], + 0.scalar(), + true, + false, + root[is_s.idx()], + )?; + KeyData::witness_store( + region, + offset, + &mut pv.memory[key_memory(is_s)], + F::ZERO, + F::ONE, + 0, + F::ZERO, + F::ONE, + 0, + )?; + } + + Ok(()) + } +} diff --git a/zkevm-circuits/src/mpt_circuit/storage_leaf.rs b/zkevm-circuits/src/mpt_circuit/storage_leaf.rs new file mode 100644 index 0000000000..e36f9e12ff --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/storage_leaf.rs @@ -0,0 +1,503 @@ +use eth_types::Field; +use gadgets::util::Scalar; +use halo2_proofs::{ + circuit::Value, + plonk::{Error, Expression, VirtualCells}, +}; +use itertools::Itertools; + +use crate::{ + circuit, + circuit_tools::{ + cached_region::CachedRegion, + cell_manager::Cell, + constraint_builder::{RLCChainableRev, RLCable}, + gadgets::{IsEqualGadget, LtGadget}, + }, + mpt_circuit::{ + helpers::{ + key_memory, main_memory, num_nibbles, parent_memory, DriftedGadget, + IsPlaceholderLeafGadget, KeyData, MPTConstraintBuilder, MainData, ParentData, + ParentDataWitness, KECCAK, + }, + param::KEY_LEN_IN_NIBBLES, + MPTConfig, MPTContext, MPTState, RlpItemType, + }, + table::MPTProofType, + util::word::{self, Word}, + witness::MptUpdateRow, +}; + +use super::{ + helpers::{Indexable, KeyDataWitness, ListKeyGadget, WrongGadget}, + rlp_gadgets::{RLPItemWitness, RLPValueGadget}, + witness_row::{Node, StorageRowType}, +}; + +#[derive(Clone, Debug, Default)] +pub(crate) struct StorageLeafConfig<F> { + main_data: MainData<F>, + key_data: [KeyData<F>; 2], + parent_data: [ParentData<F>; 2], + rlp_key: [ListKeyGadget<F>; 2], + value_rlp_bytes: [[Cell<F>; 1]; 2], + rlp_value: [RLPValueGadget<F>; 2], + is_wrong_leaf: Cell<F>, + is_not_hashed: [LtGadget<F, 1>; 2], + is_placeholder_leaf: [IsPlaceholderLeafGadget<F>; 2], + drifted: DriftedGadget<F>, + wrong: WrongGadget<F>, + is_storage_mod_proof: IsEqualGadget<F>, + is_non_existing_storage_proof: IsEqualGadget<F>, +} + +impl<F: Field> StorageLeafConfig<F> { + pub fn configure( + meta: &mut VirtualCells<'_, F>, + cb: &mut MPTConstraintBuilder<F>, + ctx: MPTContext<F>, + ) -> Self { + cb.base + .cell_manager + .as_mut() + .unwrap() + .reset(StorageRowType::Count as usize); + let mut config = StorageLeafConfig::default(); + + circuit!([meta, cb], { + let key_items = [ + ctx.rlp_item(meta, cb, StorageRowType::KeyS as usize, RlpItemType::Key), + ctx.rlp_item(meta, cb, StorageRowType::KeyC as usize, RlpItemType::Key), + ]; + config.value_rlp_bytes = [cb.base.query_bytes(), cb.base.query_bytes()]; + let value_item = [ + ctx.rlp_item( + meta, + cb, + StorageRowType::ValueS as usize, + RlpItemType::Value, + ), + ctx.rlp_item( + meta, + cb, + StorageRowType::ValueC as usize, + RlpItemType::Value, + ), + ]; + let drifted_item = + ctx.rlp_item(meta, cb, StorageRowType::Drifted as usize, RlpItemType::Key); + let expected_item = + ctx.rlp_item(meta, cb, StorageRowType::Wrong as usize, RlpItemType::Key); + let address_item = ctx.rlp_item( + meta, + cb, + StorageRowType::Address as usize, + RlpItemType::Value, + ); + let key_item = ctx.rlp_item(meta, cb, StorageRowType::Key as usize, RlpItemType::Hash); + + config.main_data = + MainData::load("main storage", cb, &ctx.memory[main_memory()], 0.expr()); + + // Storage leaves always need to be below accounts + require!(config.main_data.is_below_account => true); + + let mut key_rlc = vec![0.expr(); 2]; + let mut value_word = vec![Word::<Expression<F>>::new([0.expr(), 0.expr()]); 2]; + let mut value_rlp_rlc = vec![0.expr(); 2]; + let mut value_rlp_rlc_mult = vec![0.expr(); 2]; + for is_s in [true, false] { + // Parent data + let parent_data = &mut config.parent_data[is_s.idx()]; + *parent_data = + ParentData::load("leaf load", cb, &ctx.memory[parent_memory(is_s)], 0.expr()); + // Key data + let key_data = &mut config.key_data[is_s.idx()]; + *key_data = KeyData::load(cb, &ctx.memory[key_memory(is_s)], 0.expr()); + + // Placeholder leaf checks + config.is_placeholder_leaf[is_s.idx()] = + IsPlaceholderLeafGadget::construct(cb, parent_data.hash.expr()); + let is_placeholder_leaf = config.is_placeholder_leaf[is_s.idx()].expr(); + + let rlp_key = &mut config.rlp_key[is_s.idx()]; + *rlp_key = ListKeyGadget::construct(cb, &key_items[is_s.idx()]); + config.rlp_value[is_s.idx()] = RLPValueGadget::construct( + cb, + &config.value_rlp_bytes[is_s.idx()] + .iter() + .map(|c| c.expr()) + .collect::<Vec<_>>(), + ); + + // Because the storage value is an rlp encoded string inside another rlp encoded + // string (leaves are always encoded as [key, value], with + // `value` here containing a single stored value) the stored + // value is either stored directly in the RLP encoded string if short, or stored + // wrapped inside another RLP encoded string if long. + let rlp_value = config.rlp_value[is_s.idx()].rlc_value(&cb.key_r); + let rlp_value_rlc_mult = + config.rlp_value[is_s.idx()].rlc_rlp_only_rev(&cb.keccak_r); + let value_lo; + let value_hi; + ( + value_lo, + value_hi, + value_rlp_rlc[is_s.idx()], + value_rlp_rlc_mult[is_s.idx()], + ) = ifx! {config.rlp_value[is_s.idx()].is_short() => { + (rlp_value, 0.expr(), rlp_value_rlc_mult.0.expr(), rlp_value_rlc_mult.1.expr()) + } elsex { + let value = value_item[is_s.idx()].word(); + let value_rlp_rlc = rlp_value_rlc_mult.0.rlc_chain_rev(value_item[is_s.idx()].rlc_chain_data()); + require!(config.rlp_value[is_s.idx()].num_bytes() => value_item[is_s.idx()].num_bytes() + 1.expr()); + (value.lo(), value.hi(), value_rlp_rlc, rlp_value_rlc_mult.1 * value_item[is_s.idx()].mult()) + }}; + value_word[is_s.idx()] = Word::<Expression<F>>::new([value_lo, value_hi]); + + let leaf_rlc = rlp_key.rlc2(&cb.keccak_r).rlc_chain_rev(( + value_rlp_rlc[is_s.idx()].expr(), + value_rlp_rlc_mult[is_s.idx()].expr(), + )); + + // Key + key_rlc[is_s.idx()] = key_data.rlc.expr() + + rlp_key.key.expr( + cb, + rlp_key.key_value.clone(), + key_data.mult.expr(), + key_data.is_odd.expr(), + &cb.key_r.expr(), + ); + // Total number of nibbles needs to be KEY_LEN_IN_NIBBLES + let num_nibbles = + num_nibbles::expr(rlp_key.key_value.len(), key_data.is_odd.expr()); + require!(key_data.num_nibbles.expr() + num_nibbles => KEY_LEN_IN_NIBBLES); + + // Placeholder leaves default to value `0`. + ifx! {is_placeholder_leaf => { + require!(value_word[is_s.idx()] => [0.expr(), 0.expr()]); + }} + + // Make sure the RLP encoding is correct. + // storage = [key, "value"] + require!(rlp_key.rlp_list.len() => key_items[is_s.idx()].num_bytes() + config.rlp_value[is_s.idx()].num_bytes()); + + // Check if the account is in its parent. + // Check is skipped for placeholder leaves which are dummy leaves + ifx! {not!(is_placeholder_leaf) => { + config.is_not_hashed[is_s.idx()] = LtGadget::construct(&mut cb.base, rlp_key.rlp_list.num_bytes(), 32.expr()); + ifx!{or::expr(&[parent_data.is_root.expr(), not!(config.is_not_hashed[is_s.idx()])]) => { + // Hashed branch hash in parent branch + let hash = parent_data.hash.expr(); + require!(vec![1.expr(), leaf_rlc.expr(), rlp_key.rlp_list.num_bytes(), hash.lo(), hash.hi()] => @KECCAK); + } elsex { + // Non-hashed branch hash in parent branch + require!(leaf_rlc => parent_data.rlc.expr()); + }} + }} + + // Key done, set the default values + KeyData::store_defaults(cb, &ctx.memory[key_memory(is_s)]); + // Store the new parent + ParentData::store( + cb, + &ctx.memory[parent_memory(is_s)], + word::Word::<Expression<F>>::new([0.expr(), 0.expr()]), + 0.expr(), + true.expr(), + false.expr(), + word::Word::<Expression<F>>::new([0.expr(), 0.expr()]), + ); + } + + // Proof types + config.is_storage_mod_proof = IsEqualGadget::construct( + &mut cb.base, + config.main_data.proof_type.expr(), + MPTProofType::StorageChanged.expr(), + ); + config.is_non_existing_storage_proof = IsEqualGadget::construct( + &mut cb.base, + config.main_data.proof_type.expr(), + MPTProofType::StorageDoesNotExist.expr(), + ); + + // Drifted leaf handling + config.drifted = DriftedGadget::construct( + cb, + &config + .rlp_value + .iter() + .map(|value| value.num_bytes()) + .collect_vec(), + &config.parent_data, + &config.key_data, + &key_rlc, + &value_rlp_rlc, + &value_rlp_rlc_mult, + &drifted_item, + &cb.key_r.expr(), + ); + + // Wrong leaf handling + config.wrong = WrongGadget::construct( + cb, + key_item.hash_rlc(), + config.is_non_existing_storage_proof.expr(), + &config.rlp_key[true.idx()].key_value, + &key_rlc[true.idx()], + &expected_item, + config.is_placeholder_leaf[true.idx()].expr(), + config.key_data[true.idx()].clone(), + &cb.key_r.expr(), + ); + + // Reset the main memory + // This need to be the last node for this proof + MainData::store( + cb, + &ctx.memory[main_memory()], + [ + MPTProofType::Disabled.expr(), + false.expr(), + 0.expr(), + 0.expr(), + 0.expr(), + 0.expr(), + 0.expr(), + ], + ); + + // For non-existing proofs the tree needs to remain the same + ifx! {config.is_non_existing_storage_proof => { + require!(config.main_data.new_root => config.main_data.old_root); + require!(key_rlc[true.idx()] => key_rlc[false.idx()]); + }} + + // Put the data in the lookup table + let proof_type = matchx! { + config.is_storage_mod_proof => MPTProofType::StorageChanged.expr(), + config.is_non_existing_storage_proof => MPTProofType::StorageDoesNotExist.expr(), + _ => MPTProofType::Disabled.expr(), + }; + ifx! {not!(config.is_non_existing_storage_proof) => { + let key_rlc = ifx!{not!(config.parent_data[true.idx()].is_placeholder) => { + key_rlc[true.idx()].expr() + } elsex { + key_rlc[false.idx()].expr() + }}; + // Check that the key item contains the correct key for the path that was taken + require!(key_item.hash_rlc() => key_rlc); + // Check if the key is correct for the given address + if ctx.params.is_preimage_check_enabled() { + let key = key_item.word(); + require!(vec![1.expr(), address_item.bytes_le()[1..33].rlc(&cb.keccak_r), 32.expr(), key.lo(), key.hi()] => @KECCAK); + } + }}; + ctx.mpt_table.constrain( + meta, + &mut cb.base, + config.main_data.address.expr(), + proof_type, + address_item.word(), + config.main_data.new_root.expr(), + config.main_data.old_root.expr(), + value_word[false.idx()].clone(), + value_word[true.idx()].clone(), + ); + }); + + config + } + + #[allow(clippy::too_many_arguments)] + pub fn assign( + &self, + region: &mut CachedRegion<'_, '_, F>, + mpt_config: &MPTConfig<F>, + pv: &mut MPTState<F>, + offset: usize, + node: &Node, + rlp_values: &[RLPItemWitness], + ) -> Result<(), Error> { + let storage = &node.storage.clone().unwrap(); + + let key_items = [ + rlp_values[StorageRowType::KeyS as usize].clone(), + rlp_values[StorageRowType::KeyC as usize].clone(), + ]; + let value_item = [ + rlp_values[StorageRowType::ValueS as usize].clone(), + rlp_values[StorageRowType::ValueC as usize].clone(), + ]; + let drifted_item = rlp_values[StorageRowType::Drifted as usize].clone(); + let expected_item = rlp_values[StorageRowType::Wrong as usize].clone(); + let address_item = rlp_values[StorageRowType::Address as usize].clone(); + let _key_item = rlp_values[StorageRowType::Key as usize].clone(); + + let main_data = + self.main_data + .witness_load(region, offset, &pv.memory[main_memory()], 0)?; + + let mut key_data = vec![KeyDataWitness::default(); 2]; + let mut parent_data = vec![ParentDataWitness::default(); 2]; + let mut key_rlc = vec![0.scalar(); 2]; + let mut value_word = vec![Word::<F>::new([0.scalar(), 0.scalar()]); 2]; + for is_s in [true, false] { + parent_data[is_s.idx()] = self.parent_data[is_s.idx()].witness_load( + region, + offset, + &pv.memory[parent_memory(is_s)], + 0, + )?; + + let rlp_key_witness = self.rlp_key[is_s.idx()].assign( + region, + offset, + &storage.list_rlp_bytes[is_s.idx()], + &key_items[is_s.idx()], + )?; + + self.is_not_hashed[is_s.idx()].assign( + region, + offset, + rlp_key_witness.rlp_list.num_bytes().scalar(), + 32.scalar(), + )?; + + key_data[is_s.idx()] = self.key_data[is_s.idx()].witness_load( + region, + offset, + &pv.memory[key_memory(is_s)], + 0, + )?; + KeyData::witness_store( + region, + offset, + &mut pv.memory[key_memory(is_s)], + F::ZERO, + F::ONE, + 0, + F::ZERO, + F::ONE, + 0, + )?; + + // Key + (key_rlc[is_s.idx()], _) = rlp_key_witness.key.key( + rlp_key_witness.key_item.clone(), + key_data[is_s.idx()].rlc, + key_data[is_s.idx()].mult, + region.key_r, + ); + + // Value + for (cell, byte) in self.value_rlp_bytes[is_s.idx()] + .iter() + .zip(storage.value_rlp_bytes[is_s.idx()].iter()) + { + cell.assign(region, offset, byte.scalar())?; + } + let value_witness = self.rlp_value[is_s.idx()].assign( + region, + offset, + &storage.value_rlp_bytes[is_s.idx()], + )?; + value_word[is_s.idx()] = if value_witness.is_short() { + Word::<F>::new([value_witness.rlc_value(region.key_r), 0.scalar()]) + } else { + value_item[is_s.idx()].word() + }; + + ParentData::witness_store( + region, + offset, + &mut pv.memory[parent_memory(is_s)], + word::Word::<F>::new([F::ZERO, F::ZERO]), + F::ZERO, + true, + false, + word::Word::<F>::new([F::ZERO, F::ZERO]), + )?; + + self.is_placeholder_leaf[is_s.idx()].assign( + region, + offset, + parent_data[is_s.idx()].hash, + )?; + } + + let is_storage_mod_proof = self.is_storage_mod_proof.assign( + region, + offset, + main_data.proof_type.scalar(), + MPTProofType::StorageChanged.scalar(), + )? == true.scalar(); + let is_non_existing_proof = self.is_non_existing_storage_proof.assign( + region, + offset, + main_data.proof_type.scalar(), + MPTProofType::StorageDoesNotExist.scalar(), + )? == true.scalar(); + + // Drifted leaf handling + self.drifted.assign( + region, + offset, + &parent_data, + &storage.drifted_rlp_bytes, + &drifted_item, + region.key_r, + )?; + + // Wrong leaf handling + let (_key_rlc, _) = self.wrong.assign( + region, + offset, + is_non_existing_proof, + &key_rlc, + &storage.wrong_rlp_bytes, + &expected_item, + false, + key_data[true.idx()].clone(), + region.key_r, + )?; + + // Reset the main memory + MainData::witness_store( + region, + offset, + &mut pv.memory[main_memory()], + MPTProofType::Disabled as usize, + false, + F::ZERO, + Word::new([F::ZERO, F::ZERO]), + Word::new([F::ZERO, F::ZERO]), + )?; + + // Put the data in the lookup table + let proof_type = if is_storage_mod_proof { + MPTProofType::StorageChanged + } else if is_non_existing_proof { + MPTProofType::StorageDoesNotExist + } else { + MPTProofType::Disabled + }; + mpt_config.mpt_table.assign_cached( + region, + offset, + &MptUpdateRow { + address: Value::known(main_data.address), + storage_key: address_item.word().into_value(), + proof_type: Value::known(proof_type.scalar()), + new_root: main_data.new_root.into_value(), + old_root: main_data.old_root.into_value(), + new_value: value_word[false.idx()].into_value(), + old_value: value_word[true.idx()].into_value(), + }, + )?; + + Ok(()) + } +} diff --git a/zkevm-circuits/src/mpt_circuit/tests/AccountAddPlaceholderBranch.json b/zkevm-circuits/src/mpt_circuit/tests/AccountAddPlaceholderBranch.json new file mode 100644 index 0000000000..1dbd7ddef4 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/AccountAddPlaceholderBranch.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"BalanceChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,92,69,153,141,251,249,206,112,188,187,128,87,78,215,166,34,146,45,44,119,94,10,35,49,254,90,139,141,204,153,244,144,0],[160,242,246,191,23,44,167,166,154,14,14,27,198,200,66,149,155,102,162,36,92,147,76,227,228,141,122,139,186,245,89,5,41,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,245,44,16,35,247,198,201,190,127,121,84,12,180,160,45,116,180,243,5,121,76,186,165,227,121,49,165,118,171,248,179,191,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,245,44,16,35,247,198,201,190,127,121,84,12,180,160,45,116,180,243,5,121,76,186,165,227,121,49,165,118,171,248,179,191,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,215,59,125,216,248,19,201,18,250,183,66,8,213,171,232,118,28,224,37,86,154,26,45,63,50,37,179,78,95,7,56,114,0],[160,62,81,246,216,50,34,109,164,244,230,118,34,30,57,143,168,201,163,53,157,138,200,83,22,217,54,9,12,142,74,113,119,0],[160,110,58,129,42,7,242,95,48,22,117,24,235,247,115,27,159,148,240,189,82,238,245,24,104,4,88,96,153,87,62,124,87,0],[160,23,125,132,126,57,77,125,108,183,122,223,20,200,11,140,116,8,197,125,77,164,229,34,187,130,255,11,5,123,106,18,226,0],[160,34,142,142,168,173,99,151,78,20,223,49,167,173,193,155,22,185,57,77,94,140,81,219,8,205,119,152,79,221,53,32,207,0],[160,47,68,110,156,219,87,42,252,153,153,146,44,71,68,241,42,115,255,196,172,147,166,193,209,18,197,101,149,78,252,80,101,0],[160,177,72,39,32,231,101,153,80,19,87,43,118,153,180,111,107,120,208,26,121,107,122,223,78,248,252,112,146,129,121,183,249,0],[160,166,43,253,9,132,156,69,206,240,132,245,215,140,18,136,28,76,115,232,35,55,46,97,106,111,29,136,215,243,244,104,17,0],[160,81,197,227,235,119,136,89,180,1,44,243,14,3,35,252,32,39,239,6,187,20,67,5,160,124,3,15,223,92,185,169,242,0],[160,149,116,118,68,110,184,206,46,175,107,154,14,16,171,116,53,96,139,243,244,119,49,149,255,105,200,203,196,178,219,6,82,0],[160,110,155,225,108,252,161,111,115,34,161,168,254,20,210,73,55,53,84,44,62,235,227,145,125,56,152,100,115,68,140,102,72,0],[160,215,32,96,214,100,112,201,119,187,39,102,186,145,221,83,195,0,96,163,123,49,150,62,117,25,68,3,71,226,217,71,5,0],[160,216,77,122,185,166,60,76,175,212,143,31,218,53,223,132,60,243,170,247,163,51,217,81,184,10,173,42,95,228,91,232,94,0],[160,102,201,63,187,90,100,67,28,66,169,235,107,142,189,159,208,34,47,59,148,229,29,242,190,206,105,91,103,217,108,220,3,0],[160,130,214,88,212,94,182,185,119,29,142,174,223,89,224,222,59,117,224,157,226,110,51,196,90,175,27,158,67,104,153,87,154,0],[160,32,215,128,174,120,163,233,16,26,195,200,23,79,233,122,253,170,114,110,149,85,164,70,233,70,156,107,147,254,209,174,11,0],[160,193,92,89,242,135,228,231,76,186,23,253,187,202,250,103,245,131,178,24,164,47,129,106,19,179,50,117,153,14,62,38,242,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,62,81,246,216,50,34,109,164,244,230,118,34,30,57,143,168,201,163,53,157,138,200,83,22,217,54,9,12,142,74,113,119,160,110,58,129,42,7,242,95,48,22,117,24,235,247,115,27,159,148,240,189,82,238,245,24,104,4,88,96,153,87,62,124,87,160,23,125,132,126,57,77,125,108,183,122,223,20,200,11,140,116,8,197,125,77,164,229,34,187,130,255,11,5,123,106,18,226,160,34,142,142,168,173,99,151,78,20,223,49,167,173,193,155,22,185,57,77,94,140,81,219,8,205,119,152,79,221,53,32,207,160,47,68,110,156,219,87,42,252,153,153,146,44,71,68,241,42,115,255,196,172,147,166,193,209,18,197,101,149,78,252,80,101,160,177,72,39,32,231,101,153,80,19,87,43,118,153,180,111,107,120,208,26,121,107,122,223,78,248,252,112,146,129,121,183,249,160,166,43,253,9,132,156,69,206,240,132,245,215,140,18,136,28,76,115,232,35,55,46,97,106,111,29,136,215,243,244,104,17,160,81,197,227,235,119,136,89,180,1,44,243,14,3,35,252,32,39,239,6,187,20,67,5,160,124,3,15,223,92,185,169,242,160,149,116,118,68,110,184,206,46,175,107,154,14,16,171,116,53,96,139,243,244,119,49,149,255,105,200,203,196,178,219,6,82,160,110,155,225,108,252,161,111,115,34,161,168,254,20,210,73,55,53,84,44,62,235,227,145,125,56,152,100,115,68,140,102,72,160,215,32,96,214,100,112,201,119,187,39,102,186,145,221,83,195,0,96,163,123,49,150,62,117,25,68,3,71,226,217,71,5,160,216,77,122,185,166,60,76,175,212,143,31,218,53,223,132,60,243,170,247,163,51,217,81,184,10,173,42,95,228,91,232,94,160,102,201,63,187,90,100,67,28,66,169,235,107,142,189,159,208,34,47,59,148,229,29,242,190,206,105,91,103,217,108,220,3,160,130,214,88,212,94,182,185,119,29,142,174,223,89,224,222,59,117,224,157,226,110,51,196,90,175,27,158,67,104,153,87,154,160,32,215,128,174,120,163,233,16,26,195,200,23,79,233,122,253,170,114,110,149,85,164,70,233,70,156,107,147,254,209,174,11,160,193,92,89,242,135,228,231,76,186,23,253,187,202,250,103,245,131,178,24,164,47,129,106,19,179,50,117,153,14,62,38,242,128],[249,2,17,160,62,81,246,216,50,34,109,164,244,230,118,34,30,57,143,168,201,163,53,157,138,200,83,22,217,54,9,12,142,74,113,119,160,110,58,129,42,7,242,95,48,22,117,24,235,247,115,27,159,148,240,189,82,238,245,24,104,4,88,96,153,87,62,124,87,160,23,125,132,126,57,77,125,108,183,122,223,20,200,11,140,116,8,197,125,77,164,229,34,187,130,255,11,5,123,106,18,226,160,34,142,142,168,173,99,151,78,20,223,49,167,173,193,155,22,185,57,77,94,140,81,219,8,205,119,152,79,221,53,32,207,160,47,68,110,156,219,87,42,252,153,153,146,44,71,68,241,42,115,255,196,172,147,166,193,209,18,197,101,149,78,252,80,101,160,177,72,39,32,231,101,153,80,19,87,43,118,153,180,111,107,120,208,26,121,107,122,223,78,248,252,112,146,129,121,183,249,160,166,43,253,9,132,156,69,206,240,132,245,215,140,18,136,28,76,115,232,35,55,46,97,106,111,29,136,215,243,244,104,17,160,81,197,227,235,119,136,89,180,1,44,243,14,3,35,252,32,39,239,6,187,20,67,5,160,124,3,15,223,92,185,169,242,160,149,116,118,68,110,184,206,46,175,107,154,14,16,171,116,53,96,139,243,244,119,49,149,255,105,200,203,196,178,219,6,82,160,110,155,225,108,252,161,111,115,34,161,168,254,20,210,73,55,53,84,44,62,235,227,145,125,56,152,100,115,68,140,102,72,160,215,32,96,214,100,112,201,119,187,39,102,186,145,221,83,195,0,96,163,123,49,150,62,117,25,68,3,71,226,217,71,5,160,216,77,122,185,166,60,76,175,212,143,31,218,53,223,132,60,243,170,247,163,51,217,81,184,10,173,42,95,228,91,232,94,160,215,59,125,216,248,19,201,18,250,183,66,8,213,171,232,118,28,224,37,86,154,26,45,63,50,37,179,78,95,7,56,114,160,130,214,88,212,94,182,185,119,29,142,174,223,89,224,222,59,117,224,157,226,110,51,196,90,175,27,158,67,104,153,87,154,160,32,215,128,174,120,163,233,16,26,195,200,23,79,233,122,253,170,114,110,149,85,164,70,233,70,156,107,147,254,209,174,11,160,193,92,89,242,135,228,231,76,186,23,253,187,202,250,103,245,131,178,24,164,47,129,106,19,179,50,117,153,14,62,38,242,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,142,150,91,3,151,108,7,234,211,182,207,220,110,244,217,170,240,12,90,203,195,243,210,201,172,9,15,30,76,40,83,183,0],[160,243,248,117,132,135,179,242,217,170,170,147,202,41,30,49,202,235,19,91,182,154,115,189,49,71,95,213,18,134,202,205,168,0],[160,248,214,27,163,48,89,69,124,39,200,95,223,46,31,254,156,7,133,69,242,252,178,116,213,90,11,24,2,233,210,95,159,0],[160,71,79,93,73,42,149,57,51,225,103,235,189,110,188,70,240,193,23,63,219,116,110,243,110,149,7,153,50,68,75,57,255,0],[160,247,151,249,133,151,231,1,67,135,51,218,198,210,129,152,142,23,144,43,153,113,15,227,167,123,200,117,134,246,144,41,89,0],[160,64,41,80,117,176,86,114,226,155,222,42,78,189,238,210,98,213,168,109,98,43,187,53,78,43,64,239,233,108,49,103,145,0],[160,81,130,213,232,226,141,41,38,167,145,141,254,200,67,223,12,25,155,31,46,162,105,182,222,2,233,159,55,73,58,81,8,0],[160,26,77,61,137,205,196,204,129,210,129,10,70,241,189,76,121,69,162,6,215,188,152,126,170,249,149,72,157,147,95,113,240,0],[160,76,38,106,162,112,134,133,37,202,39,149,12,3,108,165,104,174,60,185,97,253,218,30,38,19,121,89,102,165,245,8,216,0],[160,52,133,159,70,24,244,195,146,2,17,195,222,204,211,129,28,126,50,191,31,4,148,37,228,107,40,143,95,15,239,188,142,0],[160,30,36,232,235,34,123,13,63,36,1,92,189,49,255,191,152,101,81,234,45,170,78,228,224,41,77,6,235,75,41,95,228,0],[160,53,118,183,248,110,40,9,128,63,159,4,146,88,128,57,182,207,231,204,72,18,102,249,225,183,253,26,165,204,221,133,107,0],[160,47,211,121,43,20,152,236,53,207,92,248,102,254,75,207,136,49,232,147,125,59,184,15,14,62,136,58,5,56,132,135,139,0],[160,146,83,193,207,181,29,203,52,47,58,114,231,161,55,66,1,75,127,145,210,118,37,82,232,135,3,183,30,255,240,248,11,0],[160,74,111,171,71,106,196,108,204,154,49,109,206,164,6,195,104,55,35,226,133,78,86,140,154,197,163,105,253,218,72,68,52,0],[160,221,162,147,55,34,170,139,142,218,244,84,132,181,168,39,246,188,198,8,193,144,16,119,237,138,12,69,220,76,152,153,153,0],[160,250,100,42,85,168,208,19,121,181,167,41,37,110,73,50,34,56,59,218,49,242,70,153,106,217,4,105,151,51,36,134,125,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,243,248,117,132,135,179,242,217,170,170,147,202,41,30,49,202,235,19,91,182,154,115,189,49,71,95,213,18,134,202,205,168,160,248,214,27,163,48,89,69,124,39,200,95,223,46,31,254,156,7,133,69,242,252,178,116,213,90,11,24,2,233,210,95,159,160,71,79,93,73,42,149,57,51,225,103,235,189,110,188,70,240,193,23,63,219,116,110,243,110,149,7,153,50,68,75,57,255,160,247,151,249,133,151,231,1,67,135,51,218,198,210,129,152,142,23,144,43,153,113,15,227,167,123,200,117,134,246,144,41,89,160,64,41,80,117,176,86,114,226,155,222,42,78,189,238,210,98,213,168,109,98,43,187,53,78,43,64,239,233,108,49,103,145,160,81,130,213,232,226,141,41,38,167,145,141,254,200,67,223,12,25,155,31,46,162,105,182,222,2,233,159,55,73,58,81,8,160,26,77,61,137,205,196,204,129,210,129,10,70,241,189,76,121,69,162,6,215,188,152,126,170,249,149,72,157,147,95,113,240,160,76,38,106,162,112,134,133,37,202,39,149,12,3,108,165,104,174,60,185,97,253,218,30,38,19,121,89,102,165,245,8,216,160,52,133,159,70,24,244,195,146,2,17,195,222,204,211,129,28,126,50,191,31,4,148,37,228,107,40,143,95,15,239,188,142,160,30,36,232,235,34,123,13,63,36,1,92,189,49,255,191,152,101,81,234,45,170,78,228,224,41,77,6,235,75,41,95,228,160,53,118,183,248,110,40,9,128,63,159,4,146,88,128,57,182,207,231,204,72,18,102,249,225,183,253,26,165,204,221,133,107,160,47,211,121,43,20,152,236,53,207,92,248,102,254,75,207,136,49,232,147,125,59,184,15,14,62,136,58,5,56,132,135,139,160,146,83,193,207,181,29,203,52,47,58,114,231,161,55,66,1,75,127,145,210,118,37,82,232,135,3,183,30,255,240,248,11,160,74,111,171,71,106,196,108,204,154,49,109,206,164,6,195,104,55,35,226,133,78,86,140,154,197,163,105,253,218,72,68,52,160,221,162,147,55,34,170,139,142,218,244,84,132,181,168,39,246,188,198,8,193,144,16,119,237,138,12,69,220,76,152,153,153,160,250,100,42,85,168,208,19,121,181,167,41,37,110,73,50,34,56,59,218,49,242,70,153,106,217,4,105,151,51,36,134,125,128],[249,2,17,160,243,248,117,132,135,179,242,217,170,170,147,202,41,30,49,202,235,19,91,182,154,115,189,49,71,95,213,18,134,202,205,168,160,248,214,27,163,48,89,69,124,39,200,95,223,46,31,254,156,7,133,69,242,252,178,116,213,90,11,24,2,233,210,95,159,160,71,79,93,73,42,149,57,51,225,103,235,189,110,188,70,240,193,23,63,219,116,110,243,110,149,7,153,50,68,75,57,255,160,247,151,249,133,151,231,1,67,135,51,218,198,210,129,152,142,23,144,43,153,113,15,227,167,123,200,117,134,246,144,41,89,160,64,41,80,117,176,86,114,226,155,222,42,78,189,238,210,98,213,168,109,98,43,187,53,78,43,64,239,233,108,49,103,145,160,81,130,213,232,226,141,41,38,167,145,141,254,200,67,223,12,25,155,31,46,162,105,182,222,2,233,159,55,73,58,81,8,160,26,77,61,137,205,196,204,129,210,129,10,70,241,189,76,121,69,162,6,215,188,152,126,170,249,149,72,157,147,95,113,240,160,76,38,106,162,112,134,133,37,202,39,149,12,3,108,165,104,174,60,185,97,253,218,30,38,19,121,89,102,165,245,8,216,160,52,133,159,70,24,244,195,146,2,17,195,222,204,211,129,28,126,50,191,31,4,148,37,228,107,40,143,95,15,239,188,142,160,30,36,232,235,34,123,13,63,36,1,92,189,49,255,191,152,101,81,234,45,170,78,228,224,41,77,6,235,75,41,95,228,160,53,118,183,248,110,40,9,128,63,159,4,146,88,128,57,182,207,231,204,72,18,102,249,225,183,253,26,165,204,221,133,107,160,47,211,121,43,20,152,236,53,207,92,248,102,254,75,207,136,49,232,147,125,59,184,15,14,62,136,58,5,56,132,135,139,160,146,83,193,207,181,29,203,52,47,58,114,231,161,55,66,1,75,127,145,210,118,37,82,232,135,3,183,30,255,240,248,11,160,74,111,171,71,106,196,108,204,154,49,109,206,164,6,195,104,55,35,226,133,78,86,140,154,197,163,105,253,218,72,68,52,160,142,150,91,3,151,108,7,234,211,182,207,220,110,244,217,170,240,12,90,203,195,243,210,201,172,9,15,30,76,40,83,183,160,250,100,42,85,168,208,19,121,181,167,41,37,110,73,50,34,56,59,218,49,242,70,153,106,217,4,105,151,51,36,134,125,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,77,232,92,90,207,144,28,209,255,114,73,30,34,22,65,146,193,168,52,246,172,111,139,107,21,220,140,195,72,109,174,142,0],[160,161,128,1,12,47,16,128,58,172,109,97,186,101,50,211,24,116,166,152,209,189,185,191,39,125,163,235,50,169,86,158,229,0],[160,43,180,202,90,212,89,144,118,139,227,102,232,30,186,65,236,181,5,130,247,53,26,255,110,32,164,81,96,121,240,13,252,0],[160,222,100,177,157,75,143,240,145,16,36,58,46,51,139,107,7,196,233,64,182,153,253,203,175,129,102,22,111,153,168,150,26,0],[160,94,231,69,12,111,229,77,99,71,17,141,11,41,112,27,177,218,61,40,30,213,193,247,27,173,123,94,162,194,11,64,110,0],[160,148,241,5,249,211,104,221,226,140,197,193,238,210,173,105,8,129,244,154,57,13,253,109,216,177,158,110,36,172,122,110,88,0],[160,49,101,31,195,122,182,161,106,170,190,126,247,114,74,123,53,20,100,9,186,33,38,17,167,168,229,10,220,151,18,196,241,0],[160,73,246,226,153,120,139,128,58,10,194,85,4,186,39,18,220,239,252,50,159,22,196,125,122,103,50,247,196,37,68,58,169,0],[160,15,132,108,63,247,99,185,92,140,54,8,64,230,186,45,30,61,193,8,165,18,74,107,200,87,45,33,232,22,58,219,43,0],[160,171,6,213,180,15,77,228,71,174,54,254,251,111,241,218,40,233,3,107,112,164,163,132,133,85,121,0,128,188,237,176,38,0],[160,190,202,142,180,181,1,250,241,49,215,108,185,216,23,205,142,139,158,85,162,252,156,118,150,43,152,194,183,178,218,159,221,0],[160,116,118,116,254,111,169,77,111,65,32,203,133,193,209,164,92,7,21,222,137,239,153,10,17,202,156,229,253,242,229,50,66,0],[160,245,182,9,212,150,185,219,26,154,17,0,141,168,125,166,152,114,219,87,156,42,77,206,233,29,211,176,18,46,29,86,118,0],[160,125,173,37,34,63,10,10,105,35,138,170,159,170,58,203,218,96,174,159,130,118,216,137,144,59,203,221,237,109,28,197,14,0],[160,125,205,12,44,38,14,115,188,176,89,248,149,162,236,64,246,24,91,125,70,183,125,37,100,214,54,174,74,207,71,185,190,0],[160,9,167,144,133,57,89,194,210,118,41,249,242,60,234,105,179,15,125,163,86,11,161,61,242,89,222,67,163,239,141,115,22,0],[160,229,254,113,96,76,247,87,54,147,166,26,241,48,108,149,89,115,6,35,119,201,191,233,239,90,99,195,93,22,222,43,126,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,161,128,1,12,47,16,128,58,172,109,97,186,101,50,211,24,116,166,152,209,189,185,191,39,125,163,235,50,169,86,158,229,160,43,180,202,90,212,89,144,118,139,227,102,232,30,186,65,236,181,5,130,247,53,26,255,110,32,164,81,96,121,240,13,252,160,222,100,177,157,75,143,240,145,16,36,58,46,51,139,107,7,196,233,64,182,153,253,203,175,129,102,22,111,153,168,150,26,160,94,231,69,12,111,229,77,99,71,17,141,11,41,112,27,177,218,61,40,30,213,193,247,27,173,123,94,162,194,11,64,110,160,148,241,5,249,211,104,221,226,140,197,193,238,210,173,105,8,129,244,154,57,13,253,109,216,177,158,110,36,172,122,110,88,160,49,101,31,195,122,182,161,106,170,190,126,247,114,74,123,53,20,100,9,186,33,38,17,167,168,229,10,220,151,18,196,241,160,73,246,226,153,120,139,128,58,10,194,85,4,186,39,18,220,239,252,50,159,22,196,125,122,103,50,247,196,37,68,58,169,160,15,132,108,63,247,99,185,92,140,54,8,64,230,186,45,30,61,193,8,165,18,74,107,200,87,45,33,232,22,58,219,43,160,171,6,213,180,15,77,228,71,174,54,254,251,111,241,218,40,233,3,107,112,164,163,132,133,85,121,0,128,188,237,176,38,160,190,202,142,180,181,1,250,241,49,215,108,185,216,23,205,142,139,158,85,162,252,156,118,150,43,152,194,183,178,218,159,221,160,116,118,116,254,111,169,77,111,65,32,203,133,193,209,164,92,7,21,222,137,239,153,10,17,202,156,229,253,242,229,50,66,160,245,182,9,212,150,185,219,26,154,17,0,141,168,125,166,152,114,219,87,156,42,77,206,233,29,211,176,18,46,29,86,118,160,125,173,37,34,63,10,10,105,35,138,170,159,170,58,203,218,96,174,159,130,118,216,137,144,59,203,221,237,109,28,197,14,160,125,205,12,44,38,14,115,188,176,89,248,149,162,236,64,246,24,91,125,70,183,125,37,100,214,54,174,74,207,71,185,190,160,9,167,144,133,57,89,194,210,118,41,249,242,60,234,105,179,15,125,163,86,11,161,61,242,89,222,67,163,239,141,115,22,160,229,254,113,96,76,247,87,54,147,166,26,241,48,108,149,89,115,6,35,119,201,191,233,239,90,99,195,93,22,222,43,126,128],[249,2,17,160,161,128,1,12,47,16,128,58,172,109,97,186,101,50,211,24,116,166,152,209,189,185,191,39,125,163,235,50,169,86,158,229,160,43,180,202,90,212,89,144,118,139,227,102,232,30,186,65,236,181,5,130,247,53,26,255,110,32,164,81,96,121,240,13,252,160,222,100,177,157,75,143,240,145,16,36,58,46,51,139,107,7,196,233,64,182,153,253,203,175,129,102,22,111,153,168,150,26,160,94,231,69,12,111,229,77,99,71,17,141,11,41,112,27,177,218,61,40,30,213,193,247,27,173,123,94,162,194,11,64,110,160,148,241,5,249,211,104,221,226,140,197,193,238,210,173,105,8,129,244,154,57,13,253,109,216,177,158,110,36,172,122,110,88,160,49,101,31,195,122,182,161,106,170,190,126,247,114,74,123,53,20,100,9,186,33,38,17,167,168,229,10,220,151,18,196,241,160,73,246,226,153,120,139,128,58,10,194,85,4,186,39,18,220,239,252,50,159,22,196,125,122,103,50,247,196,37,68,58,169,160,15,132,108,63,247,99,185,92,140,54,8,64,230,186,45,30,61,193,8,165,18,74,107,200,87,45,33,232,22,58,219,43,160,171,6,213,180,15,77,228,71,174,54,254,251,111,241,218,40,233,3,107,112,164,163,132,133,85,121,0,128,188,237,176,38,160,190,202,142,180,181,1,250,241,49,215,108,185,216,23,205,142,139,158,85,162,252,156,118,150,43,152,194,183,178,218,159,221,160,116,118,116,254,111,169,77,111,65,32,203,133,193,209,164,92,7,21,222,137,239,153,10,17,202,156,229,253,242,229,50,66,160,245,182,9,212,150,185,219,26,154,17,0,141,168,125,166,152,114,219,87,156,42,77,206,233,29,211,176,18,46,29,86,118,160,125,173,37,34,63,10,10,105,35,138,170,159,170,58,203,218,96,174,159,130,118,216,137,144,59,203,221,237,109,28,197,14,160,77,232,92,90,207,144,28,209,255,114,73,30,34,22,65,146,193,168,52,246,172,111,139,107,21,220,140,195,72,109,174,142,160,9,167,144,133,57,89,194,210,118,41,249,242,60,234,105,179,15,125,163,86,11,161,61,242,89,222,67,163,239,141,115,22,160,229,254,113,96,76,247,87,54,147,166,26,241,48,108,149,89,115,6,35,119,201,191,233,239,90,99,195,93,22,222,43,126,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,224,226,228,152,49,191,94,18,202,42,40,43,44,135,217,234,139,112,115,185,228,196,213,42,168,79,181,143,79,201,143,96,0],[160,1,140,240,73,75,204,201,222,156,243,213,94,33,163,61,8,206,249,37,116,57,74,97,38,98,157,136,8,8,58,80,150,0],[160,195,199,196,181,116,185,85,110,248,215,152,211,207,168,41,60,203,5,86,141,59,163,78,219,9,213,111,185,55,120,19,233,0],[160,140,202,218,220,242,107,140,113,118,132,7,69,53,214,70,230,137,184,171,129,43,48,107,81,80,73,247,0,177,229,219,121,0],[160,33,36,191,50,11,87,222,33,182,77,167,63,136,123,248,241,74,182,24,11,174,247,239,125,99,202,207,255,128,35,52,165,0],[160,149,249,75,250,81,105,43,241,150,173,198,3,252,180,149,96,0,111,180,34,118,196,43,123,93,132,160,96,250,100,217,45,0],[160,32,39,96,173,133,195,109,50,97,77,73,185,128,89,4,150,255,132,58,164,43,120,193,117,186,32,133,65,91,116,162,173,0],[160,98,239,63,98,146,213,134,176,5,254,159,193,14,251,162,124,237,62,243,94,97,73,108,47,3,76,184,133,162,93,214,124,0],[160,24,110,66,31,239,73,37,228,27,69,165,214,234,132,223,109,118,39,20,166,141,25,228,24,156,85,122,60,112,195,235,154,0],[160,124,4,254,255,41,243,241,33,206,19,170,136,141,252,149,202,221,147,172,85,213,237,197,110,71,174,111,101,127,85,205,59,0],[160,23,49,65,202,234,196,28,65,205,115,198,37,246,143,124,72,166,37,205,232,162,25,22,39,127,188,14,26,18,214,240,152,0],[160,51,21,215,92,255,202,104,15,118,167,53,140,39,4,142,82,127,133,147,230,204,253,47,54,99,23,226,78,113,129,89,185,0],[160,239,123,251,65,188,11,107,22,9,46,42,104,47,193,60,78,205,118,242,12,136,145,137,46,214,157,184,26,255,37,206,38,0],[160,179,163,103,185,250,53,96,32,14,9,248,46,117,61,151,70,245,116,155,44,163,22,115,1,102,242,244,157,45,81,102,14,0],[160,120,51,181,75,204,140,26,229,78,145,104,6,122,193,149,189,178,100,84,118,214,32,148,10,91,248,41,39,153,51,148,250,0],[160,152,64,28,199,229,115,92,129,39,229,199,166,105,168,252,23,227,109,56,225,3,255,171,233,92,155,115,43,225,156,231,35,0],[160,79,205,115,234,146,184,235,250,60,154,252,244,30,28,214,37,12,114,43,159,140,167,245,162,159,65,188,1,113,43,38,143,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,1,140,240,73,75,204,201,222,156,243,213,94,33,163,61,8,206,249,37,116,57,74,97,38,98,157,136,8,8,58,80,150,160,195,199,196,181,116,185,85,110,248,215,152,211,207,168,41,60,203,5,86,141,59,163,78,219,9,213,111,185,55,120,19,233,160,140,202,218,220,242,107,140,113,118,132,7,69,53,214,70,230,137,184,171,129,43,48,107,81,80,73,247,0,177,229,219,121,160,33,36,191,50,11,87,222,33,182,77,167,63,136,123,248,241,74,182,24,11,174,247,239,125,99,202,207,255,128,35,52,165,160,149,249,75,250,81,105,43,241,150,173,198,3,252,180,149,96,0,111,180,34,118,196,43,123,93,132,160,96,250,100,217,45,160,32,39,96,173,133,195,109,50,97,77,73,185,128,89,4,150,255,132,58,164,43,120,193,117,186,32,133,65,91,116,162,173,160,98,239,63,98,146,213,134,176,5,254,159,193,14,251,162,124,237,62,243,94,97,73,108,47,3,76,184,133,162,93,214,124,160,24,110,66,31,239,73,37,228,27,69,165,214,234,132,223,109,118,39,20,166,141,25,228,24,156,85,122,60,112,195,235,154,160,124,4,254,255,41,243,241,33,206,19,170,136,141,252,149,202,221,147,172,85,213,237,197,110,71,174,111,101,127,85,205,59,160,23,49,65,202,234,196,28,65,205,115,198,37,246,143,124,72,166,37,205,232,162,25,22,39,127,188,14,26,18,214,240,152,160,51,21,215,92,255,202,104,15,118,167,53,140,39,4,142,82,127,133,147,230,204,253,47,54,99,23,226,78,113,129,89,185,160,239,123,251,65,188,11,107,22,9,46,42,104,47,193,60,78,205,118,242,12,136,145,137,46,214,157,184,26,255,37,206,38,160,179,163,103,185,250,53,96,32,14,9,248,46,117,61,151,70,245,116,155,44,163,22,115,1,102,242,244,157,45,81,102,14,160,120,51,181,75,204,140,26,229,78,145,104,6,122,193,149,189,178,100,84,118,214,32,148,10,91,248,41,39,153,51,148,250,160,152,64,28,199,229,115,92,129,39,229,199,166,105,168,252,23,227,109,56,225,3,255,171,233,92,155,115,43,225,156,231,35,160,79,205,115,234,146,184,235,250,60,154,252,244,30,28,214,37,12,114,43,159,140,167,245,162,159,65,188,1,113,43,38,143,128],[249,2,17,160,1,140,240,73,75,204,201,222,156,243,213,94,33,163,61,8,206,249,37,116,57,74,97,38,98,157,136,8,8,58,80,150,160,195,199,196,181,116,185,85,110,248,215,152,211,207,168,41,60,203,5,86,141,59,163,78,219,9,213,111,185,55,120,19,233,160,140,202,218,220,242,107,140,113,118,132,7,69,53,214,70,230,137,184,171,129,43,48,107,81,80,73,247,0,177,229,219,121,160,224,226,228,152,49,191,94,18,202,42,40,43,44,135,217,234,139,112,115,185,228,196,213,42,168,79,181,143,79,201,143,96,160,149,249,75,250,81,105,43,241,150,173,198,3,252,180,149,96,0,111,180,34,118,196,43,123,93,132,160,96,250,100,217,45,160,32,39,96,173,133,195,109,50,97,77,73,185,128,89,4,150,255,132,58,164,43,120,193,117,186,32,133,65,91,116,162,173,160,98,239,63,98,146,213,134,176,5,254,159,193,14,251,162,124,237,62,243,94,97,73,108,47,3,76,184,133,162,93,214,124,160,24,110,66,31,239,73,37,228,27,69,165,214,234,132,223,109,118,39,20,166,141,25,228,24,156,85,122,60,112,195,235,154,160,124,4,254,255,41,243,241,33,206,19,170,136,141,252,149,202,221,147,172,85,213,237,197,110,71,174,111,101,127,85,205,59,160,23,49,65,202,234,196,28,65,205,115,198,37,246,143,124,72,166,37,205,232,162,25,22,39,127,188,14,26,18,214,240,152,160,51,21,215,92,255,202,104,15,118,167,53,140,39,4,142,82,127,133,147,230,204,253,47,54,99,23,226,78,113,129,89,185,160,239,123,251,65,188,11,107,22,9,46,42,104,47,193,60,78,205,118,242,12,136,145,137,46,214,157,184,26,255,37,206,38,160,179,163,103,185,250,53,96,32,14,9,248,46,117,61,151,70,245,116,155,44,163,22,115,1,102,242,244,157,45,81,102,14,160,120,51,181,75,204,140,26,229,78,145,104,6,122,193,149,189,178,100,84,118,214,32,148,10,91,248,41,39,153,51,148,250,160,152,64,28,199,229,115,92,129,39,229,199,166,105,168,252,23,227,109,56,225,3,255,171,233,92,155,115,43,225,156,231,35,160,79,205,115,234,146,184,235,250,60,154,252,244,30,28,214,37,12,114,43,159,140,167,245,162,159,65,188,1,113,43,38,143,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,46,144,237,143,190,109,159,205,233,64,197,103,36,172,203,35,39,122,25,184,212,193,136,197,175,120,207,44,140,182,105,222,0],[160,245,105,73,55,130,156,85,160,31,141,126,218,15,74,121,147,147,14,234,12,31,2,207,74,132,213,9,173,180,149,183,107,0],[160,221,130,180,81,176,155,200,100,168,4,254,92,101,171,36,147,95,202,31,177,191,39,28,78,15,253,236,77,124,115,149,137,0],[160,8,37,3,52,123,198,42,148,211,79,179,98,105,89,161,130,151,2,137,5,198,34,114,85,180,47,176,126,179,111,60,206,0],[160,232,217,161,8,22,169,40,66,131,228,203,23,191,255,11,201,101,138,145,67,49,60,150,125,179,56,59,152,181,26,174,138,0],[160,52,5,132,223,20,125,125,152,77,21,29,239,159,211,65,174,156,121,107,233,188,67,44,242,54,70,100,18,159,243,207,206,0],[160,224,250,15,5,72,187,58,246,78,193,251,188,67,94,94,63,151,23,215,194,99,44,14,23,45,34,254,220,3,94,41,58,0],[160,6,105,60,12,5,193,169,245,176,112,146,23,69,42,0,33,177,13,230,213,165,102,152,203,58,175,135,4,16,128,172,8,0],[160,151,152,86,204,166,248,67,223,250,77,31,100,237,11,43,191,90,23,20,54,199,92,11,215,145,50,87,90,167,159,57,165,0],[160,1,232,26,222,47,23,75,176,90,187,251,204,93,173,132,158,36,225,142,226,147,28,202,173,168,228,182,229,123,127,49,117,0],[160,247,78,159,238,239,170,53,113,45,18,48,98,112,234,117,104,97,108,138,230,14,76,168,84,236,172,64,67,208,57,6,73,0],[160,46,68,248,146,220,227,97,0,41,252,210,9,44,117,251,227,165,196,13,189,174,150,34,139,203,17,200,40,245,122,167,206,0],[160,26,216,79,208,48,103,203,251,178,213,93,58,82,104,200,119,234,228,233,252,208,91,195,35,224,229,183,69,89,175,14,229,0],[160,246,209,205,0,213,119,26,186,142,93,94,61,153,28,165,149,49,176,155,119,213,241,208,245,15,163,38,131,125,219,108,170,0],[160,89,143,190,130,47,255,40,170,85,219,138,46,139,251,126,68,17,241,5,216,204,86,127,71,120,116,170,149,237,137,28,227,0],[160,79,246,250,96,218,39,3,222,92,140,84,169,44,51,184,140,136,139,201,154,119,208,207,98,29,112,62,108,254,3,142,180,0],[160,130,179,74,86,218,213,192,18,132,24,134,63,237,50,86,187,20,97,174,221,173,83,84,97,186,105,52,78,209,101,251,138,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,245,105,73,55,130,156,85,160,31,141,126,218,15,74,121,147,147,14,234,12,31,2,207,74,132,213,9,173,180,149,183,107,160,221,130,180,81,176,155,200,100,168,4,254,92,101,171,36,147,95,202,31,177,191,39,28,78,15,253,236,77,124,115,149,137,160,8,37,3,52,123,198,42,148,211,79,179,98,105,89,161,130,151,2,137,5,198,34,114,85,180,47,176,126,179,111,60,206,160,232,217,161,8,22,169,40,66,131,228,203,23,191,255,11,201,101,138,145,67,49,60,150,125,179,56,59,152,181,26,174,138,160,52,5,132,223,20,125,125,152,77,21,29,239,159,211,65,174,156,121,107,233,188,67,44,242,54,70,100,18,159,243,207,206,160,224,250,15,5,72,187,58,246,78,193,251,188,67,94,94,63,151,23,215,194,99,44,14,23,45,34,254,220,3,94,41,58,160,6,105,60,12,5,193,169,245,176,112,146,23,69,42,0,33,177,13,230,213,165,102,152,203,58,175,135,4,16,128,172,8,160,151,152,86,204,166,248,67,223,250,77,31,100,237,11,43,191,90,23,20,54,199,92,11,215,145,50,87,90,167,159,57,165,160,1,232,26,222,47,23,75,176,90,187,251,204,93,173,132,158,36,225,142,226,147,28,202,173,168,228,182,229,123,127,49,117,160,247,78,159,238,239,170,53,113,45,18,48,98,112,234,117,104,97,108,138,230,14,76,168,84,236,172,64,67,208,57,6,73,160,46,68,248,146,220,227,97,0,41,252,210,9,44,117,251,227,165,196,13,189,174,150,34,139,203,17,200,40,245,122,167,206,160,26,216,79,208,48,103,203,251,178,213,93,58,82,104,200,119,234,228,233,252,208,91,195,35,224,229,183,69,89,175,14,229,160,246,209,205,0,213,119,26,186,142,93,94,61,153,28,165,149,49,176,155,119,213,241,208,245,15,163,38,131,125,219,108,170,160,89,143,190,130,47,255,40,170,85,219,138,46,139,251,126,68,17,241,5,216,204,86,127,71,120,116,170,149,237,137,28,227,160,79,246,250,96,218,39,3,222,92,140,84,169,44,51,184,140,136,139,201,154,119,208,207,98,29,112,62,108,254,3,142,180,160,130,179,74,86,218,213,192,18,132,24,134,63,237,50,86,187,20,97,174,221,173,83,84,97,186,105,52,78,209,101,251,138,128],[249,2,17,160,245,105,73,55,130,156,85,160,31,141,126,218,15,74,121,147,147,14,234,12,31,2,207,74,132,213,9,173,180,149,183,107,160,221,130,180,81,176,155,200,100,168,4,254,92,101,171,36,147,95,202,31,177,191,39,28,78,15,253,236,77,124,115,149,137,160,8,37,3,52,123,198,42,148,211,79,179,98,105,89,161,130,151,2,137,5,198,34,114,85,180,47,176,126,179,111,60,206,160,232,217,161,8,22,169,40,66,131,228,203,23,191,255,11,201,101,138,145,67,49,60,150,125,179,56,59,152,181,26,174,138,160,46,144,237,143,190,109,159,205,233,64,197,103,36,172,203,35,39,122,25,184,212,193,136,197,175,120,207,44,140,182,105,222,160,224,250,15,5,72,187,58,246,78,193,251,188,67,94,94,63,151,23,215,194,99,44,14,23,45,34,254,220,3,94,41,58,160,6,105,60,12,5,193,169,245,176,112,146,23,69,42,0,33,177,13,230,213,165,102,152,203,58,175,135,4,16,128,172,8,160,151,152,86,204,166,248,67,223,250,77,31,100,237,11,43,191,90,23,20,54,199,92,11,215,145,50,87,90,167,159,57,165,160,1,232,26,222,47,23,75,176,90,187,251,204,93,173,132,158,36,225,142,226,147,28,202,173,168,228,182,229,123,127,49,117,160,247,78,159,238,239,170,53,113,45,18,48,98,112,234,117,104,97,108,138,230,14,76,168,84,236,172,64,67,208,57,6,73,160,46,68,248,146,220,227,97,0,41,252,210,9,44,117,251,227,165,196,13,189,174,150,34,139,203,17,200,40,245,122,167,206,160,26,216,79,208,48,103,203,251,178,213,93,58,82,104,200,119,234,228,233,252,208,91,195,35,224,229,183,69,89,175,14,229,160,246,209,205,0,213,119,26,186,142,93,94,61,153,28,165,149,49,176,155,119,213,241,208,245,15,163,38,131,125,219,108,170,160,89,143,190,130,47,255,40,170,85,219,138,46,139,251,126,68,17,241,5,216,204,86,127,71,120,116,170,149,237,137,28,227,160,79,246,250,96,218,39,3,222,92,140,84,169,44,51,184,140,136,139,201,154,119,208,207,98,29,112,62,108,254,3,142,180,160,130,179,74,86,218,213,192,18,132,24,134,63,237,50,86,187,20,97,174,221,173,83,84,97,186,105,52,78,209,101,251,138,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[248,241],[248,241]]}},"account":null,"storage":null,"values":[[160,188,253,144,87,144,251,204,78,148,203,12,141,0,77,176,70,67,92,90,100,110,40,255,28,218,97,116,184,26,121,18,49,0],[160,255,151,217,75,103,5,122,115,224,137,233,146,50,189,95,178,178,247,44,237,22,101,231,39,198,40,14,249,60,251,151,15,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,60,79,85,51,115,192,158,157,93,223,211,100,62,94,72,146,251,82,116,111,190,139,246,12,252,146,211,122,66,110,206,20,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,120,190,160,200,253,109,255,226,49,189,87,112,136,160,23,77,119,59,173,185,188,145,251,156,155,144,100,217,100,114,109,106,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,69,72,113,186,79,146,63,86,46,218,1,200,131,76,71,142,217,35,30,209,101,239,91,47,163,221,136,130,249,155,236,112,0],[160,49,65,26,94,193,156,227,78,42,198,56,211,105,254,0,33,31,96,41,208,40,13,215,156,51,173,132,112,34,192,121,49,0],[160,244,154,252,18,232,96,245,36,84,15,253,182,157,226,247,165,106,144,166,1,2,140,228,170,110,87,112,80,140,149,162,43,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,20,103,6,95,163,140,21,238,207,84,226,60,134,0,183,217,11,213,185,123,139,201,37,22,227,234,220,30,160,20,244,115,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,241,160,255,151,217,75,103,5,122,115,224,137,233,146,50,189,95,178,178,247,44,237,22,101,231,39,198,40,14,249,60,251,151,15,128,128,128,128,160,60,79,85,51,115,192,158,157,93,223,211,100,62,94,72,146,251,82,116,111,190,139,246,12,252,146,211,122,66,110,206,20,128,160,120,190,160,200,253,109,255,226,49,189,87,112,136,160,23,77,119,59,173,185,188,145,251,156,155,144,100,217,100,114,109,106,128,160,69,72,113,186,79,146,63,86,46,218,1,200,131,76,71,142,217,35,30,209,101,239,91,47,163,221,136,130,249,155,236,112,160,49,65,26,94,193,156,227,78,42,198,56,211,105,254,0,33,31,96,41,208,40,13,215,156,51,173,132,112,34,192,121,49,160,244,154,252,18,232,96,245,36,84,15,253,182,157,226,247,165,106,144,166,1,2,140,228,170,110,87,112,80,140,149,162,43,128,160,20,103,6,95,163,140,21,238,207,84,226,60,134,0,183,217,11,213,185,123,139,201,37,22,227,234,220,30,160,20,244,115,128,128,128],[248,241,160,188,253,144,87,144,251,204,78,148,203,12,141,0,77,176,70,67,92,90,100,110,40,255,28,218,97,116,184,26,121,18,49,128,128,128,128,160,60,79,85,51,115,192,158,157,93,223,211,100,62,94,72,146,251,82,116,111,190,139,246,12,252,146,211,122,66,110,206,20,128,160,120,190,160,200,253,109,255,226,49,189,87,112,136,160,23,77,119,59,173,185,188,145,251,156,155,144,100,217,100,114,109,106,128,160,69,72,113,186,79,146,63,86,46,218,1,200,131,76,71,142,217,35,30,209,101,239,91,47,163,221,136,130,249,155,236,112,160,49,65,26,94,193,156,227,78,42,198,56,211,105,254,0,33,31,96,41,208,40,13,215,156,51,173,132,112,34,192,121,49,160,244,154,252,18,232,96,245,36,84,15,253,182,157,226,247,165,106,144,166,1,2,140,228,170,110,87,112,80,140,149,162,43,128,160,20,103,6,95,163,140,21,238,207,84,226,60,134,0,183,217,11,213,185,123,139,201,37,22,227,234,220,30,160,20,244,115,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[true,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":7,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,190,214,56,80,83,126,135,17,104,48,181,30,249,223,80,59,155,70,206,67,24,6,82,98,81,246,212,143,253,181,15,180,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,222,45,71,217,199,68,20,55,244,206,68,197,49,191,78,208,106,209,111,87,254,9,221,230,148,86,131,219,7,121,62,140,0],[160,190,214,56,80,83,126,135,17,104,48,181,30,249,223,80,59,155,70,206,67,24,6,82,98,81,246,212,143,253,181,15,180,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,160,222,45,71,217,199,68,20,55,244,206,68,197,49,191,78,208,106,209,111,87,254,9,221,230,148,86,131,219,7,121,62,140,160,190,214,56,80,83,126,135,17,104,48,181,30,249,223,80,59,155,70,206,67,24,6,82,98,81,246,212,143,253,181,15,180,128,128,128,128,128,128,128,128],[248,81,128,128,128,128,128,128,128,160,222,45,71,217,199,68,20,55,244,206,68,197,49,191,78,208,106,209,111,87,254,9,221,230,148,86,131,219,7,121,62,140,160,190,214,56,80,83,126,135,17,104,48,181,30,249,223,80,59,155,70,206,67,24,6,82,98,81,246,212,143,253,181,15,180,128,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33],"key":[252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[248,102],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,55,236,125,29,155,142,209,241,75,145,144,143,254,65,81,209,56,13,192,157,236,195,213,73,132,11,251,149,241,0,0,0,0],[157,32,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,0,0,0,0],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,112,158,181,221,162,20,124,79,184,25,162,13,167,162,146,25,237,242,59,120,184,154,118,137,92,181,187,152,115,82,223,48,0],[160,7,190,1,231,231,32,111,227,30,206,233,26,215,93,173,166,90,214,186,67,58,230,71,161,185,51,4,105,247,198,103,124,0],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,112,158,181,221,162,20,124,79,184,25,162,13,167,162,146,25,237,242,59,120,184,154,118,137,92,181,187,152,115,82,223,48,0],[160,7,190,1,231,231,32,111,227,30,206,233,26,215,93,173,166,90,214,186,67,58,230,71,161,185,51,4,105,247,198,103,124,0],[157,32,236,125,29,155,142,209,241,75,145,144,143,254,65,81,209,56,13,192,157,236,195,213,73,132,11,251,149,241,0,0,0,0],[157,32,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,0,0,0,0]],"keccak_data":[[248,102,157,55,236,125,29,155,142,209,241,75,145,144,143,254,65,81,209,56,13,192,157,236,195,213,73,132,11,251,149,241,184,70,248,68,1,128,160,112,158,181,221,162,20,124,79,184,25,162,13,167,162,146,25,237,242,59,120,184,154,118,137,92,181,187,152,115,82,223,48,160,7,190,1,231,231,32,111,227,30,206,233,26,215,93,173,166,90,214,186,67,58,230,71,161,185,51,4,105,247,198,103,124],[248,102,157,32,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,184,70,248,68,1,23,160,112,158,181,221,162,20,124,79,184,25,162,13,167,162,146,25,237,242,59,120,184,154,118,137,92,181,187,152,115,82,223,48,160,7,190,1,231,231,32,111,227,30,206,233,26,215,93,173,166,90,214,186,67,58,230,71,161,185,51,4,105,247,198,103,124],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33],[248,102,157,32,236,125,29,155,142,209,241,75,145,144,143,254,65,81,209,56,13,192,157,236,195,213,73,132,11,251,149,241,184,70,248,68,1,128,160,112,158,181,221,162,20,124,79,184,25,162,13,167,162,146,25,237,242,59,120,184,154,118,137,92,181,187,152,115,82,223,48,160,7,190,1,231,231,32,111,227,30,206,233,26,215,93,173,166,90,214,186,67,58,230,71,161,185,51,4,105,247,198,103,124]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/AccountAddPlaceholderExtension.json b/zkevm-circuits/src/mpt_circuit/tests/AccountAddPlaceholderExtension.json new file mode 100644 index 0000000000..f406733d0d --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/AccountAddPlaceholderExtension.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"BalanceChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,92,69,153,141,251,249,206,112,188,187,128,87,78,215,166,34,146,45,44,119,94,10,35,49,254,90,139,141,204,153,244,144,0],[160,125,24,72,139,179,78,113,251,49,243,102,147,31,42,67,250,44,213,59,218,72,77,153,183,213,188,44,45,1,156,32,62,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,33,86,207,251,249,54,61,45,14,203,130,123,173,169,33,142,253,48,160,107,48,136,239,242,207,127,107,234,17,170,154,48,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,33,86,207,251,249,54,61,45,14,203,130,123,173,169,33,142,253,48,160,107,48,136,239,242,207,127,107,234,17,170,154,48,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,8,32,168,185,96,186,98,234,72,21,154,180,218,44,26,211,165,226,106,254,62,148,43,186,184,137,142,218,242,85,225,183,0],[160,185,24,42,236,120,203,57,72,34,231,31,111,46,73,180,72,115,152,175,255,156,53,78,172,173,4,231,26,202,112,189,160,0],[160,193,31,60,30,128,7,103,75,249,112,82,221,20,124,38,229,246,122,89,71,38,21,74,219,252,240,239,97,192,33,13,4,0],[160,84,77,171,102,153,149,40,61,1,157,20,166,217,8,116,25,213,188,181,94,1,128,252,249,222,234,76,79,51,162,147,91,0],[160,44,4,93,209,145,172,111,91,99,34,141,140,10,131,197,94,172,200,9,166,224,237,220,180,19,164,93,221,156,142,251,144,0],[160,40,196,24,163,194,231,72,196,129,42,142,40,190,213,192,64,86,108,150,109,107,52,154,72,112,69,34,184,238,85,67,215,0],[160,71,161,12,216,119,232,250,223,53,164,214,25,144,201,187,84,129,245,139,177,212,51,68,168,111,88,153,232,109,43,209,145,0],[160,174,66,37,96,21,75,84,60,152,43,98,146,99,220,26,63,78,74,201,11,255,111,218,46,32,74,218,227,127,63,58,171,0],[160,81,118,161,250,61,85,176,208,85,23,154,95,243,161,43,137,207,17,20,17,52,145,40,40,185,242,11,204,38,254,233,228,0],[160,171,53,133,13,45,191,38,40,138,35,70,210,171,108,202,133,21,131,212,123,127,110,163,50,166,156,32,61,9,8,30,187,0],[160,98,240,222,26,107,15,123,248,48,13,231,106,195,126,79,92,223,191,213,157,220,37,245,169,160,5,22,166,15,74,247,227,0],[160,211,121,158,196,1,96,79,43,64,156,31,232,214,155,249,26,46,101,14,235,103,10,62,195,4,176,13,100,236,72,114,144,0],[160,109,33,43,178,90,242,93,172,197,115,100,180,124,141,156,115,8,254,213,188,147,149,247,149,165,82,106,85,244,101,153,90,0],[160,162,144,194,196,152,226,214,73,89,236,36,238,84,203,162,78,190,13,180,75,248,234,56,229,26,113,145,230,203,72,24,225,0],[160,150,135,54,87,155,174,174,15,109,193,30,49,16,222,170,148,46,133,74,178,107,201,131,6,92,76,56,184,46,111,102,55,0],[160,86,146,97,160,222,105,216,21,80,56,20,146,200,16,229,35,161,175,121,97,137,102,29,0,145,135,46,20,21,79,90,217,0],[160,208,122,174,169,46,136,84,33,192,0,127,106,220,4,143,94,102,1,50,21,59,73,106,200,104,92,137,135,65,11,138,232,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,185,24,42,236,120,203,57,72,34,231,31,111,46,73,180,72,115,152,175,255,156,53,78,172,173,4,231,26,202,112,189,160,160,193,31,60,30,128,7,103,75,249,112,82,221,20,124,38,229,246,122,89,71,38,21,74,219,252,240,239,97,192,33,13,4,160,84,77,171,102,153,149,40,61,1,157,20,166,217,8,116,25,213,188,181,94,1,128,252,249,222,234,76,79,51,162,147,91,160,44,4,93,209,145,172,111,91,99,34,141,140,10,131,197,94,172,200,9,166,224,237,220,180,19,164,93,221,156,142,251,144,160,40,196,24,163,194,231,72,196,129,42,142,40,190,213,192,64,86,108,150,109,107,52,154,72,112,69,34,184,238,85,67,215,160,71,161,12,216,119,232,250,223,53,164,214,25,144,201,187,84,129,245,139,177,212,51,68,168,111,88,153,232,109,43,209,145,160,174,66,37,96,21,75,84,60,152,43,98,146,99,220,26,63,78,74,201,11,255,111,218,46,32,74,218,227,127,63,58,171,160,81,118,161,250,61,85,176,208,85,23,154,95,243,161,43,137,207,17,20,17,52,145,40,40,185,242,11,204,38,254,233,228,160,171,53,133,13,45,191,38,40,138,35,70,210,171,108,202,133,21,131,212,123,127,110,163,50,166,156,32,61,9,8,30,187,160,98,240,222,26,107,15,123,248,48,13,231,106,195,126,79,92,223,191,213,157,220,37,245,169,160,5,22,166,15,74,247,227,160,211,121,158,196,1,96,79,43,64,156,31,232,214,155,249,26,46,101,14,235,103,10,62,195,4,176,13,100,236,72,114,144,160,109,33,43,178,90,242,93,172,197,115,100,180,124,141,156,115,8,254,213,188,147,149,247,149,165,82,106,85,244,101,153,90,160,162,144,194,196,152,226,214,73,89,236,36,238,84,203,162,78,190,13,180,75,248,234,56,229,26,113,145,230,203,72,24,225,160,150,135,54,87,155,174,174,15,109,193,30,49,16,222,170,148,46,133,74,178,107,201,131,6,92,76,56,184,46,111,102,55,160,86,146,97,160,222,105,216,21,80,56,20,146,200,16,229,35,161,175,121,97,137,102,29,0,145,135,46,20,21,79,90,217,160,208,122,174,169,46,136,84,33,192,0,127,106,220,4,143,94,102,1,50,21,59,73,106,200,104,92,137,135,65,11,138,232,128],[249,2,17,160,185,24,42,236,120,203,57,72,34,231,31,111,46,73,180,72,115,152,175,255,156,53,78,172,173,4,231,26,202,112,189,160,160,193,31,60,30,128,7,103,75,249,112,82,221,20,124,38,229,246,122,89,71,38,21,74,219,252,240,239,97,192,33,13,4,160,84,77,171,102,153,149,40,61,1,157,20,166,217,8,116,25,213,188,181,94,1,128,252,249,222,234,76,79,51,162,147,91,160,44,4,93,209,145,172,111,91,99,34,141,140,10,131,197,94,172,200,9,166,224,237,220,180,19,164,93,221,156,142,251,144,160,40,196,24,163,194,231,72,196,129,42,142,40,190,213,192,64,86,108,150,109,107,52,154,72,112,69,34,184,238,85,67,215,160,71,161,12,216,119,232,250,223,53,164,214,25,144,201,187,84,129,245,139,177,212,51,68,168,111,88,153,232,109,43,209,145,160,174,66,37,96,21,75,84,60,152,43,98,146,99,220,26,63,78,74,201,11,255,111,218,46,32,74,218,227,127,63,58,171,160,81,118,161,250,61,85,176,208,85,23,154,95,243,161,43,137,207,17,20,17,52,145,40,40,185,242,11,204,38,254,233,228,160,171,53,133,13,45,191,38,40,138,35,70,210,171,108,202,133,21,131,212,123,127,110,163,50,166,156,32,61,9,8,30,187,160,98,240,222,26,107,15,123,248,48,13,231,106,195,126,79,92,223,191,213,157,220,37,245,169,160,5,22,166,15,74,247,227,160,211,121,158,196,1,96,79,43,64,156,31,232,214,155,249,26,46,101,14,235,103,10,62,195,4,176,13,100,236,72,114,144,160,109,33,43,178,90,242,93,172,197,115,100,180,124,141,156,115,8,254,213,188,147,149,247,149,165,82,106,85,244,101,153,90,160,8,32,168,185,96,186,98,234,72,21,154,180,218,44,26,211,165,226,106,254,62,148,43,186,184,137,142,218,242,85,225,183,160,150,135,54,87,155,174,174,15,109,193,30,49,16,222,170,148,46,133,74,178,107,201,131,6,92,76,56,184,46,111,102,55,160,86,146,97,160,222,105,216,21,80,56,20,146,200,16,229,35,161,175,121,97,137,102,29,0,145,135,46,20,21,79,90,217,160,208,122,174,169,46,136,84,33,192,0,127,106,220,4,143,94,102,1,50,21,59,73,106,200,104,92,137,135,65,11,138,232,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,36,15,27,226,15,203,214,96,248,149,81,209,21,202,220,198,174,231,203,157,179,254,189,152,107,212,48,130,14,51,119,75,0],[160,84,125,101,84,59,83,119,189,159,192,188,231,231,244,86,85,86,131,98,75,61,47,49,244,74,248,245,146,244,80,18,53,0],[160,15,142,57,107,155,212,47,124,149,253,212,186,24,96,29,200,59,44,83,47,86,174,146,61,15,30,228,204,16,180,41,73,0],[160,4,11,213,136,98,93,71,167,88,7,244,137,134,178,33,135,55,167,87,9,161,105,132,173,99,133,195,204,137,99,213,96,0],[160,42,37,73,206,76,185,144,171,152,234,4,233,81,43,95,25,193,73,195,237,233,226,6,53,195,164,161,135,88,181,94,129,0],[160,149,206,117,218,219,73,231,191,71,129,32,62,24,176,236,201,214,57,32,246,165,182,97,100,41,58,12,226,18,76,98,52,0],[160,164,126,235,52,47,81,125,199,131,108,95,228,61,243,53,100,132,37,251,215,132,73,32,24,163,150,9,252,131,133,170,149,0],[160,106,216,21,135,125,74,67,242,82,137,122,130,130,164,224,106,112,167,123,76,61,118,71,52,173,133,220,82,214,189,19,198,0],[160,242,20,154,172,98,175,80,232,148,10,234,150,21,84,158,171,52,138,196,46,251,154,188,188,221,127,227,244,121,129,143,252,0],[160,229,184,239,35,202,217,87,20,223,56,107,25,99,14,127,149,227,51,66,1,179,231,12,190,178,85,104,177,67,83,252,99,0],[160,221,176,88,124,182,116,91,144,126,1,162,123,174,103,190,3,46,235,241,155,7,208,37,30,134,161,162,70,21,69,227,61,0],[160,195,58,237,166,44,35,245,54,101,165,121,224,187,108,35,126,92,173,37,149,178,117,186,47,52,180,162,147,202,153,119,73,0],[160,204,163,223,176,213,222,185,250,251,248,162,206,155,236,125,190,135,137,123,103,90,240,174,102,254,224,21,179,172,12,156,36,0],[160,146,129,80,195,19,81,79,161,90,222,24,229,255,113,147,210,230,15,9,47,245,136,171,172,60,106,11,217,36,71,6,185,0],[160,7,36,138,185,104,2,204,131,50,7,46,89,92,85,35,158,207,198,186,249,17,8,215,228,142,131,181,171,35,36,176,191,0],[160,90,25,212,35,84,39,162,253,40,188,128,141,31,177,49,221,18,91,118,136,182,50,82,11,184,230,139,18,197,94,80,127,0],[160,99,148,228,211,110,43,255,97,207,243,218,168,160,132,145,182,64,43,67,101,49,149,197,154,168,2,83,35,54,141,223,255,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,84,125,101,84,59,83,119,189,159,192,188,231,231,244,86,85,86,131,98,75,61,47,49,244,74,248,245,146,244,80,18,53,160,15,142,57,107,155,212,47,124,149,253,212,186,24,96,29,200,59,44,83,47,86,174,146,61,15,30,228,204,16,180,41,73,160,4,11,213,136,98,93,71,167,88,7,244,137,134,178,33,135,55,167,87,9,161,105,132,173,99,133,195,204,137,99,213,96,160,42,37,73,206,76,185,144,171,152,234,4,233,81,43,95,25,193,73,195,237,233,226,6,53,195,164,161,135,88,181,94,129,160,149,206,117,218,219,73,231,191,71,129,32,62,24,176,236,201,214,57,32,246,165,182,97,100,41,58,12,226,18,76,98,52,160,164,126,235,52,47,81,125,199,131,108,95,228,61,243,53,100,132,37,251,215,132,73,32,24,163,150,9,252,131,133,170,149,160,106,216,21,135,125,74,67,242,82,137,122,130,130,164,224,106,112,167,123,76,61,118,71,52,173,133,220,82,214,189,19,198,160,242,20,154,172,98,175,80,232,148,10,234,150,21,84,158,171,52,138,196,46,251,154,188,188,221,127,227,244,121,129,143,252,160,229,184,239,35,202,217,87,20,223,56,107,25,99,14,127,149,227,51,66,1,179,231,12,190,178,85,104,177,67,83,252,99,160,221,176,88,124,182,116,91,144,126,1,162,123,174,103,190,3,46,235,241,155,7,208,37,30,134,161,162,70,21,69,227,61,160,195,58,237,166,44,35,245,54,101,165,121,224,187,108,35,126,92,173,37,149,178,117,186,47,52,180,162,147,202,153,119,73,160,204,163,223,176,213,222,185,250,251,248,162,206,155,236,125,190,135,137,123,103,90,240,174,102,254,224,21,179,172,12,156,36,160,146,129,80,195,19,81,79,161,90,222,24,229,255,113,147,210,230,15,9,47,245,136,171,172,60,106,11,217,36,71,6,185,160,7,36,138,185,104,2,204,131,50,7,46,89,92,85,35,158,207,198,186,249,17,8,215,228,142,131,181,171,35,36,176,191,160,90,25,212,35,84,39,162,253,40,188,128,141,31,177,49,221,18,91,118,136,182,50,82,11,184,230,139,18,197,94,80,127,160,99,148,228,211,110,43,255,97,207,243,218,168,160,132,145,182,64,43,67,101,49,149,197,154,168,2,83,35,54,141,223,255,128],[249,2,17,160,84,125,101,84,59,83,119,189,159,192,188,231,231,244,86,85,86,131,98,75,61,47,49,244,74,248,245,146,244,80,18,53,160,15,142,57,107,155,212,47,124,149,253,212,186,24,96,29,200,59,44,83,47,86,174,146,61,15,30,228,204,16,180,41,73,160,4,11,213,136,98,93,71,167,88,7,244,137,134,178,33,135,55,167,87,9,161,105,132,173,99,133,195,204,137,99,213,96,160,42,37,73,206,76,185,144,171,152,234,4,233,81,43,95,25,193,73,195,237,233,226,6,53,195,164,161,135,88,181,94,129,160,149,206,117,218,219,73,231,191,71,129,32,62,24,176,236,201,214,57,32,246,165,182,97,100,41,58,12,226,18,76,98,52,160,164,126,235,52,47,81,125,199,131,108,95,228,61,243,53,100,132,37,251,215,132,73,32,24,163,150,9,252,131,133,170,149,160,106,216,21,135,125,74,67,242,82,137,122,130,130,164,224,106,112,167,123,76,61,118,71,52,173,133,220,82,214,189,19,198,160,242,20,154,172,98,175,80,232,148,10,234,150,21,84,158,171,52,138,196,46,251,154,188,188,221,127,227,244,121,129,143,252,160,229,184,239,35,202,217,87,20,223,56,107,25,99,14,127,149,227,51,66,1,179,231,12,190,178,85,104,177,67,83,252,99,160,221,176,88,124,182,116,91,144,126,1,162,123,174,103,190,3,46,235,241,155,7,208,37,30,134,161,162,70,21,69,227,61,160,195,58,237,166,44,35,245,54,101,165,121,224,187,108,35,126,92,173,37,149,178,117,186,47,52,180,162,147,202,153,119,73,160,204,163,223,176,213,222,185,250,251,248,162,206,155,236,125,190,135,137,123,103,90,240,174,102,254,224,21,179,172,12,156,36,160,146,129,80,195,19,81,79,161,90,222,24,229,255,113,147,210,230,15,9,47,245,136,171,172,60,106,11,217,36,71,6,185,160,7,36,138,185,104,2,204,131,50,7,46,89,92,85,35,158,207,198,186,249,17,8,215,228,142,131,181,171,35,36,176,191,160,36,15,27,226,15,203,214,96,248,149,81,209,21,202,220,198,174,231,203,157,179,254,189,152,107,212,48,130,14,51,119,75,160,99,148,228,211,110,43,255,97,207,243,218,168,160,132,145,182,64,43,67,101,49,149,197,154,168,2,83,35,54,141,223,255,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,78,22,202,86,77,193,52,208,44,34,36,82,146,253,62,243,23,120,222,192,152,58,76,61,236,113,9,184,102,40,130,236,0],[160,156,188,105,114,31,36,154,123,142,102,154,217,22,169,233,100,95,123,35,157,242,39,167,198,172,227,78,245,125,116,108,134,0],[160,8,45,240,236,178,161,107,136,206,107,28,210,5,163,63,41,0,163,130,48,28,117,48,53,45,199,57,81,116,195,156,237,0],[160,64,67,82,129,153,106,178,221,66,207,112,86,116,198,17,108,53,73,133,11,175,15,167,217,149,21,88,140,90,191,115,59,0],[160,170,37,18,193,39,10,191,16,144,37,64,173,30,24,5,237,185,251,50,150,88,214,200,52,188,187,29,84,65,115,151,140,0],[160,102,79,217,10,154,173,100,22,201,108,182,73,110,174,11,115,154,182,174,92,61,172,0,197,98,6,207,135,97,248,44,194,0],[160,104,16,219,134,193,188,170,105,162,255,46,238,185,3,34,30,227,107,254,154,26,43,88,147,146,8,202,185,31,184,179,75,0],[160,236,108,71,137,91,167,166,221,153,200,91,234,136,127,42,127,40,133,54,58,7,88,215,100,48,243,34,103,85,102,0,223,0],[160,186,2,4,233,111,235,213,181,122,51,187,216,216,109,198,63,177,71,41,77,14,113,229,48,225,244,86,152,34,250,93,52,0],[160,104,224,29,88,241,157,149,1,169,44,54,82,82,94,220,172,89,223,70,156,137,178,201,20,7,125,31,58,222,1,222,146,0],[160,201,140,242,11,19,30,249,130,12,47,191,119,144,252,197,85,190,122,191,166,96,216,15,149,28,45,179,85,82,173,200,207,0],[160,202,86,82,133,140,211,123,172,12,253,197,67,123,194,78,7,56,30,224,170,48,158,77,194,31,120,255,129,39,63,108,202,0],[160,47,203,156,139,56,59,194,78,115,157,254,43,228,108,219,92,182,204,251,18,10,226,28,36,242,105,144,141,59,39,91,140,0],[160,118,251,93,74,40,192,248,227,5,125,210,24,61,79,179,51,87,60,54,215,160,225,115,39,4,38,112,66,79,106,174,199,0],[160,227,7,250,203,142,64,16,40,62,150,21,89,252,53,215,183,103,192,255,51,72,137,23,75,39,17,162,208,162,156,0,209,0],[160,240,17,72,244,123,154,10,145,137,31,238,48,188,114,63,5,209,253,213,50,59,51,54,118,170,219,102,168,220,145,32,247,0],[160,93,44,140,192,77,218,99,152,11,165,43,89,93,226,231,69,237,164,194,217,244,25,119,180,144,1,50,91,192,217,71,87,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,156,188,105,114,31,36,154,123,142,102,154,217,22,169,233,100,95,123,35,157,242,39,167,198,172,227,78,245,125,116,108,134,160,8,45,240,236,178,161,107,136,206,107,28,210,5,163,63,41,0,163,130,48,28,117,48,53,45,199,57,81,116,195,156,237,160,64,67,82,129,153,106,178,221,66,207,112,86,116,198,17,108,53,73,133,11,175,15,167,217,149,21,88,140,90,191,115,59,160,170,37,18,193,39,10,191,16,144,37,64,173,30,24,5,237,185,251,50,150,88,214,200,52,188,187,29,84,65,115,151,140,160,102,79,217,10,154,173,100,22,201,108,182,73,110,174,11,115,154,182,174,92,61,172,0,197,98,6,207,135,97,248,44,194,160,104,16,219,134,193,188,170,105,162,255,46,238,185,3,34,30,227,107,254,154,26,43,88,147,146,8,202,185,31,184,179,75,160,236,108,71,137,91,167,166,221,153,200,91,234,136,127,42,127,40,133,54,58,7,88,215,100,48,243,34,103,85,102,0,223,160,186,2,4,233,111,235,213,181,122,51,187,216,216,109,198,63,177,71,41,77,14,113,229,48,225,244,86,152,34,250,93,52,160,104,224,29,88,241,157,149,1,169,44,54,82,82,94,220,172,89,223,70,156,137,178,201,20,7,125,31,58,222,1,222,146,160,201,140,242,11,19,30,249,130,12,47,191,119,144,252,197,85,190,122,191,166,96,216,15,149,28,45,179,85,82,173,200,207,160,202,86,82,133,140,211,123,172,12,253,197,67,123,194,78,7,56,30,224,170,48,158,77,194,31,120,255,129,39,63,108,202,160,47,203,156,139,56,59,194,78,115,157,254,43,228,108,219,92,182,204,251,18,10,226,28,36,242,105,144,141,59,39,91,140,160,118,251,93,74,40,192,248,227,5,125,210,24,61,79,179,51,87,60,54,215,160,225,115,39,4,38,112,66,79,106,174,199,160,227,7,250,203,142,64,16,40,62,150,21,89,252,53,215,183,103,192,255,51,72,137,23,75,39,17,162,208,162,156,0,209,160,240,17,72,244,123,154,10,145,137,31,238,48,188,114,63,5,209,253,213,50,59,51,54,118,170,219,102,168,220,145,32,247,160,93,44,140,192,77,218,99,152,11,165,43,89,93,226,231,69,237,164,194,217,244,25,119,180,144,1,50,91,192,217,71,87,128],[249,2,17,160,156,188,105,114,31,36,154,123,142,102,154,217,22,169,233,100,95,123,35,157,242,39,167,198,172,227,78,245,125,116,108,134,160,8,45,240,236,178,161,107,136,206,107,28,210,5,163,63,41,0,163,130,48,28,117,48,53,45,199,57,81,116,195,156,237,160,64,67,82,129,153,106,178,221,66,207,112,86,116,198,17,108,53,73,133,11,175,15,167,217,149,21,88,140,90,191,115,59,160,170,37,18,193,39,10,191,16,144,37,64,173,30,24,5,237,185,251,50,150,88,214,200,52,188,187,29,84,65,115,151,140,160,78,22,202,86,77,193,52,208,44,34,36,82,146,253,62,243,23,120,222,192,152,58,76,61,236,113,9,184,102,40,130,236,160,104,16,219,134,193,188,170,105,162,255,46,238,185,3,34,30,227,107,254,154,26,43,88,147,146,8,202,185,31,184,179,75,160,236,108,71,137,91,167,166,221,153,200,91,234,136,127,42,127,40,133,54,58,7,88,215,100,48,243,34,103,85,102,0,223,160,186,2,4,233,111,235,213,181,122,51,187,216,216,109,198,63,177,71,41,77,14,113,229,48,225,244,86,152,34,250,93,52,160,104,224,29,88,241,157,149,1,169,44,54,82,82,94,220,172,89,223,70,156,137,178,201,20,7,125,31,58,222,1,222,146,160,201,140,242,11,19,30,249,130,12,47,191,119,144,252,197,85,190,122,191,166,96,216,15,149,28,45,179,85,82,173,200,207,160,202,86,82,133,140,211,123,172,12,253,197,67,123,194,78,7,56,30,224,170,48,158,77,194,31,120,255,129,39,63,108,202,160,47,203,156,139,56,59,194,78,115,157,254,43,228,108,219,92,182,204,251,18,10,226,28,36,242,105,144,141,59,39,91,140,160,118,251,93,74,40,192,248,227,5,125,210,24,61,79,179,51,87,60,54,215,160,225,115,39,4,38,112,66,79,106,174,199,160,227,7,250,203,142,64,16,40,62,150,21,89,252,53,215,183,103,192,255,51,72,137,23,75,39,17,162,208,162,156,0,209,160,240,17,72,244,123,154,10,145,137,31,238,48,188,114,63,5,209,253,213,50,59,51,54,118,170,219,102,168,220,145,32,247,160,93,44,140,192,77,218,99,152,11,165,43,89,93,226,231,69,237,164,194,217,244,25,119,180,144,1,50,91,192,217,71,87,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":6,"drifted_index":6,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,252,51,245,30,149,176,126,4,83,171,104,95,222,18,35,68,83,18,28,30,163,31,237,213,18,94,64,59,210,200,33,4,0],[160,232,191,153,154,181,58,206,81,231,209,209,239,36,133,221,157,153,42,68,174,20,69,221,60,11,63,166,31,237,237,104,162,0],[160,57,228,194,98,47,19,97,133,100,169,2,0,243,214,13,73,186,52,15,117,71,216,18,107,102,15,16,111,86,250,50,251,0],[160,51,250,142,196,40,119,29,225,6,141,231,106,64,7,57,115,110,177,160,25,74,86,178,98,92,55,43,84,38,108,149,114,0],[160,188,17,187,239,92,176,201,136,24,53,252,251,177,159,15,74,114,158,187,40,157,163,92,149,77,183,194,85,161,209,131,189,0],[160,95,24,164,82,11,196,142,109,130,78,42,15,66,95,149,217,148,254,124,255,123,38,6,201,175,159,70,55,78,36,64,222,0],[160,253,133,23,137,243,61,14,118,41,90,234,0,23,170,246,8,217,98,31,146,149,133,151,98,41,36,143,17,217,13,54,225,0],[160,90,240,3,188,209,42,201,105,79,245,174,51,212,208,183,239,14,87,46,183,132,243,226,101,221,59,249,98,238,38,30,200,0],[160,218,79,4,19,117,120,255,76,227,129,57,190,233,72,210,104,202,172,77,110,166,99,134,239,219,54,231,204,208,217,184,193,0],[160,28,43,54,96,106,42,56,44,206,73,74,22,167,224,233,125,88,222,3,114,91,198,179,0,14,184,180,31,113,164,130,150,0],[160,93,170,254,86,166,255,153,188,72,120,14,11,156,181,35,136,31,176,118,165,26,245,91,196,116,167,82,73,239,192,67,198,0],[160,113,106,91,157,43,225,158,83,210,141,196,54,3,42,204,31,201,236,95,202,60,105,198,12,122,206,68,128,125,136,125,124,0],[160,41,72,43,195,185,77,145,190,248,35,64,23,254,21,206,113,58,189,41,41,0,75,98,168,214,131,3,50,118,22,181,17,0],[160,167,9,119,24,44,27,22,223,236,139,113,148,108,210,194,127,188,31,165,26,133,146,93,4,152,21,206,226,71,230,114,123,0],[160,210,161,112,6,68,249,246,185,163,96,30,55,95,21,48,46,27,132,235,191,20,114,216,181,115,139,81,29,120,129,206,103,0],[160,228,14,86,234,190,75,211,24,27,251,45,67,43,75,140,223,231,88,38,238,140,199,169,241,181,123,41,200,94,70,128,194,0],[160,109,50,80,239,237,131,100,221,110,137,154,89,27,127,96,132,227,250,251,119,175,219,213,124,97,113,136,253,103,210,215,99,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,232,191,153,154,181,58,206,81,231,209,209,239,36,133,221,157,153,42,68,174,20,69,221,60,11,63,166,31,237,237,104,162,160,57,228,194,98,47,19,97,133,100,169,2,0,243,214,13,73,186,52,15,117,71,216,18,107,102,15,16,111,86,250,50,251,160,51,250,142,196,40,119,29,225,6,141,231,106,64,7,57,115,110,177,160,25,74,86,178,98,92,55,43,84,38,108,149,114,160,188,17,187,239,92,176,201,136,24,53,252,251,177,159,15,74,114,158,187,40,157,163,92,149,77,183,194,85,161,209,131,189,160,95,24,164,82,11,196,142,109,130,78,42,15,66,95,149,217,148,254,124,255,123,38,6,201,175,159,70,55,78,36,64,222,160,253,133,23,137,243,61,14,118,41,90,234,0,23,170,246,8,217,98,31,146,149,133,151,98,41,36,143,17,217,13,54,225,160,90,240,3,188,209,42,201,105,79,245,174,51,212,208,183,239,14,87,46,183,132,243,226,101,221,59,249,98,238,38,30,200,160,218,79,4,19,117,120,255,76,227,129,57,190,233,72,210,104,202,172,77,110,166,99,134,239,219,54,231,204,208,217,184,193,160,28,43,54,96,106,42,56,44,206,73,74,22,167,224,233,125,88,222,3,114,91,198,179,0,14,184,180,31,113,164,130,150,160,93,170,254,86,166,255,153,188,72,120,14,11,156,181,35,136,31,176,118,165,26,245,91,196,116,167,82,73,239,192,67,198,160,113,106,91,157,43,225,158,83,210,141,196,54,3,42,204,31,201,236,95,202,60,105,198,12,122,206,68,128,125,136,125,124,160,41,72,43,195,185,77,145,190,248,35,64,23,254,21,206,113,58,189,41,41,0,75,98,168,214,131,3,50,118,22,181,17,160,167,9,119,24,44,27,22,223,236,139,113,148,108,210,194,127,188,31,165,26,133,146,93,4,152,21,206,226,71,230,114,123,160,210,161,112,6,68,249,246,185,163,96,30,55,95,21,48,46,27,132,235,191,20,114,216,181,115,139,81,29,120,129,206,103,160,228,14,86,234,190,75,211,24,27,251,45,67,43,75,140,223,231,88,38,238,140,199,169,241,181,123,41,200,94,70,128,194,160,109,50,80,239,237,131,100,221,110,137,154,89,27,127,96,132,227,250,251,119,175,219,213,124,97,113,136,253,103,210,215,99,128],[249,2,17,160,232,191,153,154,181,58,206,81,231,209,209,239,36,133,221,157,153,42,68,174,20,69,221,60,11,63,166,31,237,237,104,162,160,57,228,194,98,47,19,97,133,100,169,2,0,243,214,13,73,186,52,15,117,71,216,18,107,102,15,16,111,86,250,50,251,160,51,250,142,196,40,119,29,225,6,141,231,106,64,7,57,115,110,177,160,25,74,86,178,98,92,55,43,84,38,108,149,114,160,188,17,187,239,92,176,201,136,24,53,252,251,177,159,15,74,114,158,187,40,157,163,92,149,77,183,194,85,161,209,131,189,160,95,24,164,82,11,196,142,109,130,78,42,15,66,95,149,217,148,254,124,255,123,38,6,201,175,159,70,55,78,36,64,222,160,253,133,23,137,243,61,14,118,41,90,234,0,23,170,246,8,217,98,31,146,149,133,151,98,41,36,143,17,217,13,54,225,160,252,51,245,30,149,176,126,4,83,171,104,95,222,18,35,68,83,18,28,30,163,31,237,213,18,94,64,59,210,200,33,4,160,218,79,4,19,117,120,255,76,227,129,57,190,233,72,210,104,202,172,77,110,166,99,134,239,219,54,231,204,208,217,184,193,160,28,43,54,96,106,42,56,44,206,73,74,22,167,224,233,125,88,222,3,114,91,198,179,0,14,184,180,31,113,164,130,150,160,93,170,254,86,166,255,153,188,72,120,14,11,156,181,35,136,31,176,118,165,26,245,91,196,116,167,82,73,239,192,67,198,160,113,106,91,157,43,225,158,83,210,141,196,54,3,42,204,31,201,236,95,202,60,105,198,12,122,206,68,128,125,136,125,124,160,41,72,43,195,185,77,145,190,248,35,64,23,254,21,206,113,58,189,41,41,0,75,98,168,214,131,3,50,118,22,181,17,160,167,9,119,24,44,27,22,223,236,139,113,148,108,210,194,127,188,31,165,26,133,146,93,4,152,21,206,226,71,230,114,123,160,210,161,112,6,68,249,246,185,163,96,30,55,95,21,48,46,27,132,235,191,20,114,216,181,115,139,81,29,120,129,206,103,160,228,14,86,234,190,75,211,24,27,251,45,67,43,75,140,223,231,88,38,238,140,199,169,241,181,123,41,200,94,70,128,194,160,109,50,80,239,237,131,100,221,110,137,154,89,27,127,96,132,227,250,251,119,175,219,213,124,97,113,136,253,103,210,215,99,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":2,"drifted_index":2,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,10,141,101,50,241,67,196,88,73,150,200,57,50,226,25,237,38,132,52,12,207,9,12,78,236,238,240,158,33,127,55,130,0],[160,180,237,88,189,64,174,197,244,127,23,149,85,117,103,224,177,173,47,85,97,236,124,161,62,9,12,4,255,91,138,237,100,0],[160,100,93,175,177,202,28,103,175,123,15,81,95,184,46,83,103,87,183,116,39,115,175,190,70,133,107,158,119,167,0,85,237,0],[160,134,253,241,93,61,62,185,221,65,135,18,10,146,175,16,147,198,232,191,126,12,223,191,198,177,125,168,97,189,111,251,174,0],[160,216,111,187,49,66,224,152,105,189,122,136,193,157,189,25,137,82,161,106,108,64,185,230,186,243,236,215,127,221,56,233,125,0],[160,148,0,211,22,129,35,130,113,137,153,68,150,167,69,115,247,241,139,129,0,254,97,231,163,97,44,243,95,84,178,23,173,0],[160,87,72,55,68,130,23,116,88,149,221,0,186,16,144,210,29,155,102,151,92,76,129,204,245,194,240,232,103,36,24,30,149,0],[160,93,255,7,192,212,135,80,1,228,59,117,73,69,82,217,204,180,56,133,3,229,140,225,4,230,93,52,56,161,38,51,48,0],[160,73,127,28,24,139,210,195,167,141,215,140,156,156,128,113,253,212,126,68,166,143,251,101,231,18,248,69,77,64,13,231,14,0],[160,116,18,80,1,241,23,90,141,238,178,29,155,4,112,150,134,253,100,191,111,253,215,234,161,25,45,92,178,10,7,176,182,0],[160,180,139,103,129,151,58,21,62,153,208,235,226,184,171,166,197,185,221,246,68,209,69,62,130,149,53,171,40,187,50,152,47,0],[160,170,98,176,29,23,138,240,253,180,210,140,27,188,79,247,56,1,172,195,246,35,100,234,129,174,42,153,131,213,82,133,210,0],[160,77,1,155,88,50,4,201,82,161,82,54,78,30,247,231,167,13,253,248,176,232,171,12,159,192,168,11,124,246,7,205,221,0],[160,197,156,14,95,177,36,137,213,162,27,161,77,213,124,66,200,73,4,19,170,78,41,129,61,108,52,141,23,188,94,146,215,0],[160,59,189,41,18,35,186,204,91,48,249,227,167,107,66,64,216,134,148,132,209,177,89,90,253,19,69,2,76,252,231,72,169,0],[160,217,174,174,31,206,154,240,32,249,39,191,51,179,82,34,9,218,48,40,229,6,173,247,68,35,254,120,175,73,57,9,14,0],[160,156,132,158,203,172,85,98,126,161,209,134,204,128,25,17,231,140,0,75,173,183,55,130,92,232,54,111,80,250,224,145,159,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,180,237,88,189,64,174,197,244,127,23,149,85,117,103,224,177,173,47,85,97,236,124,161,62,9,12,4,255,91,138,237,100,160,100,93,175,177,202,28,103,175,123,15,81,95,184,46,83,103,87,183,116,39,115,175,190,70,133,107,158,119,167,0,85,237,160,134,253,241,93,61,62,185,221,65,135,18,10,146,175,16,147,198,232,191,126,12,223,191,198,177,125,168,97,189,111,251,174,160,216,111,187,49,66,224,152,105,189,122,136,193,157,189,25,137,82,161,106,108,64,185,230,186,243,236,215,127,221,56,233,125,160,148,0,211,22,129,35,130,113,137,153,68,150,167,69,115,247,241,139,129,0,254,97,231,163,97,44,243,95,84,178,23,173,160,87,72,55,68,130,23,116,88,149,221,0,186,16,144,210,29,155,102,151,92,76,129,204,245,194,240,232,103,36,24,30,149,160,93,255,7,192,212,135,80,1,228,59,117,73,69,82,217,204,180,56,133,3,229,140,225,4,230,93,52,56,161,38,51,48,160,73,127,28,24,139,210,195,167,141,215,140,156,156,128,113,253,212,126,68,166,143,251,101,231,18,248,69,77,64,13,231,14,160,116,18,80,1,241,23,90,141,238,178,29,155,4,112,150,134,253,100,191,111,253,215,234,161,25,45,92,178,10,7,176,182,160,180,139,103,129,151,58,21,62,153,208,235,226,184,171,166,197,185,221,246,68,209,69,62,130,149,53,171,40,187,50,152,47,160,170,98,176,29,23,138,240,253,180,210,140,27,188,79,247,56,1,172,195,246,35,100,234,129,174,42,153,131,213,82,133,210,160,77,1,155,88,50,4,201,82,161,82,54,78,30,247,231,167,13,253,248,176,232,171,12,159,192,168,11,124,246,7,205,221,160,197,156,14,95,177,36,137,213,162,27,161,77,213,124,66,200,73,4,19,170,78,41,129,61,108,52,141,23,188,94,146,215,160,59,189,41,18,35,186,204,91,48,249,227,167,107,66,64,216,134,148,132,209,177,89,90,253,19,69,2,76,252,231,72,169,160,217,174,174,31,206,154,240,32,249,39,191,51,179,82,34,9,218,48,40,229,6,173,247,68,35,254,120,175,73,57,9,14,160,156,132,158,203,172,85,98,126,161,209,134,204,128,25,17,231,140,0,75,173,183,55,130,92,232,54,111,80,250,224,145,159,128],[249,2,17,160,180,237,88,189,64,174,197,244,127,23,149,85,117,103,224,177,173,47,85,97,236,124,161,62,9,12,4,255,91,138,237,100,160,100,93,175,177,202,28,103,175,123,15,81,95,184,46,83,103,87,183,116,39,115,175,190,70,133,107,158,119,167,0,85,237,160,10,141,101,50,241,67,196,88,73,150,200,57,50,226,25,237,38,132,52,12,207,9,12,78,236,238,240,158,33,127,55,130,160,216,111,187,49,66,224,152,105,189,122,136,193,157,189,25,137,82,161,106,108,64,185,230,186,243,236,215,127,221,56,233,125,160,148,0,211,22,129,35,130,113,137,153,68,150,167,69,115,247,241,139,129,0,254,97,231,163,97,44,243,95,84,178,23,173,160,87,72,55,68,130,23,116,88,149,221,0,186,16,144,210,29,155,102,151,92,76,129,204,245,194,240,232,103,36,24,30,149,160,93,255,7,192,212,135,80,1,228,59,117,73,69,82,217,204,180,56,133,3,229,140,225,4,230,93,52,56,161,38,51,48,160,73,127,28,24,139,210,195,167,141,215,140,156,156,128,113,253,212,126,68,166,143,251,101,231,18,248,69,77,64,13,231,14,160,116,18,80,1,241,23,90,141,238,178,29,155,4,112,150,134,253,100,191,111,253,215,234,161,25,45,92,178,10,7,176,182,160,180,139,103,129,151,58,21,62,153,208,235,226,184,171,166,197,185,221,246,68,209,69,62,130,149,53,171,40,187,50,152,47,160,170,98,176,29,23,138,240,253,180,210,140,27,188,79,247,56,1,172,195,246,35,100,234,129,174,42,153,131,213,82,133,210,160,77,1,155,88,50,4,201,82,161,82,54,78,30,247,231,167,13,253,248,176,232,171,12,159,192,168,11,124,246,7,205,221,160,197,156,14,95,177,36,137,213,162,27,161,77,213,124,66,200,73,4,19,170,78,41,129,61,108,52,141,23,188,94,146,215,160,59,189,41,18,35,186,204,91,48,249,227,167,107,66,64,216,134,148,132,209,177,89,90,253,19,69,2,76,252,231,72,169,160,217,174,174,31,206,154,240,32,249,39,191,51,179,82,34,9,218,48,40,229,6,173,247,68,35,254,120,175,73,57,9,14,160,156,132,158,203,172,85,98,126,161,209,134,204,128,25,17,231,140,0,75,173,183,55,130,92,232,54,111,80,250,224,145,159,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[248,241],[248,241]]}},"account":null,"storage":null,"values":[[160,95,116,195,64,222,66,53,234,119,238,176,120,117,113,80,63,38,35,53,168,235,55,41,101,205,143,87,156,196,14,240,250,0],[160,136,116,3,74,15,113,88,181,153,37,140,248,108,178,49,166,240,147,99,128,212,198,186,163,226,91,213,196,148,55,51,68,0],[160,6,224,55,65,244,238,1,243,137,85,129,168,103,4,120,155,90,179,56,226,109,19,137,176,130,189,194,201,7,238,111,250,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,140,101,142,12,12,106,22,180,97,103,81,114,201,125,99,91,155,56,5,170,154,255,192,252,182,185,239,64,71,93,206,14,0],[160,54,110,252,213,204,225,239,20,75,137,7,249,169,24,107,197,24,214,127,168,107,130,24,172,153,37,183,16,30,251,51,118,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,85,163,178,230,9,128,96,41,93,216,131,4,147,15,207,10,51,189,116,130,77,178,103,124,233,47,250,147,122,247,176,144,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,26,235,78,32,11,43,6,155,97,87,26,87,91,80,139,39,194,25,79,151,254,179,34,130,163,146,167,193,202,212,18,244,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,130,137,158,138,67,39,119,204,172,211,177,110,56,63,76,40,198,196,173,175,229,163,204,102,240,250,174,109,226,117,155,202,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,241,160,136,116,3,74,15,113,88,181,153,37,140,248,108,178,49,166,240,147,99,128,212,198,186,163,226,91,213,196,148,55,51,68,160,6,224,55,65,244,238,1,243,137,85,129,168,103,4,120,155,90,179,56,226,109,19,137,176,130,189,194,201,7,238,111,250,128,128,128,160,140,101,142,12,12,106,22,180,97,103,81,114,201,125,99,91,155,56,5,170,154,255,192,252,182,185,239,64,71,93,206,14,160,54,110,252,213,204,225,239,20,75,137,7,249,169,24,107,197,24,214,127,168,107,130,24,172,153,37,183,16,30,251,51,118,128,160,85,163,178,230,9,128,96,41,93,216,131,4,147,15,207,10,51,189,116,130,77,178,103,124,233,47,250,147,122,247,176,144,128,160,26,235,78,32,11,43,6,155,97,87,26,87,91,80,139,39,194,25,79,151,254,179,34,130,163,146,167,193,202,212,18,244,128,128,128,128,160,130,137,158,138,67,39,119,204,172,211,177,110,56,63,76,40,198,196,173,175,229,163,204,102,240,250,174,109,226,117,155,202,128],[248,241,160,95,116,195,64,222,66,53,234,119,238,176,120,117,113,80,63,38,35,53,168,235,55,41,101,205,143,87,156,196,14,240,250,160,6,224,55,65,244,238,1,243,137,85,129,168,103,4,120,155,90,179,56,226,109,19,137,176,130,189,194,201,7,238,111,250,128,128,128,160,140,101,142,12,12,106,22,180,97,103,81,114,201,125,99,91,155,56,5,170,154,255,192,252,182,185,239,64,71,93,206,14,160,54,110,252,213,204,225,239,20,75,137,7,249,169,24,107,197,24,214,127,168,107,130,24,172,153,37,183,16,30,251,51,118,128,160,85,163,178,230,9,128,96,41,93,216,131,4,147,15,207,10,51,189,116,130,77,178,103,124,233,47,250,147,122,247,176,144,128,160,26,235,78,32,11,43,6,155,97,87,26,87,91,80,139,39,194,25,79,151,254,179,34,130,163,146,167,193,202,212,18,244,128,128,128,128,160,130,137,158,138,67,39,119,204,172,211,177,110,56,63,76,40,198,196,173,175,229,163,204,102,240,250,174,109,226,117,155,202,128]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[true,false],"extension":{"list_rlp_bytes":[226]},"branch":{"modified_index":11,"drifted_index":2,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,209,41,253,239,161,98,26,111,126,99,45,223,139,143,172,151,38,2,161,144,208,149,17,48,171,194,28,129,19,221,191,45,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,246,90,153,106,161,93,165,112,171,91,43,74,207,239,165,225,172,126,187,78,120,66,242,92,108,203,189,234,112,126,173,106,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,209,41,253,239,161,98,26,111,126,99,45,223,139,143,172,151,38,2,161,144,208,149,17,48,171,194,28,129,19,221,191,45,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,20,30,57,65,142,192,197,120,31,215,111,51,65,69,204,45,223,141,157,43,230,27,182,169,32,26,74,84,22,239,219,181,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,20,30,57,65,142,192,197,120,31,215,111,51,65,69,204,45,223,141,157,43,230,27,182,169,32,26,74,84,22,239,219,181,0]],"keccak_data":[[248,81,128,128,160,246,90,153,106,161,93,165,112,171,91,43,74,207,239,165,225,172,126,187,78,120,66,242,92,108,203,189,234,112,126,173,106,128,128,128,128,128,128,128,128,160,209,41,253,239,161,98,26,111,126,99,45,223,139,143,172,151,38,2,161,144,208,149,17,48,171,194,28,129,19,221,191,45,128,128,128,128,128],[248,81,128,128,160,246,90,153,106,161,93,165,112,171,91,43,74,207,239,165,225,172,126,187,78,120,66,242,92,108,203,189,234,112,126,173,106,128,128,128,128,128,128,128,128,160,209,41,253,239,161,98,26,111,126,99,45,223,139,143,172,151,38,2,161,144,208,149,17,48,171,194,28,129,19,221,191,45,128,128,128,128,128],[226,20,160,20,30,57,65,142,192,197,120,31,215,111,51,65,69,204,45,223,141,157,43,230,27,182,169,32,26,74,84,22,239,219,181],[226,20,160,20,30,57,65,142,192,197,120,31,215,111,51,65,69,204,45,223,141,157,43,230,27,182,169,32,26,74,84,22,239,219,181]]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64],"key":[204,228,98,4,186,168,111,115,58,191,32,139,53,139,168,184,7,8,29,109,70,164,7,116,82,56,174,242,193,51,253,77],"list_rlp_bytes":[[248,108],[248,101]],"value_rlp_bytes":[[184,76],[184,70]],"value_list_rlp_bytes":[[248,74],[248,68]],"drifted_rlp_bytes":[248,107],"wrong_rlp_bytes":[248,101]},"storage":null,"values":[[157,52,45,53,199,120,18,165,14,109,22,4,141,198,233,128,219,44,247,218,241,231,2,206,125,246,58,246,15,3,0,0,0,0],[156,58,168,111,115,58,191,32,139,53,139,168,184,7,8,29,109,70,164,7,116,82,56,174,242,193,51,253,77,0,0,0,0,0],[4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[134,85,156,208,108,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[156,61,53,199,120,18,165,14,109,22,4,141,198,233,128,219,44,247,218,241,231,2,206,125,246,58,246,15,3,0,0,0,0,0],[156,58,168,111,115,58,191,32,139,53,139,168,184,7,8,29,109,70,164,7,116,82,56,174,242,193,51,253,77,0,0,0,0,0]],"keccak_data":[[248,108,157,52,45,53,199,120,18,165,14,109,22,4,141,198,233,128,219,44,247,218,241,231,2,206,125,246,58,246,15,3,184,76,248,74,4,134,85,156,208,108,8,0,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,101,156,58,168,111,115,58,191,32,139,53,139,168,184,7,8,29,109,70,164,7,116,82,56,174,242,193,51,253,77,184,70,248,68,4,23,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64],[248,107,156,61,53,199,120,18,165,14,109,22,4,141,198,233,128,219,44,247,218,241,231,2,206,125,246,58,246,15,3,184,76,248,74,4,134,85,156,208,108,8,0,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/AccountAfterFirstLevel.json b/zkevm-circuits/src/mpt_circuit/tests/AccountAfterFirstLevel.json new file mode 100644 index 0000000000..07c9191756 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/AccountAfterFirstLevel.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"BalanceChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,80,57,92,254,92,192,163,254,147,39,40,110,123,228,55,231,199,43,174,249,179,139,115,105,190,202,194,91,50,152,38,157,0],[160,76,152,136,141,203,116,59,89,139,51,176,59,178,48,143,96,27,50,1,228,213,144,243,108,165,187,6,1,46,181,169,68,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,1,17],[249,1,49]]}},"account":null,"storage":null,"values":[[160,164,113,121,186,203,37,99,214,74,77,163,191,209,163,175,196,225,94,88,203,118,113,35,42,19,147,170,86,232,78,33,7,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,171,140,219,128,140,131,3,187,97,251,72,226,118,33,123,233,119,15,168,62,207,63,144,242,35,77,85,136,133,245,171,241,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,209,194,147,52,245,42,90,105,74,201,185,72,11,49,56,252,120,235,36,47,214,22,67,153,206,248,232,10,54,165,108,47,0],[160,181,215,169,27,229,238,39,60,206,39,226,173,154,22,13,47,170,221,90,107,165,24,211,132,1,155,104,114,138,79,98,244,0],[160,194,199,153,182,10,12,214,172,212,44,16,21,81,40,114,232,108,24,107,207,25,110,133,6,30,118,132,47,59,124,248,96,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,46,13,134,195,190,253,23,127,87,74,32,172,99,128,69,50,136,144,119,233,85,50,12,147,97,205,16,183,204,111,88,9,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,99,1,179,155,46,168,164,77,248,176,53,97,32,219,100,183,136,231,31,82,225,215,166,48,157,13,46,91,134,254,231,203,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,27,119,121,225,73,202,223,36,212,255,183,124,167,225,19,20,184,219,112,151,228,215,11,42,23,52,147,21,60,162,229,160,0],[160,102,167,102,40,17,73,27,61,53,46,150,149,6,180,32,210,105,232,181,26,34,79,87,75,59,56,179,70,63,67,240,9,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,128,160,171,140,219,128,140,131,3,187,97,251,72,226,118,33,123,233,119,15,168,62,207,63,144,242,35,77,85,136,133,245,171,241,128,128,160,209,194,147,52,245,42,90,105,74,201,185,72,11,49,56,252,120,235,36,47,214,22,67,153,206,248,232,10,54,165,108,47,160,181,215,169,27,229,238,39,60,206,39,226,173,154,22,13,47,170,221,90,107,165,24,211,132,1,155,104,114,138,79,98,244,160,194,199,153,182,10,12,214,172,212,44,16,21,81,40,114,232,108,24,107,207,25,110,133,6,30,118,132,47,59,124,248,96,128,160,46,13,134,195,190,253,23,127,87,74,32,172,99,128,69,50,136,144,119,233,85,50,12,147,97,205,16,183,204,111,88,9,128,160,99,1,179,155,46,168,164,77,248,176,53,97,32,219,100,183,136,231,31,82,225,215,166,48,157,13,46,91,134,254,231,203,128,128,160,27,119,121,225,73,202,223,36,212,255,183,124,167,225,19,20,184,219,112,151,228,215,11,42,23,52,147,21,60,162,229,160,160,102,167,102,40,17,73,27,61,53,46,150,149,6,180,32,210,105,232,181,26,34,79,87,75,59,56,179,70,63,67,240,9,128,128],[249,1,49,128,160,171,140,219,128,140,131,3,187,97,251,72,226,118,33,123,233,119,15,168,62,207,63,144,242,35,77,85,136,133,245,171,241,128,128,160,209,194,147,52,245,42,90,105,74,201,185,72,11,49,56,252,120,235,36,47,214,22,67,153,206,248,232,10,54,165,108,47,160,181,215,169,27,229,238,39,60,206,39,226,173,154,22,13,47,170,221,90,107,165,24,211,132,1,155,104,114,138,79,98,244,160,194,199,153,182,10,12,214,172,212,44,16,21,81,40,114,232,108,24,107,207,25,110,133,6,30,118,132,47,59,124,248,96,128,160,46,13,134,195,190,253,23,127,87,74,32,172,99,128,69,50,136,144,119,233,85,50,12,147,97,205,16,183,204,111,88,9,128,160,99,1,179,155,46,168,164,77,248,176,53,97,32,219,100,183,136,231,31,82,225,215,166,48,157,13,46,91,134,254,231,203,128,128,160,27,119,121,225,73,202,223,36,212,255,183,124,167,225,19,20,184,219,112,151,228,215,11,42,23,52,147,21,60,162,229,160,160,102,167,102,40,17,73,27,61,53,46,150,149,6,180,32,210,105,232,181,26,34,79,87,75,59,56,179,70,63,67,240,9,160,164,113,121,186,203,37,99,214,74,77,163,191,209,163,175,196,225,94,88,203,118,113,35,42,19,147,170,86,232,78,33,7,128]]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33],"key":[252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73],"list_rlp_bytes":[[248,105],[248,105]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,105]},"storage":null,"values":[[160,60,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,0],[160,60,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,60,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,0]],"keccak_data":[[248,105,160,60,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,184,70,248,68,128,23,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,105,160,60,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,184,70,248,68,128,23,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/AccountBranchPlaceholder.json b/zkevm-circuits/src/mpt_circuit/tests/AccountBranchPlaceholder.json new file mode 100644 index 0000000000..d346b83120 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/AccountBranchPlaceholder.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"NonceChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,80,57,92,254,92,192,163,254,147,39,40,110,123,228,55,231,199,43,174,249,179,139,115,105,190,202,194,91,50,152,38,157,0],[160,56,64,215,135,60,53,165,210,25,139,82,37,114,145,38,76,251,251,47,7,228,79,245,126,254,135,116,55,249,123,103,234,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,52,61,13,168,97,11,150,16,223,165,166,56,193,140,209,20,91,70,81,94,159,196,90,60,71,61,193,89,146,75,36,118,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,171,140,219,128,140,131,3,187,97,251,72,226,118,33,123,233,119,15,168,62,207,63,144,242,35,77,85,136,133,245,171,241,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,209,194,147,52,245,42,90,105,74,201,185,72,11,49,56,252,120,235,36,47,214,22,67,153,206,248,232,10,54,165,108,47,0],[160,181,215,169,27,229,238,39,60,206,39,226,173,154,22,13,47,170,221,90,107,165,24,211,132,1,155,104,114,138,79,98,244,0],[160,194,199,153,182,10,12,214,172,212,44,16,21,81,40,114,232,108,24,107,207,25,110,133,6,30,118,132,47,59,124,248,96,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,46,13,134,195,190,253,23,127,87,74,32,172,99,128,69,50,136,144,119,233,85,50,12,147,97,205,16,183,204,111,88,9,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,99,1,179,155,46,168,164,77,248,176,53,97,32,219,100,183,136,231,31,82,225,215,166,48,157,13,46,91,134,254,231,203,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,27,119,121,225,73,202,223,36,212,255,183,124,167,225,19,20,184,219,112,151,228,215,11,42,23,52,147,21,60,162,229,160,0],[160,102,167,102,40,17,73,27,61,53,46,150,149,6,180,32,210,105,232,181,26,34,79,87,75,59,56,179,70,63,67,240,9,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,128,160,171,140,219,128,140,131,3,187,97,251,72,226,118,33,123,233,119,15,168,62,207,63,144,242,35,77,85,136,133,245,171,241,128,128,160,209,194,147,52,245,42,90,105,74,201,185,72,11,49,56,252,120,235,36,47,214,22,67,153,206,248,232,10,54,165,108,47,160,181,215,169,27,229,238,39,60,206,39,226,173,154,22,13,47,170,221,90,107,165,24,211,132,1,155,104,114,138,79,98,244,160,194,199,153,182,10,12,214,172,212,44,16,21,81,40,114,232,108,24,107,207,25,110,133,6,30,118,132,47,59,124,248,96,128,160,46,13,134,195,190,253,23,127,87,74,32,172,99,128,69,50,136,144,119,233,85,50,12,147,97,205,16,183,204,111,88,9,128,160,99,1,179,155,46,168,164,77,248,176,53,97,32,219,100,183,136,231,31,82,225,215,166,48,157,13,46,91,134,254,231,203,128,128,160,27,119,121,225,73,202,223,36,212,255,183,124,167,225,19,20,184,219,112,151,228,215,11,42,23,52,147,21,60,162,229,160,160,102,167,102,40,17,73,27,61,53,46,150,149,6,180,32,210,105,232,181,26,34,79,87,75,59,56,179,70,63,67,240,9,128,128],[249,1,17,128,160,171,140,219,128,140,131,3,187,97,251,72,226,118,33,123,233,119,15,168,62,207,63,144,242,35,77,85,136,133,245,171,241,128,128,160,209,194,147,52,245,42,90,105,74,201,185,72,11,49,56,252,120,235,36,47,214,22,67,153,206,248,232,10,54,165,108,47,160,181,215,169,27,229,238,39,60,206,39,226,173,154,22,13,47,170,221,90,107,165,24,211,132,1,155,104,114,138,79,98,244,160,194,199,153,182,10,12,214,172,212,44,16,21,81,40,114,232,108,24,107,207,25,110,133,6,30,118,132,47,59,124,248,96,128,160,46,13,134,195,190,253,23,127,87,74,32,172,99,128,69,50,136,144,119,233,85,50,12,147,97,205,16,183,204,111,88,9,128,160,99,1,179,155,46,168,164,77,248,176,53,97,32,219,100,183,136,231,31,82,225,215,166,48,157,13,46,91,134,254,231,203,128,128,160,27,119,121,225,73,202,223,36,212,255,183,124,167,225,19,20,184,219,112,151,228,215,11,42,23,52,147,21,60,162,229,160,160,52,61,13,168,97,11,150,16,223,165,166,56,193,140,209,20,91,70,81,94,159,196,90,60,71,61,193,89,146,75,36,118,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[true,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":6,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,216,251,189,146,50,97,167,8,250,118,12,25,48,248,146,71,249,142,177,126,163,14,124,12,20,11,71,115,59,213,66,75,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,43,172,88,46,134,15,212,156,63,52,222,42,111,159,167,6,234,26,215,15,65,147,161,169,130,58,221,208,217,43,6,91,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,216,251,189,146,50,97,167,8,250,118,12,25,48,248,146,71,249,142,177,126,163,14,124,12,20,11,71,115,59,213,66,75,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,160,43,172,88,46,134,15,212,156,63,52,222,42,111,159,167,6,234,26,215,15,65,147,161,169,130,58,221,208,217,43,6,91,128,128,160,216,251,189,146,50,97,167,8,250,118,12,25,48,248,146,71,249,142,177,126,163,14,124,12,20,11,71,115,59,213,66,75,128,128,128,128,128,128,128],[248,81,128,128,128,128,128,128,160,43,172,88,46,134,15,212,156,63,52,222,42,111,159,167,6,234,26,215,15,65,147,161,169,130,58,221,208,217,43,6,91,128,128,160,216,251,189,146,50,97,167,8,250,118,12,25,48,248,146,71,249,142,177,126,163,14,124,12,20,11,71,115,59,213,66,75,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,176],"key":[233,77,78,73,143,245,72,135,22,104,2,103,203,126,172,253,113,163,243,139,206,31,120,250,157,3,184,255,20,142,99,107],"list_rlp_bytes":[[248,105],[248,105]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[248,105],"wrong_rlp_bytes":[248,105]},"storage":null,"values":[[160,54,144,178,57,186,58,175,153,62,68,58,225,74,239,252,68,207,141,153,49,167,155,174,217,250,20,29,14,69,6,225,49,0],[160,32,77,78,73,143,245,72,135,22,104,2,103,203,126,172,253,113,163,243,139,206,31,120,250,157,3,184,255,20,142,99,107,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[160,32,144,178,57,186,58,175,153,62,68,58,225,74,239,252,68,207,141,153,49,167,155,174,217,250,20,29,14,69,6,225,49,0],[160,32,77,78,73,143,245,72,135,22,104,2,103,203,126,172,253,113,163,243,139,206,31,120,250,157,3,184,255,20,142,99,107,0]],"keccak_data":[[248,105,160,54,144,178,57,186,58,175,153,62,68,58,225,74,239,252,68,207,141,153,49,167,155,174,217,250,20,29,14,69,6,225,49,184,70,248,68,128,1,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,105,160,32,77,78,73,143,245,72,135,22,104,2,103,203,126,172,253,113,163,243,139,206,31,120,250,157,3,184,255,20,142,99,107,184,70,248,68,128,1,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,176],[248,105,160,32,144,178,57,186,58,175,153,62,68,58,225,74,239,252,68,207,141,153,49,167,155,174,217,250,20,29,14,69,6,225,49,184,70,248,68,128,1,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/AccountBranchPlaceholderDeeper.json b/zkevm-circuits/src/mpt_circuit/tests/AccountBranchPlaceholderDeeper.json new file mode 100644 index 0000000000..6a655e8201 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/AccountBranchPlaceholderDeeper.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"BalanceChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,92,69,153,141,251,249,206,112,188,187,128,87,78,215,166,34,146,45,44,119,94,10,35,49,254,90,139,141,204,153,244,144,0],[160,44,134,138,59,55,115,162,10,182,189,67,130,179,56,15,184,205,173,55,5,35,187,68,160,61,172,179,255,93,54,108,205,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,217,21,203,209,8,158,123,56,145,15,18,221,163,99,205,244,135,58,227,204,210,7,234,162,35,123,184,18,235,179,27,47,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,217,21,203,209,8,158,123,56,145,15,18,221,163,99,205,244,135,58,227,204,210,7,234,162,35,123,184,18,235,179,27,47,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":6,"drifted_index":6,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,139,195,106,175,30,119,145,36,74,18,157,215,18,231,25,104,95,237,198,238,1,69,156,215,200,176,58,87,246,166,129,50,0],[160,221,63,28,162,64,109,10,77,132,235,64,233,81,222,20,254,216,230,210,76,92,33,22,170,90,40,205,120,56,207,188,90,0],[160,205,103,225,131,104,208,5,138,160,119,248,96,175,207,112,226,124,134,194,125,170,36,252,250,31,48,231,187,49,202,154,237,0],[160,140,125,84,147,20,122,35,164,217,202,140,197,94,39,185,88,89,99,186,159,208,230,115,141,17,127,164,191,206,22,25,47,0],[160,112,120,144,129,104,188,107,35,120,163,173,242,121,210,74,124,139,185,44,155,23,204,115,72,223,191,203,219,116,31,238,23,0],[160,152,14,143,4,16,98,43,218,48,14,110,19,145,214,133,27,72,235,116,43,32,249,201,67,39,97,83,163,219,78,32,172,0],[160,44,232,85,1,94,173,159,63,103,70,47,153,215,100,0,138,122,12,214,142,240,94,178,191,215,108,6,74,122,176,175,12,0],[160,235,150,88,9,250,59,115,92,137,198,162,64,93,52,142,87,45,81,79,232,110,184,88,81,146,148,48,57,115,126,70,95,0],[160,17,192,119,204,103,236,16,33,190,33,207,3,88,147,97,119,86,193,80,184,120,1,77,199,63,163,15,10,198,194,232,162,0],[160,230,209,235,103,135,188,110,13,84,27,154,25,21,210,189,1,60,180,104,33,125,146,52,176,240,212,86,133,232,129,152,176,0],[160,237,82,39,169,195,169,253,75,129,157,199,233,112,138,42,169,251,250,222,164,170,26,224,132,123,239,119,201,25,130,53,49,0],[160,212,65,238,253,67,195,183,75,84,243,213,154,219,95,178,209,152,131,135,155,98,80,100,142,228,16,108,67,151,229,74,10,0],[160,18,149,32,197,212,48,109,188,148,114,106,77,32,166,79,245,27,188,157,75,93,244,176,69,71,163,137,6,133,154,199,242,0],[160,123,78,61,119,254,57,175,9,191,169,231,100,198,115,254,45,217,47,214,141,161,113,150,12,178,55,31,62,238,21,129,14,0],[160,71,66,200,67,115,14,18,115,23,29,254,74,157,82,52,130,166,106,58,120,91,207,145,0,41,11,51,79,59,48,203,150,0],[160,6,87,234,93,82,53,209,148,32,16,106,227,179,164,106,78,178,46,172,105,37,119,111,117,232,37,252,18,206,81,151,53,0],[160,68,223,36,66,60,147,0,184,253,178,38,144,236,211,18,208,207,9,12,39,225,85,192,108,152,26,237,84,176,42,8,241,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,221,63,28,162,64,109,10,77,132,235,64,233,81,222,20,254,216,230,210,76,92,33,22,170,90,40,205,120,56,207,188,90,160,205,103,225,131,104,208,5,138,160,119,248,96,175,207,112,226,124,134,194,125,170,36,252,250,31,48,231,187,49,202,154,237,160,140,125,84,147,20,122,35,164,217,202,140,197,94,39,185,88,89,99,186,159,208,230,115,141,17,127,164,191,206,22,25,47,160,112,120,144,129,104,188,107,35,120,163,173,242,121,210,74,124,139,185,44,155,23,204,115,72,223,191,203,219,116,31,238,23,160,152,14,143,4,16,98,43,218,48,14,110,19,145,214,133,27,72,235,116,43,32,249,201,67,39,97,83,163,219,78,32,172,160,44,232,85,1,94,173,159,63,103,70,47,153,215,100,0,138,122,12,214,142,240,94,178,191,215,108,6,74,122,176,175,12,160,235,150,88,9,250,59,115,92,137,198,162,64,93,52,142,87,45,81,79,232,110,184,88,81,146,148,48,57,115,126,70,95,160,17,192,119,204,103,236,16,33,190,33,207,3,88,147,97,119,86,193,80,184,120,1,77,199,63,163,15,10,198,194,232,162,160,230,209,235,103,135,188,110,13,84,27,154,25,21,210,189,1,60,180,104,33,125,146,52,176,240,212,86,133,232,129,152,176,160,237,82,39,169,195,169,253,75,129,157,199,233,112,138,42,169,251,250,222,164,170,26,224,132,123,239,119,201,25,130,53,49,160,212,65,238,253,67,195,183,75,84,243,213,154,219,95,178,209,152,131,135,155,98,80,100,142,228,16,108,67,151,229,74,10,160,18,149,32,197,212,48,109,188,148,114,106,77,32,166,79,245,27,188,157,75,93,244,176,69,71,163,137,6,133,154,199,242,160,123,78,61,119,254,57,175,9,191,169,231,100,198,115,254,45,217,47,214,141,161,113,150,12,178,55,31,62,238,21,129,14,160,71,66,200,67,115,14,18,115,23,29,254,74,157,82,52,130,166,106,58,120,91,207,145,0,41,11,51,79,59,48,203,150,160,6,87,234,93,82,53,209,148,32,16,106,227,179,164,106,78,178,46,172,105,37,119,111,117,232,37,252,18,206,81,151,53,160,68,223,36,66,60,147,0,184,253,178,38,144,236,211,18,208,207,9,12,39,225,85,192,108,152,26,237,84,176,42,8,241,128],[249,2,17,160,221,63,28,162,64,109,10,77,132,235,64,233,81,222,20,254,216,230,210,76,92,33,22,170,90,40,205,120,56,207,188,90,160,205,103,225,131,104,208,5,138,160,119,248,96,175,207,112,226,124,134,194,125,170,36,252,250,31,48,231,187,49,202,154,237,160,140,125,84,147,20,122,35,164,217,202,140,197,94,39,185,88,89,99,186,159,208,230,115,141,17,127,164,191,206,22,25,47,160,112,120,144,129,104,188,107,35,120,163,173,242,121,210,74,124,139,185,44,155,23,204,115,72,223,191,203,219,116,31,238,23,160,152,14,143,4,16,98,43,218,48,14,110,19,145,214,133,27,72,235,116,43,32,249,201,67,39,97,83,163,219,78,32,172,160,44,232,85,1,94,173,159,63,103,70,47,153,215,100,0,138,122,12,214,142,240,94,178,191,215,108,6,74,122,176,175,12,160,139,195,106,175,30,119,145,36,74,18,157,215,18,231,25,104,95,237,198,238,1,69,156,215,200,176,58,87,246,166,129,50,160,17,192,119,204,103,236,16,33,190,33,207,3,88,147,97,119,86,193,80,184,120,1,77,199,63,163,15,10,198,194,232,162,160,230,209,235,103,135,188,110,13,84,27,154,25,21,210,189,1,60,180,104,33,125,146,52,176,240,212,86,133,232,129,152,176,160,237,82,39,169,195,169,253,75,129,157,199,233,112,138,42,169,251,250,222,164,170,26,224,132,123,239,119,201,25,130,53,49,160,212,65,238,253,67,195,183,75,84,243,213,154,219,95,178,209,152,131,135,155,98,80,100,142,228,16,108,67,151,229,74,10,160,18,149,32,197,212,48,109,188,148,114,106,77,32,166,79,245,27,188,157,75,93,244,176,69,71,163,137,6,133,154,199,242,160,123,78,61,119,254,57,175,9,191,169,231,100,198,115,254,45,217,47,214,141,161,113,150,12,178,55,31,62,238,21,129,14,160,71,66,200,67,115,14,18,115,23,29,254,74,157,82,52,130,166,106,58,120,91,207,145,0,41,11,51,79,59,48,203,150,160,6,87,234,93,82,53,209,148,32,16,106,227,179,164,106,78,178,46,172,105,37,119,111,117,232,37,252,18,206,81,151,53,160,68,223,36,66,60,147,0,184,253,178,38,144,236,211,18,208,207,9,12,39,225,85,192,108,152,26,237,84,176,42,8,241,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,0,252,140,85,74,252,62,69,89,121,123,5,179,68,35,172,25,56,148,32,112,124,91,177,110,116,193,127,201,229,213,209,0],[160,158,173,121,235,84,205,52,123,223,242,29,64,145,205,62,71,65,80,152,159,90,83,130,75,9,63,142,159,160,105,191,37,0],[160,9,244,180,209,0,225,55,186,198,145,27,122,81,126,142,104,100,9,233,95,177,92,46,162,243,86,244,192,251,74,108,108,0],[160,41,17,216,101,163,159,211,169,234,19,253,195,37,112,195,207,166,236,249,212,224,218,100,88,171,80,81,183,185,65,3,111,0],[160,77,107,36,221,7,68,173,50,39,9,91,227,105,146,66,129,218,199,231,94,143,91,8,192,230,123,248,13,9,4,60,214,0],[160,161,116,212,240,226,26,232,254,94,207,161,94,168,77,73,184,217,100,174,143,160,0,46,57,192,216,41,159,137,31,36,48,0],[160,41,49,98,81,239,100,75,137,168,25,78,77,65,166,1,49,247,134,146,45,120,224,58,151,47,111,67,92,176,58,26,171,0],[160,101,145,224,174,42,7,133,187,156,176,104,147,210,194,104,216,57,162,84,1,74,241,249,29,218,128,72,32,69,223,74,127,0],[160,234,165,48,112,235,8,137,77,48,40,201,171,146,241,191,72,184,186,121,245,36,203,20,217,133,151,210,183,122,4,220,68,0],[160,195,185,81,105,218,37,171,46,206,106,200,36,189,133,230,205,104,135,208,20,168,56,228,237,66,159,243,16,18,10,45,76,0],[160,210,101,151,249,70,3,127,33,212,15,168,82,12,221,147,97,248,160,98,118,32,35,11,247,0,102,67,146,66,81,31,212,0],[160,223,239,174,90,121,138,1,69,161,137,154,102,25,55,11,150,162,63,106,152,113,139,199,221,160,175,202,200,171,240,22,164,0],[160,18,132,111,231,198,103,20,21,47,79,244,124,225,188,58,41,250,170,23,197,240,163,19,33,200,98,218,158,156,151,238,140,0],[160,123,231,140,49,17,6,76,23,105,235,60,227,228,92,75,73,157,156,217,98,140,229,228,132,176,34,178,138,154,57,29,252,0],[160,42,139,231,210,185,0,55,33,141,206,135,69,41,61,153,152,195,129,197,224,57,23,114,30,222,164,124,245,219,237,116,141,0],[160,230,149,93,220,107,87,253,254,154,213,237,87,124,14,252,212,129,96,231,213,114,181,167,245,151,242,15,162,239,205,113,74,0],[160,84,29,16,130,70,7,44,238,162,247,102,221,119,115,65,145,85,19,72,153,107,130,239,100,206,193,116,224,69,12,9,40,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,158,173,121,235,84,205,52,123,223,242,29,64,145,205,62,71,65,80,152,159,90,83,130,75,9,63,142,159,160,105,191,37,160,9,244,180,209,0,225,55,186,198,145,27,122,81,126,142,104,100,9,233,95,177,92,46,162,243,86,244,192,251,74,108,108,160,41,17,216,101,163,159,211,169,234,19,253,195,37,112,195,207,166,236,249,212,224,218,100,88,171,80,81,183,185,65,3,111,160,77,107,36,221,7,68,173,50,39,9,91,227,105,146,66,129,218,199,231,94,143,91,8,192,230,123,248,13,9,4,60,214,160,161,116,212,240,226,26,232,254,94,207,161,94,168,77,73,184,217,100,174,143,160,0,46,57,192,216,41,159,137,31,36,48,160,41,49,98,81,239,100,75,137,168,25,78,77,65,166,1,49,247,134,146,45,120,224,58,151,47,111,67,92,176,58,26,171,160,101,145,224,174,42,7,133,187,156,176,104,147,210,194,104,216,57,162,84,1,74,241,249,29,218,128,72,32,69,223,74,127,160,234,165,48,112,235,8,137,77,48,40,201,171,146,241,191,72,184,186,121,245,36,203,20,217,133,151,210,183,122,4,220,68,160,195,185,81,105,218,37,171,46,206,106,200,36,189,133,230,205,104,135,208,20,168,56,228,237,66,159,243,16,18,10,45,76,160,210,101,151,249,70,3,127,33,212,15,168,82,12,221,147,97,248,160,98,118,32,35,11,247,0,102,67,146,66,81,31,212,160,223,239,174,90,121,138,1,69,161,137,154,102,25,55,11,150,162,63,106,152,113,139,199,221,160,175,202,200,171,240,22,164,160,18,132,111,231,198,103,20,21,47,79,244,124,225,188,58,41,250,170,23,197,240,163,19,33,200,98,218,158,156,151,238,140,160,123,231,140,49,17,6,76,23,105,235,60,227,228,92,75,73,157,156,217,98,140,229,228,132,176,34,178,138,154,57,29,252,160,42,139,231,210,185,0,55,33,141,206,135,69,41,61,153,152,195,129,197,224,57,23,114,30,222,164,124,245,219,237,116,141,160,230,149,93,220,107,87,253,254,154,213,237,87,124,14,252,212,129,96,231,213,114,181,167,245,151,242,15,162,239,205,113,74,160,84,29,16,130,70,7,44,238,162,247,102,221,119,115,65,145,85,19,72,153,107,130,239,100,206,193,116,224,69,12,9,40,128],[249,2,17,160,158,173,121,235,84,205,52,123,223,242,29,64,145,205,62,71,65,80,152,159,90,83,130,75,9,63,142,159,160,105,191,37,160,9,244,180,209,0,225,55,186,198,145,27,122,81,126,142,104,100,9,233,95,177,92,46,162,243,86,244,192,251,74,108,108,160,41,17,216,101,163,159,211,169,234,19,253,195,37,112,195,207,166,236,249,212,224,218,100,88,171,80,81,183,185,65,3,111,160,0,252,140,85,74,252,62,69,89,121,123,5,179,68,35,172,25,56,148,32,112,124,91,177,110,116,193,127,201,229,213,209,160,161,116,212,240,226,26,232,254,94,207,161,94,168,77,73,184,217,100,174,143,160,0,46,57,192,216,41,159,137,31,36,48,160,41,49,98,81,239,100,75,137,168,25,78,77,65,166,1,49,247,134,146,45,120,224,58,151,47,111,67,92,176,58,26,171,160,101,145,224,174,42,7,133,187,156,176,104,147,210,194,104,216,57,162,84,1,74,241,249,29,218,128,72,32,69,223,74,127,160,234,165,48,112,235,8,137,77,48,40,201,171,146,241,191,72,184,186,121,245,36,203,20,217,133,151,210,183,122,4,220,68,160,195,185,81,105,218,37,171,46,206,106,200,36,189,133,230,205,104,135,208,20,168,56,228,237,66,159,243,16,18,10,45,76,160,210,101,151,249,70,3,127,33,212,15,168,82,12,221,147,97,248,160,98,118,32,35,11,247,0,102,67,146,66,81,31,212,160,223,239,174,90,121,138,1,69,161,137,154,102,25,55,11,150,162,63,106,152,113,139,199,221,160,175,202,200,171,240,22,164,160,18,132,111,231,198,103,20,21,47,79,244,124,225,188,58,41,250,170,23,197,240,163,19,33,200,98,218,158,156,151,238,140,160,123,231,140,49,17,6,76,23,105,235,60,227,228,92,75,73,157,156,217,98,140,229,228,132,176,34,178,138,154,57,29,252,160,42,139,231,210,185,0,55,33,141,206,135,69,41,61,153,152,195,129,197,224,57,23,114,30,222,164,124,245,219,237,116,141,160,230,149,93,220,107,87,253,254,154,213,237,87,124,14,252,212,129,96,231,213,114,181,167,245,151,242,15,162,239,205,113,74,160,84,29,16,130,70,7,44,238,162,247,102,221,119,115,65,145,85,19,72,153,107,130,239,100,206,193,116,224,69,12,9,40,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":6,"drifted_index":6,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,22,89,144,154,53,26,221,122,88,75,254,62,227,81,33,149,50,161,232,93,243,133,39,72,143,36,254,21,161,115,217,235,0],[160,14,54,206,251,94,178,128,7,9,233,49,219,211,254,62,23,138,24,233,230,203,67,181,227,247,139,133,103,143,99,117,192,0],[160,8,25,245,191,84,51,179,83,56,204,204,234,117,107,148,198,228,32,79,4,81,70,91,127,249,218,128,199,254,173,159,205,0],[160,236,187,124,229,135,243,33,214,94,96,185,153,64,82,45,209,246,98,244,31,171,251,143,3,206,51,80,112,94,132,107,126,0],[160,188,149,137,8,2,193,51,187,141,244,190,113,124,97,35,180,170,248,101,145,114,55,18,77,201,76,233,196,198,13,28,235,0],[160,159,195,103,91,82,217,128,135,40,174,150,40,174,79,170,56,74,250,129,49,97,203,147,86,141,66,150,199,166,150,238,57,0],[160,38,236,127,73,196,199,9,115,214,209,3,157,219,192,77,34,24,166,63,74,49,47,5,63,13,230,203,147,174,7,163,252,0],[160,151,254,140,139,7,148,19,226,234,75,228,10,20,68,152,99,247,168,64,180,74,204,127,212,221,60,116,110,130,0,210,183,0],[160,52,190,194,210,24,131,64,206,118,116,100,217,86,192,82,79,132,190,92,31,251,219,100,1,150,190,67,141,17,33,105,17,0],[160,72,139,28,250,168,0,245,71,64,84,210,13,1,253,226,184,222,142,231,178,74,73,94,24,176,173,83,148,68,241,3,218,0],[160,60,69,79,222,248,139,201,27,4,19,116,246,193,166,255,47,185,225,72,10,175,101,118,162,176,231,215,89,157,53,155,122,0],[160,141,108,165,211,183,202,200,106,224,196,219,127,38,67,180,106,255,158,181,168,88,28,102,110,44,83,182,75,175,85,246,236,0],[160,191,101,131,13,202,251,89,244,61,85,37,245,121,166,102,235,219,26,141,31,54,213,15,10,24,1,216,144,5,77,169,214,0],[160,45,145,16,233,16,236,227,80,91,157,76,145,211,134,77,79,30,199,98,75,9,101,13,118,218,21,240,208,179,10,174,148,0],[160,239,88,70,232,132,212,168,67,210,254,85,160,83,193,102,171,151,250,19,223,36,230,104,0,100,254,144,251,187,189,203,169,0],[160,90,151,204,169,201,138,191,231,26,146,2,78,63,9,130,70,226,45,33,6,22,81,19,79,143,213,82,236,162,165,6,156,0],[160,195,50,181,105,159,154,71,133,252,200,227,72,168,143,96,226,134,41,77,50,20,202,228,103,243,19,47,45,59,109,61,118,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,14,54,206,251,94,178,128,7,9,233,49,219,211,254,62,23,138,24,233,230,203,67,181,227,247,139,133,103,143,99,117,192,160,8,25,245,191,84,51,179,83,56,204,204,234,117,107,148,198,228,32,79,4,81,70,91,127,249,218,128,199,254,173,159,205,160,236,187,124,229,135,243,33,214,94,96,185,153,64,82,45,209,246,98,244,31,171,251,143,3,206,51,80,112,94,132,107,126,160,188,149,137,8,2,193,51,187,141,244,190,113,124,97,35,180,170,248,101,145,114,55,18,77,201,76,233,196,198,13,28,235,160,159,195,103,91,82,217,128,135,40,174,150,40,174,79,170,56,74,250,129,49,97,203,147,86,141,66,150,199,166,150,238,57,160,38,236,127,73,196,199,9,115,214,209,3,157,219,192,77,34,24,166,63,74,49,47,5,63,13,230,203,147,174,7,163,252,160,151,254,140,139,7,148,19,226,234,75,228,10,20,68,152,99,247,168,64,180,74,204,127,212,221,60,116,110,130,0,210,183,160,52,190,194,210,24,131,64,206,118,116,100,217,86,192,82,79,132,190,92,31,251,219,100,1,150,190,67,141,17,33,105,17,160,72,139,28,250,168,0,245,71,64,84,210,13,1,253,226,184,222,142,231,178,74,73,94,24,176,173,83,148,68,241,3,218,160,60,69,79,222,248,139,201,27,4,19,116,246,193,166,255,47,185,225,72,10,175,101,118,162,176,231,215,89,157,53,155,122,160,141,108,165,211,183,202,200,106,224,196,219,127,38,67,180,106,255,158,181,168,88,28,102,110,44,83,182,75,175,85,246,236,160,191,101,131,13,202,251,89,244,61,85,37,245,121,166,102,235,219,26,141,31,54,213,15,10,24,1,216,144,5,77,169,214,160,45,145,16,233,16,236,227,80,91,157,76,145,211,134,77,79,30,199,98,75,9,101,13,118,218,21,240,208,179,10,174,148,160,239,88,70,232,132,212,168,67,210,254,85,160,83,193,102,171,151,250,19,223,36,230,104,0,100,254,144,251,187,189,203,169,160,90,151,204,169,201,138,191,231,26,146,2,78,63,9,130,70,226,45,33,6,22,81,19,79,143,213,82,236,162,165,6,156,160,195,50,181,105,159,154,71,133,252,200,227,72,168,143,96,226,134,41,77,50,20,202,228,103,243,19,47,45,59,109,61,118,128],[249,2,17,160,14,54,206,251,94,178,128,7,9,233,49,219,211,254,62,23,138,24,233,230,203,67,181,227,247,139,133,103,143,99,117,192,160,8,25,245,191,84,51,179,83,56,204,204,234,117,107,148,198,228,32,79,4,81,70,91,127,249,218,128,199,254,173,159,205,160,236,187,124,229,135,243,33,214,94,96,185,153,64,82,45,209,246,98,244,31,171,251,143,3,206,51,80,112,94,132,107,126,160,188,149,137,8,2,193,51,187,141,244,190,113,124,97,35,180,170,248,101,145,114,55,18,77,201,76,233,196,198,13,28,235,160,159,195,103,91,82,217,128,135,40,174,150,40,174,79,170,56,74,250,129,49,97,203,147,86,141,66,150,199,166,150,238,57,160,38,236,127,73,196,199,9,115,214,209,3,157,219,192,77,34,24,166,63,74,49,47,5,63,13,230,203,147,174,7,163,252,160,22,89,144,154,53,26,221,122,88,75,254,62,227,81,33,149,50,161,232,93,243,133,39,72,143,36,254,21,161,115,217,235,160,52,190,194,210,24,131,64,206,118,116,100,217,86,192,82,79,132,190,92,31,251,219,100,1,150,190,67,141,17,33,105,17,160,72,139,28,250,168,0,245,71,64,84,210,13,1,253,226,184,222,142,231,178,74,73,94,24,176,173,83,148,68,241,3,218,160,60,69,79,222,248,139,201,27,4,19,116,246,193,166,255,47,185,225,72,10,175,101,118,162,176,231,215,89,157,53,155,122,160,141,108,165,211,183,202,200,106,224,196,219,127,38,67,180,106,255,158,181,168,88,28,102,110,44,83,182,75,175,85,246,236,160,191,101,131,13,202,251,89,244,61,85,37,245,121,166,102,235,219,26,141,31,54,213,15,10,24,1,216,144,5,77,169,214,160,45,145,16,233,16,236,227,80,91,157,76,145,211,134,77,79,30,199,98,75,9,101,13,118,218,21,240,208,179,10,174,148,160,239,88,70,232,132,212,168,67,210,254,85,160,83,193,102,171,151,250,19,223,36,230,104,0,100,254,144,251,187,189,203,169,160,90,151,204,169,201,138,191,231,26,146,2,78,63,9,130,70,226,45,33,6,22,81,19,79,143,213,82,236,162,165,6,156,160,195,50,181,105,159,154,71,133,252,200,227,72,168,143,96,226,134,41,77,50,20,202,228,103,243,19,47,45,59,109,61,118,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,89,86,24,104,71,87,9,43,185,23,85,157,162,248,56,57,173,144,98,247,82,243,6,183,185,178,188,8,169,94,37,34,0],[160,94,68,164,228,8,206,2,100,183,59,204,78,27,148,158,254,21,53,27,196,174,63,250,230,27,249,115,67,179,132,171,246,0],[160,220,45,69,134,110,90,189,227,56,254,137,198,49,136,13,248,223,106,46,48,72,135,253,219,14,165,80,214,6,5,240,249,0],[160,70,1,18,9,227,120,186,204,87,74,61,146,56,163,109,37,162,64,89,59,76,222,74,240,77,106,107,61,64,159,116,211,0],[160,245,137,10,165,8,226,35,80,162,138,214,54,33,251,145,100,94,202,143,219,124,255,189,173,42,71,65,80,177,54,108,179,0],[160,251,76,52,42,100,210,134,22,96,76,216,213,101,232,11,7,50,235,115,127,7,31,69,144,186,105,7,133,220,142,205,27,0],[160,30,252,24,221,106,234,184,194,17,19,44,234,32,212,21,250,80,247,79,37,158,141,209,176,194,17,140,95,58,71,75,134,0],[160,239,158,3,149,62,125,60,108,8,17,192,48,26,188,99,126,16,80,126,33,94,82,215,252,177,238,202,136,51,201,191,24,0],[160,124,46,174,205,58,139,71,178,216,168,10,253,200,41,198,194,53,99,66,52,112,169,96,249,218,125,68,162,95,118,250,72,0],[160,2,47,215,145,10,63,74,127,140,214,142,45,72,209,196,96,72,86,191,250,181,59,173,245,234,106,232,156,125,56,116,99,0],[160,61,35,182,243,46,157,127,161,62,14,29,89,138,61,218,47,43,36,194,48,61,165,147,12,142,6,194,114,210,12,118,76,0],[160,227,139,198,175,140,9,0,191,252,253,224,62,135,102,215,6,81,24,165,206,118,56,187,164,132,119,5,26,222,15,172,202,0],[160,145,9,80,222,151,252,212,190,226,53,125,2,198,156,82,136,48,116,207,159,18,25,210,134,130,11,101,64,220,158,148,41,0],[160,134,117,116,6,219,236,27,229,224,1,47,39,5,197,119,166,171,202,67,169,6,242,192,85,188,71,197,253,108,12,252,244,0],[160,253,39,223,202,81,112,0,159,193,122,147,232,110,49,95,128,136,161,125,141,181,226,228,194,110,210,48,103,4,24,116,47,0],[160,12,96,253,188,206,151,211,48,111,44,46,177,209,24,218,192,67,228,252,42,162,132,40,190,187,31,242,105,220,185,79,166,0],[160,140,110,75,131,62,11,121,159,67,184,167,166,65,241,234,183,51,172,43,23,116,18,58,150,215,190,216,75,63,67,77,96,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,94,68,164,228,8,206,2,100,183,59,204,78,27,148,158,254,21,53,27,196,174,63,250,230,27,249,115,67,179,132,171,246,160,220,45,69,134,110,90,189,227,56,254,137,198,49,136,13,248,223,106,46,48,72,135,253,219,14,165,80,214,6,5,240,249,160,70,1,18,9,227,120,186,204,87,74,61,146,56,163,109,37,162,64,89,59,76,222,74,240,77,106,107,61,64,159,116,211,160,245,137,10,165,8,226,35,80,162,138,214,54,33,251,145,100,94,202,143,219,124,255,189,173,42,71,65,80,177,54,108,179,160,251,76,52,42,100,210,134,22,96,76,216,213,101,232,11,7,50,235,115,127,7,31,69,144,186,105,7,133,220,142,205,27,160,30,252,24,221,106,234,184,194,17,19,44,234,32,212,21,250,80,247,79,37,158,141,209,176,194,17,140,95,58,71,75,134,160,239,158,3,149,62,125,60,108,8,17,192,48,26,188,99,126,16,80,126,33,94,82,215,252,177,238,202,136,51,201,191,24,160,124,46,174,205,58,139,71,178,216,168,10,253,200,41,198,194,53,99,66,52,112,169,96,249,218,125,68,162,95,118,250,72,160,2,47,215,145,10,63,74,127,140,214,142,45,72,209,196,96,72,86,191,250,181,59,173,245,234,106,232,156,125,56,116,99,160,61,35,182,243,46,157,127,161,62,14,29,89,138,61,218,47,43,36,194,48,61,165,147,12,142,6,194,114,210,12,118,76,160,227,139,198,175,140,9,0,191,252,253,224,62,135,102,215,6,81,24,165,206,118,56,187,164,132,119,5,26,222,15,172,202,160,145,9,80,222,151,252,212,190,226,53,125,2,198,156,82,136,48,116,207,159,18,25,210,134,130,11,101,64,220,158,148,41,160,134,117,116,6,219,236,27,229,224,1,47,39,5,197,119,166,171,202,67,169,6,242,192,85,188,71,197,253,108,12,252,244,160,253,39,223,202,81,112,0,159,193,122,147,232,110,49,95,128,136,161,125,141,181,226,228,194,110,210,48,103,4,24,116,47,160,12,96,253,188,206,151,211,48,111,44,46,177,209,24,218,192,67,228,252,42,162,132,40,190,187,31,242,105,220,185,79,166,160,140,110,75,131,62,11,121,159,67,184,167,166,65,241,234,183,51,172,43,23,116,18,58,150,215,190,216,75,63,67,77,96,128],[249,2,17,160,94,68,164,228,8,206,2,100,183,59,204,78,27,148,158,254,21,53,27,196,174,63,250,230,27,249,115,67,179,132,171,246,160,220,45,69,134,110,90,189,227,56,254,137,198,49,136,13,248,223,106,46,48,72,135,253,219,14,165,80,214,6,5,240,249,160,70,1,18,9,227,120,186,204,87,74,61,146,56,163,109,37,162,64,89,59,76,222,74,240,77,106,107,61,64,159,116,211,160,245,137,10,165,8,226,35,80,162,138,214,54,33,251,145,100,94,202,143,219,124,255,189,173,42,71,65,80,177,54,108,179,160,251,76,52,42,100,210,134,22,96,76,216,213,101,232,11,7,50,235,115,127,7,31,69,144,186,105,7,133,220,142,205,27,160,30,252,24,221,106,234,184,194,17,19,44,234,32,212,21,250,80,247,79,37,158,141,209,176,194,17,140,95,58,71,75,134,160,239,158,3,149,62,125,60,108,8,17,192,48,26,188,99,126,16,80,126,33,94,82,215,252,177,238,202,136,51,201,191,24,160,89,86,24,104,71,87,9,43,185,23,85,157,162,248,56,57,173,144,98,247,82,243,6,183,185,178,188,8,169,94,37,34,160,2,47,215,145,10,63,74,127,140,214,142,45,72,209,196,96,72,86,191,250,181,59,173,245,234,106,232,156,125,56,116,99,160,61,35,182,243,46,157,127,161,62,14,29,89,138,61,218,47,43,36,194,48,61,165,147,12,142,6,194,114,210,12,118,76,160,227,139,198,175,140,9,0,191,252,253,224,62,135,102,215,6,81,24,165,206,118,56,187,164,132,119,5,26,222,15,172,202,160,145,9,80,222,151,252,212,190,226,53,125,2,198,156,82,136,48,116,207,159,18,25,210,134,130,11,101,64,220,158,148,41,160,134,117,116,6,219,236,27,229,224,1,47,39,5,197,119,166,171,202,67,169,6,242,192,85,188,71,197,253,108,12,252,244,160,253,39,223,202,81,112,0,159,193,122,147,232,110,49,95,128,136,161,125,141,181,226,228,194,110,210,48,103,4,24,116,47,160,12,96,253,188,206,151,211,48,111,44,46,177,209,24,218,192,67,228,252,42,162,132,40,190,187,31,242,105,220,185,79,166,160,140,110,75,131,62,11,121,159,67,184,167,166,65,241,234,183,51,172,43,23,116,18,58,150,215,190,216,75,63,67,77,96,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,223,253,8,19,101,225,115,99,209,13,98,89,125,130,141,47,42,7,77,151,59,176,41,37,172,84,34,221,58,209,109,242,0],[160,22,132,55,171,129,238,222,136,152,84,90,154,91,102,58,9,77,58,138,94,154,6,254,250,245,27,42,253,235,134,90,51,0],[160,183,40,154,43,21,80,252,94,226,22,227,46,139,67,60,158,20,226,79,139,178,183,72,146,97,116,240,138,94,145,217,189,0],[160,2,222,212,55,144,255,190,168,235,20,162,204,28,60,122,247,204,57,0,249,204,31,214,218,10,121,246,110,25,204,153,3,0],[160,222,198,173,18,93,139,116,104,63,56,14,179,165,11,14,63,234,180,107,174,208,212,202,140,9,96,57,76,234,20,88,106,0],[160,25,207,146,153,131,210,193,18,128,12,43,25,52,115,141,105,113,128,98,115,115,53,128,227,198,8,87,232,0,176,101,74,0],[160,63,179,94,234,205,168,4,12,252,110,52,93,60,90,58,94,104,84,3,28,94,41,110,99,62,142,169,160,41,189,52,66,0],[160,60,31,73,144,8,150,92,154,246,21,168,149,164,15,100,214,33,233,148,132,172,212,186,170,83,72,74,210,136,58,80,134,0],[160,199,255,115,8,197,2,30,193,12,66,175,79,187,31,61,234,54,213,6,27,160,143,202,104,11,159,143,233,54,242,236,225,0],[160,148,77,81,57,154,216,3,61,72,57,230,76,17,174,7,211,53,233,201,166,4,103,89,222,248,74,167,42,136,145,42,148,0],[160,118,118,245,91,97,59,94,44,252,96,195,164,110,198,144,117,107,206,98,127,8,159,13,51,109,227,153,40,169,147,228,7,0],[160,10,108,237,44,110,168,222,53,146,12,145,99,70,228,91,157,50,195,102,112,32,212,244,189,35,140,97,32,100,97,39,4,0],[160,109,208,92,252,21,60,182,228,101,171,188,214,124,152,213,2,171,48,96,75,191,19,133,92,168,185,100,78,156,236,253,6,0],[160,96,11,178,166,247,228,182,234,27,169,222,101,80,171,3,74,142,198,165,141,179,103,167,131,248,224,102,52,74,110,247,192,0],[160,31,34,237,160,77,212,112,101,224,6,89,116,203,157,220,174,251,52,190,120,197,5,126,35,95,52,3,64,38,156,167,232,0],[160,212,132,92,112,9,22,144,140,250,224,12,123,140,47,83,164,195,7,46,245,208,159,137,97,255,56,236,175,247,181,166,144,0],[160,116,218,17,103,56,39,254,10,75,107,10,104,95,34,50,190,138,149,7,15,193,190,12,231,247,181,196,39,133,91,84,136,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,22,132,55,171,129,238,222,136,152,84,90,154,91,102,58,9,77,58,138,94,154,6,254,250,245,27,42,253,235,134,90,51,160,183,40,154,43,21,80,252,94,226,22,227,46,139,67,60,158,20,226,79,139,178,183,72,146,97,116,240,138,94,145,217,189,160,2,222,212,55,144,255,190,168,235,20,162,204,28,60,122,247,204,57,0,249,204,31,214,218,10,121,246,110,25,204,153,3,160,222,198,173,18,93,139,116,104,63,56,14,179,165,11,14,63,234,180,107,174,208,212,202,140,9,96,57,76,234,20,88,106,160,25,207,146,153,131,210,193,18,128,12,43,25,52,115,141,105,113,128,98,115,115,53,128,227,198,8,87,232,0,176,101,74,160,63,179,94,234,205,168,4,12,252,110,52,93,60,90,58,94,104,84,3,28,94,41,110,99,62,142,169,160,41,189,52,66,160,60,31,73,144,8,150,92,154,246,21,168,149,164,15,100,214,33,233,148,132,172,212,186,170,83,72,74,210,136,58,80,134,160,199,255,115,8,197,2,30,193,12,66,175,79,187,31,61,234,54,213,6,27,160,143,202,104,11,159,143,233,54,242,236,225,160,148,77,81,57,154,216,3,61,72,57,230,76,17,174,7,211,53,233,201,166,4,103,89,222,248,74,167,42,136,145,42,148,160,118,118,245,91,97,59,94,44,252,96,195,164,110,198,144,117,107,206,98,127,8,159,13,51,109,227,153,40,169,147,228,7,160,10,108,237,44,110,168,222,53,146,12,145,99,70,228,91,157,50,195,102,112,32,212,244,189,35,140,97,32,100,97,39,4,160,109,208,92,252,21,60,182,228,101,171,188,214,124,152,213,2,171,48,96,75,191,19,133,92,168,185,100,78,156,236,253,6,160,96,11,178,166,247,228,182,234,27,169,222,101,80,171,3,74,142,198,165,141,179,103,167,131,248,224,102,52,74,110,247,192,160,31,34,237,160,77,212,112,101,224,6,89,116,203,157,220,174,251,52,190,120,197,5,126,35,95,52,3,64,38,156,167,232,160,212,132,92,112,9,22,144,140,250,224,12,123,140,47,83,164,195,7,46,245,208,159,137,97,255,56,236,175,247,181,166,144,160,116,218,17,103,56,39,254,10,75,107,10,104,95,34,50,190,138,149,7,15,193,190,12,231,247,181,196,39,133,91,84,136,128],[249,2,17,160,22,132,55,171,129,238,222,136,152,84,90,154,91,102,58,9,77,58,138,94,154,6,254,250,245,27,42,253,235,134,90,51,160,183,40,154,43,21,80,252,94,226,22,227,46,139,67,60,158,20,226,79,139,178,183,72,146,97,116,240,138,94,145,217,189,160,2,222,212,55,144,255,190,168,235,20,162,204,28,60,122,247,204,57,0,249,204,31,214,218,10,121,246,110,25,204,153,3,160,222,198,173,18,93,139,116,104,63,56,14,179,165,11,14,63,234,180,107,174,208,212,202,140,9,96,57,76,234,20,88,106,160,25,207,146,153,131,210,193,18,128,12,43,25,52,115,141,105,113,128,98,115,115,53,128,227,198,8,87,232,0,176,101,74,160,63,179,94,234,205,168,4,12,252,110,52,93,60,90,58,94,104,84,3,28,94,41,110,99,62,142,169,160,41,189,52,66,160,60,31,73,144,8,150,92,154,246,21,168,149,164,15,100,214,33,233,148,132,172,212,186,170,83,72,74,210,136,58,80,134,160,199,255,115,8,197,2,30,193,12,66,175,79,187,31,61,234,54,213,6,27,160,143,202,104,11,159,143,233,54,242,236,225,160,148,77,81,57,154,216,3,61,72,57,230,76,17,174,7,211,53,233,201,166,4,103,89,222,248,74,167,42,136,145,42,148,160,223,253,8,19,101,225,115,99,209,13,98,89,125,130,141,47,42,7,77,151,59,176,41,37,172,84,34,221,58,209,109,242,160,10,108,237,44,110,168,222,53,146,12,145,99,70,228,91,157,50,195,102,112,32,212,244,189,35,140,97,32,100,97,39,4,160,109,208,92,252,21,60,182,228,101,171,188,214,124,152,213,2,171,48,96,75,191,19,133,92,168,185,100,78,156,236,253,6,160,96,11,178,166,247,228,182,234,27,169,222,101,80,171,3,74,142,198,165,141,179,103,167,131,248,224,102,52,74,110,247,192,160,31,34,237,160,77,212,112,101,224,6,89,116,203,157,220,174,251,52,190,120,197,5,126,35,95,52,3,64,38,156,167,232,160,212,132,92,112,9,22,144,140,250,224,12,123,140,47,83,164,195,7,46,245,208,159,137,97,255,56,236,175,247,181,166,144,160,116,218,17,103,56,39,254,10,75,107,10,104,95,34,50,190,138,149,7,15,193,190,12,231,247,181,196,39,133,91,84,136,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,1,49],[249,1,49]]}},"account":null,"storage":null,"values":[[160,3,188,138,224,214,160,165,109,21,137,33,153,220,44,101,232,27,9,186,237,55,215,250,4,127,209,167,175,19,86,147,139,0],[160,217,50,17,150,230,173,80,155,120,151,226,149,44,95,28,79,42,186,74,48,15,147,12,49,61,117,219,221,27,171,99,106,0],[160,97,27,25,149,216,60,68,49,197,110,195,167,250,199,222,4,254,136,109,231,156,184,63,209,107,114,245,22,140,77,125,67,0],[160,37,44,22,191,194,8,167,2,157,30,111,132,136,25,96,10,149,255,129,5,122,113,82,179,153,19,70,98,98,40,224,15,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,12,154,229,230,56,151,114,249,143,242,22,19,83,244,106,125,119,188,63,194,196,133,45,191,136,185,232,30,119,11,223,217,0],[160,56,175,69,201,250,148,41,161,191,224,55,70,119,208,152,70,253,110,109,13,21,220,236,192,131,36,248,208,85,248,240,120,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,109,108,13,68,94,201,105,7,111,247,223,145,137,104,24,249,54,155,216,26,192,192,124,123,205,135,106,115,178,10,207,90,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,161,128,128,41,167,172,184,184,231,12,171,75,32,205,2,0,67,105,93,226,165,23,200,222,21,150,245,164,45,130,69,145,0],[160,91,209,12,235,240,207,91,19,35,30,161,176,71,120,4,140,99,183,225,45,43,2,83,54,104,254,134,103,193,117,18,159,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,14,147,243,30,8,192,81,188,107,25,10,18,22,3,10,171,2,171,62,150,132,103,42,178,20,119,88,232,116,50,239,90,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,49,160,217,50,17,150,230,173,80,155,120,151,226,149,44,95,28,79,42,186,74,48,15,147,12,49,61,117,219,221,27,171,99,106,160,97,27,25,149,216,60,68,49,197,110,195,167,250,199,222,4,254,136,109,231,156,184,63,209,107,114,245,22,140,77,125,67,160,37,44,22,191,194,8,167,2,157,30,111,132,136,25,96,10,149,255,129,5,122,113,82,179,153,19,70,98,98,40,224,15,128,128,160,12,154,229,230,56,151,114,249,143,242,22,19,83,244,106,125,119,188,63,194,196,133,45,191,136,185,232,30,119,11,223,217,160,56,175,69,201,250,148,41,161,191,224,55,70,119,208,152,70,253,110,109,13,21,220,236,192,131,36,248,208,85,248,240,120,128,160,109,108,13,68,94,201,105,7,111,247,223,145,137,104,24,249,54,155,216,26,192,192,124,123,205,135,106,115,178,10,207,90,128,160,161,128,128,41,167,172,184,184,231,12,171,75,32,205,2,0,67,105,93,226,165,23,200,222,21,150,245,164,45,130,69,145,160,91,209,12,235,240,207,91,19,35,30,161,176,71,120,4,140,99,183,225,45,43,2,83,54,104,254,134,103,193,117,18,159,128,128,128,160,14,147,243,30,8,192,81,188,107,25,10,18,22,3,10,171,2,171,62,150,132,103,42,178,20,119,88,232,116,50,239,90,128],[249,1,49,160,217,50,17,150,230,173,80,155,120,151,226,149,44,95,28,79,42,186,74,48,15,147,12,49,61,117,219,221,27,171,99,106,160,97,27,25,149,216,60,68,49,197,110,195,167,250,199,222,4,254,136,109,231,156,184,63,209,107,114,245,22,140,77,125,67,160,37,44,22,191,194,8,167,2,157,30,111,132,136,25,96,10,149,255,129,5,122,113,82,179,153,19,70,98,98,40,224,15,128,128,160,12,154,229,230,56,151,114,249,143,242,22,19,83,244,106,125,119,188,63,194,196,133,45,191,136,185,232,30,119,11,223,217,160,56,175,69,201,250,148,41,161,191,224,55,70,119,208,152,70,253,110,109,13,21,220,236,192,131,36,248,208,85,248,240,120,128,160,109,108,13,68,94,201,105,7,111,247,223,145,137,104,24,249,54,155,216,26,192,192,124,123,205,135,106,115,178,10,207,90,128,160,161,128,128,41,167,172,184,184,231,12,171,75,32,205,2,0,67,105,93,226,165,23,200,222,21,150,245,164,45,130,69,145,160,3,188,138,224,214,160,165,109,21,137,33,153,220,44,101,232,27,9,186,237,55,215,250,4,127,209,167,175,19,86,147,139,128,128,128,160,14,147,243,30,8,192,81,188,107,25,10,18,22,3,10,171,2,171,62,150,132,103,42,178,20,119,88,232,116,50,239,90,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[true,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":1,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,14,190,175,204,1,88,161,225,248,79,139,244,146,70,64,4,189,233,254,39,142,180,141,115,15,159,33,183,104,165,47,180,0],[160,14,190,175,204,1,88,161,225,248,79,139,244,146,70,64,4,189,233,254,39,142,180,141,115,15,159,33,183,104,165,47,180,0],[160,144,35,76,60,224,165,33,44,20,231,106,227,123,48,231,167,187,232,136,84,202,58,174,178,229,175,102,40,187,252,252,56,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,160,14,190,175,204,1,88,161,225,248,79,139,244,146,70,64,4,189,233,254,39,142,180,141,115,15,159,33,183,104,165,47,180,160,144,35,76,60,224,165,33,44,20,231,106,227,123,48,231,167,187,232,136,84,202,58,174,178,229,175,102,40,187,252,252,56,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128],[248,81,160,14,190,175,204,1,88,161,225,248,79,139,244,146,70,64,4,189,233,254,39,142,180,141,115,15,159,33,183,104,165,47,180,160,144,35,76,60,224,165,33,44,20,231,106,227,123,48,231,167,187,232,136,84,202,58,174,178,229,175,102,40,187,252,252,56,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,16],"key":[6,54,121,176,41,166,146,158,11,2,219,19,182,134,140,146,224,172,119,232,142,56,35,127,152,119,26,75,107,178,238,28],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[248,102],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,49,79,105,40,165,82,100,250,47,193,39,220,147,104,34,150,6,174,252,183,197,73,156,243,5,233,50,68,144,0,0,0,0],[157,32,41,166,146,158,11,2,219,19,182,134,140,146,224,172,119,232,142,56,35,127,152,119,26,75,107,178,238,28,0,0,0,0],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,239,250,42,207,194,19,241,166,171,82,99,98,194,211,131,108,145,11,212,98,130,52,136,249,236,138,129,65,135,27,255,22,0],[160,194,251,137,113,156,102,237,210,45,245,149,106,128,111,184,195,255,75,112,195,228,214,28,38,149,201,190,137,62,218,154,228,0],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,239,250,42,207,194,19,241,166,171,82,99,98,194,211,131,108,145,11,212,98,130,52,136,249,236,138,129,65,135,27,255,22,0],[160,194,251,137,113,156,102,237,210,45,245,149,106,128,111,184,195,255,75,112,195,228,214,28,38,149,201,190,137,62,218,154,228,0],[157,32,79,105,40,165,82,100,250,47,193,39,220,147,104,34,150,6,174,252,183,197,73,156,243,5,233,50,68,144,0,0,0,0],[157,32,41,166,146,158,11,2,219,19,182,134,140,146,224,172,119,232,142,56,35,127,152,119,26,75,107,178,238,28,0,0,0,0]],"keccak_data":[[248,102,157,49,79,105,40,165,82,100,250,47,193,39,220,147,104,34,150,6,174,252,183,197,73,156,243,5,233,50,68,144,184,70,248,68,1,128,160,239,250,42,207,194,19,241,166,171,82,99,98,194,211,131,108,145,11,212,98,130,52,136,249,236,138,129,65,135,27,255,22,160,194,251,137,113,156,102,237,210,45,245,149,106,128,111,184,195,255,75,112,195,228,214,28,38,149,201,190,137,62,218,154,228],[248,102,157,32,41,166,146,158,11,2,219,19,182,134,140,146,224,172,119,232,142,56,35,127,152,119,26,75,107,178,238,28,184,70,248,68,1,23,160,239,250,42,207,194,19,241,166,171,82,99,98,194,211,131,108,145,11,212,98,130,52,136,249,236,138,129,65,135,27,255,22,160,194,251,137,113,156,102,237,210,45,245,149,106,128,111,184,195,255,75,112,195,228,214,28,38,149,201,190,137,62,218,154,228],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,16],[248,102,157,32,79,105,40,165,82,100,250,47,193,39,220,147,104,34,150,6,174,252,183,197,73,156,243,5,233,50,68,144,184,70,248,68,1,128,160,239,250,42,207,194,19,241,166,171,82,99,98,194,211,131,108,145,11,212,98,130,52,136,249,236,138,129,65,135,27,255,22,160,194,251,137,113,156,102,237,210,45,245,149,106,128,111,184,195,255,75,112,195,228,214,28,38,149,201,190,137,62,218,154,228]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/AccountBranchPlaceholderInFirstLevel.json b/zkevm-circuits/src/mpt_circuit/tests/AccountBranchPlaceholderInFirstLevel.json new file mode 100644 index 0000000000..d7a4b18efb --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/AccountBranchPlaceholderInFirstLevel.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"BalanceChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,42,49,58,236,142,182,122,88,227,244,222,147,240,191,50,194,201,235,146,22,183,151,148,220,224,42,129,105,249,3,65,135,0],[160,137,42,134,153,47,65,95,23,176,203,18,9,153,74,69,199,215,193,138,130,193,100,188,234,150,231,238,93,222,63,27,116,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[true,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":0,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,175,242,218,187,23,41,55,165,142,12,117,152,30,29,140,199,39,35,154,226,153,127,147,253,29,250,19,12,134,24,191,36,0],[160,102,167,102,40,17,73,27,61,53,46,150,149,6,180,32,210,105,232,181,26,34,79,87,75,59,56,179,70,63,67,240,9,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,175,242,218,187,23,41,55,165,142,12,117,152,30,29,140,199,39,35,154,226,153,127,147,253,29,250,19,12,134,24,191,36,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,160,102,167,102,40,17,73,27,61,53,46,150,149,6,180,32,210,105,232,181,26,34,79,87,75,59,56,179,70,63,67,240,9,128,128,128,128,128,128,128,128,128,128,128,128,128,160,175,242,218,187,23,41,55,165,142,12,117,152,30,29,140,199,39,35,154,226,153,127,147,253,29,250,19,12,134,24,191,36,128,128],[248,81,160,102,167,102,40,17,73,27,61,53,46,150,149,6,180,32,210,105,232,181,26,34,79,87,75,59,56,179,70,63,67,240,9,128,128,128,128,128,128,128,128,128,128,128,128,128,160,175,242,218,187,23,41,55,165,142,12,117,152,30,29,140,199,39,35,154,226,153,127,147,253,29,250,19,12,134,24,191,36,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,176],"key":[233,77,78,73,143,245,72,135,22,104,2,103,203,126,172,253,113,163,243,139,206,31,120,250,157,3,184,255,20,142,99,107],"list_rlp_bytes":[[248,106],[248,105]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[248,105],"wrong_rlp_bytes":[248,105]},"storage":null,"values":[[161,32,6,144,178,57,186,58,175,153,62,68,58,225,74,239,252,68,207,141,153,49,167,155,174,217,250,20,29,14,69,6,225,49],[160,57,77,78,73,143,245,72,135,22,104,2,103,203,126,172,253,113,163,243,139,206,31,120,250,157,3,184,255,20,142,99,107,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[160,54,144,178,57,186,58,175,153,62,68,58,225,74,239,252,68,207,141,153,49,167,155,174,217,250,20,29,14,69,6,225,49,0],[160,57,77,78,73,143,245,72,135,22,104,2,103,203,126,172,253,113,163,243,139,206,31,120,250,157,3,184,255,20,142,99,107,0]],"keccak_data":[[248,106,161,32,6,144,178,57,186,58,175,153,62,68,58,225,74,239,252,68,207,141,153,49,167,155,174,217,250,20,29,14,69,6,225,49,184,70,248,68,128,1,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,105,160,57,77,78,73,143,245,72,135,22,104,2,103,203,126,172,253,113,163,243,139,206,31,120,250,157,3,184,255,20,142,99,107,184,70,248,68,128,23,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,176],[248,105,160,54,144,178,57,186,58,175,153,62,68,58,225,74,239,252,68,207,141,153,49,167,155,174,217,250,20,29,14,69,6,225,49,184,70,248,68,128,1,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/AccountDeletePlaceholderBranch.json b/zkevm-circuits/src/mpt_circuit/tests/AccountDeletePlaceholderBranch.json new file mode 100644 index 0000000000..664e2b679c --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/AccountDeletePlaceholderBranch.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"AccountDestructed"},"extension_branch":null,"account":null,"storage":null,"values":[[160,174,185,69,61,3,204,141,128,148,239,24,33,11,213,158,212,244,157,156,174,237,155,166,186,230,47,35,133,90,143,250,42,0],[160,92,69,153,141,251,249,206,112,188,187,128,87,78,215,166,34,146,45,44,119,94,10,35,49,254,90,139,141,204,153,244,144,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,134,73,68,223,173,41,37,147,36,140,247,241,223,160,248,6,218,230,96,85,105,78,243,214,11,80,67,23,134,151,127,162,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,134,73,68,223,173,41,37,147,36,140,247,241,223,160,248,6,218,230,96,85,105,78,243,214,11,80,67,23,134,151,127,162,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,102,201,63,187,90,100,67,28,66,169,235,107,142,189,159,208,34,47,59,148,229,29,242,190,206,105,91,103,217,108,220,3,0],[160,62,81,246,216,50,34,109,164,244,230,118,34,30,57,143,168,201,163,53,157,138,200,83,22,217,54,9,12,142,74,113,119,0],[160,110,58,129,42,7,242,95,48,22,117,24,235,247,115,27,159,148,240,189,82,238,245,24,104,4,88,96,153,87,62,124,87,0],[160,23,125,132,126,57,77,125,108,183,122,223,20,200,11,140,116,8,197,125,77,164,229,34,187,130,255,11,5,123,106,18,226,0],[160,34,142,142,168,173,99,151,78,20,223,49,167,173,193,155,22,185,57,77,94,140,81,219,8,205,119,152,79,221,53,32,207,0],[160,47,68,110,156,219,87,42,252,153,153,146,44,71,68,241,42,115,255,196,172,147,166,193,209,18,197,101,149,78,252,80,101,0],[160,177,72,39,32,231,101,153,80,19,87,43,118,153,180,111,107,120,208,26,121,107,122,223,78,248,252,112,146,129,121,183,249,0],[160,166,43,253,9,132,156,69,206,240,132,245,215,140,18,136,28,76,115,232,35,55,46,97,106,111,29,136,215,243,244,104,17,0],[160,81,197,227,235,119,136,89,180,1,44,243,14,3,35,252,32,39,239,6,187,20,67,5,160,124,3,15,223,92,185,169,242,0],[160,149,116,118,68,110,184,206,46,175,107,154,14,16,171,116,53,96,139,243,244,119,49,149,255,105,200,203,196,178,219,6,82,0],[160,110,155,225,108,252,161,111,115,34,161,168,254,20,210,73,55,53,84,44,62,235,227,145,125,56,152,100,115,68,140,102,72,0],[160,215,32,96,214,100,112,201,119,187,39,102,186,145,221,83,195,0,96,163,123,49,150,62,117,25,68,3,71,226,217,71,5,0],[160,216,77,122,185,166,60,76,175,212,143,31,218,53,223,132,60,243,170,247,163,51,217,81,184,10,173,42,95,228,91,232,94,0],[160,101,173,25,127,56,52,143,227,12,238,174,236,186,0,234,52,202,44,193,111,186,150,247,118,156,178,163,130,102,30,77,58,0],[160,130,214,88,212,94,182,185,119,29,142,174,223,89,224,222,59,117,224,157,226,110,51,196,90,175,27,158,67,104,153,87,154,0],[160,32,215,128,174,120,163,233,16,26,195,200,23,79,233,122,253,170,114,110,149,85,164,70,233,70,156,107,147,254,209,174,11,0],[160,193,92,89,242,135,228,231,76,186,23,253,187,202,250,103,245,131,178,24,164,47,129,106,19,179,50,117,153,14,62,38,242,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,62,81,246,216,50,34,109,164,244,230,118,34,30,57,143,168,201,163,53,157,138,200,83,22,217,54,9,12,142,74,113,119,160,110,58,129,42,7,242,95,48,22,117,24,235,247,115,27,159,148,240,189,82,238,245,24,104,4,88,96,153,87,62,124,87,160,23,125,132,126,57,77,125,108,183,122,223,20,200,11,140,116,8,197,125,77,164,229,34,187,130,255,11,5,123,106,18,226,160,34,142,142,168,173,99,151,78,20,223,49,167,173,193,155,22,185,57,77,94,140,81,219,8,205,119,152,79,221,53,32,207,160,47,68,110,156,219,87,42,252,153,153,146,44,71,68,241,42,115,255,196,172,147,166,193,209,18,197,101,149,78,252,80,101,160,177,72,39,32,231,101,153,80,19,87,43,118,153,180,111,107,120,208,26,121,107,122,223,78,248,252,112,146,129,121,183,249,160,166,43,253,9,132,156,69,206,240,132,245,215,140,18,136,28,76,115,232,35,55,46,97,106,111,29,136,215,243,244,104,17,160,81,197,227,235,119,136,89,180,1,44,243,14,3,35,252,32,39,239,6,187,20,67,5,160,124,3,15,223,92,185,169,242,160,149,116,118,68,110,184,206,46,175,107,154,14,16,171,116,53,96,139,243,244,119,49,149,255,105,200,203,196,178,219,6,82,160,110,155,225,108,252,161,111,115,34,161,168,254,20,210,73,55,53,84,44,62,235,227,145,125,56,152,100,115,68,140,102,72,160,215,32,96,214,100,112,201,119,187,39,102,186,145,221,83,195,0,96,163,123,49,150,62,117,25,68,3,71,226,217,71,5,160,216,77,122,185,166,60,76,175,212,143,31,218,53,223,132,60,243,170,247,163,51,217,81,184,10,173,42,95,228,91,232,94,160,101,173,25,127,56,52,143,227,12,238,174,236,186,0,234,52,202,44,193,111,186,150,247,118,156,178,163,130,102,30,77,58,160,130,214,88,212,94,182,185,119,29,142,174,223,89,224,222,59,117,224,157,226,110,51,196,90,175,27,158,67,104,153,87,154,160,32,215,128,174,120,163,233,16,26,195,200,23,79,233,122,253,170,114,110,149,85,164,70,233,70,156,107,147,254,209,174,11,160,193,92,89,242,135,228,231,76,186,23,253,187,202,250,103,245,131,178,24,164,47,129,106,19,179,50,117,153,14,62,38,242,128],[249,2,17,160,62,81,246,216,50,34,109,164,244,230,118,34,30,57,143,168,201,163,53,157,138,200,83,22,217,54,9,12,142,74,113,119,160,110,58,129,42,7,242,95,48,22,117,24,235,247,115,27,159,148,240,189,82,238,245,24,104,4,88,96,153,87,62,124,87,160,23,125,132,126,57,77,125,108,183,122,223,20,200,11,140,116,8,197,125,77,164,229,34,187,130,255,11,5,123,106,18,226,160,34,142,142,168,173,99,151,78,20,223,49,167,173,193,155,22,185,57,77,94,140,81,219,8,205,119,152,79,221,53,32,207,160,47,68,110,156,219,87,42,252,153,153,146,44,71,68,241,42,115,255,196,172,147,166,193,209,18,197,101,149,78,252,80,101,160,177,72,39,32,231,101,153,80,19,87,43,118,153,180,111,107,120,208,26,121,107,122,223,78,248,252,112,146,129,121,183,249,160,166,43,253,9,132,156,69,206,240,132,245,215,140,18,136,28,76,115,232,35,55,46,97,106,111,29,136,215,243,244,104,17,160,81,197,227,235,119,136,89,180,1,44,243,14,3,35,252,32,39,239,6,187,20,67,5,160,124,3,15,223,92,185,169,242,160,149,116,118,68,110,184,206,46,175,107,154,14,16,171,116,53,96,139,243,244,119,49,149,255,105,200,203,196,178,219,6,82,160,110,155,225,108,252,161,111,115,34,161,168,254,20,210,73,55,53,84,44,62,235,227,145,125,56,152,100,115,68,140,102,72,160,215,32,96,214,100,112,201,119,187,39,102,186,145,221,83,195,0,96,163,123,49,150,62,117,25,68,3,71,226,217,71,5,160,216,77,122,185,166,60,76,175,212,143,31,218,53,223,132,60,243,170,247,163,51,217,81,184,10,173,42,95,228,91,232,94,160,102,201,63,187,90,100,67,28,66,169,235,107,142,189,159,208,34,47,59,148,229,29,242,190,206,105,91,103,217,108,220,3,160,130,214,88,212,94,182,185,119,29,142,174,223,89,224,222,59,117,224,157,226,110,51,196,90,175,27,158,67,104,153,87,154,160,32,215,128,174,120,163,233,16,26,195,200,23,79,233,122,253,170,114,110,149,85,164,70,233,70,156,107,147,254,209,174,11,160,193,92,89,242,135,228,231,76,186,23,253,187,202,250,103,245,131,178,24,164,47,129,106,19,179,50,117,153,14,62,38,242,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,221,162,147,55,34,170,139,142,218,244,84,132,181,168,39,246,188,198,8,193,144,16,119,237,138,12,69,220,76,152,153,153,0],[160,243,248,117,132,135,179,242,217,170,170,147,202,41,30,49,202,235,19,91,182,154,115,189,49,71,95,213,18,134,202,205,168,0],[160,248,214,27,163,48,89,69,124,39,200,95,223,46,31,254,156,7,133,69,242,252,178,116,213,90,11,24,2,233,210,95,159,0],[160,71,79,93,73,42,149,57,51,225,103,235,189,110,188,70,240,193,23,63,219,116,110,243,110,149,7,153,50,68,75,57,255,0],[160,247,151,249,133,151,231,1,67,135,51,218,198,210,129,152,142,23,144,43,153,113,15,227,167,123,200,117,134,246,144,41,89,0],[160,64,41,80,117,176,86,114,226,155,222,42,78,189,238,210,98,213,168,109,98,43,187,53,78,43,64,239,233,108,49,103,145,0],[160,81,130,213,232,226,141,41,38,167,145,141,254,200,67,223,12,25,155,31,46,162,105,182,222,2,233,159,55,73,58,81,8,0],[160,26,77,61,137,205,196,204,129,210,129,10,70,241,189,76,121,69,162,6,215,188,152,126,170,249,149,72,157,147,95,113,240,0],[160,76,38,106,162,112,134,133,37,202,39,149,12,3,108,165,104,174,60,185,97,253,218,30,38,19,121,89,102,165,245,8,216,0],[160,52,133,159,70,24,244,195,146,2,17,195,222,204,211,129,28,126,50,191,31,4,148,37,228,107,40,143,95,15,239,188,142,0],[160,30,36,232,235,34,123,13,63,36,1,92,189,49,255,191,152,101,81,234,45,170,78,228,224,41,77,6,235,75,41,95,228,0],[160,53,118,183,248,110,40,9,128,63,159,4,146,88,128,57,182,207,231,204,72,18,102,249,225,183,253,26,165,204,221,133,107,0],[160,47,211,121,43,20,152,236,53,207,92,248,102,254,75,207,136,49,232,147,125,59,184,15,14,62,136,58,5,56,132,135,139,0],[160,146,83,193,207,181,29,203,52,47,58,114,231,161,55,66,1,75,127,145,210,118,37,82,232,135,3,183,30,255,240,248,11,0],[160,74,111,171,71,106,196,108,204,154,49,109,206,164,6,195,104,55,35,226,133,78,86,140,154,197,163,105,253,218,72,68,52,0],[160,65,96,18,60,75,230,130,27,230,113,226,140,106,73,86,243,182,218,25,199,19,87,31,254,106,4,224,14,216,143,37,64,0],[160,250,100,42,85,168,208,19,121,181,167,41,37,110,73,50,34,56,59,218,49,242,70,153,106,217,4,105,151,51,36,134,125,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,243,248,117,132,135,179,242,217,170,170,147,202,41,30,49,202,235,19,91,182,154,115,189,49,71,95,213,18,134,202,205,168,160,248,214,27,163,48,89,69,124,39,200,95,223,46,31,254,156,7,133,69,242,252,178,116,213,90,11,24,2,233,210,95,159,160,71,79,93,73,42,149,57,51,225,103,235,189,110,188,70,240,193,23,63,219,116,110,243,110,149,7,153,50,68,75,57,255,160,247,151,249,133,151,231,1,67,135,51,218,198,210,129,152,142,23,144,43,153,113,15,227,167,123,200,117,134,246,144,41,89,160,64,41,80,117,176,86,114,226,155,222,42,78,189,238,210,98,213,168,109,98,43,187,53,78,43,64,239,233,108,49,103,145,160,81,130,213,232,226,141,41,38,167,145,141,254,200,67,223,12,25,155,31,46,162,105,182,222,2,233,159,55,73,58,81,8,160,26,77,61,137,205,196,204,129,210,129,10,70,241,189,76,121,69,162,6,215,188,152,126,170,249,149,72,157,147,95,113,240,160,76,38,106,162,112,134,133,37,202,39,149,12,3,108,165,104,174,60,185,97,253,218,30,38,19,121,89,102,165,245,8,216,160,52,133,159,70,24,244,195,146,2,17,195,222,204,211,129,28,126,50,191,31,4,148,37,228,107,40,143,95,15,239,188,142,160,30,36,232,235,34,123,13,63,36,1,92,189,49,255,191,152,101,81,234,45,170,78,228,224,41,77,6,235,75,41,95,228,160,53,118,183,248,110,40,9,128,63,159,4,146,88,128,57,182,207,231,204,72,18,102,249,225,183,253,26,165,204,221,133,107,160,47,211,121,43,20,152,236,53,207,92,248,102,254,75,207,136,49,232,147,125,59,184,15,14,62,136,58,5,56,132,135,139,160,146,83,193,207,181,29,203,52,47,58,114,231,161,55,66,1,75,127,145,210,118,37,82,232,135,3,183,30,255,240,248,11,160,74,111,171,71,106,196,108,204,154,49,109,206,164,6,195,104,55,35,226,133,78,86,140,154,197,163,105,253,218,72,68,52,160,65,96,18,60,75,230,130,27,230,113,226,140,106,73,86,243,182,218,25,199,19,87,31,254,106,4,224,14,216,143,37,64,160,250,100,42,85,168,208,19,121,181,167,41,37,110,73,50,34,56,59,218,49,242,70,153,106,217,4,105,151,51,36,134,125,128],[249,2,17,160,243,248,117,132,135,179,242,217,170,170,147,202,41,30,49,202,235,19,91,182,154,115,189,49,71,95,213,18,134,202,205,168,160,248,214,27,163,48,89,69,124,39,200,95,223,46,31,254,156,7,133,69,242,252,178,116,213,90,11,24,2,233,210,95,159,160,71,79,93,73,42,149,57,51,225,103,235,189,110,188,70,240,193,23,63,219,116,110,243,110,149,7,153,50,68,75,57,255,160,247,151,249,133,151,231,1,67,135,51,218,198,210,129,152,142,23,144,43,153,113,15,227,167,123,200,117,134,246,144,41,89,160,64,41,80,117,176,86,114,226,155,222,42,78,189,238,210,98,213,168,109,98,43,187,53,78,43,64,239,233,108,49,103,145,160,81,130,213,232,226,141,41,38,167,145,141,254,200,67,223,12,25,155,31,46,162,105,182,222,2,233,159,55,73,58,81,8,160,26,77,61,137,205,196,204,129,210,129,10,70,241,189,76,121,69,162,6,215,188,152,126,170,249,149,72,157,147,95,113,240,160,76,38,106,162,112,134,133,37,202,39,149,12,3,108,165,104,174,60,185,97,253,218,30,38,19,121,89,102,165,245,8,216,160,52,133,159,70,24,244,195,146,2,17,195,222,204,211,129,28,126,50,191,31,4,148,37,228,107,40,143,95,15,239,188,142,160,30,36,232,235,34,123,13,63,36,1,92,189,49,255,191,152,101,81,234,45,170,78,228,224,41,77,6,235,75,41,95,228,160,53,118,183,248,110,40,9,128,63,159,4,146,88,128,57,182,207,231,204,72,18,102,249,225,183,253,26,165,204,221,133,107,160,47,211,121,43,20,152,236,53,207,92,248,102,254,75,207,136,49,232,147,125,59,184,15,14,62,136,58,5,56,132,135,139,160,146,83,193,207,181,29,203,52,47,58,114,231,161,55,66,1,75,127,145,210,118,37,82,232,135,3,183,30,255,240,248,11,160,74,111,171,71,106,196,108,204,154,49,109,206,164,6,195,104,55,35,226,133,78,86,140,154,197,163,105,253,218,72,68,52,160,221,162,147,55,34,170,139,142,218,244,84,132,181,168,39,246,188,198,8,193,144,16,119,237,138,12,69,220,76,152,153,153,160,250,100,42,85,168,208,19,121,181,167,41,37,110,73,50,34,56,59,218,49,242,70,153,106,217,4,105,151,51,36,134,125,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,125,205,12,44,38,14,115,188,176,89,248,149,162,236,64,246,24,91,125,70,183,125,37,100,214,54,174,74,207,71,185,190,0],[160,161,128,1,12,47,16,128,58,172,109,97,186,101,50,211,24,116,166,152,209,189,185,191,39,125,163,235,50,169,86,158,229,0],[160,43,180,202,90,212,89,144,118,139,227,102,232,30,186,65,236,181,5,130,247,53,26,255,110,32,164,81,96,121,240,13,252,0],[160,222,100,177,157,75,143,240,145,16,36,58,46,51,139,107,7,196,233,64,182,153,253,203,175,129,102,22,111,153,168,150,26,0],[160,94,231,69,12,111,229,77,99,71,17,141,11,41,112,27,177,218,61,40,30,213,193,247,27,173,123,94,162,194,11,64,110,0],[160,148,241,5,249,211,104,221,226,140,197,193,238,210,173,105,8,129,244,154,57,13,253,109,216,177,158,110,36,172,122,110,88,0],[160,49,101,31,195,122,182,161,106,170,190,126,247,114,74,123,53,20,100,9,186,33,38,17,167,168,229,10,220,151,18,196,241,0],[160,73,246,226,153,120,139,128,58,10,194,85,4,186,39,18,220,239,252,50,159,22,196,125,122,103,50,247,196,37,68,58,169,0],[160,15,132,108,63,247,99,185,92,140,54,8,64,230,186,45,30,61,193,8,165,18,74,107,200,87,45,33,232,22,58,219,43,0],[160,171,6,213,180,15,77,228,71,174,54,254,251,111,241,218,40,233,3,107,112,164,163,132,133,85,121,0,128,188,237,176,38,0],[160,190,202,142,180,181,1,250,241,49,215,108,185,216,23,205,142,139,158,85,162,252,156,118,150,43,152,194,183,178,218,159,221,0],[160,116,118,116,254,111,169,77,111,65,32,203,133,193,209,164,92,7,21,222,137,239,153,10,17,202,156,229,253,242,229,50,66,0],[160,245,182,9,212,150,185,219,26,154,17,0,141,168,125,166,152,114,219,87,156,42,77,206,233,29,211,176,18,46,29,86,118,0],[160,125,173,37,34,63,10,10,105,35,138,170,159,170,58,203,218,96,174,159,130,118,216,137,144,59,203,221,237,109,28,197,14,0],[160,206,144,145,67,116,167,247,112,21,211,206,39,17,80,107,129,199,168,248,110,87,249,66,99,217,9,124,218,191,2,0,188,0],[160,9,167,144,133,57,89,194,210,118,41,249,242,60,234,105,179,15,125,163,86,11,161,61,242,89,222,67,163,239,141,115,22,0],[160,229,254,113,96,76,247,87,54,147,166,26,241,48,108,149,89,115,6,35,119,201,191,233,239,90,99,195,93,22,222,43,126,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,161,128,1,12,47,16,128,58,172,109,97,186,101,50,211,24,116,166,152,209,189,185,191,39,125,163,235,50,169,86,158,229,160,43,180,202,90,212,89,144,118,139,227,102,232,30,186,65,236,181,5,130,247,53,26,255,110,32,164,81,96,121,240,13,252,160,222,100,177,157,75,143,240,145,16,36,58,46,51,139,107,7,196,233,64,182,153,253,203,175,129,102,22,111,153,168,150,26,160,94,231,69,12,111,229,77,99,71,17,141,11,41,112,27,177,218,61,40,30,213,193,247,27,173,123,94,162,194,11,64,110,160,148,241,5,249,211,104,221,226,140,197,193,238,210,173,105,8,129,244,154,57,13,253,109,216,177,158,110,36,172,122,110,88,160,49,101,31,195,122,182,161,106,170,190,126,247,114,74,123,53,20,100,9,186,33,38,17,167,168,229,10,220,151,18,196,241,160,73,246,226,153,120,139,128,58,10,194,85,4,186,39,18,220,239,252,50,159,22,196,125,122,103,50,247,196,37,68,58,169,160,15,132,108,63,247,99,185,92,140,54,8,64,230,186,45,30,61,193,8,165,18,74,107,200,87,45,33,232,22,58,219,43,160,171,6,213,180,15,77,228,71,174,54,254,251,111,241,218,40,233,3,107,112,164,163,132,133,85,121,0,128,188,237,176,38,160,190,202,142,180,181,1,250,241,49,215,108,185,216,23,205,142,139,158,85,162,252,156,118,150,43,152,194,183,178,218,159,221,160,116,118,116,254,111,169,77,111,65,32,203,133,193,209,164,92,7,21,222,137,239,153,10,17,202,156,229,253,242,229,50,66,160,245,182,9,212,150,185,219,26,154,17,0,141,168,125,166,152,114,219,87,156,42,77,206,233,29,211,176,18,46,29,86,118,160,125,173,37,34,63,10,10,105,35,138,170,159,170,58,203,218,96,174,159,130,118,216,137,144,59,203,221,237,109,28,197,14,160,206,144,145,67,116,167,247,112,21,211,206,39,17,80,107,129,199,168,248,110,87,249,66,99,217,9,124,218,191,2,0,188,160,9,167,144,133,57,89,194,210,118,41,249,242,60,234,105,179,15,125,163,86,11,161,61,242,89,222,67,163,239,141,115,22,160,229,254,113,96,76,247,87,54,147,166,26,241,48,108,149,89,115,6,35,119,201,191,233,239,90,99,195,93,22,222,43,126,128],[249,2,17,160,161,128,1,12,47,16,128,58,172,109,97,186,101,50,211,24,116,166,152,209,189,185,191,39,125,163,235,50,169,86,158,229,160,43,180,202,90,212,89,144,118,139,227,102,232,30,186,65,236,181,5,130,247,53,26,255,110,32,164,81,96,121,240,13,252,160,222,100,177,157,75,143,240,145,16,36,58,46,51,139,107,7,196,233,64,182,153,253,203,175,129,102,22,111,153,168,150,26,160,94,231,69,12,111,229,77,99,71,17,141,11,41,112,27,177,218,61,40,30,213,193,247,27,173,123,94,162,194,11,64,110,160,148,241,5,249,211,104,221,226,140,197,193,238,210,173,105,8,129,244,154,57,13,253,109,216,177,158,110,36,172,122,110,88,160,49,101,31,195,122,182,161,106,170,190,126,247,114,74,123,53,20,100,9,186,33,38,17,167,168,229,10,220,151,18,196,241,160,73,246,226,153,120,139,128,58,10,194,85,4,186,39,18,220,239,252,50,159,22,196,125,122,103,50,247,196,37,68,58,169,160,15,132,108,63,247,99,185,92,140,54,8,64,230,186,45,30,61,193,8,165,18,74,107,200,87,45,33,232,22,58,219,43,160,171,6,213,180,15,77,228,71,174,54,254,251,111,241,218,40,233,3,107,112,164,163,132,133,85,121,0,128,188,237,176,38,160,190,202,142,180,181,1,250,241,49,215,108,185,216,23,205,142,139,158,85,162,252,156,118,150,43,152,194,183,178,218,159,221,160,116,118,116,254,111,169,77,111,65,32,203,133,193,209,164,92,7,21,222,137,239,153,10,17,202,156,229,253,242,229,50,66,160,245,182,9,212,150,185,219,26,154,17,0,141,168,125,166,152,114,219,87,156,42,77,206,233,29,211,176,18,46,29,86,118,160,125,173,37,34,63,10,10,105,35,138,170,159,170,58,203,218,96,174,159,130,118,216,137,144,59,203,221,237,109,28,197,14,160,125,205,12,44,38,14,115,188,176,89,248,149,162,236,64,246,24,91,125,70,183,125,37,100,214,54,174,74,207,71,185,190,160,9,167,144,133,57,89,194,210,118,41,249,242,60,234,105,179,15,125,163,86,11,161,61,242,89,222,67,163,239,141,115,22,160,229,254,113,96,76,247,87,54,147,166,26,241,48,108,149,89,115,6,35,119,201,191,233,239,90,99,195,93,22,222,43,126,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,33,36,191,50,11,87,222,33,182,77,167,63,136,123,248,241,74,182,24,11,174,247,239,125,99,202,207,255,128,35,52,165,0],[160,1,140,240,73,75,204,201,222,156,243,213,94,33,163,61,8,206,249,37,116,57,74,97,38,98,157,136,8,8,58,80,150,0],[160,195,199,196,181,116,185,85,110,248,215,152,211,207,168,41,60,203,5,86,141,59,163,78,219,9,213,111,185,55,120,19,233,0],[160,140,202,218,220,242,107,140,113,118,132,7,69,53,214,70,230,137,184,171,129,43,48,107,81,80,73,247,0,177,229,219,121,0],[160,141,236,133,222,194,233,18,211,30,219,154,205,250,5,55,43,197,33,189,179,107,239,180,101,180,196,97,160,148,235,175,67,0],[160,149,249,75,250,81,105,43,241,150,173,198,3,252,180,149,96,0,111,180,34,118,196,43,123,93,132,160,96,250,100,217,45,0],[160,32,39,96,173,133,195,109,50,97,77,73,185,128,89,4,150,255,132,58,164,43,120,193,117,186,32,133,65,91,116,162,173,0],[160,98,239,63,98,146,213,134,176,5,254,159,193,14,251,162,124,237,62,243,94,97,73,108,47,3,76,184,133,162,93,214,124,0],[160,24,110,66,31,239,73,37,228,27,69,165,214,234,132,223,109,118,39,20,166,141,25,228,24,156,85,122,60,112,195,235,154,0],[160,124,4,254,255,41,243,241,33,206,19,170,136,141,252,149,202,221,147,172,85,213,237,197,110,71,174,111,101,127,85,205,59,0],[160,23,49,65,202,234,196,28,65,205,115,198,37,246,143,124,72,166,37,205,232,162,25,22,39,127,188,14,26,18,214,240,152,0],[160,51,21,215,92,255,202,104,15,118,167,53,140,39,4,142,82,127,133,147,230,204,253,47,54,99,23,226,78,113,129,89,185,0],[160,239,123,251,65,188,11,107,22,9,46,42,104,47,193,60,78,205,118,242,12,136,145,137,46,214,157,184,26,255,37,206,38,0],[160,179,163,103,185,250,53,96,32,14,9,248,46,117,61,151,70,245,116,155,44,163,22,115,1,102,242,244,157,45,81,102,14,0],[160,120,51,181,75,204,140,26,229,78,145,104,6,122,193,149,189,178,100,84,118,214,32,148,10,91,248,41,39,153,51,148,250,0],[160,152,64,28,199,229,115,92,129,39,229,199,166,105,168,252,23,227,109,56,225,3,255,171,233,92,155,115,43,225,156,231,35,0],[160,79,205,115,234,146,184,235,250,60,154,252,244,30,28,214,37,12,114,43,159,140,167,245,162,159,65,188,1,113,43,38,143,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,1,140,240,73,75,204,201,222,156,243,213,94,33,163,61,8,206,249,37,116,57,74,97,38,98,157,136,8,8,58,80,150,160,195,199,196,181,116,185,85,110,248,215,152,211,207,168,41,60,203,5,86,141,59,163,78,219,9,213,111,185,55,120,19,233,160,140,202,218,220,242,107,140,113,118,132,7,69,53,214,70,230,137,184,171,129,43,48,107,81,80,73,247,0,177,229,219,121,160,141,236,133,222,194,233,18,211,30,219,154,205,250,5,55,43,197,33,189,179,107,239,180,101,180,196,97,160,148,235,175,67,160,149,249,75,250,81,105,43,241,150,173,198,3,252,180,149,96,0,111,180,34,118,196,43,123,93,132,160,96,250,100,217,45,160,32,39,96,173,133,195,109,50,97,77,73,185,128,89,4,150,255,132,58,164,43,120,193,117,186,32,133,65,91,116,162,173,160,98,239,63,98,146,213,134,176,5,254,159,193,14,251,162,124,237,62,243,94,97,73,108,47,3,76,184,133,162,93,214,124,160,24,110,66,31,239,73,37,228,27,69,165,214,234,132,223,109,118,39,20,166,141,25,228,24,156,85,122,60,112,195,235,154,160,124,4,254,255,41,243,241,33,206,19,170,136,141,252,149,202,221,147,172,85,213,237,197,110,71,174,111,101,127,85,205,59,160,23,49,65,202,234,196,28,65,205,115,198,37,246,143,124,72,166,37,205,232,162,25,22,39,127,188,14,26,18,214,240,152,160,51,21,215,92,255,202,104,15,118,167,53,140,39,4,142,82,127,133,147,230,204,253,47,54,99,23,226,78,113,129,89,185,160,239,123,251,65,188,11,107,22,9,46,42,104,47,193,60,78,205,118,242,12,136,145,137,46,214,157,184,26,255,37,206,38,160,179,163,103,185,250,53,96,32,14,9,248,46,117,61,151,70,245,116,155,44,163,22,115,1,102,242,244,157,45,81,102,14,160,120,51,181,75,204,140,26,229,78,145,104,6,122,193,149,189,178,100,84,118,214,32,148,10,91,248,41,39,153,51,148,250,160,152,64,28,199,229,115,92,129,39,229,199,166,105,168,252,23,227,109,56,225,3,255,171,233,92,155,115,43,225,156,231,35,160,79,205,115,234,146,184,235,250,60,154,252,244,30,28,214,37,12,114,43,159,140,167,245,162,159,65,188,1,113,43,38,143,128],[249,2,17,160,1,140,240,73,75,204,201,222,156,243,213,94,33,163,61,8,206,249,37,116,57,74,97,38,98,157,136,8,8,58,80,150,160,195,199,196,181,116,185,85,110,248,215,152,211,207,168,41,60,203,5,86,141,59,163,78,219,9,213,111,185,55,120,19,233,160,140,202,218,220,242,107,140,113,118,132,7,69,53,214,70,230,137,184,171,129,43,48,107,81,80,73,247,0,177,229,219,121,160,33,36,191,50,11,87,222,33,182,77,167,63,136,123,248,241,74,182,24,11,174,247,239,125,99,202,207,255,128,35,52,165,160,149,249,75,250,81,105,43,241,150,173,198,3,252,180,149,96,0,111,180,34,118,196,43,123,93,132,160,96,250,100,217,45,160,32,39,96,173,133,195,109,50,97,77,73,185,128,89,4,150,255,132,58,164,43,120,193,117,186,32,133,65,91,116,162,173,160,98,239,63,98,146,213,134,176,5,254,159,193,14,251,162,124,237,62,243,94,97,73,108,47,3,76,184,133,162,93,214,124,160,24,110,66,31,239,73,37,228,27,69,165,214,234,132,223,109,118,39,20,166,141,25,228,24,156,85,122,60,112,195,235,154,160,124,4,254,255,41,243,241,33,206,19,170,136,141,252,149,202,221,147,172,85,213,237,197,110,71,174,111,101,127,85,205,59,160,23,49,65,202,234,196,28,65,205,115,198,37,246,143,124,72,166,37,205,232,162,25,22,39,127,188,14,26,18,214,240,152,160,51,21,215,92,255,202,104,15,118,167,53,140,39,4,142,82,127,133,147,230,204,253,47,54,99,23,226,78,113,129,89,185,160,239,123,251,65,188,11,107,22,9,46,42,104,47,193,60,78,205,118,242,12,136,145,137,46,214,157,184,26,255,37,206,38,160,179,163,103,185,250,53,96,32,14,9,248,46,117,61,151,70,245,116,155,44,163,22,115,1,102,242,244,157,45,81,102,14,160,120,51,181,75,204,140,26,229,78,145,104,6,122,193,149,189,178,100,84,118,214,32,148,10,91,248,41,39,153,51,148,250,160,152,64,28,199,229,115,92,129,39,229,199,166,105,168,252,23,227,109,56,225,3,255,171,233,92,155,115,43,225,156,231,35,160,79,205,115,234,146,184,235,250,60,154,252,244,30,28,214,37,12,114,43,159,140,167,245,162,159,65,188,1,113,43,38,143,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,52,5,132,223,20,125,125,152,77,21,29,239,159,211,65,174,156,121,107,233,188,67,44,242,54,70,100,18,159,243,207,206,0],[160,245,105,73,55,130,156,85,160,31,141,126,218,15,74,121,147,147,14,234,12,31,2,207,74,132,213,9,173,180,149,183,107,0],[160,221,130,180,81,176,155,200,100,168,4,254,92,101,171,36,147,95,202,31,177,191,39,28,78,15,253,236,77,124,115,149,137,0],[160,8,37,3,52,123,198,42,148,211,79,179,98,105,89,161,130,151,2,137,5,198,34,114,85,180,47,176,126,179,111,60,206,0],[160,232,217,161,8,22,169,40,66,131,228,203,23,191,255,11,201,101,138,145,67,49,60,150,125,179,56,59,152,181,26,174,138,0],[160,31,91,206,52,40,136,181,226,181,110,98,46,223,178,19,209,243,254,183,220,186,51,185,91,118,128,84,206,142,5,158,178,0],[160,224,250,15,5,72,187,58,246,78,193,251,188,67,94,94,63,151,23,215,194,99,44,14,23,45,34,254,220,3,94,41,58,0],[160,6,105,60,12,5,193,169,245,176,112,146,23,69,42,0,33,177,13,230,213,165,102,152,203,58,175,135,4,16,128,172,8,0],[160,151,152,86,204,166,248,67,223,250,77,31,100,237,11,43,191,90,23,20,54,199,92,11,215,145,50,87,90,167,159,57,165,0],[160,1,232,26,222,47,23,75,176,90,187,251,204,93,173,132,158,36,225,142,226,147,28,202,173,168,228,182,229,123,127,49,117,0],[160,247,78,159,238,239,170,53,113,45,18,48,98,112,234,117,104,97,108,138,230,14,76,168,84,236,172,64,67,208,57,6,73,0],[160,46,68,248,146,220,227,97,0,41,252,210,9,44,117,251,227,165,196,13,189,174,150,34,139,203,17,200,40,245,122,167,206,0],[160,26,216,79,208,48,103,203,251,178,213,93,58,82,104,200,119,234,228,233,252,208,91,195,35,224,229,183,69,89,175,14,229,0],[160,246,209,205,0,213,119,26,186,142,93,94,61,153,28,165,149,49,176,155,119,213,241,208,245,15,163,38,131,125,219,108,170,0],[160,89,143,190,130,47,255,40,170,85,219,138,46,139,251,126,68,17,241,5,216,204,86,127,71,120,116,170,149,237,137,28,227,0],[160,79,246,250,96,218,39,3,222,92,140,84,169,44,51,184,140,136,139,201,154,119,208,207,98,29,112,62,108,254,3,142,180,0],[160,130,179,74,86,218,213,192,18,132,24,134,63,237,50,86,187,20,97,174,221,173,83,84,97,186,105,52,78,209,101,251,138,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,245,105,73,55,130,156,85,160,31,141,126,218,15,74,121,147,147,14,234,12,31,2,207,74,132,213,9,173,180,149,183,107,160,221,130,180,81,176,155,200,100,168,4,254,92,101,171,36,147,95,202,31,177,191,39,28,78,15,253,236,77,124,115,149,137,160,8,37,3,52,123,198,42,148,211,79,179,98,105,89,161,130,151,2,137,5,198,34,114,85,180,47,176,126,179,111,60,206,160,232,217,161,8,22,169,40,66,131,228,203,23,191,255,11,201,101,138,145,67,49,60,150,125,179,56,59,152,181,26,174,138,160,31,91,206,52,40,136,181,226,181,110,98,46,223,178,19,209,243,254,183,220,186,51,185,91,118,128,84,206,142,5,158,178,160,224,250,15,5,72,187,58,246,78,193,251,188,67,94,94,63,151,23,215,194,99,44,14,23,45,34,254,220,3,94,41,58,160,6,105,60,12,5,193,169,245,176,112,146,23,69,42,0,33,177,13,230,213,165,102,152,203,58,175,135,4,16,128,172,8,160,151,152,86,204,166,248,67,223,250,77,31,100,237,11,43,191,90,23,20,54,199,92,11,215,145,50,87,90,167,159,57,165,160,1,232,26,222,47,23,75,176,90,187,251,204,93,173,132,158,36,225,142,226,147,28,202,173,168,228,182,229,123,127,49,117,160,247,78,159,238,239,170,53,113,45,18,48,98,112,234,117,104,97,108,138,230,14,76,168,84,236,172,64,67,208,57,6,73,160,46,68,248,146,220,227,97,0,41,252,210,9,44,117,251,227,165,196,13,189,174,150,34,139,203,17,200,40,245,122,167,206,160,26,216,79,208,48,103,203,251,178,213,93,58,82,104,200,119,234,228,233,252,208,91,195,35,224,229,183,69,89,175,14,229,160,246,209,205,0,213,119,26,186,142,93,94,61,153,28,165,149,49,176,155,119,213,241,208,245,15,163,38,131,125,219,108,170,160,89,143,190,130,47,255,40,170,85,219,138,46,139,251,126,68,17,241,5,216,204,86,127,71,120,116,170,149,237,137,28,227,160,79,246,250,96,218,39,3,222,92,140,84,169,44,51,184,140,136,139,201,154,119,208,207,98,29,112,62,108,254,3,142,180,160,130,179,74,86,218,213,192,18,132,24,134,63,237,50,86,187,20,97,174,221,173,83,84,97,186,105,52,78,209,101,251,138,128],[249,2,17,160,245,105,73,55,130,156,85,160,31,141,126,218,15,74,121,147,147,14,234,12,31,2,207,74,132,213,9,173,180,149,183,107,160,221,130,180,81,176,155,200,100,168,4,254,92,101,171,36,147,95,202,31,177,191,39,28,78,15,253,236,77,124,115,149,137,160,8,37,3,52,123,198,42,148,211,79,179,98,105,89,161,130,151,2,137,5,198,34,114,85,180,47,176,126,179,111,60,206,160,232,217,161,8,22,169,40,66,131,228,203,23,191,255,11,201,101,138,145,67,49,60,150,125,179,56,59,152,181,26,174,138,160,52,5,132,223,20,125,125,152,77,21,29,239,159,211,65,174,156,121,107,233,188,67,44,242,54,70,100,18,159,243,207,206,160,224,250,15,5,72,187,58,246,78,193,251,188,67,94,94,63,151,23,215,194,99,44,14,23,45,34,254,220,3,94,41,58,160,6,105,60,12,5,193,169,245,176,112,146,23,69,42,0,33,177,13,230,213,165,102,152,203,58,175,135,4,16,128,172,8,160,151,152,86,204,166,248,67,223,250,77,31,100,237,11,43,191,90,23,20,54,199,92,11,215,145,50,87,90,167,159,57,165,160,1,232,26,222,47,23,75,176,90,187,251,204,93,173,132,158,36,225,142,226,147,28,202,173,168,228,182,229,123,127,49,117,160,247,78,159,238,239,170,53,113,45,18,48,98,112,234,117,104,97,108,138,230,14,76,168,84,236,172,64,67,208,57,6,73,160,46,68,248,146,220,227,97,0,41,252,210,9,44,117,251,227,165,196,13,189,174,150,34,139,203,17,200,40,245,122,167,206,160,26,216,79,208,48,103,203,251,178,213,93,58,82,104,200,119,234,228,233,252,208,91,195,35,224,229,183,69,89,175,14,229,160,246,209,205,0,213,119,26,186,142,93,94,61,153,28,165,149,49,176,155,119,213,241,208,245,15,163,38,131,125,219,108,170,160,89,143,190,130,47,255,40,170,85,219,138,46,139,251,126,68,17,241,5,216,204,86,127,71,120,116,170,149,237,137,28,227,160,79,246,250,96,218,39,3,222,92,140,84,169,44,51,184,140,136,139,201,154,119,208,207,98,29,112,62,108,254,3,142,180,160,130,179,74,86,218,213,192,18,132,24,134,63,237,50,86,187,20,97,174,221,173,83,84,97,186,105,52,78,209,101,251,138,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[248,241],[248,241]]}},"account":null,"storage":null,"values":[[160,255,151,217,75,103,5,122,115,224,137,233,146,50,189,95,178,178,247,44,237,22,101,231,39,198,40,14,249,60,251,151,15,0],[160,154,20,83,14,212,57,98,219,176,195,243,149,251,194,222,170,159,48,104,129,219,74,189,86,48,75,59,107,108,15,47,85,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,60,79,85,51,115,192,158,157,93,223,211,100,62,94,72,146,251,82,116,111,190,139,246,12,252,146,211,122,66,110,206,20,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,120,190,160,200,253,109,255,226,49,189,87,112,136,160,23,77,119,59,173,185,188,145,251,156,155,144,100,217,100,114,109,106,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,69,72,113,186,79,146,63,86,46,218,1,200,131,76,71,142,217,35,30,209,101,239,91,47,163,221,136,130,249,155,236,112,0],[160,49,65,26,94,193,156,227,78,42,198,56,211,105,254,0,33,31,96,41,208,40,13,215,156,51,173,132,112,34,192,121,49,0],[160,244,154,252,18,232,96,245,36,84,15,253,182,157,226,247,165,106,144,166,1,2,140,228,170,110,87,112,80,140,149,162,43,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,20,103,6,95,163,140,21,238,207,84,226,60,134,0,183,217,11,213,185,123,139,201,37,22,227,234,220,30,160,20,244,115,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,241,160,154,20,83,14,212,57,98,219,176,195,243,149,251,194,222,170,159,48,104,129,219,74,189,86,48,75,59,107,108,15,47,85,128,128,128,128,160,60,79,85,51,115,192,158,157,93,223,211,100,62,94,72,146,251,82,116,111,190,139,246,12,252,146,211,122,66,110,206,20,128,160,120,190,160,200,253,109,255,226,49,189,87,112,136,160,23,77,119,59,173,185,188,145,251,156,155,144,100,217,100,114,109,106,128,160,69,72,113,186,79,146,63,86,46,218,1,200,131,76,71,142,217,35,30,209,101,239,91,47,163,221,136,130,249,155,236,112,160,49,65,26,94,193,156,227,78,42,198,56,211,105,254,0,33,31,96,41,208,40,13,215,156,51,173,132,112,34,192,121,49,160,244,154,252,18,232,96,245,36,84,15,253,182,157,226,247,165,106,144,166,1,2,140,228,170,110,87,112,80,140,149,162,43,128,160,20,103,6,95,163,140,21,238,207,84,226,60,134,0,183,217,11,213,185,123,139,201,37,22,227,234,220,30,160,20,244,115,128,128,128],[248,241,160,255,151,217,75,103,5,122,115,224,137,233,146,50,189,95,178,178,247,44,237,22,101,231,39,198,40,14,249,60,251,151,15,128,128,128,128,160,60,79,85,51,115,192,158,157,93,223,211,100,62,94,72,146,251,82,116,111,190,139,246,12,252,146,211,122,66,110,206,20,128,160,120,190,160,200,253,109,255,226,49,189,87,112,136,160,23,77,119,59,173,185,188,145,251,156,155,144,100,217,100,114,109,106,128,160,69,72,113,186,79,146,63,86,46,218,1,200,131,76,71,142,217,35,30,209,101,239,91,47,163,221,136,130,249,155,236,112,160,49,65,26,94,193,156,227,78,42,198,56,211,105,254,0,33,31,96,41,208,40,13,215,156,51,173,132,112,34,192,121,49,160,244,154,252,18,232,96,245,36,84,15,253,182,157,226,247,165,106,144,166,1,2,140,228,170,110,87,112,80,140,149,162,43,128,160,20,103,6,95,163,140,21,238,207,84,226,60,134,0,183,217,11,213,185,123,139,201,37,22,227,234,220,30,160,20,244,115,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,true],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":7,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,133,163,111,39,253,196,135,253,250,60,16,75,174,17,130,17,111,74,174,195,116,128,255,190,227,255,200,81,182,50,153,135,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,222,45,71,217,199,68,20,55,244,206,68,197,49,191,78,208,106,209,111,87,254,9,221,230,148,86,131,219,7,121,62,140,0],[160,133,163,111,39,253,196,135,253,250,60,16,75,174,17,130,17,111,74,174,195,116,128,255,190,227,255,200,81,182,50,153,135,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,160,222,45,71,217,199,68,20,55,244,206,68,197,49,191,78,208,106,209,111,87,254,9,221,230,148,86,131,219,7,121,62,140,160,133,163,111,39,253,196,135,253,250,60,16,75,174,17,130,17,111,74,174,195,116,128,255,190,227,255,200,81,182,50,153,135,128,128,128,128,128,128,128,128],[248,81,128,128,128,128,128,128,128,160,222,45,71,217,199,68,20,55,244,206,68,197,49,191,78,208,106,209,111,87,254,9,221,230,148,86,131,219,7,121,62,140,160,133,163,111,39,253,196,135,253,250,60,16,75,174,17,130,17,111,74,174,195,116,128,255,190,227,255,200,81,182,50,153,135,128,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33],"key":[252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[248,102],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,32,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,0,0,0,0],[157,55,236,125,29,155,142,209,241,75,145,144,143,254,65,81,209,56,13,192,157,236,195,213,73,132,11,251,149,241,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,112,158,181,221,162,20,124,79,184,25,162,13,167,162,146,25,237,242,59,120,184,154,118,137,92,181,187,152,115,82,223,48,0],[160,7,190,1,231,231,32,111,227,30,206,233,26,215,93,173,166,90,214,186,67,58,230,71,161,185,51,4,105,247,198,103,124,0],[157,32,236,125,29,155,142,209,241,75,145,144,143,254,65,81,209,56,13,192,157,236,195,213,73,132,11,251,149,241,0,0,0,0],[157,56,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,0,0,0,0]],"keccak_data":[[248,102,157,32,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,184,70,248,68,128,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,55,236,125,29,155,142,209,241,75,145,144,143,254,65,81,209,56,13,192,157,236,195,213,73,132,11,251,149,241,184,70,248,68,1,128,160,112,158,181,221,162,20,124,79,184,25,162,13,167,162,146,25,237,242,59,120,184,154,118,137,92,181,187,152,115,82,223,48,160,7,190,1,231,231,32,111,227,30,206,233,26,215,93,173,166,90,214,186,67,58,230,71,161,185,51,4,105,247,198,103,124],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33],[248,102,157,32,236,125,29,155,142,209,241,75,145,144,143,254,65,81,209,56,13,192,157,236,195,213,73,132,11,251,149,241,184,70,248,68,1,128,160,112,158,181,221,162,20,124,79,184,25,162,13,167,162,146,25,237,242,59,120,184,154,118,137,92,181,187,152,115,82,223,48,160,7,190,1,231,231,32,111,227,30,206,233,26,215,93,173,166,90,214,186,67,58,230,71,161,185,51,4,105,247,198,103,124]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/AccountDeletePlaceholderExtension.json b/zkevm-circuits/src/mpt_circuit/tests/AccountDeletePlaceholderExtension.json new file mode 100644 index 0000000000..c1c2a075a1 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/AccountDeletePlaceholderExtension.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"AccountDestructed"},"extension_branch":null,"account":null,"storage":null,"values":[[160,56,118,215,80,68,120,146,210,132,112,214,55,126,93,159,9,37,179,209,181,226,177,32,248,226,190,25,113,27,111,86,42,0],[160,92,69,153,141,251,249,206,112,188,187,128,87,78,215,166,34,146,45,44,119,94,10,35,49,254,90,139,141,204,153,244,144,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,139,58,203,92,153,76,58,75,152,204,40,161,176,254,7,83,77,133,97,243,215,139,208,77,241,250,13,236,190,98,175,237,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,139,58,203,92,153,76,58,75,152,204,40,161,176,254,7,83,77,133,97,243,215,139,208,77,241,250,13,236,190,98,175,237,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,162,144,194,196,152,226,214,73,89,236,36,238,84,203,162,78,190,13,180,75,248,234,56,229,26,113,145,230,203,72,24,225,0],[160,185,24,42,236,120,203,57,72,34,231,31,111,46,73,180,72,115,152,175,255,156,53,78,172,173,4,231,26,202,112,189,160,0],[160,193,31,60,30,128,7,103,75,249,112,82,221,20,124,38,229,246,122,89,71,38,21,74,219,252,240,239,97,192,33,13,4,0],[160,84,77,171,102,153,149,40,61,1,157,20,166,217,8,116,25,213,188,181,94,1,128,252,249,222,234,76,79,51,162,147,91,0],[160,44,4,93,209,145,172,111,91,99,34,141,140,10,131,197,94,172,200,9,166,224,237,220,180,19,164,93,221,156,142,251,144,0],[160,40,196,24,163,194,231,72,196,129,42,142,40,190,213,192,64,86,108,150,109,107,52,154,72,112,69,34,184,238,85,67,215,0],[160,71,161,12,216,119,232,250,223,53,164,214,25,144,201,187,84,129,245,139,177,212,51,68,168,111,88,153,232,109,43,209,145,0],[160,174,66,37,96,21,75,84,60,152,43,98,146,99,220,26,63,78,74,201,11,255,111,218,46,32,74,218,227,127,63,58,171,0],[160,81,118,161,250,61,85,176,208,85,23,154,95,243,161,43,137,207,17,20,17,52,145,40,40,185,242,11,204,38,254,233,228,0],[160,171,53,133,13,45,191,38,40,138,35,70,210,171,108,202,133,21,131,212,123,127,110,163,50,166,156,32,61,9,8,30,187,0],[160,98,240,222,26,107,15,123,248,48,13,231,106,195,126,79,92,223,191,213,157,220,37,245,169,160,5,22,166,15,74,247,227,0],[160,211,121,158,196,1,96,79,43,64,156,31,232,214,155,249,26,46,101,14,235,103,10,62,195,4,176,13,100,236,72,114,144,0],[160,109,33,43,178,90,242,93,172,197,115,100,180,124,141,156,115,8,254,213,188,147,149,247,149,165,82,106,85,244,101,153,90,0],[160,235,219,11,58,190,215,68,221,73,201,12,106,58,20,178,165,209,56,134,20,69,204,11,137,186,63,169,247,84,183,228,35,0],[160,150,135,54,87,155,174,174,15,109,193,30,49,16,222,170,148,46,133,74,178,107,201,131,6,92,76,56,184,46,111,102,55,0],[160,86,146,97,160,222,105,216,21,80,56,20,146,200,16,229,35,161,175,121,97,137,102,29,0,145,135,46,20,21,79,90,217,0],[160,208,122,174,169,46,136,84,33,192,0,127,106,220,4,143,94,102,1,50,21,59,73,106,200,104,92,137,135,65,11,138,232,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,185,24,42,236,120,203,57,72,34,231,31,111,46,73,180,72,115,152,175,255,156,53,78,172,173,4,231,26,202,112,189,160,160,193,31,60,30,128,7,103,75,249,112,82,221,20,124,38,229,246,122,89,71,38,21,74,219,252,240,239,97,192,33,13,4,160,84,77,171,102,153,149,40,61,1,157,20,166,217,8,116,25,213,188,181,94,1,128,252,249,222,234,76,79,51,162,147,91,160,44,4,93,209,145,172,111,91,99,34,141,140,10,131,197,94,172,200,9,166,224,237,220,180,19,164,93,221,156,142,251,144,160,40,196,24,163,194,231,72,196,129,42,142,40,190,213,192,64,86,108,150,109,107,52,154,72,112,69,34,184,238,85,67,215,160,71,161,12,216,119,232,250,223,53,164,214,25,144,201,187,84,129,245,139,177,212,51,68,168,111,88,153,232,109,43,209,145,160,174,66,37,96,21,75,84,60,152,43,98,146,99,220,26,63,78,74,201,11,255,111,218,46,32,74,218,227,127,63,58,171,160,81,118,161,250,61,85,176,208,85,23,154,95,243,161,43,137,207,17,20,17,52,145,40,40,185,242,11,204,38,254,233,228,160,171,53,133,13,45,191,38,40,138,35,70,210,171,108,202,133,21,131,212,123,127,110,163,50,166,156,32,61,9,8,30,187,160,98,240,222,26,107,15,123,248,48,13,231,106,195,126,79,92,223,191,213,157,220,37,245,169,160,5,22,166,15,74,247,227,160,211,121,158,196,1,96,79,43,64,156,31,232,214,155,249,26,46,101,14,235,103,10,62,195,4,176,13,100,236,72,114,144,160,109,33,43,178,90,242,93,172,197,115,100,180,124,141,156,115,8,254,213,188,147,149,247,149,165,82,106,85,244,101,153,90,160,235,219,11,58,190,215,68,221,73,201,12,106,58,20,178,165,209,56,134,20,69,204,11,137,186,63,169,247,84,183,228,35,160,150,135,54,87,155,174,174,15,109,193,30,49,16,222,170,148,46,133,74,178,107,201,131,6,92,76,56,184,46,111,102,55,160,86,146,97,160,222,105,216,21,80,56,20,146,200,16,229,35,161,175,121,97,137,102,29,0,145,135,46,20,21,79,90,217,160,208,122,174,169,46,136,84,33,192,0,127,106,220,4,143,94,102,1,50,21,59,73,106,200,104,92,137,135,65,11,138,232,128],[249,2,17,160,185,24,42,236,120,203,57,72,34,231,31,111,46,73,180,72,115,152,175,255,156,53,78,172,173,4,231,26,202,112,189,160,160,193,31,60,30,128,7,103,75,249,112,82,221,20,124,38,229,246,122,89,71,38,21,74,219,252,240,239,97,192,33,13,4,160,84,77,171,102,153,149,40,61,1,157,20,166,217,8,116,25,213,188,181,94,1,128,252,249,222,234,76,79,51,162,147,91,160,44,4,93,209,145,172,111,91,99,34,141,140,10,131,197,94,172,200,9,166,224,237,220,180,19,164,93,221,156,142,251,144,160,40,196,24,163,194,231,72,196,129,42,142,40,190,213,192,64,86,108,150,109,107,52,154,72,112,69,34,184,238,85,67,215,160,71,161,12,216,119,232,250,223,53,164,214,25,144,201,187,84,129,245,139,177,212,51,68,168,111,88,153,232,109,43,209,145,160,174,66,37,96,21,75,84,60,152,43,98,146,99,220,26,63,78,74,201,11,255,111,218,46,32,74,218,227,127,63,58,171,160,81,118,161,250,61,85,176,208,85,23,154,95,243,161,43,137,207,17,20,17,52,145,40,40,185,242,11,204,38,254,233,228,160,171,53,133,13,45,191,38,40,138,35,70,210,171,108,202,133,21,131,212,123,127,110,163,50,166,156,32,61,9,8,30,187,160,98,240,222,26,107,15,123,248,48,13,231,106,195,126,79,92,223,191,213,157,220,37,245,169,160,5,22,166,15,74,247,227,160,211,121,158,196,1,96,79,43,64,156,31,232,214,155,249,26,46,101,14,235,103,10,62,195,4,176,13,100,236,72,114,144,160,109,33,43,178,90,242,93,172,197,115,100,180,124,141,156,115,8,254,213,188,147,149,247,149,165,82,106,85,244,101,153,90,160,162,144,194,196,152,226,214,73,89,236,36,238,84,203,162,78,190,13,180,75,248,234,56,229,26,113,145,230,203,72,24,225,160,150,135,54,87,155,174,174,15,109,193,30,49,16,222,170,148,46,133,74,178,107,201,131,6,92,76,56,184,46,111,102,55,160,86,146,97,160,222,105,216,21,80,56,20,146,200,16,229,35,161,175,121,97,137,102,29,0,145,135,46,20,21,79,90,217,160,208,122,174,169,46,136,84,33,192,0,127,106,220,4,143,94,102,1,50,21,59,73,106,200,104,92,137,135,65,11,138,232,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,90,25,212,35,84,39,162,253,40,188,128,141,31,177,49,221,18,91,118,136,182,50,82,11,184,230,139,18,197,94,80,127,0],[160,84,125,101,84,59,83,119,189,159,192,188,231,231,244,86,85,86,131,98,75,61,47,49,244,74,248,245,146,244,80,18,53,0],[160,15,142,57,107,155,212,47,124,149,253,212,186,24,96,29,200,59,44,83,47,86,174,146,61,15,30,228,204,16,180,41,73,0],[160,4,11,213,136,98,93,71,167,88,7,244,137,134,178,33,135,55,167,87,9,161,105,132,173,99,133,195,204,137,99,213,96,0],[160,42,37,73,206,76,185,144,171,152,234,4,233,81,43,95,25,193,73,195,237,233,226,6,53,195,164,161,135,88,181,94,129,0],[160,149,206,117,218,219,73,231,191,71,129,32,62,24,176,236,201,214,57,32,246,165,182,97,100,41,58,12,226,18,76,98,52,0],[160,164,126,235,52,47,81,125,199,131,108,95,228,61,243,53,100,132,37,251,215,132,73,32,24,163,150,9,252,131,133,170,149,0],[160,106,216,21,135,125,74,67,242,82,137,122,130,130,164,224,106,112,167,123,76,61,118,71,52,173,133,220,82,214,189,19,198,0],[160,242,20,154,172,98,175,80,232,148,10,234,150,21,84,158,171,52,138,196,46,251,154,188,188,221,127,227,244,121,129,143,252,0],[160,229,184,239,35,202,217,87,20,223,56,107,25,99,14,127,149,227,51,66,1,179,231,12,190,178,85,104,177,67,83,252,99,0],[160,221,176,88,124,182,116,91,144,126,1,162,123,174,103,190,3,46,235,241,155,7,208,37,30,134,161,162,70,21,69,227,61,0],[160,195,58,237,166,44,35,245,54,101,165,121,224,187,108,35,126,92,173,37,149,178,117,186,47,52,180,162,147,202,153,119,73,0],[160,204,163,223,176,213,222,185,250,251,248,162,206,155,236,125,190,135,137,123,103,90,240,174,102,254,224,21,179,172,12,156,36,0],[160,146,129,80,195,19,81,79,161,90,222,24,229,255,113,147,210,230,15,9,47,245,136,171,172,60,106,11,217,36,71,6,185,0],[160,7,36,138,185,104,2,204,131,50,7,46,89,92,85,35,158,207,198,186,249,17,8,215,228,142,131,181,171,35,36,176,191,0],[160,103,14,51,251,133,137,253,174,93,29,41,30,157,92,49,13,250,122,158,202,155,107,141,57,70,227,35,33,3,236,170,116,0],[160,99,148,228,211,110,43,255,97,207,243,218,168,160,132,145,182,64,43,67,101,49,149,197,154,168,2,83,35,54,141,223,255,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,84,125,101,84,59,83,119,189,159,192,188,231,231,244,86,85,86,131,98,75,61,47,49,244,74,248,245,146,244,80,18,53,160,15,142,57,107,155,212,47,124,149,253,212,186,24,96,29,200,59,44,83,47,86,174,146,61,15,30,228,204,16,180,41,73,160,4,11,213,136,98,93,71,167,88,7,244,137,134,178,33,135,55,167,87,9,161,105,132,173,99,133,195,204,137,99,213,96,160,42,37,73,206,76,185,144,171,152,234,4,233,81,43,95,25,193,73,195,237,233,226,6,53,195,164,161,135,88,181,94,129,160,149,206,117,218,219,73,231,191,71,129,32,62,24,176,236,201,214,57,32,246,165,182,97,100,41,58,12,226,18,76,98,52,160,164,126,235,52,47,81,125,199,131,108,95,228,61,243,53,100,132,37,251,215,132,73,32,24,163,150,9,252,131,133,170,149,160,106,216,21,135,125,74,67,242,82,137,122,130,130,164,224,106,112,167,123,76,61,118,71,52,173,133,220,82,214,189,19,198,160,242,20,154,172,98,175,80,232,148,10,234,150,21,84,158,171,52,138,196,46,251,154,188,188,221,127,227,244,121,129,143,252,160,229,184,239,35,202,217,87,20,223,56,107,25,99,14,127,149,227,51,66,1,179,231,12,190,178,85,104,177,67,83,252,99,160,221,176,88,124,182,116,91,144,126,1,162,123,174,103,190,3,46,235,241,155,7,208,37,30,134,161,162,70,21,69,227,61,160,195,58,237,166,44,35,245,54,101,165,121,224,187,108,35,126,92,173,37,149,178,117,186,47,52,180,162,147,202,153,119,73,160,204,163,223,176,213,222,185,250,251,248,162,206,155,236,125,190,135,137,123,103,90,240,174,102,254,224,21,179,172,12,156,36,160,146,129,80,195,19,81,79,161,90,222,24,229,255,113,147,210,230,15,9,47,245,136,171,172,60,106,11,217,36,71,6,185,160,7,36,138,185,104,2,204,131,50,7,46,89,92,85,35,158,207,198,186,249,17,8,215,228,142,131,181,171,35,36,176,191,160,103,14,51,251,133,137,253,174,93,29,41,30,157,92,49,13,250,122,158,202,155,107,141,57,70,227,35,33,3,236,170,116,160,99,148,228,211,110,43,255,97,207,243,218,168,160,132,145,182,64,43,67,101,49,149,197,154,168,2,83,35,54,141,223,255,128],[249,2,17,160,84,125,101,84,59,83,119,189,159,192,188,231,231,244,86,85,86,131,98,75,61,47,49,244,74,248,245,146,244,80,18,53,160,15,142,57,107,155,212,47,124,149,253,212,186,24,96,29,200,59,44,83,47,86,174,146,61,15,30,228,204,16,180,41,73,160,4,11,213,136,98,93,71,167,88,7,244,137,134,178,33,135,55,167,87,9,161,105,132,173,99,133,195,204,137,99,213,96,160,42,37,73,206,76,185,144,171,152,234,4,233,81,43,95,25,193,73,195,237,233,226,6,53,195,164,161,135,88,181,94,129,160,149,206,117,218,219,73,231,191,71,129,32,62,24,176,236,201,214,57,32,246,165,182,97,100,41,58,12,226,18,76,98,52,160,164,126,235,52,47,81,125,199,131,108,95,228,61,243,53,100,132,37,251,215,132,73,32,24,163,150,9,252,131,133,170,149,160,106,216,21,135,125,74,67,242,82,137,122,130,130,164,224,106,112,167,123,76,61,118,71,52,173,133,220,82,214,189,19,198,160,242,20,154,172,98,175,80,232,148,10,234,150,21,84,158,171,52,138,196,46,251,154,188,188,221,127,227,244,121,129,143,252,160,229,184,239,35,202,217,87,20,223,56,107,25,99,14,127,149,227,51,66,1,179,231,12,190,178,85,104,177,67,83,252,99,160,221,176,88,124,182,116,91,144,126,1,162,123,174,103,190,3,46,235,241,155,7,208,37,30,134,161,162,70,21,69,227,61,160,195,58,237,166,44,35,245,54,101,165,121,224,187,108,35,126,92,173,37,149,178,117,186,47,52,180,162,147,202,153,119,73,160,204,163,223,176,213,222,185,250,251,248,162,206,155,236,125,190,135,137,123,103,90,240,174,102,254,224,21,179,172,12,156,36,160,146,129,80,195,19,81,79,161,90,222,24,229,255,113,147,210,230,15,9,47,245,136,171,172,60,106,11,217,36,71,6,185,160,7,36,138,185,104,2,204,131,50,7,46,89,92,85,35,158,207,198,186,249,17,8,215,228,142,131,181,171,35,36,176,191,160,90,25,212,35,84,39,162,253,40,188,128,141,31,177,49,221,18,91,118,136,182,50,82,11,184,230,139,18,197,94,80,127,160,99,148,228,211,110,43,255,97,207,243,218,168,160,132,145,182,64,43,67,101,49,149,197,154,168,2,83,35,54,141,223,255,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,102,79,217,10,154,173,100,22,201,108,182,73,110,174,11,115,154,182,174,92,61,172,0,197,98,6,207,135,97,248,44,194,0],[160,156,188,105,114,31,36,154,123,142,102,154,217,22,169,233,100,95,123,35,157,242,39,167,198,172,227,78,245,125,116,108,134,0],[160,8,45,240,236,178,161,107,136,206,107,28,210,5,163,63,41,0,163,130,48,28,117,48,53,45,199,57,81,116,195,156,237,0],[160,64,67,82,129,153,106,178,221,66,207,112,86,116,198,17,108,53,73,133,11,175,15,167,217,149,21,88,140,90,191,115,59,0],[160,170,37,18,193,39,10,191,16,144,37,64,173,30,24,5,237,185,251,50,150,88,214,200,52,188,187,29,84,65,115,151,140,0],[160,81,203,198,161,225,160,190,192,56,65,242,248,218,127,252,229,5,150,11,189,71,9,210,251,78,195,170,16,240,226,113,69,0],[160,104,16,219,134,193,188,170,105,162,255,46,238,185,3,34,30,227,107,254,154,26,43,88,147,146,8,202,185,31,184,179,75,0],[160,236,108,71,137,91,167,166,221,153,200,91,234,136,127,42,127,40,133,54,58,7,88,215,100,48,243,34,103,85,102,0,223,0],[160,186,2,4,233,111,235,213,181,122,51,187,216,216,109,198,63,177,71,41,77,14,113,229,48,225,244,86,152,34,250,93,52,0],[160,104,224,29,88,241,157,149,1,169,44,54,82,82,94,220,172,89,223,70,156,137,178,201,20,7,125,31,58,222,1,222,146,0],[160,201,140,242,11,19,30,249,130,12,47,191,119,144,252,197,85,190,122,191,166,96,216,15,149,28,45,179,85,82,173,200,207,0],[160,202,86,82,133,140,211,123,172,12,253,197,67,123,194,78,7,56,30,224,170,48,158,77,194,31,120,255,129,39,63,108,202,0],[160,47,203,156,139,56,59,194,78,115,157,254,43,228,108,219,92,182,204,251,18,10,226,28,36,242,105,144,141,59,39,91,140,0],[160,118,251,93,74,40,192,248,227,5,125,210,24,61,79,179,51,87,60,54,215,160,225,115,39,4,38,112,66,79,106,174,199,0],[160,227,7,250,203,142,64,16,40,62,150,21,89,252,53,215,183,103,192,255,51,72,137,23,75,39,17,162,208,162,156,0,209,0],[160,240,17,72,244,123,154,10,145,137,31,238,48,188,114,63,5,209,253,213,50,59,51,54,118,170,219,102,168,220,145,32,247,0],[160,93,44,140,192,77,218,99,152,11,165,43,89,93,226,231,69,237,164,194,217,244,25,119,180,144,1,50,91,192,217,71,87,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,156,188,105,114,31,36,154,123,142,102,154,217,22,169,233,100,95,123,35,157,242,39,167,198,172,227,78,245,125,116,108,134,160,8,45,240,236,178,161,107,136,206,107,28,210,5,163,63,41,0,163,130,48,28,117,48,53,45,199,57,81,116,195,156,237,160,64,67,82,129,153,106,178,221,66,207,112,86,116,198,17,108,53,73,133,11,175,15,167,217,149,21,88,140,90,191,115,59,160,170,37,18,193,39,10,191,16,144,37,64,173,30,24,5,237,185,251,50,150,88,214,200,52,188,187,29,84,65,115,151,140,160,81,203,198,161,225,160,190,192,56,65,242,248,218,127,252,229,5,150,11,189,71,9,210,251,78,195,170,16,240,226,113,69,160,104,16,219,134,193,188,170,105,162,255,46,238,185,3,34,30,227,107,254,154,26,43,88,147,146,8,202,185,31,184,179,75,160,236,108,71,137,91,167,166,221,153,200,91,234,136,127,42,127,40,133,54,58,7,88,215,100,48,243,34,103,85,102,0,223,160,186,2,4,233,111,235,213,181,122,51,187,216,216,109,198,63,177,71,41,77,14,113,229,48,225,244,86,152,34,250,93,52,160,104,224,29,88,241,157,149,1,169,44,54,82,82,94,220,172,89,223,70,156,137,178,201,20,7,125,31,58,222,1,222,146,160,201,140,242,11,19,30,249,130,12,47,191,119,144,252,197,85,190,122,191,166,96,216,15,149,28,45,179,85,82,173,200,207,160,202,86,82,133,140,211,123,172,12,253,197,67,123,194,78,7,56,30,224,170,48,158,77,194,31,120,255,129,39,63,108,202,160,47,203,156,139,56,59,194,78,115,157,254,43,228,108,219,92,182,204,251,18,10,226,28,36,242,105,144,141,59,39,91,140,160,118,251,93,74,40,192,248,227,5,125,210,24,61,79,179,51,87,60,54,215,160,225,115,39,4,38,112,66,79,106,174,199,160,227,7,250,203,142,64,16,40,62,150,21,89,252,53,215,183,103,192,255,51,72,137,23,75,39,17,162,208,162,156,0,209,160,240,17,72,244,123,154,10,145,137,31,238,48,188,114,63,5,209,253,213,50,59,51,54,118,170,219,102,168,220,145,32,247,160,93,44,140,192,77,218,99,152,11,165,43,89,93,226,231,69,237,164,194,217,244,25,119,180,144,1,50,91,192,217,71,87,128],[249,2,17,160,156,188,105,114,31,36,154,123,142,102,154,217,22,169,233,100,95,123,35,157,242,39,167,198,172,227,78,245,125,116,108,134,160,8,45,240,236,178,161,107,136,206,107,28,210,5,163,63,41,0,163,130,48,28,117,48,53,45,199,57,81,116,195,156,237,160,64,67,82,129,153,106,178,221,66,207,112,86,116,198,17,108,53,73,133,11,175,15,167,217,149,21,88,140,90,191,115,59,160,170,37,18,193,39,10,191,16,144,37,64,173,30,24,5,237,185,251,50,150,88,214,200,52,188,187,29,84,65,115,151,140,160,102,79,217,10,154,173,100,22,201,108,182,73,110,174,11,115,154,182,174,92,61,172,0,197,98,6,207,135,97,248,44,194,160,104,16,219,134,193,188,170,105,162,255,46,238,185,3,34,30,227,107,254,154,26,43,88,147,146,8,202,185,31,184,179,75,160,236,108,71,137,91,167,166,221,153,200,91,234,136,127,42,127,40,133,54,58,7,88,215,100,48,243,34,103,85,102,0,223,160,186,2,4,233,111,235,213,181,122,51,187,216,216,109,198,63,177,71,41,77,14,113,229,48,225,244,86,152,34,250,93,52,160,104,224,29,88,241,157,149,1,169,44,54,82,82,94,220,172,89,223,70,156,137,178,201,20,7,125,31,58,222,1,222,146,160,201,140,242,11,19,30,249,130,12,47,191,119,144,252,197,85,190,122,191,166,96,216,15,149,28,45,179,85,82,173,200,207,160,202,86,82,133,140,211,123,172,12,253,197,67,123,194,78,7,56,30,224,170,48,158,77,194,31,120,255,129,39,63,108,202,160,47,203,156,139,56,59,194,78,115,157,254,43,228,108,219,92,182,204,251,18,10,226,28,36,242,105,144,141,59,39,91,140,160,118,251,93,74,40,192,248,227,5,125,210,24,61,79,179,51,87,60,54,215,160,225,115,39,4,38,112,66,79,106,174,199,160,227,7,250,203,142,64,16,40,62,150,21,89,252,53,215,183,103,192,255,51,72,137,23,75,39,17,162,208,162,156,0,209,160,240,17,72,244,123,154,10,145,137,31,238,48,188,114,63,5,209,253,213,50,59,51,54,118,170,219,102,168,220,145,32,247,160,93,44,140,192,77,218,99,152,11,165,43,89,93,226,231,69,237,164,194,217,244,25,119,180,144,1,50,91,192,217,71,87,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":6,"drifted_index":6,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,90,240,3,188,209,42,201,105,79,245,174,51,212,208,183,239,14,87,46,183,132,243,226,101,221,59,249,98,238,38,30,200,0],[160,232,191,153,154,181,58,206,81,231,209,209,239,36,133,221,157,153,42,68,174,20,69,221,60,11,63,166,31,237,237,104,162,0],[160,57,228,194,98,47,19,97,133,100,169,2,0,243,214,13,73,186,52,15,117,71,216,18,107,102,15,16,111,86,250,50,251,0],[160,51,250,142,196,40,119,29,225,6,141,231,106,64,7,57,115,110,177,160,25,74,86,178,98,92,55,43,84,38,108,149,114,0],[160,188,17,187,239,92,176,201,136,24,53,252,251,177,159,15,74,114,158,187,40,157,163,92,149,77,183,194,85,161,209,131,189,0],[160,95,24,164,82,11,196,142,109,130,78,42,15,66,95,149,217,148,254,124,255,123,38,6,201,175,159,70,55,78,36,64,222,0],[160,253,133,23,137,243,61,14,118,41,90,234,0,23,170,246,8,217,98,31,146,149,133,151,98,41,36,143,17,217,13,54,225,0],[160,58,3,44,81,4,14,180,148,19,202,39,34,247,198,8,247,132,48,141,122,22,132,234,14,83,168,88,19,243,189,8,146,0],[160,218,79,4,19,117,120,255,76,227,129,57,190,233,72,210,104,202,172,77,110,166,99,134,239,219,54,231,204,208,217,184,193,0],[160,28,43,54,96,106,42,56,44,206,73,74,22,167,224,233,125,88,222,3,114,91,198,179,0,14,184,180,31,113,164,130,150,0],[160,93,170,254,86,166,255,153,188,72,120,14,11,156,181,35,136,31,176,118,165,26,245,91,196,116,167,82,73,239,192,67,198,0],[160,113,106,91,157,43,225,158,83,210,141,196,54,3,42,204,31,201,236,95,202,60,105,198,12,122,206,68,128,125,136,125,124,0],[160,41,72,43,195,185,77,145,190,248,35,64,23,254,21,206,113,58,189,41,41,0,75,98,168,214,131,3,50,118,22,181,17,0],[160,167,9,119,24,44,27,22,223,236,139,113,148,108,210,194,127,188,31,165,26,133,146,93,4,152,21,206,226,71,230,114,123,0],[160,210,161,112,6,68,249,246,185,163,96,30,55,95,21,48,46,27,132,235,191,20,114,216,181,115,139,81,29,120,129,206,103,0],[160,228,14,86,234,190,75,211,24,27,251,45,67,43,75,140,223,231,88,38,238,140,199,169,241,181,123,41,200,94,70,128,194,0],[160,109,50,80,239,237,131,100,221,110,137,154,89,27,127,96,132,227,250,251,119,175,219,213,124,97,113,136,253,103,210,215,99,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,232,191,153,154,181,58,206,81,231,209,209,239,36,133,221,157,153,42,68,174,20,69,221,60,11,63,166,31,237,237,104,162,160,57,228,194,98,47,19,97,133,100,169,2,0,243,214,13,73,186,52,15,117,71,216,18,107,102,15,16,111,86,250,50,251,160,51,250,142,196,40,119,29,225,6,141,231,106,64,7,57,115,110,177,160,25,74,86,178,98,92,55,43,84,38,108,149,114,160,188,17,187,239,92,176,201,136,24,53,252,251,177,159,15,74,114,158,187,40,157,163,92,149,77,183,194,85,161,209,131,189,160,95,24,164,82,11,196,142,109,130,78,42,15,66,95,149,217,148,254,124,255,123,38,6,201,175,159,70,55,78,36,64,222,160,253,133,23,137,243,61,14,118,41,90,234,0,23,170,246,8,217,98,31,146,149,133,151,98,41,36,143,17,217,13,54,225,160,58,3,44,81,4,14,180,148,19,202,39,34,247,198,8,247,132,48,141,122,22,132,234,14,83,168,88,19,243,189,8,146,160,218,79,4,19,117,120,255,76,227,129,57,190,233,72,210,104,202,172,77,110,166,99,134,239,219,54,231,204,208,217,184,193,160,28,43,54,96,106,42,56,44,206,73,74,22,167,224,233,125,88,222,3,114,91,198,179,0,14,184,180,31,113,164,130,150,160,93,170,254,86,166,255,153,188,72,120,14,11,156,181,35,136,31,176,118,165,26,245,91,196,116,167,82,73,239,192,67,198,160,113,106,91,157,43,225,158,83,210,141,196,54,3,42,204,31,201,236,95,202,60,105,198,12,122,206,68,128,125,136,125,124,160,41,72,43,195,185,77,145,190,248,35,64,23,254,21,206,113,58,189,41,41,0,75,98,168,214,131,3,50,118,22,181,17,160,167,9,119,24,44,27,22,223,236,139,113,148,108,210,194,127,188,31,165,26,133,146,93,4,152,21,206,226,71,230,114,123,160,210,161,112,6,68,249,246,185,163,96,30,55,95,21,48,46,27,132,235,191,20,114,216,181,115,139,81,29,120,129,206,103,160,228,14,86,234,190,75,211,24,27,251,45,67,43,75,140,223,231,88,38,238,140,199,169,241,181,123,41,200,94,70,128,194,160,109,50,80,239,237,131,100,221,110,137,154,89,27,127,96,132,227,250,251,119,175,219,213,124,97,113,136,253,103,210,215,99,128],[249,2,17,160,232,191,153,154,181,58,206,81,231,209,209,239,36,133,221,157,153,42,68,174,20,69,221,60,11,63,166,31,237,237,104,162,160,57,228,194,98,47,19,97,133,100,169,2,0,243,214,13,73,186,52,15,117,71,216,18,107,102,15,16,111,86,250,50,251,160,51,250,142,196,40,119,29,225,6,141,231,106,64,7,57,115,110,177,160,25,74,86,178,98,92,55,43,84,38,108,149,114,160,188,17,187,239,92,176,201,136,24,53,252,251,177,159,15,74,114,158,187,40,157,163,92,149,77,183,194,85,161,209,131,189,160,95,24,164,82,11,196,142,109,130,78,42,15,66,95,149,217,148,254,124,255,123,38,6,201,175,159,70,55,78,36,64,222,160,253,133,23,137,243,61,14,118,41,90,234,0,23,170,246,8,217,98,31,146,149,133,151,98,41,36,143,17,217,13,54,225,160,90,240,3,188,209,42,201,105,79,245,174,51,212,208,183,239,14,87,46,183,132,243,226,101,221,59,249,98,238,38,30,200,160,218,79,4,19,117,120,255,76,227,129,57,190,233,72,210,104,202,172,77,110,166,99,134,239,219,54,231,204,208,217,184,193,160,28,43,54,96,106,42,56,44,206,73,74,22,167,224,233,125,88,222,3,114,91,198,179,0,14,184,180,31,113,164,130,150,160,93,170,254,86,166,255,153,188,72,120,14,11,156,181,35,136,31,176,118,165,26,245,91,196,116,167,82,73,239,192,67,198,160,113,106,91,157,43,225,158,83,210,141,196,54,3,42,204,31,201,236,95,202,60,105,198,12,122,206,68,128,125,136,125,124,160,41,72,43,195,185,77,145,190,248,35,64,23,254,21,206,113,58,189,41,41,0,75,98,168,214,131,3,50,118,22,181,17,160,167,9,119,24,44,27,22,223,236,139,113,148,108,210,194,127,188,31,165,26,133,146,93,4,152,21,206,226,71,230,114,123,160,210,161,112,6,68,249,246,185,163,96,30,55,95,21,48,46,27,132,235,191,20,114,216,181,115,139,81,29,120,129,206,103,160,228,14,86,234,190,75,211,24,27,251,45,67,43,75,140,223,231,88,38,238,140,199,169,241,181,123,41,200,94,70,128,194,160,109,50,80,239,237,131,100,221,110,137,154,89,27,127,96,132,227,250,251,119,175,219,213,124,97,113,136,253,103,210,215,99,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":2,"drifted_index":2,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,134,253,241,93,61,62,185,221,65,135,18,10,146,175,16,147,198,232,191,126,12,223,191,198,177,125,168,97,189,111,251,174,0],[160,180,237,88,189,64,174,197,244,127,23,149,85,117,103,224,177,173,47,85,97,236,124,161,62,9,12,4,255,91,138,237,100,0],[160,100,93,175,177,202,28,103,175,123,15,81,95,184,46,83,103,87,183,116,39,115,175,190,70,133,107,158,119,167,0,85,237,0],[160,69,83,4,13,109,89,244,189,229,133,31,42,245,72,201,112,152,157,99,216,186,20,113,98,200,179,54,77,14,42,242,64,0],[160,216,111,187,49,66,224,152,105,189,122,136,193,157,189,25,137,82,161,106,108,64,185,230,186,243,236,215,127,221,56,233,125,0],[160,148,0,211,22,129,35,130,113,137,153,68,150,167,69,115,247,241,139,129,0,254,97,231,163,97,44,243,95,84,178,23,173,0],[160,87,72,55,68,130,23,116,88,149,221,0,186,16,144,210,29,155,102,151,92,76,129,204,245,194,240,232,103,36,24,30,149,0],[160,93,255,7,192,212,135,80,1,228,59,117,73,69,82,217,204,180,56,133,3,229,140,225,4,230,93,52,56,161,38,51,48,0],[160,73,127,28,24,139,210,195,167,141,215,140,156,156,128,113,253,212,126,68,166,143,251,101,231,18,248,69,77,64,13,231,14,0],[160,116,18,80,1,241,23,90,141,238,178,29,155,4,112,150,134,253,100,191,111,253,215,234,161,25,45,92,178,10,7,176,182,0],[160,180,139,103,129,151,58,21,62,153,208,235,226,184,171,166,197,185,221,246,68,209,69,62,130,149,53,171,40,187,50,152,47,0],[160,170,98,176,29,23,138,240,253,180,210,140,27,188,79,247,56,1,172,195,246,35,100,234,129,174,42,153,131,213,82,133,210,0],[160,77,1,155,88,50,4,201,82,161,82,54,78,30,247,231,167,13,253,248,176,232,171,12,159,192,168,11,124,246,7,205,221,0],[160,197,156,14,95,177,36,137,213,162,27,161,77,213,124,66,200,73,4,19,170,78,41,129,61,108,52,141,23,188,94,146,215,0],[160,59,189,41,18,35,186,204,91,48,249,227,167,107,66,64,216,134,148,132,209,177,89,90,253,19,69,2,76,252,231,72,169,0],[160,217,174,174,31,206,154,240,32,249,39,191,51,179,82,34,9,218,48,40,229,6,173,247,68,35,254,120,175,73,57,9,14,0],[160,156,132,158,203,172,85,98,126,161,209,134,204,128,25,17,231,140,0,75,173,183,55,130,92,232,54,111,80,250,224,145,159,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,180,237,88,189,64,174,197,244,127,23,149,85,117,103,224,177,173,47,85,97,236,124,161,62,9,12,4,255,91,138,237,100,160,100,93,175,177,202,28,103,175,123,15,81,95,184,46,83,103,87,183,116,39,115,175,190,70,133,107,158,119,167,0,85,237,160,69,83,4,13,109,89,244,189,229,133,31,42,245,72,201,112,152,157,99,216,186,20,113,98,200,179,54,77,14,42,242,64,160,216,111,187,49,66,224,152,105,189,122,136,193,157,189,25,137,82,161,106,108,64,185,230,186,243,236,215,127,221,56,233,125,160,148,0,211,22,129,35,130,113,137,153,68,150,167,69,115,247,241,139,129,0,254,97,231,163,97,44,243,95,84,178,23,173,160,87,72,55,68,130,23,116,88,149,221,0,186,16,144,210,29,155,102,151,92,76,129,204,245,194,240,232,103,36,24,30,149,160,93,255,7,192,212,135,80,1,228,59,117,73,69,82,217,204,180,56,133,3,229,140,225,4,230,93,52,56,161,38,51,48,160,73,127,28,24,139,210,195,167,141,215,140,156,156,128,113,253,212,126,68,166,143,251,101,231,18,248,69,77,64,13,231,14,160,116,18,80,1,241,23,90,141,238,178,29,155,4,112,150,134,253,100,191,111,253,215,234,161,25,45,92,178,10,7,176,182,160,180,139,103,129,151,58,21,62,153,208,235,226,184,171,166,197,185,221,246,68,209,69,62,130,149,53,171,40,187,50,152,47,160,170,98,176,29,23,138,240,253,180,210,140,27,188,79,247,56,1,172,195,246,35,100,234,129,174,42,153,131,213,82,133,210,160,77,1,155,88,50,4,201,82,161,82,54,78,30,247,231,167,13,253,248,176,232,171,12,159,192,168,11,124,246,7,205,221,160,197,156,14,95,177,36,137,213,162,27,161,77,213,124,66,200,73,4,19,170,78,41,129,61,108,52,141,23,188,94,146,215,160,59,189,41,18,35,186,204,91,48,249,227,167,107,66,64,216,134,148,132,209,177,89,90,253,19,69,2,76,252,231,72,169,160,217,174,174,31,206,154,240,32,249,39,191,51,179,82,34,9,218,48,40,229,6,173,247,68,35,254,120,175,73,57,9,14,160,156,132,158,203,172,85,98,126,161,209,134,204,128,25,17,231,140,0,75,173,183,55,130,92,232,54,111,80,250,224,145,159,128],[249,2,17,160,180,237,88,189,64,174,197,244,127,23,149,85,117,103,224,177,173,47,85,97,236,124,161,62,9,12,4,255,91,138,237,100,160,100,93,175,177,202,28,103,175,123,15,81,95,184,46,83,103,87,183,116,39,115,175,190,70,133,107,158,119,167,0,85,237,160,134,253,241,93,61,62,185,221,65,135,18,10,146,175,16,147,198,232,191,126,12,223,191,198,177,125,168,97,189,111,251,174,160,216,111,187,49,66,224,152,105,189,122,136,193,157,189,25,137,82,161,106,108,64,185,230,186,243,236,215,127,221,56,233,125,160,148,0,211,22,129,35,130,113,137,153,68,150,167,69,115,247,241,139,129,0,254,97,231,163,97,44,243,95,84,178,23,173,160,87,72,55,68,130,23,116,88,149,221,0,186,16,144,210,29,155,102,151,92,76,129,204,245,194,240,232,103,36,24,30,149,160,93,255,7,192,212,135,80,1,228,59,117,73,69,82,217,204,180,56,133,3,229,140,225,4,230,93,52,56,161,38,51,48,160,73,127,28,24,139,210,195,167,141,215,140,156,156,128,113,253,212,126,68,166,143,251,101,231,18,248,69,77,64,13,231,14,160,116,18,80,1,241,23,90,141,238,178,29,155,4,112,150,134,253,100,191,111,253,215,234,161,25,45,92,178,10,7,176,182,160,180,139,103,129,151,58,21,62,153,208,235,226,184,171,166,197,185,221,246,68,209,69,62,130,149,53,171,40,187,50,152,47,160,170,98,176,29,23,138,240,253,180,210,140,27,188,79,247,56,1,172,195,246,35,100,234,129,174,42,153,131,213,82,133,210,160,77,1,155,88,50,4,201,82,161,82,54,78,30,247,231,167,13,253,248,176,232,171,12,159,192,168,11,124,246,7,205,221,160,197,156,14,95,177,36,137,213,162,27,161,77,213,124,66,200,73,4,19,170,78,41,129,61,108,52,141,23,188,94,146,215,160,59,189,41,18,35,186,204,91,48,249,227,167,107,66,64,216,134,148,132,209,177,89,90,253,19,69,2,76,252,231,72,169,160,217,174,174,31,206,154,240,32,249,39,191,51,179,82,34,9,218,48,40,229,6,173,247,68,35,254,120,175,73,57,9,14,160,156,132,158,203,172,85,98,126,161,209,134,204,128,25,17,231,140,0,75,173,183,55,130,92,232,54,111,80,250,224,145,159,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[248,241],[248,241]]}},"account":null,"storage":null,"values":[[160,136,116,3,74,15,113,88,181,153,37,140,248,108,178,49,166,240,147,99,128,212,198,186,163,226,91,213,196,148,55,51,68,0],[160,221,235,102,139,139,91,212,174,88,230,249,171,33,65,69,158,48,204,41,101,133,62,247,27,139,222,7,83,94,71,17,154,0],[160,6,224,55,65,244,238,1,243,137,85,129,168,103,4,120,155,90,179,56,226,109,19,137,176,130,189,194,201,7,238,111,250,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,140,101,142,12,12,106,22,180,97,103,81,114,201,125,99,91,155,56,5,170,154,255,192,252,182,185,239,64,71,93,206,14,0],[160,54,110,252,213,204,225,239,20,75,137,7,249,169,24,107,197,24,214,127,168,107,130,24,172,153,37,183,16,30,251,51,118,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,85,163,178,230,9,128,96,41,93,216,131,4,147,15,207,10,51,189,116,130,77,178,103,124,233,47,250,147,122,247,176,144,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,26,235,78,32,11,43,6,155,97,87,26,87,91,80,139,39,194,25,79,151,254,179,34,130,163,146,167,193,202,212,18,244,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,130,137,158,138,67,39,119,204,172,211,177,110,56,63,76,40,198,196,173,175,229,163,204,102,240,250,174,109,226,117,155,202,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,241,160,221,235,102,139,139,91,212,174,88,230,249,171,33,65,69,158,48,204,41,101,133,62,247,27,139,222,7,83,94,71,17,154,160,6,224,55,65,244,238,1,243,137,85,129,168,103,4,120,155,90,179,56,226,109,19,137,176,130,189,194,201,7,238,111,250,128,128,128,160,140,101,142,12,12,106,22,180,97,103,81,114,201,125,99,91,155,56,5,170,154,255,192,252,182,185,239,64,71,93,206,14,160,54,110,252,213,204,225,239,20,75,137,7,249,169,24,107,197,24,214,127,168,107,130,24,172,153,37,183,16,30,251,51,118,128,160,85,163,178,230,9,128,96,41,93,216,131,4,147,15,207,10,51,189,116,130,77,178,103,124,233,47,250,147,122,247,176,144,128,160,26,235,78,32,11,43,6,155,97,87,26,87,91,80,139,39,194,25,79,151,254,179,34,130,163,146,167,193,202,212,18,244,128,128,128,128,160,130,137,158,138,67,39,119,204,172,211,177,110,56,63,76,40,198,196,173,175,229,163,204,102,240,250,174,109,226,117,155,202,128],[248,241,160,136,116,3,74,15,113,88,181,153,37,140,248,108,178,49,166,240,147,99,128,212,198,186,163,226,91,213,196,148,55,51,68,160,6,224,55,65,244,238,1,243,137,85,129,168,103,4,120,155,90,179,56,226,109,19,137,176,130,189,194,201,7,238,111,250,128,128,128,160,140,101,142,12,12,106,22,180,97,103,81,114,201,125,99,91,155,56,5,170,154,255,192,252,182,185,239,64,71,93,206,14,160,54,110,252,213,204,225,239,20,75,137,7,249,169,24,107,197,24,214,127,168,107,130,24,172,153,37,183,16,30,251,51,118,128,160,85,163,178,230,9,128,96,41,93,216,131,4,147,15,207,10,51,189,116,130,77,178,103,124,233,47,250,147,122,247,176,144,128,160,26,235,78,32,11,43,6,155,97,87,26,87,91,80,139,39,194,25,79,151,254,179,34,130,163,146,167,193,202,212,18,244,128,128,128,128,160,130,137,158,138,67,39,119,204,172,211,177,110,56,63,76,40,198,196,173,175,229,163,204,102,240,250,174,109,226,117,155,202,128]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[false,true],"extension":{"list_rlp_bytes":[226]},"branch":{"modified_index":11,"drifted_index":2,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,243,146,20,156,129,141,135,17,170,235,103,142,184,189,99,188,120,54,186,29,151,65,111,60,245,179,254,213,6,30,104,185,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,246,90,153,106,161,93,165,112,171,91,43,74,207,239,165,225,172,126,187,78,120,66,242,92,108,203,189,234,112,126,173,106,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,243,146,20,156,129,141,135,17,170,235,103,142,184,189,99,188,120,54,186,29,151,65,111,60,245,179,254,213,6,30,104,185,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,75,215,56,145,110,168,213,69,129,236,183,253,144,161,161,52,44,195,123,177,255,144,242,98,183,27,147,5,79,243,11,165,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,75,215,56,145,110,168,213,69,129,236,183,253,144,161,161,52,44,195,123,177,255,144,242,98,183,27,147,5,79,243,11,165,0]],"keccak_data":[[248,81,128,128,160,246,90,153,106,161,93,165,112,171,91,43,74,207,239,165,225,172,126,187,78,120,66,242,92,108,203,189,234,112,126,173,106,128,128,128,128,128,128,128,128,160,243,146,20,156,129,141,135,17,170,235,103,142,184,189,99,188,120,54,186,29,151,65,111,60,245,179,254,213,6,30,104,185,128,128,128,128,128],[248,81,128,128,160,246,90,153,106,161,93,165,112,171,91,43,74,207,239,165,225,172,126,187,78,120,66,242,92,108,203,189,234,112,126,173,106,128,128,128,128,128,128,128,128,160,243,146,20,156,129,141,135,17,170,235,103,142,184,189,99,188,120,54,186,29,151,65,111,60,245,179,254,213,6,30,104,185,128,128,128,128,128],[226,20,160,75,215,56,145,110,168,213,69,129,236,183,253,144,161,161,52,44,195,123,177,255,144,242,98,183,27,147,5,79,243,11,165],[226,20,160,75,215,56,145,110,168,213,69,129,236,183,253,144,161,161,52,44,195,123,177,255,144,242,98,183,27,147,5,79,243,11,165]]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64],"key":[204,228,98,4,186,168,111,115,58,191,32,139,53,139,168,184,7,8,29,109,70,164,7,116,82,56,174,242,193,51,253,77],"list_rlp_bytes":[[248,101],[248,108]],"value_rlp_bytes":[[184,70],[184,76]],"value_list_rlp_bytes":[[248,68],[248,74]],"drifted_rlp_bytes":[248,107],"wrong_rlp_bytes":[248,108]},"storage":null,"values":[[156,58,168,111,115,58,191,32,139,53,139,168,184,7,8,29,109,70,164,7,116,82,56,174,242,193,51,253,77,0,0,0,0,0],[157,52,45,53,199,120,18,165,14,109,22,4,141,198,233,128,219,44,247,218,241,231,2,206,125,246,58,246,15,3,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[134,85,156,208,108,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[156,61,53,199,120,18,165,14,109,22,4,141,198,233,128,219,44,247,218,241,231,2,206,125,246,58,246,15,3,0,0,0,0,0],[157,52,186,168,111,115,58,191,32,139,53,139,168,184,7,8,29,109,70,164,7,116,82,56,174,242,193,51,253,77,0,0,0,0]],"keccak_data":[[248,101,156,58,168,111,115,58,191,32,139,53,139,168,184,7,8,29,109,70,164,7,116,82,56,174,242,193,51,253,77,184,70,248,68,128,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,108,157,52,45,53,199,120,18,165,14,109,22,4,141,198,233,128,219,44,247,218,241,231,2,206,125,246,58,246,15,3,184,76,248,74,4,134,85,156,208,108,8,0,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64],[248,107,156,61,53,199,120,18,165,14,109,22,4,141,198,233,128,219,44,247,218,241,231,2,206,125,246,58,246,15,3,184,76,248,74,4,134,85,156,208,108,8,0,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/AccountExtensionInFirstLevel.json b/zkevm-circuits/src/mpt_circuit/tests/AccountExtensionInFirstLevel.json new file mode 100644 index 0000000000..ffb9c6b50c --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/AccountExtensionInFirstLevel.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":true,"proof_type":"NonceChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,90,149,210,63,96,21,90,79,215,113,54,179,202,200,190,125,138,153,12,147,10,164,5,127,203,30,243,148,15,111,49,120,0],[160,90,149,210,63,96,21,90,79,215,113,54,179,202,200,190,125,138,153,12,147,10,164,5,127,203,30,243,148,15,111,49,120,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[226]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,12,238,76,188,132,183,202,253,232,24,203,94,245,16,89,89,51,190,136,196,16,141,191,3,32,223,60,175,134,134,252,108,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,12,238,76,188,132,183,202,253,232,24,203,94,245,16,89,89,51,190,136,196,16,141,191,3,32,223,60,175,134,134,252,108,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,174,121,120,114,157,43,164,140,103,235,28,242,186,33,76,152,157,197,109,149,229,229,22,189,233,207,92,195,82,121,240,3,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,165,122,171,104,113,212,176,43,65,48,207,251,142,53,47,186,90,181,22,93,66,192,18,250,18,108,20,25,228,62,211,52,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,165,122,171,104,113,212,176,43,65,48,207,251,142,53,47,186,90,181,22,93,66,192,18,250,18,108,20,25,228,62,211,52,0]],"keccak_data":[[248,81,128,128,128,160,12,238,76,188,132,183,202,253,232,24,203,94,245,16,89,89,51,190,136,196,16,141,191,3,32,223,60,175,134,134,252,108,128,128,128,128,128,160,174,121,120,114,157,43,164,140,103,235,28,242,186,33,76,152,157,197,109,149,229,229,22,189,233,207,92,195,82,121,240,3,128,128,128,128,128,128,128],[248,81,128,128,128,160,12,238,76,188,132,183,202,253,232,24,203,94,245,16,89,89,51,190,136,196,16,141,191,3,32,223,60,175,134,134,252,108,128,128,128,128,128,160,174,121,120,114,157,43,164,140,103,235,28,242,186,33,76,152,157,197,109,149,229,229,22,189,233,207,92,195,82,121,240,3,128,128,128,128,128,128,128],[226,24,160,165,122,171,104,113,212,176,43,65,48,207,251,142,53,47,186,90,181,22,93,66,192,18,250,18,108,20,25,228,62,211,52],[226,24,160,165,122,171,104,113,212,176,43,65,48,207,251,142,53,47,186,90,181,22,93,66,192,18,250,18,108,20,25,228,62,211,52]]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,24],"key":[131,183,32,52,38,131,211,211,218,246,83,140,45,89,109,3,231,97,202,248,167,7,116,197,134,209,86,108,48,129,43,150],"list_rlp_bytes":[[248,105],[248,105]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,105]},"storage":null,"values":[[160,32,183,32,52,38,131,211,211,218,246,83,140,45,89,109,3,231,97,202,248,167,7,116,197,134,209,86,108,48,129,43,150,0],[160,32,183,32,52,38,131,211,211,218,246,83,140,45,89,109,3,231,97,202,248,167,7,116,197,134,209,86,108,48,129,43,150,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,183,32,52,38,131,211,211,218,246,83,140,45,89,109,3,231,97,202,248,167,7,116,197,134,209,86,108,48,129,43,150,0]],"keccak_data":[[248,105,160,32,183,32,52,38,131,211,211,218,246,83,140,45,89,109,3,231,97,202,248,167,7,116,197,134,209,86,108,48,129,43,150,184,70,248,68,128,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,105,160,32,183,32,52,38,131,211,211,218,246,83,140,45,89,109,3,231,97,202,248,167,7,116,197,134,209,86,108,48,129,43,150,184,70,248,68,128,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,24]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/AccountExtensionThreeNibblesInEvenLevel.json b/zkevm-circuits/src/mpt_circuit/tests/AccountExtensionThreeNibblesInEvenLevel.json new file mode 100644 index 0000000000..084e7c6c17 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/AccountExtensionThreeNibblesInEvenLevel.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"NonceChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,18,32,75,181,229,184,164,244,125,221,183,75,13,188,251,239,210,82,9,216,215,239,32,119,143,213,60,141,16,235,136,2,0],[160,101,65,211,35,168,94,236,226,102,166,96,44,227,254,143,101,43,197,75,29,142,253,129,47,73,135,164,184,94,116,2,141,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,1,101,215,142,178,208,104,115,247,160,118,144,144,147,179,72,129,220,53,39,182,60,211,63,12,25,174,99,94,177,95,193,0],[160,209,76,42,58,156,116,246,28,235,4,189,86,90,73,197,168,103,65,175,151,211,219,236,168,155,227,142,69,9,92,155,47,0],[160,115,208,134,49,179,158,7,137,59,150,131,89,26,28,151,52,39,145,133,104,255,94,140,25,109,93,180,4,33,118,80,147,0],[160,17,194,250,154,175,155,104,41,66,128,37,199,106,68,17,28,60,67,125,119,114,172,252,179,26,165,240,190,71,215,167,42,0],[160,195,207,224,18,49,93,175,199,53,213,173,146,171,24,242,139,119,33,141,195,25,55,35,5,59,234,204,70,46,169,57,119,0],[160,217,253,4,157,159,112,109,144,19,136,8,238,236,52,196,147,40,97,158,167,231,194,165,210,90,214,244,245,200,183,33,209,0],[160,216,53,35,210,214,175,221,177,253,46,16,45,181,172,228,36,22,179,76,158,53,130,25,204,157,142,218,220,152,165,127,120,0],[160,16,144,114,31,210,128,6,138,83,198,53,94,121,141,104,77,94,190,37,225,37,73,70,45,60,27,26,143,252,163,114,109,0],[160,232,65,87,203,185,50,83,9,193,18,64,211,100,15,162,22,186,203,73,72,181,34,51,108,24,59,33,49,216,26,56,225,0],[160,230,79,95,250,138,78,23,76,112,22,104,22,164,213,101,127,168,199,119,71,55,204,197,229,115,80,234,97,0,136,2,24,0],[160,168,47,234,156,179,5,3,120,105,166,40,79,128,10,215,192,162,111,59,108,8,172,200,221,107,208,27,225,168,164,211,50,0],[160,82,71,225,232,149,135,39,97,66,68,95,34,53,223,204,190,248,68,223,116,50,9,142,82,23,243,149,145,51,144,88,134,0],[160,11,16,88,147,111,91,74,186,95,174,100,229,193,162,174,252,70,86,73,4,154,154,205,196,93,190,217,55,122,122,43,48,0],[160,63,250,131,175,151,53,128,129,221,191,6,160,218,111,237,199,178,73,13,137,216,54,70,165,179,73,83,168,31,241,3,71,0],[160,97,195,135,22,58,155,221,254,199,10,53,138,135,26,153,131,85,103,53,152,227,193,109,249,77,99,182,26,205,214,202,4,0],[160,130,173,203,112,182,224,76,4,174,219,58,51,223,68,157,160,252,68,51,236,195,193,154,0,14,63,156,56,205,219,132,185,0],[160,79,117,212,47,186,87,21,223,216,115,170,104,145,200,42,84,88,120,115,10,64,191,162,252,113,155,57,43,10,59,4,88,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,209,76,42,58,156,116,246,28,235,4,189,86,90,73,197,168,103,65,175,151,211,219,236,168,155,227,142,69,9,92,155,47,160,115,208,134,49,179,158,7,137,59,150,131,89,26,28,151,52,39,145,133,104,255,94,140,25,109,93,180,4,33,118,80,147,160,17,194,250,154,175,155,104,41,66,128,37,199,106,68,17,28,60,67,125,119,114,172,252,179,26,165,240,190,71,215,167,42,160,195,207,224,18,49,93,175,199,53,213,173,146,171,24,242,139,119,33,141,195,25,55,35,5,59,234,204,70,46,169,57,119,160,217,253,4,157,159,112,109,144,19,136,8,238,236,52,196,147,40,97,158,167,231,194,165,210,90,214,244,245,200,183,33,209,160,216,53,35,210,214,175,221,177,253,46,16,45,181,172,228,36,22,179,76,158,53,130,25,204,157,142,218,220,152,165,127,120,160,16,144,114,31,210,128,6,138,83,198,53,94,121,141,104,77,94,190,37,225,37,73,70,45,60,27,26,143,252,163,114,109,160,232,65,87,203,185,50,83,9,193,18,64,211,100,15,162,22,186,203,73,72,181,34,51,108,24,59,33,49,216,26,56,225,160,230,79,95,250,138,78,23,76,112,22,104,22,164,213,101,127,168,199,119,71,55,204,197,229,115,80,234,97,0,136,2,24,160,168,47,234,156,179,5,3,120,105,166,40,79,128,10,215,192,162,111,59,108,8,172,200,221,107,208,27,225,168,164,211,50,160,82,71,225,232,149,135,39,97,66,68,95,34,53,223,204,190,248,68,223,116,50,9,142,82,23,243,149,145,51,144,88,134,160,11,16,88,147,111,91,74,186,95,174,100,229,193,162,174,252,70,86,73,4,154,154,205,196,93,190,217,55,122,122,43,48,160,63,250,131,175,151,53,128,129,221,191,6,160,218,111,237,199,178,73,13,137,216,54,70,165,179,73,83,168,31,241,3,71,160,97,195,135,22,58,155,221,254,199,10,53,138,135,26,153,131,85,103,53,152,227,193,109,249,77,99,182,26,205,214,202,4,160,130,173,203,112,182,224,76,4,174,219,58,51,223,68,157,160,252,68,51,236,195,193,154,0,14,63,156,56,205,219,132,185,160,79,117,212,47,186,87,21,223,216,115,170,104,145,200,42,84,88,120,115,10,64,191,162,252,113,155,57,43,10,59,4,88,128],[249,2,17,160,1,101,215,142,178,208,104,115,247,160,118,144,144,147,179,72,129,220,53,39,182,60,211,63,12,25,174,99,94,177,95,193,160,115,208,134,49,179,158,7,137,59,150,131,89,26,28,151,52,39,145,133,104,255,94,140,25,109,93,180,4,33,118,80,147,160,17,194,250,154,175,155,104,41,66,128,37,199,106,68,17,28,60,67,125,119,114,172,252,179,26,165,240,190,71,215,167,42,160,195,207,224,18,49,93,175,199,53,213,173,146,171,24,242,139,119,33,141,195,25,55,35,5,59,234,204,70,46,169,57,119,160,217,253,4,157,159,112,109,144,19,136,8,238,236,52,196,147,40,97,158,167,231,194,165,210,90,214,244,245,200,183,33,209,160,216,53,35,210,214,175,221,177,253,46,16,45,181,172,228,36,22,179,76,158,53,130,25,204,157,142,218,220,152,165,127,120,160,16,144,114,31,210,128,6,138,83,198,53,94,121,141,104,77,94,190,37,225,37,73,70,45,60,27,26,143,252,163,114,109,160,232,65,87,203,185,50,83,9,193,18,64,211,100,15,162,22,186,203,73,72,181,34,51,108,24,59,33,49,216,26,56,225,160,230,79,95,250,138,78,23,76,112,22,104,22,164,213,101,127,168,199,119,71,55,204,197,229,115,80,234,97,0,136,2,24,160,168,47,234,156,179,5,3,120,105,166,40,79,128,10,215,192,162,111,59,108,8,172,200,221,107,208,27,225,168,164,211,50,160,82,71,225,232,149,135,39,97,66,68,95,34,53,223,204,190,248,68,223,116,50,9,142,82,23,243,149,145,51,144,88,134,160,11,16,88,147,111,91,74,186,95,174,100,229,193,162,174,252,70,86,73,4,154,154,205,196,93,190,217,55,122,122,43,48,160,63,250,131,175,151,53,128,129,221,191,6,160,218,111,237,199,178,73,13,137,216,54,70,165,179,73,83,168,31,241,3,71,160,97,195,135,22,58,155,221,254,199,10,53,138,135,26,153,131,85,103,53,152,227,193,109,249,77,99,182,26,205,214,202,4,160,130,173,203,112,182,224,76,4,174,219,58,51,223,68,157,160,252,68,51,236,195,193,154,0,14,63,156,56,205,219,132,185,160,79,117,212,47,186,87,21,223,216,115,170,104,145,200,42,84,88,120,115,10,64,191,162,252,113,155,57,43,10,59,4,88,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":2,"drifted_index":2,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,98,95,197,134,20,83,198,254,186,72,29,112,105,90,198,68,2,182,118,193,57,161,104,113,141,155,61,59,73,206,59,83,0],[160,155,227,255,46,235,215,46,97,118,46,18,223,145,236,213,152,111,74,99,250,194,21,89,158,59,233,130,30,228,248,158,133,0],[160,16,99,91,79,90,206,223,56,90,131,80,111,25,253,156,244,201,102,64,107,72,185,49,159,215,6,74,232,205,153,115,126,0],[160,91,230,102,86,55,178,221,100,194,30,189,74,228,6,174,133,163,102,194,181,49,21,118,54,91,75,91,40,71,57,65,171,0],[160,115,117,59,195,219,16,162,138,81,168,232,135,4,216,128,245,24,88,117,208,101,144,183,235,158,180,50,69,32,157,115,55,0],[160,11,7,55,105,186,203,57,125,255,66,178,221,15,66,13,169,189,252,142,120,19,9,169,26,76,205,20,161,23,210,182,33,0],[160,153,125,215,13,63,66,226,163,141,199,15,235,21,138,29,87,97,198,151,39,107,153,53,114,130,168,162,10,178,49,49,8,0],[160,208,108,98,4,141,39,152,41,176,116,182,117,62,155,80,98,146,150,161,205,208,2,200,194,104,185,242,87,113,119,75,58,0],[160,150,193,247,101,41,232,86,99,218,162,117,205,25,13,156,208,36,206,200,113,57,235,115,45,36,32,111,238,172,250,60,138,0],[160,254,233,67,106,135,178,184,219,193,125,182,87,152,74,48,187,40,216,81,97,105,22,130,24,188,9,3,218,108,234,212,225,0],[160,180,196,35,48,247,5,251,115,250,123,214,122,124,80,238,67,223,67,160,203,35,176,206,152,250,78,159,86,28,133,107,61,0],[160,180,64,212,84,82,26,157,193,244,145,56,162,6,72,31,243,182,239,93,203,237,2,65,60,22,79,166,217,220,121,224,46,0],[160,16,64,196,134,221,160,215,244,30,107,144,235,50,189,171,142,132,189,29,14,225,60,103,165,102,105,224,169,249,71,66,47,0],[160,66,195,211,54,224,70,140,132,232,33,137,160,125,156,171,236,94,197,41,170,15,241,19,255,232,19,189,191,146,140,122,255,0],[160,140,254,199,186,251,72,232,47,184,204,219,93,118,146,114,213,241,61,94,21,115,97,19,83,187,33,184,189,222,69,178,38,0],[160,164,153,2,223,188,164,190,110,160,184,130,58,112,249,202,123,210,69,176,192,20,207,91,13,39,25,231,245,132,20,219,163,0],[160,171,50,71,162,188,61,33,90,149,150,50,66,18,109,65,211,129,119,210,110,73,56,203,192,161,15,115,53,166,109,200,252,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,155,227,255,46,235,215,46,97,118,46,18,223,145,236,213,152,111,74,99,250,194,21,89,158,59,233,130,30,228,248,158,133,160,16,99,91,79,90,206,223,56,90,131,80,111,25,253,156,244,201,102,64,107,72,185,49,159,215,6,74,232,205,153,115,126,160,91,230,102,86,55,178,221,100,194,30,189,74,228,6,174,133,163,102,194,181,49,21,118,54,91,75,91,40,71,57,65,171,160,115,117,59,195,219,16,162,138,81,168,232,135,4,216,128,245,24,88,117,208,101,144,183,235,158,180,50,69,32,157,115,55,160,11,7,55,105,186,203,57,125,255,66,178,221,15,66,13,169,189,252,142,120,19,9,169,26,76,205,20,161,23,210,182,33,160,153,125,215,13,63,66,226,163,141,199,15,235,21,138,29,87,97,198,151,39,107,153,53,114,130,168,162,10,178,49,49,8,160,208,108,98,4,141,39,152,41,176,116,182,117,62,155,80,98,146,150,161,205,208,2,200,194,104,185,242,87,113,119,75,58,160,150,193,247,101,41,232,86,99,218,162,117,205,25,13,156,208,36,206,200,113,57,235,115,45,36,32,111,238,172,250,60,138,160,254,233,67,106,135,178,184,219,193,125,182,87,152,74,48,187,40,216,81,97,105,22,130,24,188,9,3,218,108,234,212,225,160,180,196,35,48,247,5,251,115,250,123,214,122,124,80,238,67,223,67,160,203,35,176,206,152,250,78,159,86,28,133,107,61,160,180,64,212,84,82,26,157,193,244,145,56,162,6,72,31,243,182,239,93,203,237,2,65,60,22,79,166,217,220,121,224,46,160,16,64,196,134,221,160,215,244,30,107,144,235,50,189,171,142,132,189,29,14,225,60,103,165,102,105,224,169,249,71,66,47,160,66,195,211,54,224,70,140,132,232,33,137,160,125,156,171,236,94,197,41,170,15,241,19,255,232,19,189,191,146,140,122,255,160,140,254,199,186,251,72,232,47,184,204,219,93,118,146,114,213,241,61,94,21,115,97,19,83,187,33,184,189,222,69,178,38,160,164,153,2,223,188,164,190,110,160,184,130,58,112,249,202,123,210,69,176,192,20,207,91,13,39,25,231,245,132,20,219,163,160,171,50,71,162,188,61,33,90,149,150,50,66,18,109,65,211,129,119,210,110,73,56,203,192,161,15,115,53,166,109,200,252,128],[249,2,17,160,155,227,255,46,235,215,46,97,118,46,18,223,145,236,213,152,111,74,99,250,194,21,89,158,59,233,130,30,228,248,158,133,160,16,99,91,79,90,206,223,56,90,131,80,111,25,253,156,244,201,102,64,107,72,185,49,159,215,6,74,232,205,153,115,126,160,98,95,197,134,20,83,198,254,186,72,29,112,105,90,198,68,2,182,118,193,57,161,104,113,141,155,61,59,73,206,59,83,160,115,117,59,195,219,16,162,138,81,168,232,135,4,216,128,245,24,88,117,208,101,144,183,235,158,180,50,69,32,157,115,55,160,11,7,55,105,186,203,57,125,255,66,178,221,15,66,13,169,189,252,142,120,19,9,169,26,76,205,20,161,23,210,182,33,160,153,125,215,13,63,66,226,163,141,199,15,235,21,138,29,87,97,198,151,39,107,153,53,114,130,168,162,10,178,49,49,8,160,208,108,98,4,141,39,152,41,176,116,182,117,62,155,80,98,146,150,161,205,208,2,200,194,104,185,242,87,113,119,75,58,160,150,193,247,101,41,232,86,99,218,162,117,205,25,13,156,208,36,206,200,113,57,235,115,45,36,32,111,238,172,250,60,138,160,254,233,67,106,135,178,184,219,193,125,182,87,152,74,48,187,40,216,81,97,105,22,130,24,188,9,3,218,108,234,212,225,160,180,196,35,48,247,5,251,115,250,123,214,122,124,80,238,67,223,67,160,203,35,176,206,152,250,78,159,86,28,133,107,61,160,180,64,212,84,82,26,157,193,244,145,56,162,6,72,31,243,182,239,93,203,237,2,65,60,22,79,166,217,220,121,224,46,160,16,64,196,134,221,160,215,244,30,107,144,235,50,189,171,142,132,189,29,14,225,60,103,165,102,105,224,169,249,71,66,47,160,66,195,211,54,224,70,140,132,232,33,137,160,125,156,171,236,94,197,41,170,15,241,19,255,232,19,189,191,146,140,122,255,160,140,254,199,186,251,72,232,47,184,204,219,93,118,146,114,213,241,61,94,21,115,97,19,83,187,33,184,189,222,69,178,38,160,164,153,2,223,188,164,190,110,160,184,130,58,112,249,202,123,210,69,176,192,20,207,91,13,39,25,231,245,132,20,219,163,160,171,50,71,162,188,61,33,90,149,150,50,66,18,109,65,211,129,119,210,110,73,56,203,192,161,15,115,53,166,109,200,252,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[248,113],[248,113]]}},"account":null,"storage":null,"values":[[160,156,234,114,137,88,90,184,162,81,28,146,78,176,243,103,205,139,224,242,139,42,37,52,50,32,218,125,151,225,230,136,43,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,12,98,119,252,228,129,234,202,92,70,48,212,92,48,192,95,132,12,198,31,220,87,6,55,198,119,122,227,206,132,122,186,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,203,178,117,114,181,172,159,33,224,212,177,11,226,225,196,32,218,16,174,187,24,29,145,153,11,116,26,223,218,200,212,123,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,202,35,138,197,164,239,228,93,235,227,156,184,8,245,167,45,38,33,108,76,218,154,94,71,59,53,96,216,160,194,92,24,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,113,128,160,12,98,119,252,228,129,234,202,92,70,48,212,92,48,192,95,132,12,198,31,220,87,6,55,198,119,122,227,206,132,122,186,128,128,128,160,203,178,117,114,181,172,159,33,224,212,177,11,226,225,196,32,218,16,174,187,24,29,145,153,11,116,26,223,218,200,212,123,128,128,128,160,202,35,138,197,164,239,228,93,235,227,156,184,8,245,167,45,38,33,108,76,218,154,94,71,59,53,96,216,160,194,92,24,128,128,128,128,128,128,128],[248,113,128,160,12,98,119,252,228,129,234,202,92,70,48,212,92,48,192,95,132,12,198,31,220,87,6,55,198,119,122,227,206,132,122,186,128,128,128,160,203,178,117,114,181,172,159,33,224,212,177,11,226,225,196,32,218,16,174,187,24,29,145,153,11,116,26,223,218,200,212,123,128,128,128,160,156,234,114,137,88,90,184,162,81,28,146,78,176,243,103,205,139,224,242,139,42,37,52,50,32,218,125,151,225,230,136,43,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[228]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,187,109,185,88,79,223,5,221,9,145,51,246,72,132,32,239,220,190,217,48,0,181,213,196,127,112,139,180,217,182,34,195,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,168,87,48,158,162,213,56,105,195,214,181,156,63,190,16,238,65,136,125,53,118,102,47,244,76,131,29,115,177,243,10,253,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,94,19,250,54,82,247,227,20,122,41,105,58,90,77,124,202,155,101,58,112,66,171,244,227,217,198,199,242,121,89,149,23,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[130,31,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,109,71,81,9,142,34,116,40,9,224,149,50,165,153,123,61,15,168,34,161,169,29,94,122,211,124,66,194,170,69,99,12,0],[0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,83,195,166,51,133,89,118,238,42,63,133,97,71,38,195,216,47,214,204,80,15,187,1,90,217,34,101,53,14,99,9,140,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,160,168,87,48,158,162,213,56,105,195,214,181,156,63,190,16,238,65,136,125,53,118,102,47,244,76,131,29,115,177,243,10,253,128,128,128,160,94,19,250,54,82,247,227,20,122,41,105,58,90,77,124,202,155,101,58,112,66,171,244,227,217,198,199,242,121,89,149,23,128,128,128,128],[248,81,128,128,128,128,128,128,128,128,160,168,87,48,158,162,213,56,105,195,214,181,156,63,190,16,238,65,136,125,53,118,102,47,244,76,131,29,115,177,243,10,253,128,128,128,160,187,109,185,88,79,223,5,221,9,145,51,246,72,132,32,239,220,190,217,48,0,181,213,196,127,112,139,180,217,182,34,195,128,128,128,128],[228,130,31,49,160,109,71,81,9,142,34,116,40,9,224,149,50,165,153,123,61,15,168,34,161,169,29,94,122,211,124,66,194,170,69,99,12],[228,130,31,49,160,83,195,166,51,133,89,118,238,42,63,133,97,71,38,195,216,47,214,204,80,15,187,1,90,217,34,101,53,14,99,9,140]]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,33,18,103],"key":[2,159,49,197,47,106,223,13,50,103,89,209,201,136,70,3,130,192,57,68,5,209,249,124,67,49,198,227,247,133,28,20],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,53,47,106,223,13,50,103,89,209,201,136,70,3,130,192,57,68,5,209,249,124,67,49,198,227,247,133,28,20,0,0,0,0],[157,53,47,106,223,13,50,103,89,209,201,136,70,3,130,192,57,68,5,209,249,124,67,49,198,227,247,133,28,20,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,53,47,106,223,13,50,103,89,209,201,136,70,3,130,192,57,68,5,209,249,124,67,49,198,227,247,133,28,20,0,0,0,0]],"keccak_data":[[248,102,157,53,47,106,223,13,50,103,89,209,201,136,70,3,130,192,57,68,5,209,249,124,67,49,198,227,247,133,28,20,184,70,248,68,128,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,53,47,106,223,13,50,103,89,209,201,136,70,3,130,192,57,68,5,209,249,124,67,49,198,227,247,133,28,20,184,70,248,68,33,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,33,18,103]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/AccountExtensionThreeNibblesInOddLevel.json b/zkevm-circuits/src/mpt_circuit/tests/AccountExtensionThreeNibblesInOddLevel.json new file mode 100644 index 0000000000..07004c18fe --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/AccountExtensionThreeNibblesInOddLevel.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"NonceChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,97,213,42,72,119,215,11,9,64,194,213,149,211,147,111,68,25,18,101,212,227,215,37,70,44,172,60,168,242,193,225,104,0],[160,43,31,137,53,195,86,64,50,239,239,131,33,22,94,43,148,18,61,164,25,214,192,19,68,255,136,44,97,100,141,252,31,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":6,"drifted_index":6,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,41,188,146,141,75,86,227,232,141,151,196,173,100,75,30,150,195,160,232,48,171,115,88,69,85,229,61,18,103,198,227,66,0],[160,160,40,90,234,86,171,238,143,94,58,86,145,254,166,91,139,146,182,162,72,118,91,88,48,110,1,23,5,74,251,14,105,0],[160,243,190,135,194,6,160,172,11,88,241,195,129,174,77,76,77,116,74,82,138,17,85,189,129,144,191,184,73,205,145,243,23,0],[160,111,205,156,75,175,174,226,35,102,104,215,208,137,190,181,41,7,165,43,30,30,238,5,228,184,124,75,134,244,171,140,41,0],[160,86,239,77,44,50,93,150,132,120,197,59,210,206,107,219,228,109,111,227,226,99,132,38,49,214,235,126,10,151,177,152,55,0],[160,113,43,72,172,9,119,90,185,74,181,40,20,68,105,143,63,12,32,128,16,219,186,43,100,59,234,243,218,226,35,102,153,0],[160,134,192,54,158,117,71,203,142,153,156,196,71,7,208,178,150,173,207,236,122,144,110,71,42,75,207,226,83,120,244,248,224,0],[160,232,168,62,213,9,61,2,87,165,220,190,11,250,150,183,234,150,117,54,220,118,34,95,72,20,110,25,49,138,191,207,23,0],[160,151,3,29,109,248,51,186,226,180,239,75,22,168,180,55,222,130,44,88,83,65,91,171,183,157,186,76,206,22,229,43,181,0],[160,34,227,68,103,143,107,215,206,248,235,186,80,37,47,228,1,192,237,240,84,54,101,51,134,36,188,188,39,127,186,21,146,0],[160,186,195,82,219,174,170,19,57,104,126,151,49,233,237,77,104,228,174,78,193,48,134,34,3,38,151,64,103,121,218,218,40,0],[160,88,240,220,29,172,169,125,78,168,153,116,70,179,245,152,83,133,92,113,228,117,5,23,151,200,215,135,55,200,161,89,162,0],[160,234,103,85,209,64,119,151,78,91,84,52,26,114,154,219,21,112,37,158,114,147,160,91,209,217,73,235,17,107,83,238,231,0],[160,155,67,22,244,16,166,57,179,203,6,30,150,225,133,134,203,46,108,1,58,80,69,116,129,115,158,207,43,224,165,181,124,0],[160,207,36,221,222,188,160,103,135,215,111,46,192,30,7,105,183,116,185,116,196,160,4,101,39,234,52,225,252,155,204,78,201,0],[160,202,177,59,167,76,0,183,229,111,74,182,145,128,14,93,82,95,11,125,107,226,120,102,35,192,22,10,227,69,187,235,223,0],[160,147,83,19,177,123,201,230,83,63,80,7,84,226,151,193,148,91,248,235,91,34,198,127,246,176,30,212,66,236,198,237,83,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,160,40,90,234,86,171,238,143,94,58,86,145,254,166,91,139,146,182,162,72,118,91,88,48,110,1,23,5,74,251,14,105,160,243,190,135,194,6,160,172,11,88,241,195,129,174,77,76,77,116,74,82,138,17,85,189,129,144,191,184,73,205,145,243,23,160,111,205,156,75,175,174,226,35,102,104,215,208,137,190,181,41,7,165,43,30,30,238,5,228,184,124,75,134,244,171,140,41,160,86,239,77,44,50,93,150,132,120,197,59,210,206,107,219,228,109,111,227,226,99,132,38,49,214,235,126,10,151,177,152,55,160,113,43,72,172,9,119,90,185,74,181,40,20,68,105,143,63,12,32,128,16,219,186,43,100,59,234,243,218,226,35,102,153,160,134,192,54,158,117,71,203,142,153,156,196,71,7,208,178,150,173,207,236,122,144,110,71,42,75,207,226,83,120,244,248,224,160,232,168,62,213,9,61,2,87,165,220,190,11,250,150,183,234,150,117,54,220,118,34,95,72,20,110,25,49,138,191,207,23,160,151,3,29,109,248,51,186,226,180,239,75,22,168,180,55,222,130,44,88,83,65,91,171,183,157,186,76,206,22,229,43,181,160,34,227,68,103,143,107,215,206,248,235,186,80,37,47,228,1,192,237,240,84,54,101,51,134,36,188,188,39,127,186,21,146,160,186,195,82,219,174,170,19,57,104,126,151,49,233,237,77,104,228,174,78,193,48,134,34,3,38,151,64,103,121,218,218,40,160,88,240,220,29,172,169,125,78,168,153,116,70,179,245,152,83,133,92,113,228,117,5,23,151,200,215,135,55,200,161,89,162,160,234,103,85,209,64,119,151,78,91,84,52,26,114,154,219,21,112,37,158,114,147,160,91,209,217,73,235,17,107,83,238,231,160,155,67,22,244,16,166,57,179,203,6,30,150,225,133,134,203,46,108,1,58,80,69,116,129,115,158,207,43,224,165,181,124,160,207,36,221,222,188,160,103,135,215,111,46,192,30,7,105,183,116,185,116,196,160,4,101,39,234,52,225,252,155,204,78,201,160,202,177,59,167,76,0,183,229,111,74,182,145,128,14,93,82,95,11,125,107,226,120,102,35,192,22,10,227,69,187,235,223,160,147,83,19,177,123,201,230,83,63,80,7,84,226,151,193,148,91,248,235,91,34,198,127,246,176,30,212,66,236,198,237,83,128],[249,2,17,160,160,40,90,234,86,171,238,143,94,58,86,145,254,166,91,139,146,182,162,72,118,91,88,48,110,1,23,5,74,251,14,105,160,243,190,135,194,6,160,172,11,88,241,195,129,174,77,76,77,116,74,82,138,17,85,189,129,144,191,184,73,205,145,243,23,160,111,205,156,75,175,174,226,35,102,104,215,208,137,190,181,41,7,165,43,30,30,238,5,228,184,124,75,134,244,171,140,41,160,86,239,77,44,50,93,150,132,120,197,59,210,206,107,219,228,109,111,227,226,99,132,38,49,214,235,126,10,151,177,152,55,160,113,43,72,172,9,119,90,185,74,181,40,20,68,105,143,63,12,32,128,16,219,186,43,100,59,234,243,218,226,35,102,153,160,134,192,54,158,117,71,203,142,153,156,196,71,7,208,178,150,173,207,236,122,144,110,71,42,75,207,226,83,120,244,248,224,160,41,188,146,141,75,86,227,232,141,151,196,173,100,75,30,150,195,160,232,48,171,115,88,69,85,229,61,18,103,198,227,66,160,151,3,29,109,248,51,186,226,180,239,75,22,168,180,55,222,130,44,88,83,65,91,171,183,157,186,76,206,22,229,43,181,160,34,227,68,103,143,107,215,206,248,235,186,80,37,47,228,1,192,237,240,84,54,101,51,134,36,188,188,39,127,186,21,146,160,186,195,82,219,174,170,19,57,104,126,151,49,233,237,77,104,228,174,78,193,48,134,34,3,38,151,64,103,121,218,218,40,160,88,240,220,29,172,169,125,78,168,153,116,70,179,245,152,83,133,92,113,228,117,5,23,151,200,215,135,55,200,161,89,162,160,234,103,85,209,64,119,151,78,91,84,52,26,114,154,219,21,112,37,158,114,147,160,91,209,217,73,235,17,107,83,238,231,160,155,67,22,244,16,166,57,179,203,6,30,150,225,133,134,203,46,108,1,58,80,69,116,129,115,158,207,43,224,165,181,124,160,207,36,221,222,188,160,103,135,215,111,46,192,30,7,105,183,116,185,116,196,160,4,101,39,234,52,225,252,155,204,78,201,160,202,177,59,167,76,0,183,229,111,74,182,145,128,14,93,82,95,11,125,107,226,120,102,35,192,22,10,227,69,187,235,223,160,147,83,19,177,123,201,230,83,63,80,7,84,226,151,193,148,91,248,235,91,34,198,127,246,176,30,212,66,236,198,237,83,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,57,87,178,233,140,71,44,227,104,140,237,212,9,196,83,132,45,197,57,71,17,244,1,97,69,16,241,75,171,86,249,209,0],[160,41,85,10,80,118,178,118,96,153,188,175,71,18,244,157,97,43,107,247,13,222,66,31,237,119,32,138,76,175,209,13,193,0],[160,63,144,238,191,114,254,84,115,184,122,105,39,228,7,140,195,212,156,31,140,145,185,66,158,206,131,162,8,103,66,220,169,0],[160,253,129,57,141,120,188,28,246,142,182,207,242,150,11,80,15,116,50,211,218,219,217,113,85,190,6,61,209,197,44,247,30,0],[160,205,20,65,80,245,103,173,166,11,58,214,169,42,129,191,47,230,179,137,155,134,170,96,137,194,241,153,40,99,52,200,198,0],[160,248,56,24,80,32,42,248,85,4,169,49,56,207,195,150,171,238,131,238,217,129,108,27,24,7,21,56,109,73,199,87,81,0],[160,173,252,161,102,116,220,133,61,135,127,110,103,42,202,72,112,174,219,12,33,44,159,45,141,140,235,190,40,115,0,7,83,0],[160,60,251,51,148,195,79,184,96,232,113,184,107,33,109,205,192,201,235,144,112,2,126,17,212,142,233,22,30,35,10,105,24,0],[160,26,151,10,28,220,219,219,179,65,177,40,57,147,56,128,84,49,236,115,230,23,241,90,32,149,16,71,178,115,20,12,140,0],[160,5,66,119,54,194,49,29,42,38,165,234,32,198,160,142,80,12,179,252,29,44,116,132,135,182,81,45,218,16,14,252,3,0],[160,230,227,148,25,237,35,33,255,159,171,219,60,23,199,90,220,237,75,15,109,167,140,222,83,114,7,218,1,178,44,124,92,0],[160,77,145,244,108,226,245,12,102,134,132,144,253,61,224,127,11,57,9,122,104,159,83,150,145,128,195,160,176,105,188,166,232,0],[160,2,221,220,147,184,232,59,188,151,20,243,18,96,187,207,40,178,62,100,183,53,250,4,233,87,110,19,253,25,8,125,222,0],[160,50,178,73,94,129,233,181,224,24,190,99,106,197,160,3,156,114,195,236,251,209,161,80,42,223,161,72,156,60,76,16,201,0],[160,94,242,144,11,110,241,35,26,240,233,187,164,239,176,38,204,197,229,160,93,15,148,5,74,57,4,228,75,125,15,122,39,0],[160,110,253,160,122,87,99,21,68,166,90,51,69,122,209,170,197,67,93,79,24,45,224,5,173,66,69,71,144,26,84,166,145,0],[160,1,224,196,115,95,186,173,15,82,134,28,252,73,170,69,82,160,84,232,228,234,9,63,100,184,212,242,80,149,43,73,64,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,41,85,10,80,118,178,118,96,153,188,175,71,18,244,157,97,43,107,247,13,222,66,31,237,119,32,138,76,175,209,13,193,160,63,144,238,191,114,254,84,115,184,122,105,39,228,7,140,195,212,156,31,140,145,185,66,158,206,131,162,8,103,66,220,169,160,253,129,57,141,120,188,28,246,142,182,207,242,150,11,80,15,116,50,211,218,219,217,113,85,190,6,61,209,197,44,247,30,160,205,20,65,80,245,103,173,166,11,58,214,169,42,129,191,47,230,179,137,155,134,170,96,137,194,241,153,40,99,52,200,198,160,248,56,24,80,32,42,248,85,4,169,49,56,207,195,150,171,238,131,238,217,129,108,27,24,7,21,56,109,73,199,87,81,160,173,252,161,102,116,220,133,61,135,127,110,103,42,202,72,112,174,219,12,33,44,159,45,141,140,235,190,40,115,0,7,83,160,60,251,51,148,195,79,184,96,232,113,184,107,33,109,205,192,201,235,144,112,2,126,17,212,142,233,22,30,35,10,105,24,160,26,151,10,28,220,219,219,179,65,177,40,57,147,56,128,84,49,236,115,230,23,241,90,32,149,16,71,178,115,20,12,140,160,5,66,119,54,194,49,29,42,38,165,234,32,198,160,142,80,12,179,252,29,44,116,132,135,182,81,45,218,16,14,252,3,160,230,227,148,25,237,35,33,255,159,171,219,60,23,199,90,220,237,75,15,109,167,140,222,83,114,7,218,1,178,44,124,92,160,77,145,244,108,226,245,12,102,134,132,144,253,61,224,127,11,57,9,122,104,159,83,150,145,128,195,160,176,105,188,166,232,160,2,221,220,147,184,232,59,188,151,20,243,18,96,187,207,40,178,62,100,183,53,250,4,233,87,110,19,253,25,8,125,222,160,50,178,73,94,129,233,181,224,24,190,99,106,197,160,3,156,114,195,236,251,209,161,80,42,223,161,72,156,60,76,16,201,160,94,242,144,11,110,241,35,26,240,233,187,164,239,176,38,204,197,229,160,93,15,148,5,74,57,4,228,75,125,15,122,39,160,110,253,160,122,87,99,21,68,166,90,51,69,122,209,170,197,67,93,79,24,45,224,5,173,66,69,71,144,26,84,166,145,160,1,224,196,115,95,186,173,15,82,134,28,252,73,170,69,82,160,84,232,228,234,9,63,100,184,212,242,80,149,43,73,64,128],[249,2,17,160,57,87,178,233,140,71,44,227,104,140,237,212,9,196,83,132,45,197,57,71,17,244,1,97,69,16,241,75,171,86,249,209,160,63,144,238,191,114,254,84,115,184,122,105,39,228,7,140,195,212,156,31,140,145,185,66,158,206,131,162,8,103,66,220,169,160,253,129,57,141,120,188,28,246,142,182,207,242,150,11,80,15,116,50,211,218,219,217,113,85,190,6,61,209,197,44,247,30,160,205,20,65,80,245,103,173,166,11,58,214,169,42,129,191,47,230,179,137,155,134,170,96,137,194,241,153,40,99,52,200,198,160,248,56,24,80,32,42,248,85,4,169,49,56,207,195,150,171,238,131,238,217,129,108,27,24,7,21,56,109,73,199,87,81,160,173,252,161,102,116,220,133,61,135,127,110,103,42,202,72,112,174,219,12,33,44,159,45,141,140,235,190,40,115,0,7,83,160,60,251,51,148,195,79,184,96,232,113,184,107,33,109,205,192,201,235,144,112,2,126,17,212,142,233,22,30,35,10,105,24,160,26,151,10,28,220,219,219,179,65,177,40,57,147,56,128,84,49,236,115,230,23,241,90,32,149,16,71,178,115,20,12,140,160,5,66,119,54,194,49,29,42,38,165,234,32,198,160,142,80,12,179,252,29,44,116,132,135,182,81,45,218,16,14,252,3,160,230,227,148,25,237,35,33,255,159,171,219,60,23,199,90,220,237,75,15,109,167,140,222,83,114,7,218,1,178,44,124,92,160,77,145,244,108,226,245,12,102,134,132,144,253,61,224,127,11,57,9,122,104,159,83,150,145,128,195,160,176,105,188,166,232,160,2,221,220,147,184,232,59,188,151,20,243,18,96,187,207,40,178,62,100,183,53,250,4,233,87,110,19,253,25,8,125,222,160,50,178,73,94,129,233,181,224,24,190,99,106,197,160,3,156,114,195,236,251,209,161,80,42,223,161,72,156,60,76,16,201,160,94,242,144,11,110,241,35,26,240,233,187,164,239,176,38,204,197,229,160,93,15,148,5,74,57,4,228,75,125,15,122,39,160,110,253,160,122,87,99,21,68,166,90,51,69,122,209,170,197,67,93,79,24,45,224,5,173,66,69,71,144,26,84,166,145,160,1,224,196,115,95,186,173,15,82,134,28,252,73,170,69,82,160,84,232,228,234,9,63,100,184,212,242,80,149,43,73,64,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,1,113],[249,1,113]]}},"account":null,"storage":null,"values":[[160,114,140,188,180,131,157,226,146,156,151,247,172,6,142,184,152,116,126,133,63,95,190,73,17,140,200,204,7,238,238,189,246,0],[160,38,214,143,254,184,64,99,170,13,163,209,7,157,200,39,220,85,101,130,1,22,87,132,143,239,155,134,52,219,124,179,30,0],[160,0,223,218,25,49,171,66,154,225,66,172,146,212,113,184,25,210,60,129,48,6,192,207,41,244,109,31,2,22,241,233,177,0],[160,228,115,94,193,148,197,239,5,129,194,21,91,55,249,29,13,174,192,244,29,40,77,118,160,0,238,9,32,157,155,78,111,0],[160,211,147,3,252,43,216,25,229,221,83,172,15,70,200,223,123,4,95,137,227,64,58,92,149,232,17,197,195,149,189,143,222,0],[160,252,114,253,24,1,236,228,236,193,56,216,183,251,201,125,242,233,237,43,138,50,169,138,198,109,162,111,176,110,132,170,140,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,25,171,228,147,34,110,92,229,245,98,22,36,6,71,176,226,65,103,254,40,160,51,227,150,2,56,4,121,7,163,8,23,0],[160,77,165,253,47,139,180,23,55,100,214,249,62,228,203,130,8,178,179,159,153,120,207,50,118,73,51,213,18,193,101,188,7,0],[160,219,48,8,235,47,215,84,97,229,115,203,82,215,69,154,215,1,45,61,141,84,242,128,2,40,166,175,166,159,83,125,111,0],[160,149,18,112,146,211,97,78,45,225,66,116,153,123,111,204,243,169,52,234,108,163,106,215,5,124,116,99,103,25,152,243,229,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,213,12,228,81,100,138,133,149,1,188,181,117,249,185,177,53,42,227,230,191,160,161,38,31,216,244,180,94,242,127,131,232,0],[160,83,201,48,129,133,199,106,46,233,177,15,232,99,201,203,231,231,44,163,191,190,192,12,50,187,142,18,128,128,225,176,63,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,113,160,38,214,143,254,184,64,99,170,13,163,209,7,157,200,39,220,85,101,130,1,22,87,132,143,239,155,134,52,219,124,179,30,160,0,223,218,25,49,171,66,154,225,66,172,146,212,113,184,25,210,60,129,48,6,192,207,41,244,109,31,2,22,241,233,177,160,228,115,94,193,148,197,239,5,129,194,21,91,55,249,29,13,174,192,244,29,40,77,118,160,0,238,9,32,157,155,78,111,160,211,147,3,252,43,216,25,229,221,83,172,15,70,200,223,123,4,95,137,227,64,58,92,149,232,17,197,195,149,189,143,222,160,252,114,253,24,1,236,228,236,193,56,216,183,251,201,125,242,233,237,43,138,50,169,138,198,109,162,111,176,110,132,170,140,128,160,25,171,228,147,34,110,92,229,245,98,22,36,6,71,176,226,65,103,254,40,160,51,227,150,2,56,4,121,7,163,8,23,160,77,165,253,47,139,180,23,55,100,214,249,62,228,203,130,8,178,179,159,153,120,207,50,118,73,51,213,18,193,101,188,7,160,219,48,8,235,47,215,84,97,229,115,203,82,215,69,154,215,1,45,61,141,84,242,128,2,40,166,175,166,159,83,125,111,160,149,18,112,146,211,97,78,45,225,66,116,153,123,111,204,243,169,52,234,108,163,106,215,5,124,116,99,103,25,152,243,229,128,160,213,12,228,81,100,138,133,149,1,188,181,117,249,185,177,53,42,227,230,191,160,161,38,31,216,244,180,94,242,127,131,232,160,83,201,48,129,133,199,106,46,233,177,15,232,99,201,203,231,231,44,163,191,190,192,12,50,187,142,18,128,128,225,176,63,128,128,128,128],[249,1,113,160,38,214,143,254,184,64,99,170,13,163,209,7,157,200,39,220,85,101,130,1,22,87,132,143,239,155,134,52,219,124,179,30,160,0,223,218,25,49,171,66,154,225,66,172,146,212,113,184,25,210,60,129,48,6,192,207,41,244,109,31,2,22,241,233,177,160,228,115,94,193,148,197,239,5,129,194,21,91,55,249,29,13,174,192,244,29,40,77,118,160,0,238,9,32,157,155,78,111,160,114,140,188,180,131,157,226,146,156,151,247,172,6,142,184,152,116,126,133,63,95,190,73,17,140,200,204,7,238,238,189,246,160,252,114,253,24,1,236,228,236,193,56,216,183,251,201,125,242,233,237,43,138,50,169,138,198,109,162,111,176,110,132,170,140,128,160,25,171,228,147,34,110,92,229,245,98,22,36,6,71,176,226,65,103,254,40,160,51,227,150,2,56,4,121,7,163,8,23,160,77,165,253,47,139,180,23,55,100,214,249,62,228,203,130,8,178,179,159,153,120,207,50,118,73,51,213,18,193,101,188,7,160,219,48,8,235,47,215,84,97,229,115,203,82,215,69,154,215,1,45,61,141,84,242,128,2,40,166,175,166,159,83,125,111,160,149,18,112,146,211,97,78,45,225,66,116,153,123,111,204,243,169,52,234,108,163,106,215,5,124,116,99,103,25,152,243,229,128,160,213,12,228,81,100,138,133,149,1,188,181,117,249,185,177,53,42,227,230,191,160,161,38,31,216,244,180,94,242,127,131,232,160,83,201,48,129,133,199,106,46,233,177,15,232,99,201,203,231,231,44,163,191,190,192,12,50,187,142,18,128,128,225,176,63,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[248,113],[248,113]]}},"account":null,"storage":null,"values":[[160,243,204,185,3,118,135,111,207,74,206,196,110,158,44,248,222,130,158,148,187,224,79,229,201,55,155,219,86,116,155,239,15,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,191,189,124,153,229,235,117,45,104,76,173,54,188,131,7,84,134,59,108,67,72,15,106,88,86,144,12,177,176,159,82,154,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,58,228,58,202,15,28,110,41,72,151,251,213,191,200,43,11,165,62,64,123,76,123,38,18,226,149,99,68,136,221,41,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,111,242,222,171,28,187,147,230,233,107,178,180,245,237,194,77,232,225,178,144,37,52,244,208,201,126,169,92,140,10,186,88,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,113,128,160,191,189,124,153,229,235,117,45,104,76,173,54,188,131,7,84,134,59,108,67,72,15,106,88,86,144,12,177,176,159,82,154,128,128,128,128,128,128,128,128,128,160,58,228,58,202,15,28,110,41,72,151,251,213,191,200,43,11,165,62,64,123,76,123,38,18,226,149,99,68,136,221,41,0,128,128,160,111,242,222,171,28,187,147,230,233,107,178,180,245,237,194,77,232,225,178,144,37,52,244,208,201,126,169,92,140,10,186,88,128,128],[248,113,128,160,191,189,124,153,229,235,117,45,104,76,173,54,188,131,7,84,134,59,108,67,72,15,106,88,86,144,12,177,176,159,82,154,128,128,128,128,128,128,128,128,128,160,58,228,58,202,15,28,110,41,72,151,251,213,191,200,43,11,165,62,64,123,76,123,38,18,226,149,99,68,136,221,41,0,128,128,160,243,204,185,3,118,135,111,207,74,206,196,110,158,44,248,222,130,158,148,187,224,79,229,201,55,155,219,86,116,155,239,15,128,128]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[228]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,187,128,189,174,51,70,194,125,22,255,30,8,82,135,105,84,246,238,248,239,170,148,0,199,181,149,83,204,24,252,244,65,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,246,225,85,192,109,73,122,152,39,193,252,90,3,157,56,25,195,82,130,54,147,185,218,140,127,234,239,159,73,163,129,188,0],[160,30,46,231,241,148,129,52,90,92,189,158,250,164,78,156,122,52,180,151,80,115,189,39,229,190,71,159,117,22,237,120,203,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[130,24,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,85,21,18,82,189,254,142,58,226,227,44,75,240,13,103,243,132,37,240,59,244,104,100,46,17,143,45,7,163,20,246,25,0],[0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,174,98,17,61,168,209,191,6,106,144,154,101,142,34,91,191,71,156,87,203,207,64,106,119,59,221,9,194,232,132,56,157,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,128,128,128,128,160,246,225,85,192,109,73,122,152,39,193,252,90,3,157,56,25,195,82,130,54,147,185,218,140,127,234,239,159,73,163,129,188,160,30,46,231,241,148,129,52,90,92,189,158,250,164,78,156,122,52,180,151,80,115,189,39,229,190,71,159,117,22,237,120,203,128,128,128],[248,81,128,128,128,128,128,128,128,128,128,128,128,128,160,187,128,189,174,51,70,194,125,22,255,30,8,82,135,105,84,246,238,248,239,170,148,0,199,181,149,83,204,24,252,244,65,160,30,46,231,241,148,129,52,90,92,189,158,250,164,78,156,122,52,180,151,80,115,189,39,229,190,71,159,117,22,237,120,203,128,128,128],[228,130,24,154,160,85,21,18,82,189,254,142,58,226,227,44,75,240,13,103,243,132,37,240,59,244,104,100,46,17,143,45,7,163,20,246,25],[228,130,24,154,160,174,98,17,61,168,209,191,6,106,144,154,101,142,34,91,191,71,156,87,203,207,64,106,119,59,221,9,194,232,132,56,157]]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,33,70,114],"key":[96,62,137,172,50,17,89,15,76,61,223,154,197,182,124,216,16,248,160,55,105,212,146,173,223,6,65,128,168,209,213,83],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,32,50,17,89,15,76,61,223,154,197,182,124,216,16,248,160,55,105,212,146,173,223,6,65,128,168,209,213,83,0,0,0,0],[157,32,50,17,89,15,76,61,223,154,197,182,124,216,16,248,160,55,105,212,146,173,223,6,65,128,168,209,213,83,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,32,50,17,89,15,76,61,223,154,197,182,124,216,16,248,160,55,105,212,146,173,223,6,65,128,168,209,213,83,0,0,0,0]],"keccak_data":[[248,102,157,32,50,17,89,15,76,61,223,154,197,182,124,216,16,248,160,55,105,212,146,173,223,6,65,128,168,209,213,83,184,70,248,68,128,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,32,50,17,89,15,76,61,223,154,197,182,124,216,16,248,160,55,105,212,146,173,223,6,65,128,168,209,213,83,184,70,248,68,33,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,33,70,114]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/AccountExtensionTwoNibblesInEvenLevel.json b/zkevm-circuits/src/mpt_circuit/tests/AccountExtensionTwoNibblesInEvenLevel.json new file mode 100644 index 0000000000..63d4ef56c0 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/AccountExtensionTwoNibblesInEvenLevel.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"NonceChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,209,155,172,153,98,216,150,222,208,127,188,216,90,141,46,178,26,65,87,1,81,237,86,241,171,151,85,79,3,243,204,250,0],[160,243,143,251,252,110,251,151,147,59,47,1,208,118,137,82,169,174,128,174,242,49,172,113,106,179,13,210,113,106,28,26,68,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,80,236,210,47,173,156,152,31,22,89,55,143,162,89,44,20,206,169,73,240,215,57,159,54,155,165,250,55,151,186,161,225,0],[160,61,240,236,98,56,247,71,68,203,119,21,124,25,221,115,244,227,50,253,237,120,30,216,135,98,48,217,133,148,49,183,89,0],[160,5,57,78,163,105,127,13,26,75,26,73,23,128,211,236,144,188,54,195,188,243,3,209,251,77,177,79,180,220,51,183,241,0],[160,216,168,116,67,129,102,43,248,246,108,105,62,15,37,102,144,153,227,213,4,166,156,175,125,13,156,120,127,21,23,185,68,0],[160,146,117,6,91,139,87,54,231,82,255,250,19,155,4,91,245,68,251,1,219,142,249,144,14,230,34,249,196,2,102,183,56,0],[160,12,229,68,172,6,209,85,45,114,222,24,193,5,175,211,240,196,176,198,66,47,102,51,15,183,85,174,145,175,157,99,130,0],[160,40,106,143,184,208,129,228,84,158,246,112,253,184,45,3,194,147,40,241,254,93,242,98,179,58,192,137,140,25,192,81,159,0],[160,107,221,7,117,77,113,199,89,222,60,195,177,88,182,213,98,215,144,183,255,212,23,206,182,105,45,165,23,143,24,59,249,0],[160,135,246,204,161,69,93,222,215,170,175,77,237,198,135,228,175,240,240,35,41,211,253,31,126,101,170,182,243,125,203,247,188,0],[160,207,237,184,200,196,162,122,141,45,59,248,183,213,54,79,192,93,13,20,13,110,168,153,230,121,78,173,136,148,159,133,228,0],[160,179,149,114,27,239,1,229,125,118,124,168,247,125,205,87,244,158,129,254,40,176,103,100,33,140,5,227,23,27,199,4,69,0],[160,66,125,198,8,218,190,162,222,58,22,7,175,105,52,128,75,84,78,68,245,134,116,78,59,172,133,86,56,66,74,10,59,0],[160,91,73,10,178,128,10,215,245,192,227,163,249,16,201,72,177,200,252,188,200,79,133,176,187,235,24,130,150,120,199,7,239,0],[160,124,146,114,13,240,149,98,63,157,215,206,56,159,199,55,77,135,147,111,116,127,222,202,91,103,214,247,156,242,66,87,136,0],[160,137,119,8,24,139,227,201,106,185,102,42,154,8,143,68,36,202,138,41,0,201,163,14,13,29,93,21,100,92,152,14,153,0],[160,10,199,254,199,182,188,194,249,160,105,120,146,43,147,210,140,166,137,36,217,66,28,227,53,11,88,34,88,144,201,58,27,0],[160,96,50,75,46,178,153,88,20,60,105,150,70,25,43,167,66,55,38,221,111,254,57,92,79,209,164,14,95,240,141,18,87,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,61,240,236,98,56,247,71,68,203,119,21,124,25,221,115,244,227,50,253,237,120,30,216,135,98,48,217,133,148,49,183,89,160,5,57,78,163,105,127,13,26,75,26,73,23,128,211,236,144,188,54,195,188,243,3,209,251,77,177,79,180,220,51,183,241,160,216,168,116,67,129,102,43,248,246,108,105,62,15,37,102,144,153,227,213,4,166,156,175,125,13,156,120,127,21,23,185,68,160,146,117,6,91,139,87,54,231,82,255,250,19,155,4,91,245,68,251,1,219,142,249,144,14,230,34,249,196,2,102,183,56,160,12,229,68,172,6,209,85,45,114,222,24,193,5,175,211,240,196,176,198,66,47,102,51,15,183,85,174,145,175,157,99,130,160,40,106,143,184,208,129,228,84,158,246,112,253,184,45,3,194,147,40,241,254,93,242,98,179,58,192,137,140,25,192,81,159,160,107,221,7,117,77,113,199,89,222,60,195,177,88,182,213,98,215,144,183,255,212,23,206,182,105,45,165,23,143,24,59,249,160,135,246,204,161,69,93,222,215,170,175,77,237,198,135,228,175,240,240,35,41,211,253,31,126,101,170,182,243,125,203,247,188,160,207,237,184,200,196,162,122,141,45,59,248,183,213,54,79,192,93,13,20,13,110,168,153,230,121,78,173,136,148,159,133,228,160,179,149,114,27,239,1,229,125,118,124,168,247,125,205,87,244,158,129,254,40,176,103,100,33,140,5,227,23,27,199,4,69,160,66,125,198,8,218,190,162,222,58,22,7,175,105,52,128,75,84,78,68,245,134,116,78,59,172,133,86,56,66,74,10,59,160,91,73,10,178,128,10,215,245,192,227,163,249,16,201,72,177,200,252,188,200,79,133,176,187,235,24,130,150,120,199,7,239,160,124,146,114,13,240,149,98,63,157,215,206,56,159,199,55,77,135,147,111,116,127,222,202,91,103,214,247,156,242,66,87,136,160,137,119,8,24,139,227,201,106,185,102,42,154,8,143,68,36,202,138,41,0,201,163,14,13,29,93,21,100,92,152,14,153,160,10,199,254,199,182,188,194,249,160,105,120,146,43,147,210,140,166,137,36,217,66,28,227,53,11,88,34,88,144,201,58,27,160,96,50,75,46,178,153,88,20,60,105,150,70,25,43,167,66,55,38,221,111,254,57,92,79,209,164,14,95,240,141,18,87,128],[249,2,17,160,61,240,236,98,56,247,71,68,203,119,21,124,25,221,115,244,227,50,253,237,120,30,216,135,98,48,217,133,148,49,183,89,160,80,236,210,47,173,156,152,31,22,89,55,143,162,89,44,20,206,169,73,240,215,57,159,54,155,165,250,55,151,186,161,225,160,216,168,116,67,129,102,43,248,246,108,105,62,15,37,102,144,153,227,213,4,166,156,175,125,13,156,120,127,21,23,185,68,160,146,117,6,91,139,87,54,231,82,255,250,19,155,4,91,245,68,251,1,219,142,249,144,14,230,34,249,196,2,102,183,56,160,12,229,68,172,6,209,85,45,114,222,24,193,5,175,211,240,196,176,198,66,47,102,51,15,183,85,174,145,175,157,99,130,160,40,106,143,184,208,129,228,84,158,246,112,253,184,45,3,194,147,40,241,254,93,242,98,179,58,192,137,140,25,192,81,159,160,107,221,7,117,77,113,199,89,222,60,195,177,88,182,213,98,215,144,183,255,212,23,206,182,105,45,165,23,143,24,59,249,160,135,246,204,161,69,93,222,215,170,175,77,237,198,135,228,175,240,240,35,41,211,253,31,126,101,170,182,243,125,203,247,188,160,207,237,184,200,196,162,122,141,45,59,248,183,213,54,79,192,93,13,20,13,110,168,153,230,121,78,173,136,148,159,133,228,160,179,149,114,27,239,1,229,125,118,124,168,247,125,205,87,244,158,129,254,40,176,103,100,33,140,5,227,23,27,199,4,69,160,66,125,198,8,218,190,162,222,58,22,7,175,105,52,128,75,84,78,68,245,134,116,78,59,172,133,86,56,66,74,10,59,160,91,73,10,178,128,10,215,245,192,227,163,249,16,201,72,177,200,252,188,200,79,133,176,187,235,24,130,150,120,199,7,239,160,124,146,114,13,240,149,98,63,157,215,206,56,159,199,55,77,135,147,111,116,127,222,202,91,103,214,247,156,242,66,87,136,160,137,119,8,24,139,227,201,106,185,102,42,154,8,143,68,36,202,138,41,0,201,163,14,13,29,93,21,100,92,152,14,153,160,10,199,254,199,182,188,194,249,160,105,120,146,43,147,210,140,166,137,36,217,66,28,227,53,11,88,34,88,144,201,58,27,160,96,50,75,46,178,153,88,20,60,105,150,70,25,43,167,66,55,38,221,111,254,57,92,79,209,164,14,95,240,141,18,87,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,1,177],[249,1,177]]}},"account":null,"storage":null,"values":[[160,10,115,128,170,197,80,223,218,40,83,240,128,243,138,67,24,166,102,243,218,226,48,8,60,89,148,69,79,213,117,243,160,0],[160,34,29,119,170,188,185,237,6,224,81,118,222,144,172,118,129,140,140,228,13,255,139,61,220,95,253,15,63,47,226,121,126,0],[160,127,60,175,140,104,100,47,154,8,6,246,67,32,164,212,86,69,20,188,110,70,85,252,211,95,245,67,229,13,8,217,10,0],[160,154,213,47,206,59,15,165,239,246,98,0,231,43,239,209,206,12,56,165,150,87,220,74,86,78,223,22,170,95,178,124,124,0],[160,9,174,33,231,221,85,238,142,142,70,153,173,95,104,36,140,148,182,176,229,209,41,227,190,17,87,220,183,15,108,179,204,0],[160,173,169,173,94,27,87,151,113,65,109,211,23,218,45,27,193,246,153,23,197,126,255,157,43,8,90,195,36,104,139,78,95,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,51,137,233,147,137,255,185,156,239,161,193,15,84,54,171,95,180,172,105,125,203,51,64,107,219,18,50,193,208,180,137,28,0],[160,67,31,99,28,104,135,254,77,115,144,132,189,112,171,80,147,77,230,5,109,34,129,226,150,185,138,157,85,222,253,97,64,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,41,63,198,23,194,25,236,49,6,42,2,160,102,68,17,56,203,113,67,130,152,28,28,227,8,211,112,37,65,204,95,177,0],[160,76,7,5,88,78,187,223,130,100,212,5,242,15,75,159,255,209,7,64,220,38,142,1,207,10,209,218,218,113,144,50,41,0],[160,41,254,101,104,75,123,181,183,227,210,250,31,18,246,136,10,161,69,162,43,255,2,44,235,220,87,241,236,209,79,51,132,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,6,226,80,17,15,153,109,182,96,206,187,198,169,242,90,210,246,197,228,172,3,36,14,205,13,70,224,220,222,77,69,25,0],[160,89,148,202,209,154,165,4,109,79,102,196,233,28,107,249,22,30,247,3,199,66,218,32,243,158,205,76,38,122,43,58,88,0],[160,210,160,183,227,252,204,115,237,14,111,63,47,161,163,17,14,14,153,254,101,240,57,52,239,13,85,193,65,142,42,119,85,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,177,160,34,29,119,170,188,185,237,6,224,81,118,222,144,172,118,129,140,140,228,13,255,139,61,220,95,253,15,63,47,226,121,126,160,127,60,175,140,104,100,47,154,8,6,246,67,32,164,212,86,69,20,188,110,70,85,252,211,95,245,67,229,13,8,217,10,160,154,213,47,206,59,15,165,239,246,98,0,231,43,239,209,206,12,56,165,150,87,220,74,86,78,223,22,170,95,178,124,124,160,9,174,33,231,221,85,238,142,142,70,153,173,95,104,36,140,148,182,176,229,209,41,227,190,17,87,220,183,15,108,179,204,160,173,169,173,94,27,87,151,113,65,109,211,23,218,45,27,193,246,153,23,197,126,255,157,43,8,90,195,36,104,139,78,95,128,160,51,137,233,147,137,255,185,156,239,161,193,15,84,54,171,95,180,172,105,125,203,51,64,107,219,18,50,193,208,180,137,28,160,67,31,99,28,104,135,254,77,115,144,132,189,112,171,80,147,77,230,5,109,34,129,226,150,185,138,157,85,222,253,97,64,128,160,41,63,198,23,194,25,236,49,6,42,2,160,102,68,17,56,203,113,67,130,152,28,28,227,8,211,112,37,65,204,95,177,160,76,7,5,88,78,187,223,130,100,212,5,242,15,75,159,255,209,7,64,220,38,142,1,207,10,209,218,218,113,144,50,41,160,41,254,101,104,75,123,181,183,227,210,250,31,18,246,136,10,161,69,162,43,255,2,44,235,220,87,241,236,209,79,51,132,128,160,6,226,80,17,15,153,109,182,96,206,187,198,169,242,90,210,246,197,228,172,3,36,14,205,13,70,224,220,222,77,69,25,160,89,148,202,209,154,165,4,109,79,102,196,233,28,107,249,22,30,247,3,199,66,218,32,243,158,205,76,38,122,43,58,88,160,210,160,183,227,252,204,115,237,14,111,63,47,161,163,17,14,14,153,254,101,240,57,52,239,13,85,193,65,142,42,119,85,128],[249,1,177,160,34,29,119,170,188,185,237,6,224,81,118,222,144,172,118,129,140,140,228,13,255,139,61,220,95,253,15,63,47,226,121,126,160,127,60,175,140,104,100,47,154,8,6,246,67,32,164,212,86,69,20,188,110,70,85,252,211,95,245,67,229,13,8,217,10,160,154,213,47,206,59,15,165,239,246,98,0,231,43,239,209,206,12,56,165,150,87,220,74,86,78,223,22,170,95,178,124,124,160,9,174,33,231,221,85,238,142,142,70,153,173,95,104,36,140,148,182,176,229,209,41,227,190,17,87,220,183,15,108,179,204,160,173,169,173,94,27,87,151,113,65,109,211,23,218,45,27,193,246,153,23,197,126,255,157,43,8,90,195,36,104,139,78,95,128,160,51,137,233,147,137,255,185,156,239,161,193,15,84,54,171,95,180,172,105,125,203,51,64,107,219,18,50,193,208,180,137,28,160,10,115,128,170,197,80,223,218,40,83,240,128,243,138,67,24,166,102,243,218,226,48,8,60,89,148,69,79,213,117,243,160,128,160,41,63,198,23,194,25,236,49,6,42,2,160,102,68,17,56,203,113,67,130,152,28,28,227,8,211,112,37,65,204,95,177,160,76,7,5,88,78,187,223,130,100,212,5,242,15,75,159,255,209,7,64,220,38,142,1,207,10,209,218,218,113,144,50,41,160,41,254,101,104,75,123,181,183,227,210,250,31,18,246,136,10,161,69,162,43,255,2,44,235,220,87,241,236,209,79,51,132,128,160,6,226,80,17,15,153,109,182,96,206,187,198,169,242,90,210,246,197,228,172,3,36,14,205,13,70,224,220,222,77,69,25,160,89,148,202,209,154,165,4,109,79,102,196,233,28,107,249,22,30,247,3,199,66,218,32,243,158,205,76,38,122,43,58,88,160,210,160,183,227,252,204,115,237,14,111,63,47,161,163,17,14,14,153,254,101,240,57,52,239,13,85,193,65,142,42,119,85,128]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[228]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,17,193,225,11,168,218,50,211,162,91,21,67,18,124,152,181,194,162,85,117,112,213,55,63,200,17,171,219,57,176,168,96,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,224,227,199,112,162,93,84,188,64,130,222,185,67,217,214,181,128,31,51,238,128,128,204,36,223,127,128,231,158,72,208,166,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,127,127,160,134,253,130,193,254,28,17,211,72,18,210,23,78,228,110,104,152,8,240,186,226,58,168,13,26,218,71,136,229,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[130,0,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,251,118,174,247,180,187,235,205,255,188,184,40,88,134,233,245,20,201,101,226,82,11,44,173,255,251,132,105,240,96,36,135,0],[0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,229,108,191,232,232,18,145,51,121,83,166,187,96,103,152,207,59,10,148,141,119,237,190,78,151,163,177,24,50,77,216,3,0]],"keccak_data":[[248,81,128,128,128,128,128,160,224,227,199,112,162,93,84,188,64,130,222,185,67,217,214,181,128,31,51,238,128,128,204,36,223,127,128,231,158,72,208,166,128,128,128,128,128,128,160,127,127,160,134,253,130,193,254,28,17,211,72,18,210,23,78,228,110,104,152,8,240,186,226,58,168,13,26,218,71,136,229,128,128,128,128],[248,81,128,128,128,128,128,160,17,193,225,11,168,218,50,211,162,91,21,67,18,124,152,181,194,162,85,117,112,213,55,63,200,17,171,219,57,176,168,96,128,128,128,128,128,128,160,127,127,160,134,253,130,193,254,28,17,211,72,18,210,23,78,228,110,104,152,8,240,186,226,58,168,13,26,218,71,136,229,128,128,128,128],[228,130,0,69,160,251,118,174,247,180,187,235,205,255,188,184,40,88,134,233,245,20,201,101,226,82,11,44,173,255,251,132,105,240,96,36,135],[228,130,0,69,160,229,108,191,232,232,18,145,51,121,83,166,187,96,103,152,207,59,10,148,141,119,237,190,78,151,163,177,24,50,77,216,3]]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,20,9],"key":[23,69,91,66,17,193,51,20,51,183,242,0,212,105,227,9,129,0,206,127,227,97,195,206,80,246,5,84,28,0,9,78],"list_rlp_bytes":[[248,103],[248,103]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,103]},"storage":null,"values":[[158,59,66,17,193,51,20,51,183,242,0,212,105,227,9,129,0,206,127,227,97,195,206,80,246,5,84,28,0,9,78,0,0,0],[158,59,66,17,193,51,20,51,183,242,0,212,105,227,9,129,0,206,127,227,97,195,206,80,246,5,84,28,0,9,78,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[158,59,66,17,193,51,20,51,183,242,0,212,105,227,9,129,0,206,127,227,97,195,206,80,246,5,84,28,0,9,78,0,0,0]],"keccak_data":[[248,103,158,59,66,17,193,51,20,51,183,242,0,212,105,227,9,129,0,206,127,227,97,195,206,80,246,5,84,28,0,9,78,184,70,248,68,128,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,103,158,59,66,17,193,51,20,51,183,242,0,212,105,227,9,129,0,206,127,227,97,195,206,80,246,5,84,28,0,9,78,184,70,248,68,33,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,162,20,9]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/AccountInFirstLevel.json b/zkevm-circuits/src/mpt_circuit/tests/AccountInFirstLevel.json new file mode 100644 index 0000000000..284de37921 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/AccountInFirstLevel.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"NonceChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,221,24,245,128,128,59,139,211,67,24,104,53,120,169,108,45,65,161,228,168,133,165,58,10,91,89,4,118,58,162,186,61,0],[160,100,233,187,242,53,25,247,197,231,164,111,90,67,38,190,216,18,24,71,83,42,65,84,236,49,85,134,33,144,34,153,84,0]],"keccak_data":[]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33],"key":[252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73],"list_rlp_bytes":[[248,106],[248,106]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,106]},"storage":null,"values":[[161,32,252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73],[161,32,252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[161,32,252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73]],"keccak_data":[[248,106,161,32,252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,184,70,248,68,128,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,106,161,32,252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,184,70,248,68,1,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/AddAccount.json b/zkevm-circuits/src/mpt_circuit/tests/AddAccount.json new file mode 100644 index 0000000000..cdb816bbaa --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/AddAccount.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"NonceChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,214,126,77,69,3,67,4,100,37,174,66,113,71,67,83,133,122,184,96,219,192,161,221,230,75,65,181,205,58,83,43,243,0],[160,38,136,144,17,65,61,119,219,41,247,230,48,119,74,3,66,17,246,178,178,51,54,229,7,151,157,126,48,143,147,4,93,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,70,194,158,253,33,133,28,78,50,189,211,208,22,171,254,164,25,187,186,125,232,233,79,79,17,138,214,244,254,201,16,68,0],[160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,0],[160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,0],[160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,0],[160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,0],[160,217,207,245,213,242,65,138,253,22,164,218,92,34,31,220,139,212,117,32,197,146,121,34,246,154,104,23,123,100,218,106,192,0],[160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,0],[160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,0],[160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,0],[160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,0],[160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,0],[160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,0],[160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,0],[160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,0],[160,123,28,84,241,94,41,155,213,139,223,239,151,65,83,140,120,40,181,215,209,26,72,159,156,32,208,82,179,71,29,244,117,0],[160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,0],[160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,160,217,207,245,213,242,65,138,253,22,164,218,92,34,31,220,139,212,117,32,197,146,121,34,246,154,104,23,123,100,218,106,192,160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,160,123,28,84,241,94,41,155,213,139,223,239,151,65,83,140,120,40,181,215,209,26,72,159,156,32,208,82,179,71,29,244,117,160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,128],[249,2,17,160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,160,217,207,245,213,242,65,138,253,22,164,218,92,34,31,220,139,212,117,32,197,146,121,34,246,154,104,23,123,100,218,106,192,160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,160,70,194,158,253,33,133,28,78,50,189,211,208,22,171,254,164,25,187,186,125,232,233,79,79,17,138,214,244,254,201,16,68,160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,160,123,28,84,241,94,41,155,213,139,223,239,151,65,83,140,120,40,181,215,209,26,72,159,156,32,208,82,179,71,29,244,117,160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,222,11,99,19,179,52,163,176,103,195,226,8,255,145,136,231,40,146,50,179,99,64,50,201,97,4,155,234,232,183,233,49,0],[160,194,161,194,230,101,254,160,95,77,48,211,27,39,42,140,4,122,172,243,209,160,183,193,160,238,144,110,96,160,53,201,176,0],[160,250,10,79,191,155,218,123,133,247,187,164,39,212,171,124,199,15,61,52,217,80,166,252,43,206,177,62,170,118,143,250,130,0],[160,108,102,161,204,241,214,151,12,80,163,235,72,19,184,65,25,37,28,43,113,212,14,119,160,157,125,65,13,140,22,81,190,0],[160,245,247,207,229,123,97,61,242,10,237,62,241,112,223,174,20,21,134,98,167,15,69,64,87,208,137,239,130,24,225,217,69,0],[160,30,98,56,45,136,244,48,122,241,246,213,147,38,112,85,225,114,131,195,165,25,146,5,1,23,56,98,204,84,80,107,55,0],[160,13,130,198,244,51,130,38,64,159,240,127,232,249,153,1,46,213,170,213,218,230,166,137,75,171,46,198,189,169,81,129,186,0],[160,229,29,41,136,113,129,3,220,51,225,243,185,32,77,145,131,244,109,144,247,2,225,2,109,44,231,85,92,179,219,46,140,0],[160,227,50,165,83,125,101,94,90,180,34,108,124,83,107,32,6,40,120,220,212,90,176,135,180,166,38,78,212,164,7,245,229,0],[160,153,11,242,211,42,155,107,237,88,100,219,214,126,177,12,26,208,44,151,202,156,90,102,134,114,49,56,71,180,103,83,155,0],[160,71,164,38,186,162,94,167,107,171,137,209,18,250,139,176,186,4,118,148,176,251,124,23,138,249,89,144,1,84,248,27,55,0],[160,52,112,5,32,127,130,195,189,56,88,183,178,155,208,74,148,123,54,232,217,185,32,49,156,71,67,15,17,2,49,204,243,0],[160,170,23,213,11,235,134,180,70,232,51,146,38,58,251,66,201,29,6,217,33,53,126,153,255,165,144,117,128,91,14,16,43,0],[160,148,51,14,129,178,95,21,66,170,110,219,0,237,74,184,241,156,135,49,91,139,227,83,112,52,218,111,108,140,199,255,219,0],[160,222,192,22,245,232,111,105,228,68,180,87,180,31,116,42,56,93,1,147,1,207,113,217,240,248,143,123,135,213,26,66,139,0],[160,239,77,239,217,232,159,0,139,212,31,73,0,211,56,197,222,20,67,13,26,183,202,29,28,187,243,0,57,12,134,3,140,0],[160,174,27,143,154,179,94,7,70,236,47,69,149,186,217,141,122,66,236,237,90,80,133,141,159,145,213,6,253,155,38,62,98,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,194,161,194,230,101,254,160,95,77,48,211,27,39,42,140,4,122,172,243,209,160,183,193,160,238,144,110,96,160,53,201,176,160,250,10,79,191,155,218,123,133,247,187,164,39,212,171,124,199,15,61,52,217,80,166,252,43,206,177,62,170,118,143,250,130,160,108,102,161,204,241,214,151,12,80,163,235,72,19,184,65,25,37,28,43,113,212,14,119,160,157,125,65,13,140,22,81,190,160,245,247,207,229,123,97,61,242,10,237,62,241,112,223,174,20,21,134,98,167,15,69,64,87,208,137,239,130,24,225,217,69,160,30,98,56,45,136,244,48,122,241,246,213,147,38,112,85,225,114,131,195,165,25,146,5,1,23,56,98,204,84,80,107,55,160,13,130,198,244,51,130,38,64,159,240,127,232,249,153,1,46,213,170,213,218,230,166,137,75,171,46,198,189,169,81,129,186,160,229,29,41,136,113,129,3,220,51,225,243,185,32,77,145,131,244,109,144,247,2,225,2,109,44,231,85,92,179,219,46,140,160,227,50,165,83,125,101,94,90,180,34,108,124,83,107,32,6,40,120,220,212,90,176,135,180,166,38,78,212,164,7,245,229,160,153,11,242,211,42,155,107,237,88,100,219,214,126,177,12,26,208,44,151,202,156,90,102,134,114,49,56,71,180,103,83,155,160,71,164,38,186,162,94,167,107,171,137,209,18,250,139,176,186,4,118,148,176,251,124,23,138,249,89,144,1,84,248,27,55,160,52,112,5,32,127,130,195,189,56,88,183,178,155,208,74,148,123,54,232,217,185,32,49,156,71,67,15,17,2,49,204,243,160,170,23,213,11,235,134,180,70,232,51,146,38,58,251,66,201,29,6,217,33,53,126,153,255,165,144,117,128,91,14,16,43,160,148,51,14,129,178,95,21,66,170,110,219,0,237,74,184,241,156,135,49,91,139,227,83,112,52,218,111,108,140,199,255,219,160,222,192,22,245,232,111,105,228,68,180,87,180,31,116,42,56,93,1,147,1,207,113,217,240,248,143,123,135,213,26,66,139,160,239,77,239,217,232,159,0,139,212,31,73,0,211,56,197,222,20,67,13,26,183,202,29,28,187,243,0,57,12,134,3,140,160,174,27,143,154,179,94,7,70,236,47,69,149,186,217,141,122,66,236,237,90,80,133,141,159,145,213,6,253,155,38,62,98,128],[249,2,17,160,194,161,194,230,101,254,160,95,77,48,211,27,39,42,140,4,122,172,243,209,160,183,193,160,238,144,110,96,160,53,201,176,160,250,10,79,191,155,218,123,133,247,187,164,39,212,171,124,199,15,61,52,217,80,166,252,43,206,177,62,170,118,143,250,130,160,108,102,161,204,241,214,151,12,80,163,235,72,19,184,65,25,37,28,43,113,212,14,119,160,157,125,65,13,140,22,81,190,160,245,247,207,229,123,97,61,242,10,237,62,241,112,223,174,20,21,134,98,167,15,69,64,87,208,137,239,130,24,225,217,69,160,30,98,56,45,136,244,48,122,241,246,213,147,38,112,85,225,114,131,195,165,25,146,5,1,23,56,98,204,84,80,107,55,160,13,130,198,244,51,130,38,64,159,240,127,232,249,153,1,46,213,170,213,218,230,166,137,75,171,46,198,189,169,81,129,186,160,229,29,41,136,113,129,3,220,51,225,243,185,32,77,145,131,244,109,144,247,2,225,2,109,44,231,85,92,179,219,46,140,160,227,50,165,83,125,101,94,90,180,34,108,124,83,107,32,6,40,120,220,212,90,176,135,180,166,38,78,212,164,7,245,229,160,222,11,99,19,179,52,163,176,103,195,226,8,255,145,136,231,40,146,50,179,99,64,50,201,97,4,155,234,232,183,233,49,160,71,164,38,186,162,94,167,107,171,137,209,18,250,139,176,186,4,118,148,176,251,124,23,138,249,89,144,1,84,248,27,55,160,52,112,5,32,127,130,195,189,56,88,183,178,155,208,74,148,123,54,232,217,185,32,49,156,71,67,15,17,2,49,204,243,160,170,23,213,11,235,134,180,70,232,51,146,38,58,251,66,201,29,6,217,33,53,126,153,255,165,144,117,128,91,14,16,43,160,148,51,14,129,178,95,21,66,170,110,219,0,237,74,184,241,156,135,49,91,139,227,83,112,52,218,111,108,140,199,255,219,160,222,192,22,245,232,111,105,228,68,180,87,180,31,116,42,56,93,1,147,1,207,113,217,240,248,143,123,135,213,26,66,139,160,239,77,239,217,232,159,0,139,212,31,73,0,211,56,197,222,20,67,13,26,183,202,29,28,187,243,0,57,12,134,3,140,160,174,27,143,154,179,94,7,70,236,47,69,149,186,217,141,122,66,236,237,90,80,133,141,159,145,213,6,253,155,38,62,98,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,1,241],[249,1,241]]}},"account":null,"storage":null,"values":[[160,211,183,136,193,129,118,137,177,237,5,246,89,27,163,189,164,220,183,70,35,179,24,251,231,60,88,245,247,203,0,66,240,0],[160,118,7,164,153,100,57,90,154,30,0,132,181,165,29,36,198,58,44,76,97,239,47,37,177,191,34,92,76,241,19,47,94,0],[160,46,34,26,12,126,235,135,79,110,204,251,192,231,83,198,108,124,65,171,229,253,211,251,65,212,206,12,190,210,183,234,20,0],[160,224,197,106,11,198,50,194,19,158,253,80,223,164,183,241,23,64,168,71,165,108,101,245,129,13,135,141,128,243,212,58,136,0],[160,154,188,169,221,11,40,133,220,40,23,84,96,133,124,6,24,145,50,158,186,225,79,156,243,79,157,191,46,202,228,116,45,0],[160,101,106,135,142,233,228,56,130,2,230,168,173,72,92,95,95,72,138,18,205,234,66,58,111,124,122,115,39,149,234,142,65,0],[160,92,203,247,191,21,27,33,100,88,238,173,241,57,84,16,21,154,15,98,233,168,236,45,101,62,138,169,99,20,246,199,180,0],[160,180,92,247,111,158,28,57,148,203,72,82,23,123,108,136,31,116,208,22,126,99,192,40,25,134,34,0,68,97,29,209,205,0],[160,189,240,142,201,255,115,229,75,221,46,28,254,224,96,249,93,114,58,42,106,182,133,165,73,22,103,228,48,78,75,210,41,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,228,188,6,163,117,73,6,69,7,72,145,92,254,178,24,206,5,249,71,115,251,136,163,185,24,35,186,20,24,55,230,170,0],[160,140,237,204,190,22,29,102,222,151,44,132,113,246,67,213,84,224,22,149,128,33,33,180,168,29,238,117,1,169,54,238,81,0],[160,196,248,47,123,243,93,49,203,5,232,213,184,40,188,187,27,103,137,133,70,75,220,228,144,70,51,216,100,24,144,80,108,0],[160,148,60,145,205,168,58,189,238,39,184,40,235,191,82,185,191,84,220,104,112,6,113,34,188,43,20,36,80,222,48,33,46,0],[160,22,118,116,216,102,36,81,233,167,172,29,8,114,58,60,74,239,119,168,37,174,234,243,147,173,91,54,70,18,103,166,48,0],[160,28,112,123,243,58,65,19,173,193,62,43,196,68,11,199,175,196,53,79,221,234,57,235,71,250,241,172,58,120,76,168,217,0],[160,246,48,79,85,101,158,175,5,227,79,143,178,102,111,85,252,55,35,113,53,68,107,226,66,254,21,132,83,150,50,43,30,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,241,160,118,7,164,153,100,57,90,154,30,0,132,181,165,29,36,198,58,44,76,97,239,47,37,177,191,34,92,76,241,19,47,94,160,46,34,26,12,126,235,135,79,110,204,251,192,231,83,198,108,124,65,171,229,253,211,251,65,212,206,12,190,210,183,234,20,160,224,197,106,11,198,50,194,19,158,253,80,223,164,183,241,23,64,168,71,165,108,101,245,129,13,135,141,128,243,212,58,136,160,154,188,169,221,11,40,133,220,40,23,84,96,133,124,6,24,145,50,158,186,225,79,156,243,79,157,191,46,202,228,116,45,160,101,106,135,142,233,228,56,130,2,230,168,173,72,92,95,95,72,138,18,205,234,66,58,111,124,122,115,39,149,234,142,65,160,92,203,247,191,21,27,33,100,88,238,173,241,57,84,16,21,154,15,98,233,168,236,45,101,62,138,169,99,20,246,199,180,160,180,92,247,111,158,28,57,148,203,72,82,23,123,108,136,31,116,208,22,126,99,192,40,25,134,34,0,68,97,29,209,205,160,189,240,142,201,255,115,229,75,221,46,28,254,224,96,249,93,114,58,42,106,182,133,165,73,22,103,228,48,78,75,210,41,128,160,228,188,6,163,117,73,6,69,7,72,145,92,254,178,24,206,5,249,71,115,251,136,163,185,24,35,186,20,24,55,230,170,160,140,237,204,190,22,29,102,222,151,44,132,113,246,67,213,84,224,22,149,128,33,33,180,168,29,238,117,1,169,54,238,81,160,196,248,47,123,243,93,49,203,5,232,213,184,40,188,187,27,103,137,133,70,75,220,228,144,70,51,216,100,24,144,80,108,160,148,60,145,205,168,58,189,238,39,184,40,235,191,82,185,191,84,220,104,112,6,113,34,188,43,20,36,80,222,48,33,46,160,22,118,116,216,102,36,81,233,167,172,29,8,114,58,60,74,239,119,168,37,174,234,243,147,173,91,54,70,18,103,166,48,160,28,112,123,243,58,65,19,173,193,62,43,196,68,11,199,175,196,53,79,221,234,57,235,71,250,241,172,58,120,76,168,217,160,246,48,79,85,101,158,175,5,227,79,143,178,102,111,85,252,55,35,113,53,68,107,226,66,254,21,132,83,150,50,43,30,128],[249,1,241,160,118,7,164,153,100,57,90,154,30,0,132,181,165,29,36,198,58,44,76,97,239,47,37,177,191,34,92,76,241,19,47,94,160,46,34,26,12,126,235,135,79,110,204,251,192,231,83,198,108,124,65,171,229,253,211,251,65,212,206,12,190,210,183,234,20,160,224,197,106,11,198,50,194,19,158,253,80,223,164,183,241,23,64,168,71,165,108,101,245,129,13,135,141,128,243,212,58,136,160,154,188,169,221,11,40,133,220,40,23,84,96,133,124,6,24,145,50,158,186,225,79,156,243,79,157,191,46,202,228,116,45,160,101,106,135,142,233,228,56,130,2,230,168,173,72,92,95,95,72,138,18,205,234,66,58,111,124,122,115,39,149,234,142,65,160,92,203,247,191,21,27,33,100,88,238,173,241,57,84,16,21,154,15,98,233,168,236,45,101,62,138,169,99,20,246,199,180,160,180,92,247,111,158,28,57,148,203,72,82,23,123,108,136,31,116,208,22,126,99,192,40,25,134,34,0,68,97,29,209,205,160,189,240,142,201,255,115,229,75,221,46,28,254,224,96,249,93,114,58,42,106,182,133,165,73,22,103,228,48,78,75,210,41,128,160,228,188,6,163,117,73,6,69,7,72,145,92,254,178,24,206,5,249,71,115,251,136,163,185,24,35,186,20,24,55,230,170,160,140,237,204,190,22,29,102,222,151,44,132,113,246,67,213,84,224,22,149,128,33,33,180,168,29,238,117,1,169,54,238,81,160,196,248,47,123,243,93,49,203,5,232,213,184,40,188,187,27,103,137,133,70,75,220,228,144,70,51,216,100,24,144,80,108,160,148,60,145,205,168,58,189,238,39,184,40,235,191,82,185,191,84,220,104,112,6,113,34,188,43,20,36,80,222,48,33,46,160,22,118,116,216,102,36,81,233,167,172,29,8,114,58,60,74,239,119,168,37,174,234,243,147,173,91,54,70,18,103,166,48,160,211,183,136,193,129,118,137,177,237,5,246,89,27,163,189,164,220,183,70,35,179,24,251,231,60,88,245,247,203,0,66,240,160,246,48,79,85,101,158,175,5,227,79,143,178,102,111,85,252,55,35,113,53,68,107,226,66,254,21,132,83,150,50,43,30,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[248,81],[248,113]]}},"account":null,"storage":null,"values":[[160,90,102,126,52,123,142,237,166,163,241,255,65,67,206,65,181,45,101,41,147,86,72,136,7,64,208,10,60,216,219,29,48,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,31,135,73,204,174,167,159,229,36,59,217,161,39,71,252,185,59,171,62,199,226,95,101,195,206,134,71,61,127,129,37,56,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,203,196,24,180,91,92,42,155,178,224,138,157,186,202,85,129,212,160,95,196,131,76,51,38,251,230,158,133,225,177,41,135,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,128,160,31,135,73,204,174,167,159,229,36,59,217,161,39,71,252,185,59,171,62,199,226,95,101,195,206,134,71,61,127,129,37,56,128,160,203,196,24,180,91,92,42,155,178,224,138,157,186,202,85,129,212,160,95,196,131,76,51,38,251,230,158,133,225,177,41,135,128,128,128,128,128],[248,113,128,160,90,102,126,52,123,142,237,166,163,241,255,65,67,206,65,181,45,101,41,147,86,72,136,7,64,208,10,60,216,219,29,48,128,128,128,128,128,128,128,160,31,135,73,204,174,167,159,229,36,59,217,161,39,71,252,185,59,171,62,199,226,95,101,195,206,134,71,61,127,129,37,56,128,160,203,196,24,180,91,92,42,155,178,224,138,157,186,202,85,129,212,160,95,196,131,76,51,38,251,230,158,133,225,177,41,135,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[170,172,207,18,88,1,56,188,43,188,238,234,161,17,223,78,66,171,129,171],"key":[152,225,119,223,167,154,212,87,64,146,72,80,232,124,99,244,129,117,156,137,200,71,85,240,47,81,246,247,59,192,177,160],"list_rlp_bytes":[[248,104],[248,104]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,104]},"storage":null,"values":[[159,32,119,223,167,154,212,87,64,146,72,80,232,124,99,244,129,117,156,137,200,71,85,240,47,81,246,247,59,192,177,160,0,0],[159,32,119,223,167,154,212,87,64,146,72,80,232,124,99,244,129,117,156,137,200,71,85,240,47,81,246,247,59,192,177,160,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,32,119,223,167,154,212,87,64,146,72,80,232,124,99,244,129,117,156,137,200,71,85,240,47,81,246,247,59,192,177,160,0,0]],"keccak_data":[[248,104,159,32,119,223,167,154,212,87,64,146,72,80,232,124,99,244,129,117,156,137,200,71,85,240,47,81,246,247,59,192,177,160,184,70,248,68,128,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,104,159,32,119,223,167,154,212,87,64,146,72,80,232,124,99,244,129,117,156,137,200,71,85,240,47,81,246,247,59,192,177,160,184,70,248,68,128,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[170,172,207,18,88,1,56,188,43,188,238,234,161,17,223,78,66,171,129,171]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/AddBranch.json b/zkevm-circuits/src/mpt_circuit/tests/AddBranch.json new file mode 100644 index 0000000000..973aaa964a --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/AddBranch.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,51,249,190,25,92,195,96,144,163,223,3,204,51,198,92,180,19,6,89,244,90,113,203,1,243,202,105,41,218,208,136,76,0],[160,6,132,175,125,105,103,22,154,49,50,255,211,1,166,184,72,180,220,166,194,99,162,42,51,179,63,248,166,99,94,34,154,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,204,163,192,228,236,158,53,243,37,211,75,99,207,250,226,55,170,222,203,54,169,187,114,252,9,233,188,229,183,238,239,41,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,81,161,102,91,160,19,144,108,131,101,101,23,128,254,23,127,21,66,253,142,104,3,221,12,246,12,75,151,83,165,8,247,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,81,161,102,91,160,19,144,108,131,101,101,23,128,254,23,127,21,66,253,142,104,3,221,12,246,12,75,151,83,165,8,247,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,204,163,192,228,236,158,53,243,37,211,75,99,207,250,226,55,170,222,203,54,169,187,114,252,9,233,188,229,183,238,239,41,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,30,31,137,208,60,56,93,193,234,92,33,44,105,50,212,87,114,191,48,56,172,41,96,249,141,153,157,90,136,85,178,210,0],[160,32,114,50,12,62,189,106,20,134,185,146,28,23,254,217,42,238,29,2,23,26,44,204,98,23,49,136,43,60,200,131,203,0],[160,10,122,174,89,193,94,170,119,181,105,68,128,225,99,30,47,203,11,219,63,185,212,28,135,191,38,229,164,205,251,29,178,0],[160,196,56,120,16,50,206,164,153,42,137,240,168,48,191,84,89,147,194,236,15,27,79,106,86,147,188,114,238,224,245,134,237,0],[160,110,98,248,22,245,45,207,250,31,51,65,156,160,157,187,161,111,44,138,199,254,61,51,142,225,57,123,216,229,126,111,230,0],[160,43,111,2,145,226,86,104,84,88,106,96,162,207,2,192,64,233,219,19,142,115,84,245,190,9,221,204,102,175,1,218,152,0],[160,91,124,51,211,9,235,73,230,129,79,76,57,179,252,147,61,46,222,55,49,156,35,181,181,217,140,199,194,135,126,239,251,0],[160,198,173,47,15,24,247,123,29,143,238,210,5,76,44,0,7,148,217,241,207,46,233,29,69,86,104,40,186,220,153,45,109,0],[160,11,161,79,203,76,0,94,197,247,21,34,15,237,251,186,101,156,155,254,196,0,173,231,220,178,64,214,23,193,146,249,233,0],[160,94,170,238,196,129,29,127,164,98,174,87,50,178,177,9,46,2,110,163,58,47,215,198,105,189,243,131,59,129,53,180,89,0],[160,100,67,185,240,66,4,48,205,115,127,26,88,222,95,211,125,147,9,222,53,50,52,5,236,92,121,225,7,231,129,183,118,0],[160,98,103,206,41,116,82,141,170,215,102,145,113,216,126,189,19,11,241,144,204,193,255,163,78,123,38,167,60,204,134,150,138,0],[160,14,57,61,55,77,138,237,254,201,136,74,118,169,27,32,212,0,81,198,68,17,205,32,97,149,86,102,107,103,216,158,108,0],[160,151,89,46,200,117,181,97,231,220,224,98,192,154,217,203,140,50,96,138,63,225,123,181,80,33,237,168,148,72,146,50,208,0],[160,70,252,166,157,14,188,140,228,37,115,14,85,160,172,150,194,35,108,206,222,246,77,148,119,39,187,37,14,249,50,33,252,0],[160,162,242,182,77,88,97,208,25,129,240,64,131,25,157,85,189,101,121,176,49,54,69,9,103,38,30,211,249,183,129,23,209,0],[160,189,254,23,52,6,11,216,25,233,79,162,217,173,14,166,14,30,113,114,183,249,21,18,130,138,13,247,166,235,118,154,23,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,32,114,50,12,62,189,106,20,134,185,146,28,23,254,217,42,238,29,2,23,26,44,204,98,23,49,136,43,60,200,131,203,160,10,122,174,89,193,94,170,119,181,105,68,128,225,99,30,47,203,11,219,63,185,212,28,135,191,38,229,164,205,251,29,178,160,196,56,120,16,50,206,164,153,42,137,240,168,48,191,84,89,147,194,236,15,27,79,106,86,147,188,114,238,224,245,134,237,160,110,98,248,22,245,45,207,250,31,51,65,156,160,157,187,161,111,44,138,199,254,61,51,142,225,57,123,216,229,126,111,230,160,43,111,2,145,226,86,104,84,88,106,96,162,207,2,192,64,233,219,19,142,115,84,245,190,9,221,204,102,175,1,218,152,160,91,124,51,211,9,235,73,230,129,79,76,57,179,252,147,61,46,222,55,49,156,35,181,181,217,140,199,194,135,126,239,251,160,198,173,47,15,24,247,123,29,143,238,210,5,76,44,0,7,148,217,241,207,46,233,29,69,86,104,40,186,220,153,45,109,160,11,161,79,203,76,0,94,197,247,21,34,15,237,251,186,101,156,155,254,196,0,173,231,220,178,64,214,23,193,146,249,233,160,94,170,238,196,129,29,127,164,98,174,87,50,178,177,9,46,2,110,163,58,47,215,198,105,189,243,131,59,129,53,180,89,160,100,67,185,240,66,4,48,205,115,127,26,88,222,95,211,125,147,9,222,53,50,52,5,236,92,121,225,7,231,129,183,118,160,98,103,206,41,116,82,141,170,215,102,145,113,216,126,189,19,11,241,144,204,193,255,163,78,123,38,167,60,204,134,150,138,160,14,57,61,55,77,138,237,254,201,136,74,118,169,27,32,212,0,81,198,68,17,205,32,97,149,86,102,107,103,216,158,108,160,151,89,46,200,117,181,97,231,220,224,98,192,154,217,203,140,50,96,138,63,225,123,181,80,33,237,168,148,72,146,50,208,160,70,252,166,157,14,188,140,228,37,115,14,85,160,172,150,194,35,108,206,222,246,77,148,119,39,187,37,14,249,50,33,252,160,162,242,182,77,88,97,208,25,129,240,64,131,25,157,85,189,101,121,176,49,54,69,9,103,38,30,211,249,183,129,23,209,160,189,254,23,52,6,11,216,25,233,79,162,217,173,14,166,14,30,113,114,183,249,21,18,130,138,13,247,166,235,118,154,23,128],[249,2,17,160,32,114,50,12,62,189,106,20,134,185,146,28,23,254,217,42,238,29,2,23,26,44,204,98,23,49,136,43,60,200,131,203,160,10,122,174,89,193,94,170,119,181,105,68,128,225,99,30,47,203,11,219,63,185,212,28,135,191,38,229,164,205,251,29,178,160,196,56,120,16,50,206,164,153,42,137,240,168,48,191,84,89,147,194,236,15,27,79,106,86,147,188,114,238,224,245,134,237,160,110,98,248,22,245,45,207,250,31,51,65,156,160,157,187,161,111,44,138,199,254,61,51,142,225,57,123,216,229,126,111,230,160,43,111,2,145,226,86,104,84,88,106,96,162,207,2,192,64,233,219,19,142,115,84,245,190,9,221,204,102,175,1,218,152,160,91,124,51,211,9,235,73,230,129,79,76,57,179,252,147,61,46,222,55,49,156,35,181,181,217,140,199,194,135,126,239,251,160,198,173,47,15,24,247,123,29,143,238,210,5,76,44,0,7,148,217,241,207,46,233,29,69,86,104,40,186,220,153,45,109,160,30,31,137,208,60,56,93,193,234,92,33,44,105,50,212,87,114,191,48,56,172,41,96,249,141,153,157,90,136,85,178,210,160,94,170,238,196,129,29,127,164,98,174,87,50,178,177,9,46,2,110,163,58,47,215,198,105,189,243,131,59,129,53,180,89,160,100,67,185,240,66,4,48,205,115,127,26,88,222,95,211,125,147,9,222,53,50,52,5,236,92,121,225,7,231,129,183,118,160,98,103,206,41,116,82,141,170,215,102,145,113,216,126,189,19,11,241,144,204,193,255,163,78,123,38,167,60,204,134,150,138,160,14,57,61,55,77,138,237,254,201,136,74,118,169,27,32,212,0,81,198,68,17,205,32,97,149,86,102,107,103,216,158,108,160,151,89,46,200,117,181,97,231,220,224,98,192,154,217,203,140,50,96,138,63,225,123,181,80,33,237,168,148,72,146,50,208,160,70,252,166,157,14,188,140,228,37,115,14,85,160,172,150,194,35,108,206,222,246,77,148,119,39,187,37,14,249,50,33,252,160,162,242,182,77,88,97,208,25,129,240,64,131,25,157,85,189,101,121,176,49,54,69,9,103,38,30,211,249,183,129,23,209,160,189,254,23,52,6,11,216,25,233,79,162,217,173,14,166,14,30,113,114,183,249,21,18,130,138,13,247,166,235,118,154,23,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,223,45,149,220,158,221,89,72,38,143,255,58,137,174,55,171,177,138,133,190,138,20,20,84,200,62,178,81,32,253,18,123,0],[160,80,148,255,185,38,251,16,216,144,46,115,25,219,9,156,208,216,2,63,88,215,254,38,196,107,216,121,200,104,112,41,166,0],[160,232,64,114,15,200,106,11,109,160,11,185,172,141,121,247,148,195,206,231,233,199,129,249,71,91,217,235,116,232,212,187,23,0],[160,22,24,113,187,195,199,19,22,220,222,38,68,10,149,249,10,83,196,145,149,30,216,79,55,240,137,14,190,167,183,11,248,0],[160,26,80,98,123,95,183,78,86,169,116,95,134,0,242,193,10,159,55,133,145,50,232,89,49,77,88,236,254,190,119,46,179,0],[160,219,11,189,199,146,209,207,184,241,225,225,82,254,168,36,177,54,129,136,43,174,3,69,132,76,68,238,217,185,64,76,188,0],[160,255,255,49,52,51,148,215,160,44,11,164,35,64,77,116,244,205,109,34,105,83,191,185,98,61,152,31,107,47,93,226,182,0],[160,141,207,26,39,186,93,5,76,248,240,96,160,123,14,221,226,176,218,191,61,55,177,128,23,185,89,251,26,120,1,137,73,0],[160,35,20,61,139,93,25,155,182,10,41,79,55,103,14,165,89,100,101,112,251,202,56,255,204,172,35,165,18,191,59,191,42,0],[160,143,224,89,30,184,196,153,96,132,8,72,89,237,23,38,198,197,52,213,48,160,163,90,143,21,246,48,48,243,27,57,233,0],[160,161,117,24,172,49,150,116,109,36,187,48,213,144,170,125,36,153,110,226,55,47,140,26,254,184,244,194,140,147,47,42,231,0],[160,80,215,25,106,21,12,101,148,138,219,184,184,188,40,58,115,84,38,142,85,198,23,126,169,205,238,223,41,50,89,224,22,0],[160,117,137,133,54,28,123,80,12,122,22,182,143,154,153,195,240,131,11,204,239,47,187,92,198,160,194,159,23,63,110,69,23,0],[160,192,126,139,172,39,190,85,65,175,44,222,171,235,106,94,226,10,102,215,144,5,84,241,252,249,77,74,39,235,161,155,27,0],[160,196,6,129,141,159,153,225,109,54,205,224,250,103,31,169,248,190,191,252,11,209,179,82,134,242,212,102,162,34,226,61,112,0],[160,194,89,55,164,148,35,149,201,62,178,116,127,182,51,153,157,6,43,147,76,67,31,130,227,50,40,178,162,17,107,171,35,0],[160,117,214,70,75,202,75,148,198,51,170,204,17,106,206,189,79,195,252,21,147,184,128,92,162,208,14,202,231,35,190,240,162,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,80,148,255,185,38,251,16,216,144,46,115,25,219,9,156,208,216,2,63,88,215,254,38,196,107,216,121,200,104,112,41,166,160,232,64,114,15,200,106,11,109,160,11,185,172,141,121,247,148,195,206,231,233,199,129,249,71,91,217,235,116,232,212,187,23,160,22,24,113,187,195,199,19,22,220,222,38,68,10,149,249,10,83,196,145,149,30,216,79,55,240,137,14,190,167,183,11,248,160,26,80,98,123,95,183,78,86,169,116,95,134,0,242,193,10,159,55,133,145,50,232,89,49,77,88,236,254,190,119,46,179,160,219,11,189,199,146,209,207,184,241,225,225,82,254,168,36,177,54,129,136,43,174,3,69,132,76,68,238,217,185,64,76,188,160,255,255,49,52,51,148,215,160,44,11,164,35,64,77,116,244,205,109,34,105,83,191,185,98,61,152,31,107,47,93,226,182,160,141,207,26,39,186,93,5,76,248,240,96,160,123,14,221,226,176,218,191,61,55,177,128,23,185,89,251,26,120,1,137,73,160,35,20,61,139,93,25,155,182,10,41,79,55,103,14,165,89,100,101,112,251,202,56,255,204,172,35,165,18,191,59,191,42,160,143,224,89,30,184,196,153,96,132,8,72,89,237,23,38,198,197,52,213,48,160,163,90,143,21,246,48,48,243,27,57,233,160,161,117,24,172,49,150,116,109,36,187,48,213,144,170,125,36,153,110,226,55,47,140,26,254,184,244,194,140,147,47,42,231,160,80,215,25,106,21,12,101,148,138,219,184,184,188,40,58,115,84,38,142,85,198,23,126,169,205,238,223,41,50,89,224,22,160,117,137,133,54,28,123,80,12,122,22,182,143,154,153,195,240,131,11,204,239,47,187,92,198,160,194,159,23,63,110,69,23,160,192,126,139,172,39,190,85,65,175,44,222,171,235,106,94,226,10,102,215,144,5,84,241,252,249,77,74,39,235,161,155,27,160,196,6,129,141,159,153,225,109,54,205,224,250,103,31,169,248,190,191,252,11,209,179,82,134,242,212,102,162,34,226,61,112,160,194,89,55,164,148,35,149,201,62,178,116,127,182,51,153,157,6,43,147,76,67,31,130,227,50,40,178,162,17,107,171,35,160,117,214,70,75,202,75,148,198,51,170,204,17,106,206,189,79,195,252,21,147,184,128,92,162,208,14,202,231,35,190,240,162,128],[249,2,17,160,80,148,255,185,38,251,16,216,144,46,115,25,219,9,156,208,216,2,63,88,215,254,38,196,107,216,121,200,104,112,41,166,160,232,64,114,15,200,106,11,109,160,11,185,172,141,121,247,148,195,206,231,233,199,129,249,71,91,217,235,116,232,212,187,23,160,22,24,113,187,195,199,19,22,220,222,38,68,10,149,249,10,83,196,145,149,30,216,79,55,240,137,14,190,167,183,11,248,160,26,80,98,123,95,183,78,86,169,116,95,134,0,242,193,10,159,55,133,145,50,232,89,49,77,88,236,254,190,119,46,179,160,219,11,189,199,146,209,207,184,241,225,225,82,254,168,36,177,54,129,136,43,174,3,69,132,76,68,238,217,185,64,76,188,160,255,255,49,52,51,148,215,160,44,11,164,35,64,77,116,244,205,109,34,105,83,191,185,98,61,152,31,107,47,93,226,182,160,141,207,26,39,186,93,5,76,248,240,96,160,123,14,221,226,176,218,191,61,55,177,128,23,185,89,251,26,120,1,137,73,160,35,20,61,139,93,25,155,182,10,41,79,55,103,14,165,89,100,101,112,251,202,56,255,204,172,35,165,18,191,59,191,42,160,223,45,149,220,158,221,89,72,38,143,255,58,137,174,55,171,177,138,133,190,138,20,20,84,200,62,178,81,32,253,18,123,160,161,117,24,172,49,150,116,109,36,187,48,213,144,170,125,36,153,110,226,55,47,140,26,254,184,244,194,140,147,47,42,231,160,80,215,25,106,21,12,101,148,138,219,184,184,188,40,58,115,84,38,142,85,198,23,126,169,205,238,223,41,50,89,224,22,160,117,137,133,54,28,123,80,12,122,22,182,143,154,153,195,240,131,11,204,239,47,187,92,198,160,194,159,23,63,110,69,23,160,192,126,139,172,39,190,85,65,175,44,222,171,235,106,94,226,10,102,215,144,5,84,241,252,249,77,74,39,235,161,155,27,160,196,6,129,141,159,153,225,109,54,205,224,250,103,31,169,248,190,191,252,11,209,179,82,134,242,212,102,162,34,226,61,112,160,194,89,55,164,148,35,149,201,62,178,116,127,182,51,153,157,6,43,147,76,67,31,130,227,50,40,178,162,17,107,171,35,160,117,214,70,75,202,75,148,198,51,170,204,17,106,206,189,79,195,252,21,147,184,128,92,162,208,14,202,231,35,190,240,162,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,145,217,85,165,243,134,193,101,63,153,167,102,112,147,139,74,180,12,255,170,94,85,61,77,245,107,254,240,47,123,144,46,0],[160,50,134,227,121,222,107,41,253,160,126,236,53,159,171,4,233,12,192,130,29,187,146,42,103,75,238,149,5,228,164,51,219,0],[160,109,223,240,132,44,244,231,89,34,238,116,54,182,126,145,33,158,218,129,84,25,117,193,93,57,54,129,207,71,158,10,239,0],[160,137,71,32,30,231,144,195,14,161,165,205,202,106,148,96,107,179,11,204,136,166,237,106,5,140,223,195,49,2,38,252,37,0],[160,10,16,12,178,172,155,142,38,79,250,185,38,8,229,41,242,146,125,222,231,178,85,169,113,65,235,192,3,221,253,133,121,0],[160,118,155,214,194,160,124,204,154,165,83,205,21,77,129,218,30,159,182,4,232,144,206,128,190,236,186,178,127,98,184,35,118,0],[160,242,87,113,63,110,51,159,220,10,125,93,196,79,30,80,58,128,111,185,193,117,25,116,202,155,203,154,233,77,106,251,95,0],[160,179,216,217,227,32,241,45,244,75,203,37,4,51,184,112,104,40,154,140,239,221,64,49,88,53,119,11,221,100,30,115,147,0],[160,123,86,224,58,55,134,195,209,93,93,167,112,126,144,159,207,30,2,157,97,66,237,247,243,246,61,16,108,150,69,42,216,0],[160,198,153,173,222,150,149,89,189,206,216,72,55,211,25,7,209,20,124,201,116,255,43,245,33,132,248,22,100,146,228,180,33,0],[160,18,207,94,155,112,54,113,255,83,129,204,156,94,155,128,87,24,190,90,35,118,51,118,49,201,101,169,161,53,195,204,212,0],[160,38,148,237,87,162,36,238,225,7,186,236,165,131,196,134,87,58,128,154,30,76,224,193,106,231,54,167,127,2,63,242,235,0],[160,65,15,250,185,115,180,192,8,106,46,90,186,76,63,247,99,101,120,4,178,131,76,104,150,74,77,30,88,24,180,2,165,0],[160,27,195,248,41,48,169,202,25,179,195,80,92,28,41,117,203,45,106,247,70,163,164,155,57,204,247,48,8,150,255,69,103,0],[160,77,29,23,199,242,162,32,107,153,219,31,93,210,56,39,34,133,30,238,106,236,197,206,47,158,52,226,240,22,66,24,152,0],[160,128,210,64,36,232,87,25,151,157,53,5,163,236,235,238,238,244,222,96,49,29,31,13,153,104,5,231,22,7,200,223,157,0],[160,254,142,169,167,195,251,188,33,233,78,222,45,23,253,255,129,174,132,231,175,11,153,146,70,137,247,100,109,26,106,12,199,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,50,134,227,121,222,107,41,253,160,126,236,53,159,171,4,233,12,192,130,29,187,146,42,103,75,238,149,5,228,164,51,219,160,109,223,240,132,44,244,231,89,34,238,116,54,182,126,145,33,158,218,129,84,25,117,193,93,57,54,129,207,71,158,10,239,160,137,71,32,30,231,144,195,14,161,165,205,202,106,148,96,107,179,11,204,136,166,237,106,5,140,223,195,49,2,38,252,37,160,10,16,12,178,172,155,142,38,79,250,185,38,8,229,41,242,146,125,222,231,178,85,169,113,65,235,192,3,221,253,133,121,160,118,155,214,194,160,124,204,154,165,83,205,21,77,129,218,30,159,182,4,232,144,206,128,190,236,186,178,127,98,184,35,118,160,242,87,113,63,110,51,159,220,10,125,93,196,79,30,80,58,128,111,185,193,117,25,116,202,155,203,154,233,77,106,251,95,160,179,216,217,227,32,241,45,244,75,203,37,4,51,184,112,104,40,154,140,239,221,64,49,88,53,119,11,221,100,30,115,147,160,123,86,224,58,55,134,195,209,93,93,167,112,126,144,159,207,30,2,157,97,66,237,247,243,246,61,16,108,150,69,42,216,160,198,153,173,222,150,149,89,189,206,216,72,55,211,25,7,209,20,124,201,116,255,43,245,33,132,248,22,100,146,228,180,33,160,18,207,94,155,112,54,113,255,83,129,204,156,94,155,128,87,24,190,90,35,118,51,118,49,201,101,169,161,53,195,204,212,160,38,148,237,87,162,36,238,225,7,186,236,165,131,196,134,87,58,128,154,30,76,224,193,106,231,54,167,127,2,63,242,235,160,65,15,250,185,115,180,192,8,106,46,90,186,76,63,247,99,101,120,4,178,131,76,104,150,74,77,30,88,24,180,2,165,160,27,195,248,41,48,169,202,25,179,195,80,92,28,41,117,203,45,106,247,70,163,164,155,57,204,247,48,8,150,255,69,103,160,77,29,23,199,242,162,32,107,153,219,31,93,210,56,39,34,133,30,238,106,236,197,206,47,158,52,226,240,22,66,24,152,160,128,210,64,36,232,87,25,151,157,53,5,163,236,235,238,238,244,222,96,49,29,31,13,153,104,5,231,22,7,200,223,157,160,254,142,169,167,195,251,188,33,233,78,222,45,23,253,255,129,174,132,231,175,11,153,146,70,137,247,100,109,26,106,12,199,128],[249,2,17,160,50,134,227,121,222,107,41,253,160,126,236,53,159,171,4,233,12,192,130,29,187,146,42,103,75,238,149,5,228,164,51,219,160,109,223,240,132,44,244,231,89,34,238,116,54,182,126,145,33,158,218,129,84,25,117,193,93,57,54,129,207,71,158,10,239,160,137,71,32,30,231,144,195,14,161,165,205,202,106,148,96,107,179,11,204,136,166,237,106,5,140,223,195,49,2,38,252,37,160,10,16,12,178,172,155,142,38,79,250,185,38,8,229,41,242,146,125,222,231,178,85,169,113,65,235,192,3,221,253,133,121,160,118,155,214,194,160,124,204,154,165,83,205,21,77,129,218,30,159,182,4,232,144,206,128,190,236,186,178,127,98,184,35,118,160,242,87,113,63,110,51,159,220,10,125,93,196,79,30,80,58,128,111,185,193,117,25,116,202,155,203,154,233,77,106,251,95,160,179,216,217,227,32,241,45,244,75,203,37,4,51,184,112,104,40,154,140,239,221,64,49,88,53,119,11,221,100,30,115,147,160,123,86,224,58,55,134,195,209,93,93,167,112,126,144,159,207,30,2,157,97,66,237,247,243,246,61,16,108,150,69,42,216,160,198,153,173,222,150,149,89,189,206,216,72,55,211,25,7,209,20,124,201,116,255,43,245,33,132,248,22,100,146,228,180,33,160,18,207,94,155,112,54,113,255,83,129,204,156,94,155,128,87,24,190,90,35,118,51,118,49,201,101,169,161,53,195,204,212,160,38,148,237,87,162,36,238,225,7,186,236,165,131,196,134,87,58,128,154,30,76,224,193,106,231,54,167,127,2,63,242,235,160,65,15,250,185,115,180,192,8,106,46,90,186,76,63,247,99,101,120,4,178,131,76,104,150,74,77,30,88,24,180,2,165,160,27,195,248,41,48,169,202,25,179,195,80,92,28,41,117,203,45,106,247,70,163,164,155,57,204,247,48,8,150,255,69,103,160,77,29,23,199,242,162,32,107,153,219,31,93,210,56,39,34,133,30,238,106,236,197,206,47,158,52,226,240,22,66,24,152,160,145,217,85,165,243,134,193,101,63,153,167,102,112,147,139,74,180,12,255,170,94,85,61,77,245,107,254,240,47,123,144,46,160,254,142,169,167,195,251,188,33,233,78,222,45,23,253,255,129,174,132,231,175,11,153,146,70,137,247,100,109,26,106,12,199,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,207,55,223,75,156,17,69,57,26,113,1,148,61,210,37,76,31,144,225,95,2,36,11,200,74,187,97,142,139,145,94,45,0],[160,51,241,12,122,223,81,152,154,37,130,73,169,73,174,190,217,162,228,6,125,211,205,215,202,77,228,212,82,225,163,237,192,0],[160,108,57,248,46,203,51,108,5,211,233,36,199,112,197,41,226,231,139,145,164,37,226,96,51,179,184,38,179,18,214,14,227,0],[160,216,159,123,174,245,114,217,222,163,30,130,28,130,112,42,41,60,19,247,247,77,30,167,48,212,24,142,109,140,167,139,82,0],[160,22,24,108,63,110,11,171,135,168,27,40,62,80,124,232,38,247,70,47,131,50,237,27,177,116,224,97,0,220,105,0,207,0],[160,27,32,153,65,20,139,14,102,94,202,123,191,220,51,10,53,15,90,91,208,231,17,74,83,74,152,198,129,106,142,107,134,0],[160,16,34,203,96,5,245,23,207,43,83,207,130,98,43,103,126,11,36,249,214,34,87,112,151,109,81,5,82,255,10,70,82,0],[160,132,190,217,18,224,217,151,188,25,206,221,116,137,199,19,252,252,99,167,60,24,250,47,2,99,252,223,58,210,71,103,12,0],[160,135,48,207,246,58,141,50,138,56,71,148,180,41,114,250,70,187,44,46,24,129,201,137,5,131,252,164,150,132,206,7,211,0],[160,7,209,151,13,253,160,217,6,204,0,47,210,144,219,252,152,90,3,87,48,29,26,178,0,169,194,214,154,68,243,197,216,0],[160,168,128,138,221,38,113,12,138,148,57,231,108,100,18,221,11,59,37,117,212,20,18,79,176,177,24,166,101,83,116,36,59,0],[160,144,107,197,69,239,225,195,211,211,21,4,18,41,56,121,142,55,91,224,216,214,151,57,52,247,120,231,250,1,211,193,23,0],[160,252,108,69,245,6,88,254,119,86,9,126,110,214,65,71,203,229,188,14,60,46,204,216,105,26,210,18,15,27,254,12,175,0],[160,56,164,46,14,139,85,27,222,5,117,226,241,232,26,221,205,195,150,196,115,106,141,181,231,173,150,150,86,230,174,230,118,0],[160,96,9,107,203,131,222,63,178,190,68,100,198,163,179,53,14,232,10,145,138,227,125,133,153,241,162,90,61,106,174,48,209,0],[160,162,80,140,238,232,172,104,178,189,11,3,53,206,103,224,50,105,110,53,97,36,158,83,102,72,24,88,21,28,158,125,203,0],[160,230,193,57,145,215,135,56,63,27,141,34,161,66,40,124,150,99,218,110,125,26,203,193,93,106,20,228,191,226,53,27,240,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,51,241,12,122,223,81,152,154,37,130,73,169,73,174,190,217,162,228,6,125,211,205,215,202,77,228,212,82,225,163,237,192,160,108,57,248,46,203,51,108,5,211,233,36,199,112,197,41,226,231,139,145,164,37,226,96,51,179,184,38,179,18,214,14,227,160,216,159,123,174,245,114,217,222,163,30,130,28,130,112,42,41,60,19,247,247,77,30,167,48,212,24,142,109,140,167,139,82,160,22,24,108,63,110,11,171,135,168,27,40,62,80,124,232,38,247,70,47,131,50,237,27,177,116,224,97,0,220,105,0,207,160,27,32,153,65,20,139,14,102,94,202,123,191,220,51,10,53,15,90,91,208,231,17,74,83,74,152,198,129,106,142,107,134,160,16,34,203,96,5,245,23,207,43,83,207,130,98,43,103,126,11,36,249,214,34,87,112,151,109,81,5,82,255,10,70,82,160,132,190,217,18,224,217,151,188,25,206,221,116,137,199,19,252,252,99,167,60,24,250,47,2,99,252,223,58,210,71,103,12,160,135,48,207,246,58,141,50,138,56,71,148,180,41,114,250,70,187,44,46,24,129,201,137,5,131,252,164,150,132,206,7,211,160,7,209,151,13,253,160,217,6,204,0,47,210,144,219,252,152,90,3,87,48,29,26,178,0,169,194,214,154,68,243,197,216,160,168,128,138,221,38,113,12,138,148,57,231,108,100,18,221,11,59,37,117,212,20,18,79,176,177,24,166,101,83,116,36,59,160,144,107,197,69,239,225,195,211,211,21,4,18,41,56,121,142,55,91,224,216,214,151,57,52,247,120,231,250,1,211,193,23,160,252,108,69,245,6,88,254,119,86,9,126,110,214,65,71,203,229,188,14,60,46,204,216,105,26,210,18,15,27,254,12,175,160,56,164,46,14,139,85,27,222,5,117,226,241,232,26,221,205,195,150,196,115,106,141,181,231,173,150,150,86,230,174,230,118,160,96,9,107,203,131,222,63,178,190,68,100,198,163,179,53,14,232,10,145,138,227,125,133,153,241,162,90,61,106,174,48,209,160,162,80,140,238,232,172,104,178,189,11,3,53,206,103,224,50,105,110,53,97,36,158,83,102,72,24,88,21,28,158,125,203,160,230,193,57,145,215,135,56,63,27,141,34,161,66,40,124,150,99,218,110,125,26,203,193,93,106,20,228,191,226,53,27,240,128],[249,2,17,160,51,241,12,122,223,81,152,154,37,130,73,169,73,174,190,217,162,228,6,125,211,205,215,202,77,228,212,82,225,163,237,192,160,108,57,248,46,203,51,108,5,211,233,36,199,112,197,41,226,231,139,145,164,37,226,96,51,179,184,38,179,18,214,14,227,160,216,159,123,174,245,114,217,222,163,30,130,28,130,112,42,41,60,19,247,247,77,30,167,48,212,24,142,109,140,167,139,82,160,207,55,223,75,156,17,69,57,26,113,1,148,61,210,37,76,31,144,225,95,2,36,11,200,74,187,97,142,139,145,94,45,160,27,32,153,65,20,139,14,102,94,202,123,191,220,51,10,53,15,90,91,208,231,17,74,83,74,152,198,129,106,142,107,134,160,16,34,203,96,5,245,23,207,43,83,207,130,98,43,103,126,11,36,249,214,34,87,112,151,109,81,5,82,255,10,70,82,160,132,190,217,18,224,217,151,188,25,206,221,116,137,199,19,252,252,99,167,60,24,250,47,2,99,252,223,58,210,71,103,12,160,135,48,207,246,58,141,50,138,56,71,148,180,41,114,250,70,187,44,46,24,129,201,137,5,131,252,164,150,132,206,7,211,160,7,209,151,13,253,160,217,6,204,0,47,210,144,219,252,152,90,3,87,48,29,26,178,0,169,194,214,154,68,243,197,216,160,168,128,138,221,38,113,12,138,148,57,231,108,100,18,221,11,59,37,117,212,20,18,79,176,177,24,166,101,83,116,36,59,160,144,107,197,69,239,225,195,211,211,21,4,18,41,56,121,142,55,91,224,216,214,151,57,52,247,120,231,250,1,211,193,23,160,252,108,69,245,6,88,254,119,86,9,126,110,214,65,71,203,229,188,14,60,46,204,216,105,26,210,18,15,27,254,12,175,160,56,164,46,14,139,85,27,222,5,117,226,241,232,26,221,205,195,150,196,115,106,141,181,231,173,150,150,86,230,174,230,118,160,96,9,107,203,131,222,63,178,190,68,100,198,163,179,53,14,232,10,145,138,227,125,133,153,241,162,90,61,106,174,48,209,160,162,80,140,238,232,172,104,178,189,11,3,53,206,103,224,50,105,110,53,97,36,158,83,102,72,24,88,21,28,158,125,203,160,230,193,57,145,215,135,56,63,27,141,34,161,66,40,124,150,99,218,110,125,26,203,193,93,106,20,228,191,226,53,27,240,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,92,237,185,229,137,27,38,18,42,64,93,177,114,225,55,87,250,35,225,77,133,59,20,74,100,207,70,228,90,236,227,113,0],[160,33,39,1,20,248,247,235,8,83,14,6,51,208,30,213,108,102,237,221,215,232,228,70,187,27,78,176,0,8,163,95,170,0],[160,170,99,98,103,42,49,51,254,9,177,205,247,241,15,60,230,117,203,102,101,101,117,218,172,171,136,197,129,129,130,31,135,0],[160,117,64,244,64,112,120,157,17,156,151,58,2,245,143,63,101,157,15,87,248,32,196,84,75,122,84,59,46,48,185,191,98,0],[160,152,57,96,242,252,200,111,209,46,155,238,44,25,164,134,150,12,61,86,57,75,184,111,192,204,68,72,77,18,170,16,245,0],[160,122,244,234,173,129,12,158,231,23,76,102,97,134,68,156,85,77,238,116,20,225,160,149,10,98,208,198,250,39,121,27,120,0],[160,196,241,34,116,90,96,56,131,49,177,20,26,140,119,178,238,103,214,185,234,93,9,46,201,69,146,50,75,219,126,18,104,0],[160,47,54,175,158,157,10,125,127,125,79,46,159,240,21,120,207,129,232,177,59,69,144,48,48,133,172,168,167,82,56,85,246,0],[160,234,182,79,195,232,90,25,45,147,29,63,169,129,218,194,0,227,65,134,220,75,104,160,206,99,71,160,250,166,59,33,254,0],[160,30,163,206,180,138,61,188,189,238,35,29,37,221,22,221,228,190,56,109,233,40,189,149,208,125,22,132,212,243,222,162,48,0],[160,168,86,17,145,160,253,175,87,189,242,36,138,180,171,181,57,203,52,179,52,152,169,215,250,29,11,216,22,173,124,244,48,0],[160,160,23,89,94,237,247,112,172,230,48,73,35,139,102,199,84,73,192,236,59,221,22,192,197,215,139,186,217,1,41,82,148,0],[160,152,114,105,120,10,10,91,38,126,46,99,128,203,158,68,32,150,137,142,142,220,103,7,68,247,231,125,68,50,69,173,31,0],[160,232,192,193,129,55,246,219,2,21,95,185,215,91,77,57,159,231,197,191,216,110,12,90,42,102,228,47,143,187,182,239,195,0],[160,221,159,32,235,93,231,122,178,230,101,161,192,173,79,175,184,59,126,75,86,134,254,172,15,3,234,37,200,238,16,226,190,0],[160,38,143,194,58,172,99,153,99,15,216,34,169,236,44,42,7,158,105,155,130,175,192,127,236,79,21,193,223,173,150,50,180,0],[160,2,127,2,197,234,36,175,155,248,175,204,19,60,74,97,151,82,20,50,241,248,141,215,153,181,193,58,87,151,184,73,254,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,33,39,1,20,248,247,235,8,83,14,6,51,208,30,213,108,102,237,221,215,232,228,70,187,27,78,176,0,8,163,95,170,160,170,99,98,103,42,49,51,254,9,177,205,247,241,15,60,230,117,203,102,101,101,117,218,172,171,136,197,129,129,130,31,135,160,117,64,244,64,112,120,157,17,156,151,58,2,245,143,63,101,157,15,87,248,32,196,84,75,122,84,59,46,48,185,191,98,160,152,57,96,242,252,200,111,209,46,155,238,44,25,164,134,150,12,61,86,57,75,184,111,192,204,68,72,77,18,170,16,245,160,122,244,234,173,129,12,158,231,23,76,102,97,134,68,156,85,77,238,116,20,225,160,149,10,98,208,198,250,39,121,27,120,160,196,241,34,116,90,96,56,131,49,177,20,26,140,119,178,238,103,214,185,234,93,9,46,201,69,146,50,75,219,126,18,104,160,47,54,175,158,157,10,125,127,125,79,46,159,240,21,120,207,129,232,177,59,69,144,48,48,133,172,168,167,82,56,85,246,160,234,182,79,195,232,90,25,45,147,29,63,169,129,218,194,0,227,65,134,220,75,104,160,206,99,71,160,250,166,59,33,254,160,30,163,206,180,138,61,188,189,238,35,29,37,221,22,221,228,190,56,109,233,40,189,149,208,125,22,132,212,243,222,162,48,160,168,86,17,145,160,253,175,87,189,242,36,138,180,171,181,57,203,52,179,52,152,169,215,250,29,11,216,22,173,124,244,48,160,160,23,89,94,237,247,112,172,230,48,73,35,139,102,199,84,73,192,236,59,221,22,192,197,215,139,186,217,1,41,82,148,160,152,114,105,120,10,10,91,38,126,46,99,128,203,158,68,32,150,137,142,142,220,103,7,68,247,231,125,68,50,69,173,31,160,232,192,193,129,55,246,219,2,21,95,185,215,91,77,57,159,231,197,191,216,110,12,90,42,102,228,47,143,187,182,239,195,160,221,159,32,235,93,231,122,178,230,101,161,192,173,79,175,184,59,126,75,86,134,254,172,15,3,234,37,200,238,16,226,190,160,38,143,194,58,172,99,153,99,15,216,34,169,236,44,42,7,158,105,155,130,175,192,127,236,79,21,193,223,173,150,50,180,160,2,127,2,197,234,36,175,155,248,175,204,19,60,74,97,151,82,20,50,241,248,141,215,153,181,193,58,87,151,184,73,254,128],[249,2,17,160,33,39,1,20,248,247,235,8,83,14,6,51,208,30,213,108,102,237,221,215,232,228,70,187,27,78,176,0,8,163,95,170,160,170,99,98,103,42,49,51,254,9,177,205,247,241,15,60,230,117,203,102,101,101,117,218,172,171,136,197,129,129,130,31,135,160,117,64,244,64,112,120,157,17,156,151,58,2,245,143,63,101,157,15,87,248,32,196,84,75,122,84,59,46,48,185,191,98,160,152,57,96,242,252,200,111,209,46,155,238,44,25,164,134,150,12,61,86,57,75,184,111,192,204,68,72,77,18,170,16,245,160,122,244,234,173,129,12,158,231,23,76,102,97,134,68,156,85,77,238,116,20,225,160,149,10,98,208,198,250,39,121,27,120,160,196,241,34,116,90,96,56,131,49,177,20,26,140,119,178,238,103,214,185,234,93,9,46,201,69,146,50,75,219,126,18,104,160,47,54,175,158,157,10,125,127,125,79,46,159,240,21,120,207,129,232,177,59,69,144,48,48,133,172,168,167,82,56,85,246,160,234,182,79,195,232,90,25,45,147,29,63,169,129,218,194,0,227,65,134,220,75,104,160,206,99,71,160,250,166,59,33,254,160,30,163,206,180,138,61,188,189,238,35,29,37,221,22,221,228,190,56,109,233,40,189,149,208,125,22,132,212,243,222,162,48,160,168,86,17,145,160,253,175,87,189,242,36,138,180,171,181,57,203,52,179,52,152,169,215,250,29,11,216,22,173,124,244,48,160,160,23,89,94,237,247,112,172,230,48,73,35,139,102,199,84,73,192,236,59,221,22,192,197,215,139,186,217,1,41,82,148,160,92,237,185,229,137,27,38,18,42,64,93,177,114,225,55,87,250,35,225,77,133,59,20,74,100,207,70,228,90,236,227,113,160,232,192,193,129,55,246,219,2,21,95,185,215,91,77,57,159,231,197,191,216,110,12,90,42,102,228,47,143,187,182,239,195,160,221,159,32,235,93,231,122,178,230,101,161,192,173,79,175,184,59,126,75,86,134,254,172,15,3,234,37,200,238,16,226,190,160,38,143,194,58,172,99,153,99,15,216,34,169,236,44,42,7,158,105,155,130,175,192,127,236,79,21,193,223,173,150,50,180,160,2,127,2,197,234,36,175,155,248,175,204,19,60,74,97,151,82,20,50,241,248,141,215,153,181,193,58,87,151,184,73,254,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,1,49],[249,1,49]]}},"account":null,"storage":null,"values":[[160,254,239,63,62,84,215,88,151,22,243,211,38,10,146,190,159,142,27,68,135,217,242,3,166,204,116,39,94,68,45,149,207,0],[160,119,73,17,92,128,20,103,104,232,32,124,19,16,87,60,164,208,90,161,44,211,37,10,22,234,211,119,99,38,103,198,198,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,197,2,59,23,137,170,248,2,213,118,95,76,155,251,48,153,90,243,215,96,187,113,77,106,134,162,144,12,225,177,150,82,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,163,49,39,187,25,224,238,70,65,179,76,107,218,25,133,29,45,119,79,102,88,247,235,233,62,172,199,17,252,137,160,132,0],[160,228,247,244,44,169,159,121,241,37,203,87,229,189,5,235,105,253,45,60,197,77,122,58,147,64,9,131,17,17,142,20,155,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,205,29,5,65,38,9,46,153,141,104,202,181,91,192,0,13,172,218,7,199,83,1,165,46,186,0,114,232,249,237,55,86,0],[160,95,199,183,163,77,23,5,95,41,107,232,12,194,66,48,248,191,156,189,227,198,181,71,183,94,67,71,52,31,231,186,220,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,72,154,12,74,44,172,232,136,12,112,213,212,84,199,60,155,180,189,250,131,119,235,245,179,231,69,41,210,95,2,102,69,0],[160,185,48,236,239,154,158,161,183,121,156,86,53,176,75,170,145,108,209,199,136,127,25,169,15,172,38,79,212,229,151,21,78,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,168,42,10,43,57,84,192,82,188,77,84,115,130,173,36,32,174,129,104,109,48,102,57,116,53,12,2,1,10,219,36,135,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,49,160,119,73,17,92,128,20,103,104,232,32,124,19,16,87,60,164,208,90,161,44,211,37,10,22,234,211,119,99,38,103,198,198,128,128,160,197,2,59,23,137,170,248,2,213,118,95,76,155,251,48,153,90,243,215,96,187,113,77,106,134,162,144,12,225,177,150,82,128,160,163,49,39,187,25,224,238,70,65,179,76,107,218,25,133,29,45,119,79,102,88,247,235,233,62,172,199,17,252,137,160,132,160,228,247,244,44,169,159,121,241,37,203,87,229,189,5,235,105,253,45,60,197,77,122,58,147,64,9,131,17,17,142,20,155,128,128,160,205,29,5,65,38,9,46,153,141,104,202,181,91,192,0,13,172,218,7,199,83,1,165,46,186,0,114,232,249,237,55,86,160,95,199,183,163,77,23,5,95,41,107,232,12,194,66,48,248,191,156,189,227,198,181,71,183,94,67,71,52,31,231,186,220,128,160,72,154,12,74,44,172,232,136,12,112,213,212,84,199,60,155,180,189,250,131,119,235,245,179,231,69,41,210,95,2,102,69,160,185,48,236,239,154,158,161,183,121,156,86,53,176,75,170,145,108,209,199,136,127,25,169,15,172,38,79,212,229,151,21,78,128,160,168,42,10,43,57,84,192,82,188,77,84,115,130,173,36,32,174,129,104,109,48,102,57,116,53,12,2,1,10,219,36,135,128],[249,1,49,160,119,73,17,92,128,20,103,104,232,32,124,19,16,87,60,164,208,90,161,44,211,37,10,22,234,211,119,99,38,103,198,198,128,128,160,197,2,59,23,137,170,248,2,213,118,95,76,155,251,48,153,90,243,215,96,187,113,77,106,134,162,144,12,225,177,150,82,128,160,163,49,39,187,25,224,238,70,65,179,76,107,218,25,133,29,45,119,79,102,88,247,235,233,62,172,199,17,252,137,160,132,160,228,247,244,44,169,159,121,241,37,203,87,229,189,5,235,105,253,45,60,197,77,122,58,147,64,9,131,17,17,142,20,155,128,128,160,205,29,5,65,38,9,46,153,141,104,202,181,91,192,0,13,172,218,7,199,83,1,165,46,186,0,114,232,249,237,55,86,160,95,199,183,163,77,23,5,95,41,107,232,12,194,66,48,248,191,156,189,227,198,181,71,183,94,67,71,52,31,231,186,220,128,160,72,154,12,74,44,172,232,136,12,112,213,212,84,199,60,155,180,189,250,131,119,235,245,179,231,69,41,210,95,2,102,69,160,254,239,63,62,84,215,88,151,22,243,211,38,10,146,190,159,142,27,68,135,217,242,3,166,204,116,39,94,68,45,149,207,128,160,168,42,10,43,57,84,192,82,188,77,84,115,130,173,36,32,174,129,104,109,48,102,57,116,53,12,2,1,10,219,36,135,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,172,239,18,160,24,131,194,179,252,87,149,120,38,223,78,36,232,186,170],"key":[55,142,59,217,47,8,36,135,220,3,79,164,170,203,106,91,189,74,36,174,197,127,223,251,73,189,128,179,24,228,185,158],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,57,47,8,36,135,220,3,79,164,170,203,106,91,189,74,36,174,197,127,223,251,73,189,128,179,24,228,185,158,0,0,0,0],[157,57,47,8,36,135,220,3,79,164,170,203,106,91,189,74,36,174,197,127,223,251,73,189,128,179,24,228,185,158,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,108,175,176,92,138,97,66,88,92,163,20,133,186,14,202,83,61,132,245,179,24,124,92,74,69,199,166,219,149,87,245,197,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,190,78,97,44,199,185,78,255,133,142,12,3,144,130,2,110,52,117,104,18,95,33,87,149,32,175,212,11,129,104,113,157,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,57,47,8,36,135,220,3,79,164,170,203,106,91,189,74,36,174,197,127,223,251,73,189,128,179,24,228,185,158,0,0,0,0]],"keccak_data":[[248,102,157,57,47,8,36,135,220,3,79,164,170,203,106,91,189,74,36,174,197,127,223,251,73,189,128,179,24,228,185,158,184,70,248,68,128,128,160,108,175,176,92,138,97,66,88,92,163,20,133,186,14,202,83,61,132,245,179,24,124,92,74,69,199,166,219,149,87,245,197,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,57,47,8,36,135,220,3,79,164,170,203,106,91,189,74,36,174,197,127,223,251,73,189,128,179,24,228,185,158,184,70,248,68,128,128,160,190,78,97,44,199,185,78,255,133,142,12,3,144,130,2,110,52,117,104,18,95,33,87,149,32,175,212,11,129,104,113,157,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,172,239,18,160,24,131,194,179,252,87,149,120,38,223,78,36,232,186,170]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,94,62,95,110,183,27,209,155,226,16,94,165,211,195,191,55,253,126,33,1,77,165,26,169,229,103,195,173,238,133,72,134,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,147,31,200,131,19,49,103,136,46,1,167,47,128,146,235,40,179,181,1,99,210,43,90,113,42,63,194,216,20,174,42,218,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,160,147,31,200,131,19,49,103,136,46,1,167,47,128,146,235,40,179,181,1,99,210,43,90,113,42,63,194,216,20,174,42,218,128,128,128,128,128,128,128,160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,128,128,128,128,128],[248,81,128,128,128,160,94,62,95,110,183,27,209,155,226,16,94,165,211,195,191,55,253,126,33,1,77,165,26,169,229,103,195,173,238,133,72,134,128,128,128,128,128,128,128,160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[true,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":1,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,87,140,155,251,104,101,201,226,15,40,12,22,9,91,117,120,141,24,241,193,116,100,159,216,20,110,207,95,24,36,55,129,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,144,251,124,202,220,92,31,133,222,150,215,207,225,250,167,226,181,121,66,196,246,55,16,157,64,177,79,73,60,151,194,209,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,87,140,155,251,104,101,201,226,15,40,12,22,9,91,117,120,141,24,241,193,116,100,159,216,20,110,207,95,24,36,55,129,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,160,144,251,124,202,220,92,31,133,222,150,215,207,225,250,167,226,181,121,66,196,246,55,16,157,64,177,79,73,60,151,194,209,128,128,128,128,128,128,128,128,160,87,140,155,251,104,101,201,226,15,40,12,22,9,91,117,120,141,24,241,193,116,100,159,216,20,110,207,95,24,36,55,129,128,128,128,128,128,128],[248,81,128,160,144,251,124,202,220,92,31,133,222,150,215,207,225,250,167,226,181,121,66,196,246,55,16,157,64,177,79,73,60,151,194,209,128,128,128,128,128,128,128,128,160,87,140,155,251,104,101,201,226,15,40,12,22,9,91,117,120,141,24,241,193,116,100,159,216,20,110,207,95,24,36,55,129,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33],"key":[58,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112],"list_rlp_bytes":[[226],[226]],"value_rlp_bytes":[[1],[17]],"drifted_rlp_bytes":[226],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[226,160,49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,1],[226,160,32,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33],[226,160,32,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,1]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/AddBranchLong.json b/zkevm-circuits/src/mpt_circuit/tests/AddBranchLong.json new file mode 100644 index 0000000000..04e6ded41d --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/AddBranchLong.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,164,5,249,201,155,99,135,16,183,236,179,0,79,228,183,169,127,92,58,41,41,23,56,192,65,111,106,21,157,48,41,168,0],[160,46,252,112,163,42,127,166,163,124,36,222,233,115,113,240,74,91,93,164,205,30,195,59,196,167,8,162,63,156,115,28,95,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,192,167,124,25,206,92,75,245,4,43,53,189,69,2,163,219,144,211,228,207,250,178,204,196,234,73,219,18,223,139,250,247,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,91,90,100,21,60,97,18,135,96,21,187,90,82,60,232,214,123,22,224,116,254,155,184,185,194,205,29,116,231,32,129,175,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,91,90,100,21,60,97,18,135,96,21,187,90,82,60,232,214,123,22,224,116,254,155,184,185,194,205,29,116,231,32,129,175,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,192,167,124,25,206,92,75,245,4,43,53,189,69,2,163,219,144,211,228,207,250,178,204,196,234,73,219,18,223,139,250,247,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,244,89,96,62,9,150,203,76,223,160,251,42,206,30,75,61,47,23,43,205,173,75,47,191,155,207,111,125,254,156,216,88,0],[160,237,182,105,79,104,208,126,49,252,206,78,156,192,147,164,35,120,108,183,236,100,148,85,140,92,28,223,165,102,55,86,152,0],[160,208,227,66,140,67,3,90,187,102,137,24,154,144,254,214,124,157,150,35,37,38,29,34,154,130,164,129,218,167,7,63,116,0],[160,37,118,223,176,80,231,43,47,201,249,24,136,42,247,156,62,113,153,46,254,158,220,224,34,50,233,103,80,187,42,184,159,0],[160,79,66,152,128,30,145,24,183,253,219,92,250,211,0,113,247,158,206,75,244,251,133,116,99,214,59,0,52,179,135,145,87,0],[160,184,137,88,140,54,51,176,10,79,149,136,163,5,83,94,5,0,40,211,150,22,52,247,20,120,163,135,63,143,7,169,190,0],[160,237,162,212,53,158,58,165,72,131,162,130,5,185,224,219,59,9,197,130,45,26,29,223,93,27,98,130,90,39,75,189,129,0],[160,139,244,136,88,68,215,234,245,176,54,201,14,207,103,13,23,159,206,43,235,171,35,161,227,137,71,137,92,155,142,8,178,0],[160,147,157,115,143,197,23,61,34,86,142,225,162,167,170,105,243,165,215,186,203,199,201,119,33,70,20,221,154,24,61,95,145,0],[160,73,24,182,232,174,25,112,167,31,94,208,61,168,39,10,155,64,95,33,19,80,236,190,212,235,48,213,5,71,78,38,136,0],[160,62,96,144,21,112,157,83,141,78,245,181,166,170,184,161,126,127,255,106,59,88,56,171,112,51,3,87,3,249,101,162,51,0],[160,199,151,38,229,9,60,78,6,209,87,90,253,217,35,135,162,166,127,39,223,32,108,123,160,66,118,38,51,250,98,173,217,0],[160,86,82,75,0,94,174,49,78,2,9,30,77,230,18,249,190,184,23,126,58,220,100,63,49,160,35,90,117,51,105,68,165,0],[160,21,47,178,240,162,147,86,238,169,237,243,107,35,20,166,53,110,212,60,218,253,48,5,208,241,159,36,148,209,51,244,56,0],[160,90,115,57,142,208,123,106,170,231,228,10,112,101,74,176,6,253,222,229,208,225,99,4,206,17,84,236,222,103,73,199,110,0],[160,14,139,50,8,236,128,63,0,55,171,26,204,87,220,49,111,80,9,155,59,180,24,186,96,24,2,207,93,222,225,141,218,0],[160,190,84,186,130,71,158,86,7,12,46,139,175,139,164,108,202,46,121,38,193,23,58,60,11,25,168,134,192,209,192,181,29,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,237,182,105,79,104,208,126,49,252,206,78,156,192,147,164,35,120,108,183,236,100,148,85,140,92,28,223,165,102,55,86,152,160,208,227,66,140,67,3,90,187,102,137,24,154,144,254,214,124,157,150,35,37,38,29,34,154,130,164,129,218,167,7,63,116,160,37,118,223,176,80,231,43,47,201,249,24,136,42,247,156,62,113,153,46,254,158,220,224,34,50,233,103,80,187,42,184,159,160,79,66,152,128,30,145,24,183,253,219,92,250,211,0,113,247,158,206,75,244,251,133,116,99,214,59,0,52,179,135,145,87,160,184,137,88,140,54,51,176,10,79,149,136,163,5,83,94,5,0,40,211,150,22,52,247,20,120,163,135,63,143,7,169,190,160,237,162,212,53,158,58,165,72,131,162,130,5,185,224,219,59,9,197,130,45,26,29,223,93,27,98,130,90,39,75,189,129,160,139,244,136,88,68,215,234,245,176,54,201,14,207,103,13,23,159,206,43,235,171,35,161,227,137,71,137,92,155,142,8,178,160,147,157,115,143,197,23,61,34,86,142,225,162,167,170,105,243,165,215,186,203,199,201,119,33,70,20,221,154,24,61,95,145,160,73,24,182,232,174,25,112,167,31,94,208,61,168,39,10,155,64,95,33,19,80,236,190,212,235,48,213,5,71,78,38,136,160,62,96,144,21,112,157,83,141,78,245,181,166,170,184,161,126,127,255,106,59,88,56,171,112,51,3,87,3,249,101,162,51,160,199,151,38,229,9,60,78,6,209,87,90,253,217,35,135,162,166,127,39,223,32,108,123,160,66,118,38,51,250,98,173,217,160,86,82,75,0,94,174,49,78,2,9,30,77,230,18,249,190,184,23,126,58,220,100,63,49,160,35,90,117,51,105,68,165,160,21,47,178,240,162,147,86,238,169,237,243,107,35,20,166,53,110,212,60,218,253,48,5,208,241,159,36,148,209,51,244,56,160,90,115,57,142,208,123,106,170,231,228,10,112,101,74,176,6,253,222,229,208,225,99,4,206,17,84,236,222,103,73,199,110,160,14,139,50,8,236,128,63,0,55,171,26,204,87,220,49,111,80,9,155,59,180,24,186,96,24,2,207,93,222,225,141,218,160,190,84,186,130,71,158,86,7,12,46,139,175,139,164,108,202,46,121,38,193,23,58,60,11,25,168,134,192,209,192,181,29,128],[249,2,17,160,237,182,105,79,104,208,126,49,252,206,78,156,192,147,164,35,120,108,183,236,100,148,85,140,92,28,223,165,102,55,86,152,160,208,227,66,140,67,3,90,187,102,137,24,154,144,254,214,124,157,150,35,37,38,29,34,154,130,164,129,218,167,7,63,116,160,37,118,223,176,80,231,43,47,201,249,24,136,42,247,156,62,113,153,46,254,158,220,224,34,50,233,103,80,187,42,184,159,160,79,66,152,128,30,145,24,183,253,219,92,250,211,0,113,247,158,206,75,244,251,133,116,99,214,59,0,52,179,135,145,87,160,184,137,88,140,54,51,176,10,79,149,136,163,5,83,94,5,0,40,211,150,22,52,247,20,120,163,135,63,143,7,169,190,160,237,162,212,53,158,58,165,72,131,162,130,5,185,224,219,59,9,197,130,45,26,29,223,93,27,98,130,90,39,75,189,129,160,139,244,136,88,68,215,234,245,176,54,201,14,207,103,13,23,159,206,43,235,171,35,161,227,137,71,137,92,155,142,8,178,160,147,157,115,143,197,23,61,34,86,142,225,162,167,170,105,243,165,215,186,203,199,201,119,33,70,20,221,154,24,61,95,145,160,73,24,182,232,174,25,112,167,31,94,208,61,168,39,10,155,64,95,33,19,80,236,190,212,235,48,213,5,71,78,38,136,160,62,96,144,21,112,157,83,141,78,245,181,166,170,184,161,126,127,255,106,59,88,56,171,112,51,3,87,3,249,101,162,51,160,244,89,96,62,9,150,203,76,223,160,251,42,206,30,75,61,47,23,43,205,173,75,47,191,155,207,111,125,254,156,216,88,160,86,82,75,0,94,174,49,78,2,9,30,77,230,18,249,190,184,23,126,58,220,100,63,49,160,35,90,117,51,105,68,165,160,21,47,178,240,162,147,86,238,169,237,243,107,35,20,166,53,110,212,60,218,253,48,5,208,241,159,36,148,209,51,244,56,160,90,115,57,142,208,123,106,170,231,228,10,112,101,74,176,6,253,222,229,208,225,99,4,206,17,84,236,222,103,73,199,110,160,14,139,50,8,236,128,63,0,55,171,26,204,87,220,49,111,80,9,155,59,180,24,186,96,24,2,207,93,222,225,141,218,160,190,84,186,130,71,158,86,7,12,46,139,175,139,164,108,202,46,121,38,193,23,58,60,11,25,168,134,192,209,192,181,29,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,107,27,106,51,151,146,15,115,253,161,145,206,129,91,38,55,41,82,205,136,182,169,249,74,62,74,253,23,113,189,73,92,0],[160,123,53,177,6,41,106,248,70,53,24,33,250,186,211,65,77,74,44,71,81,240,85,137,100,37,153,137,177,93,172,88,139,0],[160,40,199,193,86,65,81,171,251,31,157,115,130,190,204,49,191,136,31,127,47,95,118,175,118,194,127,108,223,43,225,230,47,0],[160,233,54,217,131,118,2,178,1,209,179,105,48,58,214,132,133,15,78,167,45,66,182,111,244,197,187,218,77,51,175,69,43,0],[160,221,213,147,251,21,53,201,233,126,143,161,242,220,199,130,49,204,55,141,125,233,9,170,221,199,80,120,234,220,120,176,38,0],[160,105,130,128,74,115,134,13,134,231,146,88,193,234,132,179,206,55,95,69,122,215,246,230,123,169,120,158,220,198,147,103,4,0],[160,101,151,65,125,14,108,87,123,160,196,130,209,66,96,54,119,109,126,209,209,3,214,31,7,47,173,231,75,209,249,20,79,0],[160,66,17,229,126,244,232,27,44,176,229,112,80,2,8,62,167,182,217,249,166,109,223,237,114,86,148,125,125,89,168,203,108,0],[160,240,79,201,7,212,223,242,137,200,23,170,195,76,70,223,95,120,218,60,63,104,55,31,17,232,77,160,128,241,43,186,250,0],[160,143,63,99,109,209,121,169,243,156,182,145,219,206,114,112,150,40,138,95,81,229,41,138,81,231,58,159,139,150,59,218,33,0],[160,10,236,238,158,221,171,83,236,186,38,181,136,98,160,69,102,146,33,116,73,82,113,46,202,242,74,72,190,227,123,149,88,0],[160,95,63,77,129,14,81,253,106,110,43,33,14,170,224,154,241,79,188,245,96,109,169,200,205,185,0,198,129,74,201,204,15,0],[160,44,195,245,24,121,241,189,175,189,8,161,85,234,223,208,222,173,145,128,51,37,26,167,142,4,0,188,151,89,188,167,113,0],[160,55,63,32,94,141,145,145,99,34,93,169,5,190,197,175,242,50,5,19,160,204,52,5,244,234,74,164,87,86,66,63,231,0],[160,217,71,157,58,177,41,102,231,28,191,171,238,246,247,251,91,217,39,245,35,101,57,11,92,107,212,185,234,40,64,13,39,0],[160,190,175,151,197,195,178,105,115,231,174,143,15,193,210,53,89,2,74,176,227,167,100,193,245,118,88,225,161,212,249,214,128,0],[160,91,120,21,32,120,103,112,223,70,19,171,181,141,169,70,15,7,200,242,235,139,220,71,103,148,177,1,218,171,1,201,194,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,123,53,177,6,41,106,248,70,53,24,33,250,186,211,65,77,74,44,71,81,240,85,137,100,37,153,137,177,93,172,88,139,160,40,199,193,86,65,81,171,251,31,157,115,130,190,204,49,191,136,31,127,47,95,118,175,118,194,127,108,223,43,225,230,47,160,233,54,217,131,118,2,178,1,209,179,105,48,58,214,132,133,15,78,167,45,66,182,111,244,197,187,218,77,51,175,69,43,160,221,213,147,251,21,53,201,233,126,143,161,242,220,199,130,49,204,55,141,125,233,9,170,221,199,80,120,234,220,120,176,38,160,105,130,128,74,115,134,13,134,231,146,88,193,234,132,179,206,55,95,69,122,215,246,230,123,169,120,158,220,198,147,103,4,160,101,151,65,125,14,108,87,123,160,196,130,209,66,96,54,119,109,126,209,209,3,214,31,7,47,173,231,75,209,249,20,79,160,66,17,229,126,244,232,27,44,176,229,112,80,2,8,62,167,182,217,249,166,109,223,237,114,86,148,125,125,89,168,203,108,160,240,79,201,7,212,223,242,137,200,23,170,195,76,70,223,95,120,218,60,63,104,55,31,17,232,77,160,128,241,43,186,250,160,143,63,99,109,209,121,169,243,156,182,145,219,206,114,112,150,40,138,95,81,229,41,138,81,231,58,159,139,150,59,218,33,160,10,236,238,158,221,171,83,236,186,38,181,136,98,160,69,102,146,33,116,73,82,113,46,202,242,74,72,190,227,123,149,88,160,95,63,77,129,14,81,253,106,110,43,33,14,170,224,154,241,79,188,245,96,109,169,200,205,185,0,198,129,74,201,204,15,160,44,195,245,24,121,241,189,175,189,8,161,85,234,223,208,222,173,145,128,51,37,26,167,142,4,0,188,151,89,188,167,113,160,55,63,32,94,141,145,145,99,34,93,169,5,190,197,175,242,50,5,19,160,204,52,5,244,234,74,164,87,86,66,63,231,160,217,71,157,58,177,41,102,231,28,191,171,238,246,247,251,91,217,39,245,35,101,57,11,92,107,212,185,234,40,64,13,39,160,190,175,151,197,195,178,105,115,231,174,143,15,193,210,53,89,2,74,176,227,167,100,193,245,118,88,225,161,212,249,214,128,160,91,120,21,32,120,103,112,223,70,19,171,181,141,169,70,15,7,200,242,235,139,220,71,103,148,177,1,218,171,1,201,194,128],[249,2,17,160,123,53,177,6,41,106,248,70,53,24,33,250,186,211,65,77,74,44,71,81,240,85,137,100,37,153,137,177,93,172,88,139,160,40,199,193,86,65,81,171,251,31,157,115,130,190,204,49,191,136,31,127,47,95,118,175,118,194,127,108,223,43,225,230,47,160,233,54,217,131,118,2,178,1,209,179,105,48,58,214,132,133,15,78,167,45,66,182,111,244,197,187,218,77,51,175,69,43,160,221,213,147,251,21,53,201,233,126,143,161,242,220,199,130,49,204,55,141,125,233,9,170,221,199,80,120,234,220,120,176,38,160,107,27,106,51,151,146,15,115,253,161,145,206,129,91,38,55,41,82,205,136,182,169,249,74,62,74,253,23,113,189,73,92,160,101,151,65,125,14,108,87,123,160,196,130,209,66,96,54,119,109,126,209,209,3,214,31,7,47,173,231,75,209,249,20,79,160,66,17,229,126,244,232,27,44,176,229,112,80,2,8,62,167,182,217,249,166,109,223,237,114,86,148,125,125,89,168,203,108,160,240,79,201,7,212,223,242,137,200,23,170,195,76,70,223,95,120,218,60,63,104,55,31,17,232,77,160,128,241,43,186,250,160,143,63,99,109,209,121,169,243,156,182,145,219,206,114,112,150,40,138,95,81,229,41,138,81,231,58,159,139,150,59,218,33,160,10,236,238,158,221,171,83,236,186,38,181,136,98,160,69,102,146,33,116,73,82,113,46,202,242,74,72,190,227,123,149,88,160,95,63,77,129,14,81,253,106,110,43,33,14,170,224,154,241,79,188,245,96,109,169,200,205,185,0,198,129,74,201,204,15,160,44,195,245,24,121,241,189,175,189,8,161,85,234,223,208,222,173,145,128,51,37,26,167,142,4,0,188,151,89,188,167,113,160,55,63,32,94,141,145,145,99,34,93,169,5,190,197,175,242,50,5,19,160,204,52,5,244,234,74,164,87,86,66,63,231,160,217,71,157,58,177,41,102,231,28,191,171,238,246,247,251,91,217,39,245,35,101,57,11,92,107,212,185,234,40,64,13,39,160,190,175,151,197,195,178,105,115,231,174,143,15,193,210,53,89,2,74,176,227,167,100,193,245,118,88,225,161,212,249,214,128,160,91,120,21,32,120,103,112,223,70,19,171,181,141,169,70,15,7,200,242,235,139,220,71,103,148,177,1,218,171,1,201,194,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":6,"drifted_index":6,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,44,170,206,133,150,224,102,18,149,247,178,45,4,51,185,152,182,15,129,98,87,7,217,66,140,196,103,35,93,0,101,219,0],[160,139,87,125,242,116,165,208,189,142,51,124,65,207,245,72,19,50,129,126,183,234,163,41,196,98,235,181,113,125,78,23,166,0],[160,180,204,224,39,117,84,85,112,150,96,196,51,133,26,248,7,34,233,67,138,18,182,213,18,127,14,150,76,240,244,145,158,0],[160,170,238,233,48,72,229,230,237,28,196,147,172,36,81,152,10,162,86,83,206,137,50,134,7,54,77,253,203,201,141,158,109,0],[160,71,154,162,30,110,37,221,206,210,80,69,150,253,234,240,224,29,192,147,238,162,53,114,69,64,12,184,178,211,142,78,251,0],[160,35,118,160,4,170,184,187,169,240,105,112,7,203,59,154,177,87,170,9,108,172,175,119,161,189,253,132,51,123,64,255,99,0],[160,73,24,1,202,216,81,73,9,183,140,40,248,84,18,198,67,137,106,1,83,215,114,217,55,183,50,196,227,85,52,168,19,0],[160,129,103,83,127,82,116,230,206,168,220,218,71,239,39,86,166,136,38,237,137,0,142,199,113,122,193,27,185,199,80,39,137,0],[160,110,167,23,121,182,179,115,241,60,186,83,63,247,41,222,203,160,31,82,180,69,241,203,180,222,83,18,133,218,44,181,72,0],[160,53,183,127,132,148,70,93,129,175,187,105,98,9,141,18,253,57,52,169,211,111,38,155,164,206,139,107,58,32,95,237,73,0],[160,193,53,196,35,150,25,179,161,247,84,155,154,238,201,134,145,77,173,16,132,13,104,220,14,84,32,47,139,111,47,208,81,0],[160,29,106,10,72,101,25,6,228,51,46,147,7,32,88,56,70,155,39,66,49,67,6,117,223,239,218,63,19,197,142,91,46,0],[160,156,41,190,49,2,225,64,58,218,0,15,85,150,222,137,200,185,218,103,180,120,39,25,151,195,239,153,189,101,125,132,253,0],[160,179,84,233,104,7,107,250,152,65,159,163,149,192,123,200,192,65,124,108,200,161,161,15,34,147,230,121,32,222,89,37,105,0],[160,39,126,151,229,15,70,112,195,197,204,14,202,162,72,238,38,56,224,111,207,221,68,33,0,191,66,223,59,187,35,103,242,0],[160,54,230,171,224,204,103,175,10,106,221,149,171,15,184,59,161,77,177,31,2,28,187,141,193,149,222,207,199,218,146,97,230,0],[160,247,168,224,222,36,174,32,171,127,214,65,21,251,96,167,63,103,149,233,214,230,207,193,45,118,58,205,31,60,21,202,223,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,139,87,125,242,116,165,208,189,142,51,124,65,207,245,72,19,50,129,126,183,234,163,41,196,98,235,181,113,125,78,23,166,160,180,204,224,39,117,84,85,112,150,96,196,51,133,26,248,7,34,233,67,138,18,182,213,18,127,14,150,76,240,244,145,158,160,170,238,233,48,72,229,230,237,28,196,147,172,36,81,152,10,162,86,83,206,137,50,134,7,54,77,253,203,201,141,158,109,160,71,154,162,30,110,37,221,206,210,80,69,150,253,234,240,224,29,192,147,238,162,53,114,69,64,12,184,178,211,142,78,251,160,35,118,160,4,170,184,187,169,240,105,112,7,203,59,154,177,87,170,9,108,172,175,119,161,189,253,132,51,123,64,255,99,160,73,24,1,202,216,81,73,9,183,140,40,248,84,18,198,67,137,106,1,83,215,114,217,55,183,50,196,227,85,52,168,19,160,129,103,83,127,82,116,230,206,168,220,218,71,239,39,86,166,136,38,237,137,0,142,199,113,122,193,27,185,199,80,39,137,160,110,167,23,121,182,179,115,241,60,186,83,63,247,41,222,203,160,31,82,180,69,241,203,180,222,83,18,133,218,44,181,72,160,53,183,127,132,148,70,93,129,175,187,105,98,9,141,18,253,57,52,169,211,111,38,155,164,206,139,107,58,32,95,237,73,160,193,53,196,35,150,25,179,161,247,84,155,154,238,201,134,145,77,173,16,132,13,104,220,14,84,32,47,139,111,47,208,81,160,29,106,10,72,101,25,6,228,51,46,147,7,32,88,56,70,155,39,66,49,67,6,117,223,239,218,63,19,197,142,91,46,160,156,41,190,49,2,225,64,58,218,0,15,85,150,222,137,200,185,218,103,180,120,39,25,151,195,239,153,189,101,125,132,253,160,179,84,233,104,7,107,250,152,65,159,163,149,192,123,200,192,65,124,108,200,161,161,15,34,147,230,121,32,222,89,37,105,160,39,126,151,229,15,70,112,195,197,204,14,202,162,72,238,38,56,224,111,207,221,68,33,0,191,66,223,59,187,35,103,242,160,54,230,171,224,204,103,175,10,106,221,149,171,15,184,59,161,77,177,31,2,28,187,141,193,149,222,207,199,218,146,97,230,160,247,168,224,222,36,174,32,171,127,214,65,21,251,96,167,63,103,149,233,214,230,207,193,45,118,58,205,31,60,21,202,223,128],[249,2,17,160,139,87,125,242,116,165,208,189,142,51,124,65,207,245,72,19,50,129,126,183,234,163,41,196,98,235,181,113,125,78,23,166,160,180,204,224,39,117,84,85,112,150,96,196,51,133,26,248,7,34,233,67,138,18,182,213,18,127,14,150,76,240,244,145,158,160,170,238,233,48,72,229,230,237,28,196,147,172,36,81,152,10,162,86,83,206,137,50,134,7,54,77,253,203,201,141,158,109,160,71,154,162,30,110,37,221,206,210,80,69,150,253,234,240,224,29,192,147,238,162,53,114,69,64,12,184,178,211,142,78,251,160,35,118,160,4,170,184,187,169,240,105,112,7,203,59,154,177,87,170,9,108,172,175,119,161,189,253,132,51,123,64,255,99,160,73,24,1,202,216,81,73,9,183,140,40,248,84,18,198,67,137,106,1,83,215,114,217,55,183,50,196,227,85,52,168,19,160,44,170,206,133,150,224,102,18,149,247,178,45,4,51,185,152,182,15,129,98,87,7,217,66,140,196,103,35,93,0,101,219,160,110,167,23,121,182,179,115,241,60,186,83,63,247,41,222,203,160,31,82,180,69,241,203,180,222,83,18,133,218,44,181,72,160,53,183,127,132,148,70,93,129,175,187,105,98,9,141,18,253,57,52,169,211,111,38,155,164,206,139,107,58,32,95,237,73,160,193,53,196,35,150,25,179,161,247,84,155,154,238,201,134,145,77,173,16,132,13,104,220,14,84,32,47,139,111,47,208,81,160,29,106,10,72,101,25,6,228,51,46,147,7,32,88,56,70,155,39,66,49,67,6,117,223,239,218,63,19,197,142,91,46,160,156,41,190,49,2,225,64,58,218,0,15,85,150,222,137,200,185,218,103,180,120,39,25,151,195,239,153,189,101,125,132,253,160,179,84,233,104,7,107,250,152,65,159,163,149,192,123,200,192,65,124,108,200,161,161,15,34,147,230,121,32,222,89,37,105,160,39,126,151,229,15,70,112,195,197,204,14,202,162,72,238,38,56,224,111,207,221,68,33,0,191,66,223,59,187,35,103,242,160,54,230,171,224,204,103,175,10,106,221,149,171,15,184,59,161,77,177,31,2,28,187,141,193,149,222,207,199,218,146,97,230,160,247,168,224,222,36,174,32,171,127,214,65,21,251,96,167,63,103,149,233,214,230,207,193,45,118,58,205,31,60,21,202,223,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,24,235,57,40,228,48,218,25,240,58,122,91,71,45,234,113,203,184,32,245,222,14,27,244,91,16,182,107,168,75,17,119,0],[160,186,120,50,187,77,90,188,101,236,23,224,168,50,233,97,33,8,252,71,148,51,225,65,53,97,165,241,123,79,230,197,226,0],[160,87,249,154,161,87,108,160,38,150,10,71,98,85,108,197,115,179,21,136,210,0,173,99,171,90,120,141,211,85,47,74,9,0],[160,158,194,31,13,66,219,255,194,107,139,155,47,58,233,9,167,34,240,74,55,211,99,136,187,160,57,136,92,162,40,21,185,0],[160,7,22,14,240,96,245,189,81,95,249,98,56,205,118,150,96,240,227,34,134,86,26,90,213,243,83,133,203,87,244,212,14,0],[160,53,107,83,118,132,150,236,108,77,129,218,220,95,143,197,7,147,202,168,6,138,253,71,184,253,169,133,170,48,141,163,142,0],[160,37,182,103,107,119,130,81,38,250,63,164,18,60,40,32,2,117,148,189,194,218,179,3,89,41,173,189,94,78,213,224,44,0],[160,27,156,161,228,42,14,191,152,87,248,156,237,32,25,205,11,240,213,82,138,167,213,162,206,133,224,42,82,84,217,156,179,0],[160,95,192,157,205,29,60,221,215,224,83,139,69,204,148,99,195,15,125,217,102,199,100,60,58,198,193,152,245,109,109,90,216,0],[160,71,177,110,59,171,123,226,64,218,100,157,24,188,213,154,238,160,139,144,42,215,22,177,21,175,39,203,2,120,179,197,246,0],[160,24,119,127,141,163,51,62,104,2,80,64,133,197,69,95,204,142,96,151,164,181,148,211,31,210,37,96,222,226,119,190,165,0],[160,42,69,74,233,51,55,125,49,134,79,5,11,23,237,229,204,137,171,175,160,3,203,122,137,115,53,181,134,199,219,126,34,0],[160,74,232,147,77,242,197,121,16,176,74,164,51,26,128,56,141,247,126,87,115,226,38,144,38,201,225,182,15,114,41,115,179,0],[160,201,238,237,16,208,91,54,223,100,55,122,151,106,126,98,160,227,15,200,75,56,159,162,171,221,66,85,57,131,29,102,74,0],[160,59,15,113,37,211,99,166,201,205,207,197,126,184,63,231,111,129,255,209,35,97,141,32,170,62,131,119,13,151,206,238,208,0],[160,33,169,135,179,81,23,187,79,50,233,198,203,156,155,169,160,147,134,35,173,137,144,76,16,126,247,144,97,30,20,73,178,0],[160,102,2,198,141,178,155,28,113,155,89,204,45,189,203,119,70,36,225,156,195,176,63,61,193,198,13,23,125,53,154,120,43,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,186,120,50,187,77,90,188,101,236,23,224,168,50,233,97,33,8,252,71,148,51,225,65,53,97,165,241,123,79,230,197,226,160,87,249,154,161,87,108,160,38,150,10,71,98,85,108,197,115,179,21,136,210,0,173,99,171,90,120,141,211,85,47,74,9,160,158,194,31,13,66,219,255,194,107,139,155,47,58,233,9,167,34,240,74,55,211,99,136,187,160,57,136,92,162,40,21,185,160,7,22,14,240,96,245,189,81,95,249,98,56,205,118,150,96,240,227,34,134,86,26,90,213,243,83,133,203,87,244,212,14,160,53,107,83,118,132,150,236,108,77,129,218,220,95,143,197,7,147,202,168,6,138,253,71,184,253,169,133,170,48,141,163,142,160,37,182,103,107,119,130,81,38,250,63,164,18,60,40,32,2,117,148,189,194,218,179,3,89,41,173,189,94,78,213,224,44,160,27,156,161,228,42,14,191,152,87,248,156,237,32,25,205,11,240,213,82,138,167,213,162,206,133,224,42,82,84,217,156,179,160,95,192,157,205,29,60,221,215,224,83,139,69,204,148,99,195,15,125,217,102,199,100,60,58,198,193,152,245,109,109,90,216,160,71,177,110,59,171,123,226,64,218,100,157,24,188,213,154,238,160,139,144,42,215,22,177,21,175,39,203,2,120,179,197,246,160,24,119,127,141,163,51,62,104,2,80,64,133,197,69,95,204,142,96,151,164,181,148,211,31,210,37,96,222,226,119,190,165,160,42,69,74,233,51,55,125,49,134,79,5,11,23,237,229,204,137,171,175,160,3,203,122,137,115,53,181,134,199,219,126,34,160,74,232,147,77,242,197,121,16,176,74,164,51,26,128,56,141,247,126,87,115,226,38,144,38,201,225,182,15,114,41,115,179,160,201,238,237,16,208,91,54,223,100,55,122,151,106,126,98,160,227,15,200,75,56,159,162,171,221,66,85,57,131,29,102,74,160,59,15,113,37,211,99,166,201,205,207,197,126,184,63,231,111,129,255,209,35,97,141,32,170,62,131,119,13,151,206,238,208,160,33,169,135,179,81,23,187,79,50,233,198,203,156,155,169,160,147,134,35,173,137,144,76,16,126,247,144,97,30,20,73,178,160,102,2,198,141,178,155,28,113,155,89,204,45,189,203,119,70,36,225,156,195,176,63,61,193,198,13,23,125,53,154,120,43,128],[249,2,17,160,186,120,50,187,77,90,188,101,236,23,224,168,50,233,97,33,8,252,71,148,51,225,65,53,97,165,241,123,79,230,197,226,160,87,249,154,161,87,108,160,38,150,10,71,98,85,108,197,115,179,21,136,210,0,173,99,171,90,120,141,211,85,47,74,9,160,158,194,31,13,66,219,255,194,107,139,155,47,58,233,9,167,34,240,74,55,211,99,136,187,160,57,136,92,162,40,21,185,160,7,22,14,240,96,245,189,81,95,249,98,56,205,118,150,96,240,227,34,134,86,26,90,213,243,83,133,203,87,244,212,14,160,53,107,83,118,132,150,236,108,77,129,218,220,95,143,197,7,147,202,168,6,138,253,71,184,253,169,133,170,48,141,163,142,160,37,182,103,107,119,130,81,38,250,63,164,18,60,40,32,2,117,148,189,194,218,179,3,89,41,173,189,94,78,213,224,44,160,27,156,161,228,42,14,191,152,87,248,156,237,32,25,205,11,240,213,82,138,167,213,162,206,133,224,42,82,84,217,156,179,160,95,192,157,205,29,60,221,215,224,83,139,69,204,148,99,195,15,125,217,102,199,100,60,58,198,193,152,245,109,109,90,216,160,71,177,110,59,171,123,226,64,218,100,157,24,188,213,154,238,160,139,144,42,215,22,177,21,175,39,203,2,120,179,197,246,160,24,119,127,141,163,51,62,104,2,80,64,133,197,69,95,204,142,96,151,164,181,148,211,31,210,37,96,222,226,119,190,165,160,24,235,57,40,228,48,218,25,240,58,122,91,71,45,234,113,203,184,32,245,222,14,27,244,91,16,182,107,168,75,17,119,160,74,232,147,77,242,197,121,16,176,74,164,51,26,128,56,141,247,126,87,115,226,38,144,38,201,225,182,15,114,41,115,179,160,201,238,237,16,208,91,54,223,100,55,122,151,106,126,98,160,227,15,200,75,56,159,162,171,221,66,85,57,131,29,102,74,160,59,15,113,37,211,99,166,201,205,207,197,126,184,63,231,111,129,255,209,35,97,141,32,170,62,131,119,13,151,206,238,208,160,33,169,135,179,81,23,187,79,50,233,198,203,156,155,169,160,147,134,35,173,137,144,76,16,126,247,144,97,30,20,73,178,160,102,2,198,141,178,155,28,113,155,89,204,45,189,203,119,70,36,225,156,195,176,63,61,193,198,13,23,125,53,154,120,43,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":6,"drifted_index":6,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,219,96,122,115,226,97,154,132,68,248,39,70,155,139,139,71,27,90,7,213,57,170,62,184,16,30,145,140,178,47,68,144,0],[160,224,125,102,123,183,190,76,240,80,150,72,55,49,27,152,3,145,181,23,228,121,1,125,91,111,149,48,136,145,243,118,75,0],[160,16,45,78,125,107,92,17,100,182,41,159,253,210,223,148,148,118,85,163,229,210,117,94,191,90,199,209,157,0,45,12,94,0],[160,135,204,214,122,72,22,138,20,226,31,197,27,55,221,40,18,76,166,172,114,135,50,230,36,182,115,167,224,1,89,241,249,0],[160,18,9,87,230,106,92,117,196,38,50,108,201,168,246,157,252,172,161,104,104,69,186,128,168,250,61,34,34,140,44,38,252,0],[160,242,88,126,18,229,21,213,202,133,171,52,72,15,80,243,141,174,198,127,223,103,206,97,52,146,164,167,100,250,0,5,170,0],[160,140,93,78,229,19,235,65,234,232,74,57,148,253,185,175,120,242,140,182,199,32,230,6,127,233,243,137,156,221,201,2,208,0],[160,207,145,8,113,104,80,200,249,25,156,71,69,100,199,215,231,208,144,224,51,149,195,70,84,132,70,110,198,60,215,179,86,0],[160,100,123,24,104,228,153,81,134,31,178,215,239,57,76,131,204,50,15,92,230,212,237,157,117,129,190,111,248,242,97,16,149,0],[160,17,230,165,122,150,80,107,10,226,20,164,12,154,129,31,207,26,59,65,180,212,177,145,121,65,106,73,111,217,116,4,57,0],[160,249,99,44,90,113,150,184,202,77,110,150,4,27,72,115,42,22,126,226,205,5,62,83,224,62,30,59,121,247,152,50,122,0],[160,93,55,116,72,40,251,109,115,84,167,198,118,25,89,85,119,186,188,163,40,152,4,181,235,91,142,98,53,190,29,162,212,0],[160,216,114,84,193,79,74,28,121,215,157,202,47,207,132,102,47,228,52,41,28,199,222,56,49,84,102,15,240,4,177,201,13,0],[160,38,11,71,185,180,81,53,82,226,200,59,192,164,62,61,62,211,118,86,79,61,227,194,64,192,217,227,11,50,195,45,125,0],[160,152,45,63,210,126,121,44,158,246,180,28,21,141,134,125,254,177,233,180,103,3,122,24,217,158,217,101,7,195,34,30,225,0],[160,111,94,174,37,212,36,95,243,92,94,153,8,241,110,254,148,224,198,147,144,15,28,35,183,171,90,166,36,14,116,22,114,0],[160,91,247,135,40,23,214,173,50,15,119,96,7,26,236,163,154,124,246,185,56,62,170,162,213,33,138,21,60,178,192,112,255,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,224,125,102,123,183,190,76,240,80,150,72,55,49,27,152,3,145,181,23,228,121,1,125,91,111,149,48,136,145,243,118,75,160,16,45,78,125,107,92,17,100,182,41,159,253,210,223,148,148,118,85,163,229,210,117,94,191,90,199,209,157,0,45,12,94,160,135,204,214,122,72,22,138,20,226,31,197,27,55,221,40,18,76,166,172,114,135,50,230,36,182,115,167,224,1,89,241,249,160,18,9,87,230,106,92,117,196,38,50,108,201,168,246,157,252,172,161,104,104,69,186,128,168,250,61,34,34,140,44,38,252,160,242,88,126,18,229,21,213,202,133,171,52,72,15,80,243,141,174,198,127,223,103,206,97,52,146,164,167,100,250,0,5,170,160,140,93,78,229,19,235,65,234,232,74,57,148,253,185,175,120,242,140,182,199,32,230,6,127,233,243,137,156,221,201,2,208,160,207,145,8,113,104,80,200,249,25,156,71,69,100,199,215,231,208,144,224,51,149,195,70,84,132,70,110,198,60,215,179,86,160,100,123,24,104,228,153,81,134,31,178,215,239,57,76,131,204,50,15,92,230,212,237,157,117,129,190,111,248,242,97,16,149,160,17,230,165,122,150,80,107,10,226,20,164,12,154,129,31,207,26,59,65,180,212,177,145,121,65,106,73,111,217,116,4,57,160,249,99,44,90,113,150,184,202,77,110,150,4,27,72,115,42,22,126,226,205,5,62,83,224,62,30,59,121,247,152,50,122,160,93,55,116,72,40,251,109,115,84,167,198,118,25,89,85,119,186,188,163,40,152,4,181,235,91,142,98,53,190,29,162,212,160,216,114,84,193,79,74,28,121,215,157,202,47,207,132,102,47,228,52,41,28,199,222,56,49,84,102,15,240,4,177,201,13,160,38,11,71,185,180,81,53,82,226,200,59,192,164,62,61,62,211,118,86,79,61,227,194,64,192,217,227,11,50,195,45,125,160,152,45,63,210,126,121,44,158,246,180,28,21,141,134,125,254,177,233,180,103,3,122,24,217,158,217,101,7,195,34,30,225,160,111,94,174,37,212,36,95,243,92,94,153,8,241,110,254,148,224,198,147,144,15,28,35,183,171,90,166,36,14,116,22,114,160,91,247,135,40,23,214,173,50,15,119,96,7,26,236,163,154,124,246,185,56,62,170,162,213,33,138,21,60,178,192,112,255,128],[249,2,17,160,224,125,102,123,183,190,76,240,80,150,72,55,49,27,152,3,145,181,23,228,121,1,125,91,111,149,48,136,145,243,118,75,160,16,45,78,125,107,92,17,100,182,41,159,253,210,223,148,148,118,85,163,229,210,117,94,191,90,199,209,157,0,45,12,94,160,135,204,214,122,72,22,138,20,226,31,197,27,55,221,40,18,76,166,172,114,135,50,230,36,182,115,167,224,1,89,241,249,160,18,9,87,230,106,92,117,196,38,50,108,201,168,246,157,252,172,161,104,104,69,186,128,168,250,61,34,34,140,44,38,252,160,242,88,126,18,229,21,213,202,133,171,52,72,15,80,243,141,174,198,127,223,103,206,97,52,146,164,167,100,250,0,5,170,160,140,93,78,229,19,235,65,234,232,74,57,148,253,185,175,120,242,140,182,199,32,230,6,127,233,243,137,156,221,201,2,208,160,219,96,122,115,226,97,154,132,68,248,39,70,155,139,139,71,27,90,7,213,57,170,62,184,16,30,145,140,178,47,68,144,160,100,123,24,104,228,153,81,134,31,178,215,239,57,76,131,204,50,15,92,230,212,237,157,117,129,190,111,248,242,97,16,149,160,17,230,165,122,150,80,107,10,226,20,164,12,154,129,31,207,26,59,65,180,212,177,145,121,65,106,73,111,217,116,4,57,160,249,99,44,90,113,150,184,202,77,110,150,4,27,72,115,42,22,126,226,205,5,62,83,224,62,30,59,121,247,152,50,122,160,93,55,116,72,40,251,109,115,84,167,198,118,25,89,85,119,186,188,163,40,152,4,181,235,91,142,98,53,190,29,162,212,160,216,114,84,193,79,74,28,121,215,157,202,47,207,132,102,47,228,52,41,28,199,222,56,49,84,102,15,240,4,177,201,13,160,38,11,71,185,180,81,53,82,226,200,59,192,164,62,61,62,211,118,86,79,61,227,194,64,192,217,227,11,50,195,45,125,160,152,45,63,210,126,121,44,158,246,180,28,21,141,134,125,254,177,233,180,103,3,122,24,217,158,217,101,7,195,34,30,225,160,111,94,174,37,212,36,95,243,92,94,153,8,241,110,254,148,224,198,147,144,15,28,35,183,171,90,166,36,14,116,22,114,160,91,247,135,40,23,214,173,50,15,119,96,7,26,236,163,154,124,246,185,56,62,170,162,213,33,138,21,60,178,192,112,255,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,161,97,160,22,221,241,157,38,227,108,127,210,79,134,23,132,32,189,106,78,25,236,195,163,217,219,97,128,159,96,180,189,0],[160,69,111,93,97,16,10,85,79,112,187,177,173,107,36,208,199,70,69,49,204,155,166,132,6,103,17,52,210,244,231,166,214,0],[160,104,218,247,233,65,160,14,254,179,240,12,33,141,176,116,30,75,151,217,123,99,26,89,142,135,39,255,107,146,54,96,2,0],[160,34,6,56,163,188,214,134,47,143,78,51,197,151,237,211,183,161,133,209,12,200,150,86,248,224,14,36,169,174,141,243,115,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,187,8,33,80,96,206,196,250,134,134,112,42,91,42,57,171,4,137,203,82,72,146,26,225,5,84,122,184,204,86,157,49,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,23,153,85,176,241,174,136,189,104,158,131,95,184,160,5,221,130,113,181,30,249,40,22,18,52,16,116,49,223,13,17,123,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,19,115,77,235,127,68,44,78,62,74,164,234,167,26,189,226,50,203,156,107,145,45,147,193,53,225,78,87,254,134,171,180,0],[160,210,18,153,129,9,16,109,118,224,110,219,219,227,254,219,187,210,121,21,214,121,115,230,154,173,190,226,160,131,181,148,83,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,197,44,219,124,244,146,81,14,102,63,55,83,8,179,18,25,9,155,204,135,154,73,231,38,118,138,238,135,249,177,241,54,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,160,69,111,93,97,16,10,85,79,112,187,177,173,107,36,208,199,70,69,49,204,155,166,132,6,103,17,52,210,244,231,166,214,160,104,218,247,233,65,160,14,254,179,240,12,33,141,176,116,30,75,151,217,123,99,26,89,142,135,39,255,107,146,54,96,2,160,34,6,56,163,188,214,134,47,143,78,51,197,151,237,211,183,161,133,209,12,200,150,86,248,224,14,36,169,174,141,243,115,128,128,160,187,8,33,80,96,206,196,250,134,134,112,42,91,42,57,171,4,137,203,82,72,146,26,225,5,84,122,184,204,86,157,49,128,128,128,128,160,23,153,85,176,241,174,136,189,104,158,131,95,184,160,5,221,130,113,181,30,249,40,22,18,52,16,116,49,223,13,17,123,128,160,19,115,77,235,127,68,44,78,62,74,164,234,167,26,189,226,50,203,156,107,145,45,147,193,53,225,78,87,254,134,171,180,160,210,18,153,129,9,16,109,118,224,110,219,219,227,254,219,187,210,121,21,214,121,115,230,154,173,190,226,160,131,181,148,83,128,160,197,44,219,124,244,146,81,14,102,63,55,83,8,179,18,25,9,155,204,135,154,73,231,38,118,138,238,135,249,177,241,54,128],[249,1,17,160,69,111,93,97,16,10,85,79,112,187,177,173,107,36,208,199,70,69,49,204,155,166,132,6,103,17,52,210,244,231,166,214,160,104,218,247,233,65,160,14,254,179,240,12,33,141,176,116,30,75,151,217,123,99,26,89,142,135,39,255,107,146,54,96,2,160,34,6,56,163,188,214,134,47,143,78,51,197,151,237,211,183,161,133,209,12,200,150,86,248,224,14,36,169,174,141,243,115,128,128,160,187,8,33,80,96,206,196,250,134,134,112,42,91,42,57,171,4,137,203,82,72,146,26,225,5,84,122,184,204,86,157,49,128,128,128,128,160,23,153,85,176,241,174,136,189,104,158,131,95,184,160,5,221,130,113,181,30,249,40,22,18,52,16,116,49,223,13,17,123,128,160,19,115,77,235,127,68,44,78,62,74,164,234,167,26,189,226,50,203,156,107,145,45,147,193,53,225,78,87,254,134,171,180,160,161,97,160,22,221,241,157,38,227,108,127,210,79,134,23,132,32,189,106,78,25,236,195,163,217,219,97,128,159,96,180,189,128,160,197,44,219,124,244,146,81,14,102,63,55,83,8,179,18,25,9,155,204,135,154,73,231,38,118,138,238,135,249,177,241,54,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,172,239,18,160,24,131,194,179,252,87,149,120,38,223,78,36,232,177,156],"key":[170,70,166,220,65,240,27,213,104,207,131,191,50,93,7,12,58,101,202,54,249,141,201,161,159,238,126,8,87,174,206,104],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,60,65,240,27,213,104,207,131,191,50,93,7,12,58,101,202,54,249,141,201,161,159,238,126,8,87,174,206,104,0,0,0,0],[157,60,65,240,27,213,104,207,131,191,50,93,7,12,58,101,202,54,249,141,201,161,159,238,126,8,87,174,206,104,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,243,180,122,255,168,251,76,111,113,241,104,225,225,93,38,173,150,5,201,44,175,118,224,190,143,85,238,209,187,163,73,26,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,230,235,123,177,163,228,229,179,247,255,57,207,119,20,69,202,176,46,215,201,51,244,181,163,154,131,7,136,178,184,167,94,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,60,65,240,27,213,104,207,131,191,50,93,7,12,58,101,202,54,249,141,201,161,159,238,126,8,87,174,206,104,0,0,0,0]],"keccak_data":[[248,102,157,60,65,240,27,213,104,207,131,191,50,93,7,12,58,101,202,54,249,141,201,161,159,238,126,8,87,174,206,104,184,70,248,68,128,128,160,243,180,122,255,168,251,76,111,113,241,104,225,225,93,38,173,150,5,201,44,175,118,224,190,143,85,238,209,187,163,73,26,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,60,65,240,27,213,104,207,131,191,50,93,7,12,58,101,202,54,249,141,201,161,159,238,126,8,87,174,206,104,184,70,248,68,128,128,160,230,235,123,177,163,228,229,179,247,255,57,207,119,20,69,202,176,46,215,201,51,244,181,163,154,131,7,136,178,184,167,94,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,172,239,18,160,24,131,194,179,252,87,149,120,38,223,78,36,232,177,156]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,2,181,237,96,137,204,229,65,148,3,108,66,200,41,116,147,205,184,82,98,155,193,196,211,48,20,43,105,98,25,162,58,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,242,180,228,187,147,246,33,143,128,29,243,225,170,107,37,128,253,77,222,159,38,5,104,197,96,11,130,42,56,11,208,21,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,51,211,230,140,132,150,119,250,25,123,206,227,49,78,34,35,22,71,85,31,180,179,128,72,6,170,22,74,193,10,55,116,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,160,242,180,228,187,147,246,33,143,128,29,243,225,170,107,37,128,253,77,222,159,38,5,104,197,96,11,130,42,56,11,208,21,128,128,128,128,128,128,128,160,51,211,230,140,132,150,119,250,25,123,206,227,49,78,34,35,22,71,85,31,180,179,128,72,6,170,22,74,193,10,55,116,128,128,128,128,128],[248,81,128,128,128,160,2,181,237,96,137,204,229,65,148,3,108,66,200,41,116,147,205,184,82,98,155,193,196,211,48,20,43,105,98,25,162,58,128,128,128,128,128,128,128,160,51,211,230,140,132,150,119,250,25,123,206,227,49,78,34,35,22,71,85,31,180,179,128,72,6,170,22,74,193,10,55,116,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[true,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":1,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,87,140,155,251,104,101,201,226,15,40,12,22,9,91,117,120,141,24,241,193,116,100,159,216,20,110,207,95,24,36,55,129,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,236,175,157,122,15,115,242,218,138,108,219,108,108,164,199,183,140,143,182,0,50,40,63,167,62,12,160,144,76,102,29,49,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,87,140,155,251,104,101,201,226,15,40,12,22,9,91,117,120,141,24,241,193,116,100,159,216,20,110,207,95,24,36,55,129,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,160,236,175,157,122,15,115,242,218,138,108,219,108,108,164,199,183,140,143,182,0,50,40,63,167,62,12,160,144,76,102,29,49,128,128,128,128,128,128,128,128,160,87,140,155,251,104,101,201,226,15,40,12,22,9,91,117,120,141,24,241,193,116,100,159,216,20,110,207,95,24,36,55,129,128,128,128,128,128,128],[248,81,128,160,236,175,157,122,15,115,242,218,138,108,219,108,108,164,199,183,140,143,182,0,50,40,63,167,62,12,160,144,76,102,29,49,128,128,128,128,128,128,128,128,160,87,140,155,251,104,101,201,226,15,40,12,22,9,91,117,120,141,24,241,193,116,100,159,216,20,110,207,95,24,36,55,129,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33],"key":[58,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112],"list_rlp_bytes":[[248,67],[226]],"value_rlp_bytes":[[161],[17]],"drifted_rlp_bytes":[248,67],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,0],[160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170,0],[160,32,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,67,160,49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,161,160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170],[226,160,32,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33],[248,67,160,32,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,161,160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/AddBranchTwoLevels.json b/zkevm-circuits/src/mpt_circuit/tests/AddBranchTwoLevels.json new file mode 100644 index 0000000000..aad7fd5914 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/AddBranchTwoLevels.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,201,228,18,179,240,82,231,83,54,47,62,117,59,126,146,28,150,38,76,152,189,10,69,99,104,27,116,170,60,11,158,51,0],[160,208,193,232,216,8,188,132,107,44,214,168,120,123,11,46,92,238,130,134,144,10,237,75,112,45,59,50,167,104,58,48,162,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,149,161,91,255,166,107,211,109,201,181,29,3,168,216,148,79,133,65,209,27,183,118,174,170,39,244,41,56,105,167,218,7,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,145,202,59,207,184,181,204,132,169,168,91,160,60,211,50,107,15,165,139,101,74,251,148,249,104,241,86,141,45,8,202,214,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,145,202,59,207,184,181,204,132,169,168,91,160,60,211,50,107,15,165,139,101,74,251,148,249,104,241,86,141,45,8,202,214,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,149,161,91,255,166,107,211,109,201,181,29,3,168,216,148,79,133,65,209,27,183,118,174,170,39,244,41,56,105,167,218,7,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":2,"drifted_index":2,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,112,186,4,211,18,132,74,91,28,166,139,239,103,168,15,42,189,31,135,248,209,138,187,176,92,23,33,244,36,94,133,43,0],[160,8,82,228,160,236,167,211,34,103,186,143,82,159,227,56,83,90,137,189,168,42,104,95,52,183,148,255,215,136,52,73,231,0],[160,84,120,210,249,75,139,182,38,44,242,80,181,2,165,43,146,17,155,131,187,29,254,176,179,119,232,197,70,165,227,43,64,0],[160,66,176,214,86,219,235,246,79,146,165,186,87,19,252,29,241,232,94,27,41,38,92,119,251,106,91,208,170,224,29,160,248,0],[160,59,143,74,53,247,240,239,138,121,223,75,218,127,28,117,171,91,193,129,250,204,248,51,157,35,23,2,179,196,54,170,46,0],[160,157,90,51,248,241,223,224,87,67,255,188,60,98,138,52,58,248,0,103,191,25,93,87,196,48,17,193,91,196,174,84,68,0],[160,37,36,38,176,196,202,58,86,76,239,236,180,113,34,151,66,223,175,221,244,2,135,167,81,134,210,144,189,210,100,169,46,0],[160,246,249,160,14,73,156,38,98,129,209,255,124,122,147,16,52,200,78,213,139,162,204,164,40,13,165,111,148,15,31,205,20,0],[160,196,63,137,26,203,165,150,154,136,200,90,27,244,146,124,13,112,147,170,137,82,86,194,212,83,213,250,77,122,235,81,108,0],[160,23,72,191,114,109,241,153,152,28,181,114,222,27,12,163,170,167,243,68,76,13,193,8,43,209,0,251,139,245,110,12,200,0],[160,162,242,12,159,239,231,230,109,155,112,235,20,28,190,163,94,48,238,186,27,192,248,95,119,246,213,205,3,106,83,34,57,0],[160,98,128,143,73,77,78,229,115,157,26,53,223,153,171,114,69,45,174,24,124,45,42,137,236,225,137,107,235,241,54,22,248,0],[160,28,67,53,54,154,2,91,141,228,22,200,27,178,90,210,209,195,121,126,22,72,172,98,207,112,253,149,202,240,32,170,32,0],[160,77,183,169,108,222,80,160,149,46,20,80,223,164,78,82,196,134,47,182,103,106,44,118,54,158,56,222,196,13,46,87,30,0],[160,105,251,188,224,72,188,242,142,5,202,96,164,238,163,221,166,92,66,41,9,240,19,219,203,186,100,64,23,163,241,100,34,0],[160,212,11,254,245,171,103,142,93,36,18,140,32,235,44,80,118,39,4,204,104,121,151,119,6,247,81,40,129,44,210,223,100,0],[160,70,28,143,53,189,11,148,71,98,61,108,214,101,187,1,240,58,157,104,142,179,155,185,249,28,6,177,21,81,199,24,148,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,8,82,228,160,236,167,211,34,103,186,143,82,159,227,56,83,90,137,189,168,42,104,95,52,183,148,255,215,136,52,73,231,160,84,120,210,249,75,139,182,38,44,242,80,181,2,165,43,146,17,155,131,187,29,254,176,179,119,232,197,70,165,227,43,64,160,66,176,214,86,219,235,246,79,146,165,186,87,19,252,29,241,232,94,27,41,38,92,119,251,106,91,208,170,224,29,160,248,160,59,143,74,53,247,240,239,138,121,223,75,218,127,28,117,171,91,193,129,250,204,248,51,157,35,23,2,179,196,54,170,46,160,157,90,51,248,241,223,224,87,67,255,188,60,98,138,52,58,248,0,103,191,25,93,87,196,48,17,193,91,196,174,84,68,160,37,36,38,176,196,202,58,86,76,239,236,180,113,34,151,66,223,175,221,244,2,135,167,81,134,210,144,189,210,100,169,46,160,246,249,160,14,73,156,38,98,129,209,255,124,122,147,16,52,200,78,213,139,162,204,164,40,13,165,111,148,15,31,205,20,160,196,63,137,26,203,165,150,154,136,200,90,27,244,146,124,13,112,147,170,137,82,86,194,212,83,213,250,77,122,235,81,108,160,23,72,191,114,109,241,153,152,28,181,114,222,27,12,163,170,167,243,68,76,13,193,8,43,209,0,251,139,245,110,12,200,160,162,242,12,159,239,231,230,109,155,112,235,20,28,190,163,94,48,238,186,27,192,248,95,119,246,213,205,3,106,83,34,57,160,98,128,143,73,77,78,229,115,157,26,53,223,153,171,114,69,45,174,24,124,45,42,137,236,225,137,107,235,241,54,22,248,160,28,67,53,54,154,2,91,141,228,22,200,27,178,90,210,209,195,121,126,22,72,172,98,207,112,253,149,202,240,32,170,32,160,77,183,169,108,222,80,160,149,46,20,80,223,164,78,82,196,134,47,182,103,106,44,118,54,158,56,222,196,13,46,87,30,160,105,251,188,224,72,188,242,142,5,202,96,164,238,163,221,166,92,66,41,9,240,19,219,203,186,100,64,23,163,241,100,34,160,212,11,254,245,171,103,142,93,36,18,140,32,235,44,80,118,39,4,204,104,121,151,119,6,247,81,40,129,44,210,223,100,160,70,28,143,53,189,11,148,71,98,61,108,214,101,187,1,240,58,157,104,142,179,155,185,249,28,6,177,21,81,199,24,148,128],[249,2,17,160,8,82,228,160,236,167,211,34,103,186,143,82,159,227,56,83,90,137,189,168,42,104,95,52,183,148,255,215,136,52,73,231,160,84,120,210,249,75,139,182,38,44,242,80,181,2,165,43,146,17,155,131,187,29,254,176,179,119,232,197,70,165,227,43,64,160,112,186,4,211,18,132,74,91,28,166,139,239,103,168,15,42,189,31,135,248,209,138,187,176,92,23,33,244,36,94,133,43,160,59,143,74,53,247,240,239,138,121,223,75,218,127,28,117,171,91,193,129,250,204,248,51,157,35,23,2,179,196,54,170,46,160,157,90,51,248,241,223,224,87,67,255,188,60,98,138,52,58,248,0,103,191,25,93,87,196,48,17,193,91,196,174,84,68,160,37,36,38,176,196,202,58,86,76,239,236,180,113,34,151,66,223,175,221,244,2,135,167,81,134,210,144,189,210,100,169,46,160,246,249,160,14,73,156,38,98,129,209,255,124,122,147,16,52,200,78,213,139,162,204,164,40,13,165,111,148,15,31,205,20,160,196,63,137,26,203,165,150,154,136,200,90,27,244,146,124,13,112,147,170,137,82,86,194,212,83,213,250,77,122,235,81,108,160,23,72,191,114,109,241,153,152,28,181,114,222,27,12,163,170,167,243,68,76,13,193,8,43,209,0,251,139,245,110,12,200,160,162,242,12,159,239,231,230,109,155,112,235,20,28,190,163,94,48,238,186,27,192,248,95,119,246,213,205,3,106,83,34,57,160,98,128,143,73,77,78,229,115,157,26,53,223,153,171,114,69,45,174,24,124,45,42,137,236,225,137,107,235,241,54,22,248,160,28,67,53,54,154,2,91,141,228,22,200,27,178,90,210,209,195,121,126,22,72,172,98,207,112,253,149,202,240,32,170,32,160,77,183,169,108,222,80,160,149,46,20,80,223,164,78,82,196,134,47,182,103,106,44,118,54,158,56,222,196,13,46,87,30,160,105,251,188,224,72,188,242,142,5,202,96,164,238,163,221,166,92,66,41,9,240,19,219,203,186,100,64,23,163,241,100,34,160,212,11,254,245,171,103,142,93,36,18,140,32,235,44,80,118,39,4,204,104,121,151,119,6,247,81,40,129,44,210,223,100,160,70,28,143,53,189,11,148,71,98,61,108,214,101,187,1,240,58,157,104,142,179,155,185,249,28,6,177,21,81,199,24,148,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,223,170,245,164,159,246,210,159,143,187,69,29,30,101,1,144,13,186,67,137,102,247,134,6,51,66,76,202,229,100,195,149,0],[160,168,126,56,172,52,80,132,112,1,188,219,81,217,108,235,7,91,204,43,236,215,105,173,157,145,80,34,82,55,220,6,4,0],[160,49,189,156,252,156,179,158,251,245,11,39,223,233,40,65,238,184,147,239,253,181,166,105,248,147,9,89,244,120,71,174,20,0],[160,195,115,141,170,173,52,245,52,31,74,14,89,252,57,189,36,230,166,20,149,114,254,243,113,188,73,132,188,245,78,147,25,0],[160,133,216,29,177,161,41,173,111,13,71,224,248,184,244,103,21,96,18,215,93,103,42,140,119,223,225,179,108,10,46,149,23,0],[160,194,131,169,76,107,159,220,165,83,180,204,162,16,19,217,10,236,206,115,161,127,201,244,202,117,242,103,5,213,175,135,247,0],[160,120,189,110,224,246,156,1,95,180,13,4,129,40,192,25,18,89,112,162,93,21,22,28,16,148,27,242,99,96,131,149,79,0],[160,237,201,89,61,216,110,186,41,166,158,143,10,217,102,106,50,128,108,211,150,129,159,26,24,139,181,36,30,4,54,106,11,0],[160,6,241,221,233,8,139,132,65,112,147,181,232,88,6,190,130,244,172,109,157,2,96,131,112,102,148,235,42,79,232,68,49,0],[160,141,220,206,44,156,245,60,193,180,173,93,108,244,203,140,68,29,146,164,39,103,95,123,114,59,230,135,99,56,195,226,188,0],[160,122,176,79,76,231,6,192,71,125,137,35,14,11,17,13,68,13,123,157,118,226,85,157,147,74,107,236,194,2,129,105,70,0],[160,94,103,30,170,252,117,166,208,167,61,182,8,167,253,123,99,246,189,201,245,37,253,233,96,39,29,233,8,154,197,206,95,0],[160,210,39,52,242,60,98,181,196,59,237,8,104,28,126,18,121,21,216,78,48,138,197,74,188,160,152,85,192,243,122,161,35,0],[160,51,49,162,128,8,49,122,112,39,198,26,106,94,128,28,238,67,58,72,85,69,26,27,70,29,186,248,140,226,148,239,118,0],[160,156,178,57,38,104,169,53,185,101,17,189,184,191,112,223,240,47,93,133,175,180,20,15,37,226,109,55,194,69,121,17,121,0],[160,19,224,113,201,255,129,36,52,57,214,92,241,118,205,0,170,227,47,102,227,218,116,110,128,178,11,110,204,252,77,100,200,0],[160,78,196,70,119,146,143,203,161,239,235,187,146,102,7,199,230,178,254,232,34,29,97,160,25,144,219,65,110,19,147,191,178,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,168,126,56,172,52,80,132,112,1,188,219,81,217,108,235,7,91,204,43,236,215,105,173,157,145,80,34,82,55,220,6,4,160,49,189,156,252,156,179,158,251,245,11,39,223,233,40,65,238,184,147,239,253,181,166,105,248,147,9,89,244,120,71,174,20,160,195,115,141,170,173,52,245,52,31,74,14,89,252,57,189,36,230,166,20,149,114,254,243,113,188,73,132,188,245,78,147,25,160,133,216,29,177,161,41,173,111,13,71,224,248,184,244,103,21,96,18,215,93,103,42,140,119,223,225,179,108,10,46,149,23,160,194,131,169,76,107,159,220,165,83,180,204,162,16,19,217,10,236,206,115,161,127,201,244,202,117,242,103,5,213,175,135,247,160,120,189,110,224,246,156,1,95,180,13,4,129,40,192,25,18,89,112,162,93,21,22,28,16,148,27,242,99,96,131,149,79,160,237,201,89,61,216,110,186,41,166,158,143,10,217,102,106,50,128,108,211,150,129,159,26,24,139,181,36,30,4,54,106,11,160,6,241,221,233,8,139,132,65,112,147,181,232,88,6,190,130,244,172,109,157,2,96,131,112,102,148,235,42,79,232,68,49,160,141,220,206,44,156,245,60,193,180,173,93,108,244,203,140,68,29,146,164,39,103,95,123,114,59,230,135,99,56,195,226,188,160,122,176,79,76,231,6,192,71,125,137,35,14,11,17,13,68,13,123,157,118,226,85,157,147,74,107,236,194,2,129,105,70,160,94,103,30,170,252,117,166,208,167,61,182,8,167,253,123,99,246,189,201,245,37,253,233,96,39,29,233,8,154,197,206,95,160,210,39,52,242,60,98,181,196,59,237,8,104,28,126,18,121,21,216,78,48,138,197,74,188,160,152,85,192,243,122,161,35,160,51,49,162,128,8,49,122,112,39,198,26,106,94,128,28,238,67,58,72,85,69,26,27,70,29,186,248,140,226,148,239,118,160,156,178,57,38,104,169,53,185,101,17,189,184,191,112,223,240,47,93,133,175,180,20,15,37,226,109,55,194,69,121,17,121,160,19,224,113,201,255,129,36,52,57,214,92,241,118,205,0,170,227,47,102,227,218,116,110,128,178,11,110,204,252,77,100,200,160,78,196,70,119,146,143,203,161,239,235,187,146,102,7,199,230,178,254,232,34,29,97,160,25,144,219,65,110,19,147,191,178,128],[249,2,17,160,168,126,56,172,52,80,132,112,1,188,219,81,217,108,235,7,91,204,43,236,215,105,173,157,145,80,34,82,55,220,6,4,160,49,189,156,252,156,179,158,251,245,11,39,223,233,40,65,238,184,147,239,253,181,166,105,248,147,9,89,244,120,71,174,20,160,195,115,141,170,173,52,245,52,31,74,14,89,252,57,189,36,230,166,20,149,114,254,243,113,188,73,132,188,245,78,147,25,160,133,216,29,177,161,41,173,111,13,71,224,248,184,244,103,21,96,18,215,93,103,42,140,119,223,225,179,108,10,46,149,23,160,194,131,169,76,107,159,220,165,83,180,204,162,16,19,217,10,236,206,115,161,127,201,244,202,117,242,103,5,213,175,135,247,160,120,189,110,224,246,156,1,95,180,13,4,129,40,192,25,18,89,112,162,93,21,22,28,16,148,27,242,99,96,131,149,79,160,237,201,89,61,216,110,186,41,166,158,143,10,217,102,106,50,128,108,211,150,129,159,26,24,139,181,36,30,4,54,106,11,160,6,241,221,233,8,139,132,65,112,147,181,232,88,6,190,130,244,172,109,157,2,96,131,112,102,148,235,42,79,232,68,49,160,141,220,206,44,156,245,60,193,180,173,93,108,244,203,140,68,29,146,164,39,103,95,123,114,59,230,135,99,56,195,226,188,160,122,176,79,76,231,6,192,71,125,137,35,14,11,17,13,68,13,123,157,118,226,85,157,147,74,107,236,194,2,129,105,70,160,94,103,30,170,252,117,166,208,167,61,182,8,167,253,123,99,246,189,201,245,37,253,233,96,39,29,233,8,154,197,206,95,160,210,39,52,242,60,98,181,196,59,237,8,104,28,126,18,121,21,216,78,48,138,197,74,188,160,152,85,192,243,122,161,35,160,51,49,162,128,8,49,122,112,39,198,26,106,94,128,28,238,67,58,72,85,69,26,27,70,29,186,248,140,226,148,239,118,160,156,178,57,38,104,169,53,185,101,17,189,184,191,112,223,240,47,93,133,175,180,20,15,37,226,109,55,194,69,121,17,121,160,223,170,245,164,159,246,210,159,143,187,69,29,30,101,1,144,13,186,67,137,102,247,134,6,51,66,76,202,229,100,195,149,160,78,196,70,119,146,143,203,161,239,235,187,146,102,7,199,230,178,254,232,34,29,97,160,25,144,219,65,110,19,147,191,178,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,252,217,31,98,213,2,184,117,159,197,191,162,34,191,237,19,48,173,185,206,42,131,123,246,215,37,157,170,129,2,159,79,0],[160,136,158,2,226,205,39,53,200,113,213,65,23,18,60,36,104,196,248,107,177,74,40,48,252,36,63,161,52,146,149,218,244,0],[160,146,211,70,53,89,117,233,193,185,246,151,53,11,162,117,5,124,156,178,211,34,175,70,111,143,66,148,118,201,72,100,140,0],[160,178,89,45,115,255,109,177,92,13,91,154,240,84,96,101,35,213,60,49,208,153,59,107,203,226,66,205,62,68,3,113,137,0],[160,166,85,24,235,117,21,41,38,2,46,154,5,238,220,56,182,54,80,193,114,221,7,218,171,122,139,14,182,34,43,225,11,0],[160,128,7,86,23,178,89,223,15,160,93,208,236,181,15,200,254,14,129,27,172,141,42,85,169,99,48,15,64,89,137,167,14,0],[160,245,10,80,145,124,82,98,75,5,94,208,158,164,83,64,241,58,78,80,236,164,29,16,17,247,28,11,188,7,153,37,89,0],[160,24,119,186,59,29,199,157,199,107,244,60,254,37,158,163,157,252,203,226,194,157,0,166,95,218,196,148,130,234,162,121,239,0],[160,94,198,127,59,180,131,13,244,68,3,222,222,13,107,83,105,186,137,106,45,125,59,180,177,1,66,66,169,171,129,88,217,0],[160,133,207,198,78,164,255,156,121,41,189,187,36,94,143,126,247,48,230,103,6,46,156,139,97,44,39,227,62,202,168,107,191,0],[160,216,106,43,237,213,115,189,35,134,152,26,60,219,16,85,49,137,100,186,11,86,29,155,35,87,232,223,241,18,113,171,25,0],[160,128,208,42,52,69,55,251,81,250,24,55,61,254,144,231,180,7,242,112,189,122,75,53,238,162,55,214,3,214,190,41,82,0],[160,28,219,73,212,229,223,201,192,15,253,116,78,122,240,153,175,216,161,249,187,124,34,1,247,174,24,90,134,129,98,138,94,0],[160,162,188,94,59,250,131,16,137,114,125,49,129,57,1,29,135,254,120,47,177,150,179,111,91,35,188,158,124,144,1,165,175,0],[160,233,63,33,157,182,80,71,194,4,131,135,15,177,110,39,218,235,9,68,145,221,151,209,249,113,151,13,154,113,248,212,251,0],[160,240,77,5,167,240,252,156,72,6,120,105,247,250,255,60,160,223,216,2,148,244,77,178,193,105,70,138,146,77,14,36,26,0],[160,231,117,39,46,18,64,141,100,58,123,76,130,108,182,192,123,198,75,224,13,254,82,121,28,34,188,37,215,67,229,204,145,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,136,158,2,226,205,39,53,200,113,213,65,23,18,60,36,104,196,248,107,177,74,40,48,252,36,63,161,52,146,149,218,244,160,146,211,70,53,89,117,233,193,185,246,151,53,11,162,117,5,124,156,178,211,34,175,70,111,143,66,148,118,201,72,100,140,160,178,89,45,115,255,109,177,92,13,91,154,240,84,96,101,35,213,60,49,208,153,59,107,203,226,66,205,62,68,3,113,137,160,166,85,24,235,117,21,41,38,2,46,154,5,238,220,56,182,54,80,193,114,221,7,218,171,122,139,14,182,34,43,225,11,160,128,7,86,23,178,89,223,15,160,93,208,236,181,15,200,254,14,129,27,172,141,42,85,169,99,48,15,64,89,137,167,14,160,245,10,80,145,124,82,98,75,5,94,208,158,164,83,64,241,58,78,80,236,164,29,16,17,247,28,11,188,7,153,37,89,160,24,119,186,59,29,199,157,199,107,244,60,254,37,158,163,157,252,203,226,194,157,0,166,95,218,196,148,130,234,162,121,239,160,94,198,127,59,180,131,13,244,68,3,222,222,13,107,83,105,186,137,106,45,125,59,180,177,1,66,66,169,171,129,88,217,160,133,207,198,78,164,255,156,121,41,189,187,36,94,143,126,247,48,230,103,6,46,156,139,97,44,39,227,62,202,168,107,191,160,216,106,43,237,213,115,189,35,134,152,26,60,219,16,85,49,137,100,186,11,86,29,155,35,87,232,223,241,18,113,171,25,160,128,208,42,52,69,55,251,81,250,24,55,61,254,144,231,180,7,242,112,189,122,75,53,238,162,55,214,3,214,190,41,82,160,28,219,73,212,229,223,201,192,15,253,116,78,122,240,153,175,216,161,249,187,124,34,1,247,174,24,90,134,129,98,138,94,160,162,188,94,59,250,131,16,137,114,125,49,129,57,1,29,135,254,120,47,177,150,179,111,91,35,188,158,124,144,1,165,175,160,233,63,33,157,182,80,71,194,4,131,135,15,177,110,39,218,235,9,68,145,221,151,209,249,113,151,13,154,113,248,212,251,160,240,77,5,167,240,252,156,72,6,120,105,247,250,255,60,160,223,216,2,148,244,77,178,193,105,70,138,146,77,14,36,26,160,231,117,39,46,18,64,141,100,58,123,76,130,108,182,192,123,198,75,224,13,254,82,121,28,34,188,37,215,67,229,204,145,128],[249,2,17,160,136,158,2,226,205,39,53,200,113,213,65,23,18,60,36,104,196,248,107,177,74,40,48,252,36,63,161,52,146,149,218,244,160,252,217,31,98,213,2,184,117,159,197,191,162,34,191,237,19,48,173,185,206,42,131,123,246,215,37,157,170,129,2,159,79,160,178,89,45,115,255,109,177,92,13,91,154,240,84,96,101,35,213,60,49,208,153,59,107,203,226,66,205,62,68,3,113,137,160,166,85,24,235,117,21,41,38,2,46,154,5,238,220,56,182,54,80,193,114,221,7,218,171,122,139,14,182,34,43,225,11,160,128,7,86,23,178,89,223,15,160,93,208,236,181,15,200,254,14,129,27,172,141,42,85,169,99,48,15,64,89,137,167,14,160,245,10,80,145,124,82,98,75,5,94,208,158,164,83,64,241,58,78,80,236,164,29,16,17,247,28,11,188,7,153,37,89,160,24,119,186,59,29,199,157,199,107,244,60,254,37,158,163,157,252,203,226,194,157,0,166,95,218,196,148,130,234,162,121,239,160,94,198,127,59,180,131,13,244,68,3,222,222,13,107,83,105,186,137,106,45,125,59,180,177,1,66,66,169,171,129,88,217,160,133,207,198,78,164,255,156,121,41,189,187,36,94,143,126,247,48,230,103,6,46,156,139,97,44,39,227,62,202,168,107,191,160,216,106,43,237,213,115,189,35,134,152,26,60,219,16,85,49,137,100,186,11,86,29,155,35,87,232,223,241,18,113,171,25,160,128,208,42,52,69,55,251,81,250,24,55,61,254,144,231,180,7,242,112,189,122,75,53,238,162,55,214,3,214,190,41,82,160,28,219,73,212,229,223,201,192,15,253,116,78,122,240,153,175,216,161,249,187,124,34,1,247,174,24,90,134,129,98,138,94,160,162,188,94,59,250,131,16,137,114,125,49,129,57,1,29,135,254,120,47,177,150,179,111,91,35,188,158,124,144,1,165,175,160,233,63,33,157,182,80,71,194,4,131,135,15,177,110,39,218,235,9,68,145,221,151,209,249,113,151,13,154,113,248,212,251,160,240,77,5,167,240,252,156,72,6,120,105,247,250,255,60,160,223,216,2,148,244,77,178,193,105,70,138,146,77,14,36,26,160,231,117,39,46,18,64,141,100,58,123,76,130,108,182,192,123,198,75,224,13,254,82,121,28,34,188,37,215,67,229,204,145,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,55,85,9,146,13,220,208,48,219,48,45,20,104,34,220,239,134,126,21,8,186,71,116,184,250,50,0,156,101,10,221,196,0],[160,13,50,178,12,178,19,67,135,215,89,53,231,22,221,140,64,188,98,198,227,215,36,164,27,112,123,190,45,95,182,33,187,0],[160,144,189,95,104,22,238,131,96,95,198,33,248,191,105,143,89,198,59,69,63,243,142,51,78,65,115,149,37,203,218,247,94,0],[160,79,204,161,177,228,182,121,96,146,211,177,38,22,57,20,49,248,123,125,156,59,75,90,151,138,247,138,6,179,165,160,82,0],[160,140,157,161,144,90,131,156,126,28,31,219,2,32,142,218,207,122,240,59,83,213,101,85,6,89,42,252,50,0,63,41,26,0],[160,114,4,167,86,222,251,112,145,143,90,94,162,253,167,136,179,171,244,100,6,175,12,83,225,246,212,87,136,249,223,98,41,0],[160,35,133,238,244,161,113,110,168,119,146,55,22,14,251,248,253,122,123,143,124,99,22,167,156,159,89,143,189,188,184,55,25,0],[160,218,193,150,127,147,10,105,9,78,25,126,53,125,230,152,4,221,183,129,56,57,0,216,220,246,188,35,57,240,221,236,220,0],[160,152,34,0,17,190,112,15,88,228,102,220,185,135,126,19,76,151,214,110,0,89,64,203,77,36,86,21,103,24,93,163,162,0],[160,222,176,130,181,66,206,34,242,98,239,160,93,183,113,213,224,164,56,159,67,98,237,201,92,199,233,180,76,26,178,183,220,0],[160,244,134,114,8,198,123,78,30,181,195,25,53,18,58,102,168,17,37,12,65,146,237,176,118,73,123,94,211,88,102,45,103,0],[160,99,65,230,50,158,103,92,64,163,190,197,76,55,250,64,183,58,35,6,216,189,162,165,220,203,139,72,228,79,146,166,79,0],[160,77,230,171,142,226,201,157,79,149,190,26,10,65,95,107,252,129,131,254,192,76,245,23,182,112,114,111,243,174,62,85,173,0],[160,208,61,209,181,228,68,191,140,217,152,245,13,166,173,143,131,23,154,162,132,24,173,67,254,35,26,228,28,62,238,46,153,0],[160,109,70,62,252,174,216,135,110,228,206,18,234,175,240,81,71,60,224,40,247,249,199,120,40,169,94,170,189,82,7,19,164,0],[160,175,181,176,216,197,195,13,98,14,255,75,4,199,16,191,222,114,48,246,89,57,95,237,2,178,220,14,100,170,2,33,181,0],[160,55,120,177,211,133,123,94,204,145,54,50,158,200,181,96,110,60,208,24,240,219,149,8,97,145,225,21,109,246,143,68,192,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,13,50,178,12,178,19,67,135,215,89,53,231,22,221,140,64,188,98,198,227,215,36,164,27,112,123,190,45,95,182,33,187,160,144,189,95,104,22,238,131,96,95,198,33,248,191,105,143,89,198,59,69,63,243,142,51,78,65,115,149,37,203,218,247,94,160,79,204,161,177,228,182,121,96,146,211,177,38,22,57,20,49,248,123,125,156,59,75,90,151,138,247,138,6,179,165,160,82,160,140,157,161,144,90,131,156,126,28,31,219,2,32,142,218,207,122,240,59,83,213,101,85,6,89,42,252,50,0,63,41,26,160,114,4,167,86,222,251,112,145,143,90,94,162,253,167,136,179,171,244,100,6,175,12,83,225,246,212,87,136,249,223,98,41,160,35,133,238,244,161,113,110,168,119,146,55,22,14,251,248,253,122,123,143,124,99,22,167,156,159,89,143,189,188,184,55,25,160,218,193,150,127,147,10,105,9,78,25,126,53,125,230,152,4,221,183,129,56,57,0,216,220,246,188,35,57,240,221,236,220,160,152,34,0,17,190,112,15,88,228,102,220,185,135,126,19,76,151,214,110,0,89,64,203,77,36,86,21,103,24,93,163,162,160,222,176,130,181,66,206,34,242,98,239,160,93,183,113,213,224,164,56,159,67,98,237,201,92,199,233,180,76,26,178,183,220,160,244,134,114,8,198,123,78,30,181,195,25,53,18,58,102,168,17,37,12,65,146,237,176,118,73,123,94,211,88,102,45,103,160,99,65,230,50,158,103,92,64,163,190,197,76,55,250,64,183,58,35,6,216,189,162,165,220,203,139,72,228,79,146,166,79,160,77,230,171,142,226,201,157,79,149,190,26,10,65,95,107,252,129,131,254,192,76,245,23,182,112,114,111,243,174,62,85,173,160,208,61,209,181,228,68,191,140,217,152,245,13,166,173,143,131,23,154,162,132,24,173,67,254,35,26,228,28,62,238,46,153,160,109,70,62,252,174,216,135,110,228,206,18,234,175,240,81,71,60,224,40,247,249,199,120,40,169,94,170,189,82,7,19,164,160,175,181,176,216,197,195,13,98,14,255,75,4,199,16,191,222,114,48,246,89,57,95,237,2,178,220,14,100,170,2,33,181,160,55,120,177,211,133,123,94,204,145,54,50,158,200,181,96,110,60,208,24,240,219,149,8,97,145,225,21,109,246,143,68,192,128],[249,2,17,160,13,50,178,12,178,19,67,135,215,89,53,231,22,221,140,64,188,98,198,227,215,36,164,27,112,123,190,45,95,182,33,187,160,144,189,95,104,22,238,131,96,95,198,33,248,191,105,143,89,198,59,69,63,243,142,51,78,65,115,149,37,203,218,247,94,160,79,204,161,177,228,182,121,96,146,211,177,38,22,57,20,49,248,123,125,156,59,75,90,151,138,247,138,6,179,165,160,82,160,140,157,161,144,90,131,156,126,28,31,219,2,32,142,218,207,122,240,59,83,213,101,85,6,89,42,252,50,0,63,41,26,160,114,4,167,86,222,251,112,145,143,90,94,162,253,167,136,179,171,244,100,6,175,12,83,225,246,212,87,136,249,223,98,41,160,35,133,238,244,161,113,110,168,119,146,55,22,14,251,248,253,122,123,143,124,99,22,167,156,159,89,143,189,188,184,55,25,160,218,193,150,127,147,10,105,9,78,25,126,53,125,230,152,4,221,183,129,56,57,0,216,220,246,188,35,57,240,221,236,220,160,152,34,0,17,190,112,15,88,228,102,220,185,135,126,19,76,151,214,110,0,89,64,203,77,36,86,21,103,24,93,163,162,160,222,176,130,181,66,206,34,242,98,239,160,93,183,113,213,224,164,56,159,67,98,237,201,92,199,233,180,76,26,178,183,220,160,244,134,114,8,198,123,78,30,181,195,25,53,18,58,102,168,17,37,12,65,146,237,176,118,73,123,94,211,88,102,45,103,160,99,65,230,50,158,103,92,64,163,190,197,76,55,250,64,183,58,35,6,216,189,162,165,220,203,139,72,228,79,146,166,79,160,77,230,171,142,226,201,157,79,149,190,26,10,65,95,107,252,129,131,254,192,76,245,23,182,112,114,111,243,174,62,85,173,160,208,61,209,181,228,68,191,140,217,152,245,13,166,173,143,131,23,154,162,132,24,173,67,254,35,26,228,28,62,238,46,153,160,109,70,62,252,174,216,135,110,228,206,18,234,175,240,81,71,60,224,40,247,249,199,120,40,169,94,170,189,82,7,19,164,160,55,85,9,146,13,220,208,48,219,48,45,20,104,34,220,239,134,126,21,8,186,71,116,184,250,50,0,156,101,10,221,196,160,55,120,177,211,133,123,94,204,145,54,50,158,200,181,96,110,60,208,24,240,219,149,8,97,145,225,21,109,246,143,68,192,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,69,56,88,5,160,143,143,51,129,117,240,225,241,84,36,241,220,69,90,156,249,195,200,255,207,226,79,132,244,18,115,224,0],[160,233,164,123,155,208,136,62,222,128,46,68,22,119,41,220,130,92,81,54,13,240,207,4,31,130,84,81,26,250,195,171,31,0],[160,244,215,184,178,53,71,155,192,100,8,118,81,164,118,232,220,173,36,120,133,241,231,166,112,58,35,217,30,213,123,220,77,0],[160,134,253,80,38,136,250,41,205,209,43,104,149,123,17,94,159,28,175,21,183,209,231,206,71,77,37,218,154,146,153,24,84,0],[160,242,196,102,68,90,97,212,177,99,93,1,189,243,233,47,45,158,15,86,232,172,232,220,234,77,224,150,242,154,87,138,123,0],[160,180,25,20,136,244,187,234,226,83,52,240,205,200,229,58,185,112,131,8,251,120,228,195,70,166,60,63,220,0,122,78,173,0],[160,6,112,245,182,35,129,212,139,193,244,32,18,172,238,163,131,140,3,156,129,117,175,101,209,39,17,230,197,161,26,164,26,0],[160,79,40,37,32,248,84,18,15,57,155,236,176,232,223,32,225,49,204,199,149,15,187,125,240,104,181,38,216,118,38,1,237,0],[160,105,23,154,137,214,82,85,24,220,53,190,87,18,66,18,143,0,67,138,13,212,5,13,41,124,119,231,67,255,172,68,9,0],[160,150,57,129,248,61,15,249,159,113,45,24,26,195,248,178,118,31,241,166,83,125,218,65,165,39,22,144,22,55,186,191,36,0],[160,37,141,200,101,250,20,191,110,42,209,61,8,144,77,65,122,59,202,230,3,188,203,35,205,101,33,33,94,177,227,68,43,0],[160,69,219,41,20,222,32,242,18,19,225,56,104,87,117,137,196,215,12,73,139,227,173,49,7,198,217,73,208,227,162,81,116,0],[160,28,142,151,27,207,139,38,79,22,24,250,12,143,203,222,117,103,50,59,36,240,23,62,117,240,73,138,255,192,1,93,196,0],[160,71,66,44,76,194,4,102,148,61,159,44,187,87,174,253,148,80,69,177,44,134,124,174,137,132,229,187,176,102,210,238,67,0],[160,60,127,152,172,115,221,28,164,158,109,71,26,152,180,197,32,190,197,209,7,136,29,17,0,1,166,144,214,158,223,255,188,0],[160,139,247,90,127,31,160,77,117,139,184,215,104,143,174,182,205,118,216,68,187,107,213,107,217,79,68,166,136,61,93,95,219,0],[160,144,168,243,96,7,203,236,41,91,150,36,240,48,27,175,249,20,6,27,133,8,180,158,141,251,53,222,188,111,207,156,79,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,233,164,123,155,208,136,62,222,128,46,68,22,119,41,220,130,92,81,54,13,240,207,4,31,130,84,81,26,250,195,171,31,160,244,215,184,178,53,71,155,192,100,8,118,81,164,118,232,220,173,36,120,133,241,231,166,112,58,35,217,30,213,123,220,77,160,134,253,80,38,136,250,41,205,209,43,104,149,123,17,94,159,28,175,21,183,209,231,206,71,77,37,218,154,146,153,24,84,160,242,196,102,68,90,97,212,177,99,93,1,189,243,233,47,45,158,15,86,232,172,232,220,234,77,224,150,242,154,87,138,123,160,180,25,20,136,244,187,234,226,83,52,240,205,200,229,58,185,112,131,8,251,120,228,195,70,166,60,63,220,0,122,78,173,160,6,112,245,182,35,129,212,139,193,244,32,18,172,238,163,131,140,3,156,129,117,175,101,209,39,17,230,197,161,26,164,26,160,79,40,37,32,248,84,18,15,57,155,236,176,232,223,32,225,49,204,199,149,15,187,125,240,104,181,38,216,118,38,1,237,160,105,23,154,137,214,82,85,24,220,53,190,87,18,66,18,143,0,67,138,13,212,5,13,41,124,119,231,67,255,172,68,9,160,150,57,129,248,61,15,249,159,113,45,24,26,195,248,178,118,31,241,166,83,125,218,65,165,39,22,144,22,55,186,191,36,160,37,141,200,101,250,20,191,110,42,209,61,8,144,77,65,122,59,202,230,3,188,203,35,205,101,33,33,94,177,227,68,43,160,69,219,41,20,222,32,242,18,19,225,56,104,87,117,137,196,215,12,73,139,227,173,49,7,198,217,73,208,227,162,81,116,160,28,142,151,27,207,139,38,79,22,24,250,12,143,203,222,117,103,50,59,36,240,23,62,117,240,73,138,255,192,1,93,196,160,71,66,44,76,194,4,102,148,61,159,44,187,87,174,253,148,80,69,177,44,134,124,174,137,132,229,187,176,102,210,238,67,160,60,127,152,172,115,221,28,164,158,109,71,26,152,180,197,32,190,197,209,7,136,29,17,0,1,166,144,214,158,223,255,188,160,139,247,90,127,31,160,77,117,139,184,215,104,143,174,182,205,118,216,68,187,107,213,107,217,79,68,166,136,61,93,95,219,160,144,168,243,96,7,203,236,41,91,150,36,240,48,27,175,249,20,6,27,133,8,180,158,141,251,53,222,188,111,207,156,79,128],[249,2,17,160,233,164,123,155,208,136,62,222,128,46,68,22,119,41,220,130,92,81,54,13,240,207,4,31,130,84,81,26,250,195,171,31,160,244,215,184,178,53,71,155,192,100,8,118,81,164,118,232,220,173,36,120,133,241,231,166,112,58,35,217,30,213,123,220,77,160,134,253,80,38,136,250,41,205,209,43,104,149,123,17,94,159,28,175,21,183,209,231,206,71,77,37,218,154,146,153,24,84,160,242,196,102,68,90,97,212,177,99,93,1,189,243,233,47,45,158,15,86,232,172,232,220,234,77,224,150,242,154,87,138,123,160,69,56,88,5,160,143,143,51,129,117,240,225,241,84,36,241,220,69,90,156,249,195,200,255,207,226,79,132,244,18,115,224,160,6,112,245,182,35,129,212,139,193,244,32,18,172,238,163,131,140,3,156,129,117,175,101,209,39,17,230,197,161,26,164,26,160,79,40,37,32,248,84,18,15,57,155,236,176,232,223,32,225,49,204,199,149,15,187,125,240,104,181,38,216,118,38,1,237,160,105,23,154,137,214,82,85,24,220,53,190,87,18,66,18,143,0,67,138,13,212,5,13,41,124,119,231,67,255,172,68,9,160,150,57,129,248,61,15,249,159,113,45,24,26,195,248,178,118,31,241,166,83,125,218,65,165,39,22,144,22,55,186,191,36,160,37,141,200,101,250,20,191,110,42,209,61,8,144,77,65,122,59,202,230,3,188,203,35,205,101,33,33,94,177,227,68,43,160,69,219,41,20,222,32,242,18,19,225,56,104,87,117,137,196,215,12,73,139,227,173,49,7,198,217,73,208,227,162,81,116,160,28,142,151,27,207,139,38,79,22,24,250,12,143,203,222,117,103,50,59,36,240,23,62,117,240,73,138,255,192,1,93,196,160,71,66,44,76,194,4,102,148,61,159,44,187,87,174,253,148,80,69,177,44,134,124,174,137,132,229,187,176,102,210,238,67,160,60,127,152,172,115,221,28,164,158,109,71,26,152,180,197,32,190,197,209,7,136,29,17,0,1,166,144,214,158,223,255,188,160,139,247,90,127,31,160,77,117,139,184,215,104,143,174,182,205,118,216,68,187,107,213,107,217,79,68,166,136,61,93,95,219,160,144,168,243,96,7,203,236,41,91,150,36,240,48,27,175,249,20,6,27,133,8,180,158,141,251,53,222,188,111,207,156,79,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,149,106,49,186,80,196,82,157,32,65,104,247,97,128,104,47,223,63,50,242,236,254,19,57,80,81,181,46,229,29,163,11,0],[160,215,224,21,2,97,171,69,236,25,113,94,56,156,61,31,194,96,44,38,194,7,54,86,91,99,76,25,68,145,135,211,203,0],[160,0,116,232,16,100,160,2,7,116,93,13,52,82,113,39,74,129,133,1,15,13,152,37,53,61,188,158,237,240,251,33,100,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,34,4,235,19,71,244,221,231,87,16,181,139,205,226,188,107,109,163,62,245,227,181,183,149,28,88,87,131,159,226,103,240,0],[160,4,118,106,94,203,57,75,141,85,80,227,21,97,138,127,226,1,28,46,243,8,235,110,208,8,114,254,18,55,214,34,166,0],[160,59,212,149,146,240,60,174,117,127,215,192,69,57,2,171,125,65,9,239,118,90,254,77,195,30,68,46,165,85,163,206,73,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,195,224,6,145,38,225,72,233,106,172,81,161,30,125,2,127,249,225,13,71,60,192,219,232,194,101,212,20,230,176,37,97,0],[160,185,33,32,239,177,174,129,67,203,135,224,106,250,147,29,149,212,33,253,192,57,152,87,160,239,0,210,114,54,157,242,249,0],[160,3,153,231,82,186,179,76,222,114,246,236,240,176,201,228,114,97,100,0,77,34,220,98,95,112,155,37,214,127,222,185,16,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,160,215,224,21,2,97,171,69,236,25,113,94,56,156,61,31,194,96,44,38,194,7,54,86,91,99,76,25,68,145,135,211,203,160,0,116,232,16,100,160,2,7,116,93,13,52,82,113,39,74,129,133,1,15,13,152,37,53,61,188,158,237,240,251,33,100,128,128,128,128,128,160,34,4,235,19,71,244,221,231,87,16,181,139,205,226,188,107,109,163,62,245,227,181,183,149,28,88,87,131,159,226,103,240,160,4,118,106,94,203,57,75,141,85,80,227,21,97,138,127,226,1,28,46,243,8,235,110,208,8,114,254,18,55,214,34,166,160,59,212,149,146,240,60,174,117,127,215,192,69,57,2,171,125,65,9,239,118,90,254,77,195,30,68,46,165,85,163,206,73,128,160,195,224,6,145,38,225,72,233,106,172,81,161,30,125,2,127,249,225,13,71,60,192,219,232,194,101,212,20,230,176,37,97,160,185,33,32,239,177,174,129,67,203,135,224,106,250,147,29,149,212,33,253,192,57,152,87,160,239,0,210,114,54,157,242,249,160,3,153,231,82,186,179,76,222,114,246,236,240,176,201,228,114,97,100,0,77,34,220,98,95,112,155,37,214,127,222,185,16,128,128,128],[249,1,17,160,215,224,21,2,97,171,69,236,25,113,94,56,156,61,31,194,96,44,38,194,7,54,86,91,99,76,25,68,145,135,211,203,160,0,116,232,16,100,160,2,7,116,93,13,52,82,113,39,74,129,133,1,15,13,152,37,53,61,188,158,237,240,251,33,100,128,128,128,128,128,160,34,4,235,19,71,244,221,231,87,16,181,139,205,226,188,107,109,163,62,245,227,181,183,149,28,88,87,131,159,226,103,240,160,4,118,106,94,203,57,75,141,85,80,227,21,97,138,127,226,1,28,46,243,8,235,110,208,8,114,254,18,55,214,34,166,160,59,212,149,146,240,60,174,117,127,215,192,69,57,2,171,125,65,9,239,118,90,254,77,195,30,68,46,165,85,163,206,73,128,160,195,224,6,145,38,225,72,233,106,172,81,161,30,125,2,127,249,225,13,71,60,192,219,232,194,101,212,20,230,176,37,97,160,185,33,32,239,177,174,129,67,203,135,224,106,250,147,29,149,212,33,253,192,57,152,87,160,239,0,210,114,54,157,242,249,160,149,106,49,186,80,196,82,157,32,65,104,247,97,128,104,47,223,63,50,242,236,254,19,57,80,81,181,46,229,29,163,11,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,238,33,41,91,139,64,0,126,58,209,28,244,31,248,40,252,116,128,48,205,71,63,220,200,119,152,59,114,226,64,32,177,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,163,249,116,158,55,31,135,151,154,177,70,162,196,125,104,115,86,21,90,18,248,231,181,157,159,88,231,1,29,210,253,54,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,251,60,45,2,104,12,61,28,155,14,150,70,250,245,3,148,210,16,251,31,250,169,96,119,131,26,252,73,177,112,202,218,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,160,163,249,116,158,55,31,135,151,154,177,70,162,196,125,104,115,86,21,90,18,248,231,181,157,159,88,231,1,29,210,253,54,128,128,128,128,128,160,251,60,45,2,104,12,61,28,155,14,150,70,250,245,3,148,210,16,251,31,250,169,96,119,131,26,252,73,177,112,202,218,128,128,128],[248,81,128,128,128,128,128,128,128,160,238,33,41,91,139,64,0,126,58,209,28,244,31,248,40,252,116,128,48,205,71,63,220,200,119,152,59,114,226,64,32,177,128,128,128,128,128,160,251,60,45,2,104,12,61,28,155,14,150,70,250,245,3,148,210,16,251,31,250,169,96,119,131,26,252,73,177,112,202,218,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,251,239,18,160,24,140,50,179,108,87,149,120,38,223,78,36,232,177,156],"key":[210,225,228,215,204,18,70,147,70,174,150,116,157,137,13,240,104,94,233,25,109,74,186,171,157,47,95,139,142,245,103,90],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,32,204,18,70,147,70,174,150,116,157,137,13,240,104,94,233,25,109,74,186,171,157,47,95,139,142,245,103,90,0,0,0,0],[157,32,204,18,70,147,70,174,150,116,157,137,13,240,104,94,233,25,109,74,186,171,157,47,95,139,142,245,103,90,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,124,110,210,32,40,203,188,213,98,144,74,214,52,38,242,41,140,111,161,26,157,214,107,102,215,218,164,89,184,224,211,23,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,125,125,5,117,81,122,122,242,64,2,175,145,138,151,62,249,124,167,21,134,164,8,89,178,199,105,211,183,248,165,182,64,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,32,204,18,70,147,70,174,150,116,157,137,13,240,104,94,233,25,109,74,186,171,157,47,95,139,142,245,103,90,0,0,0,0]],"keccak_data":[[248,102,157,32,204,18,70,147,70,174,150,116,157,137,13,240,104,94,233,25,109,74,186,171,157,47,95,139,142,245,103,90,184,70,248,68,128,128,160,124,110,210,32,40,203,188,213,98,144,74,214,52,38,242,41,140,111,161,26,157,214,107,102,215,218,164,89,184,224,211,23,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,32,204,18,70,147,70,174,150,116,157,137,13,240,104,94,233,25,109,74,186,171,157,47,95,139,142,245,103,90,184,70,248,68,128,128,160,125,125,5,117,81,122,122,242,64,2,175,145,138,151,62,249,124,167,21,134,164,8,89,178,199,105,211,183,248,165,182,64,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,251,239,18,160,24,140,50,179,108,87,149,120,38,223,78,36,232,177,156]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,1,241],[249,1,241]]}},"account":null,"storage":null,"values":[[160,229,104,249,34,92,158,241,146,58,109,87,65,16,57,148,193,196,216,75,75,23,242,59,8,146,130,42,254,205,234,174,62,0],[160,210,78,178,150,212,28,82,100,139,9,109,132,133,207,63,99,40,200,4,196,200,195,186,250,93,114,18,44,172,151,118,68,0],[160,248,248,132,231,219,36,190,8,58,174,27,174,158,48,92,216,246,35,223,148,206,15,72,180,81,79,190,14,67,106,51,79,0],[160,13,72,167,81,176,246,4,165,171,191,233,200,230,245,85,183,155,49,113,73,183,238,65,232,198,3,104,188,203,231,65,107,0],[160,245,222,18,92,222,52,154,198,56,236,143,5,187,148,74,102,159,213,184,21,37,236,199,145,65,247,7,166,199,180,48,247,0],[160,166,208,151,209,212,168,142,58,157,109,23,95,84,233,143,153,14,248,231,3,194,217,110,15,239,28,4,40,101,20,53,97,0],[160,60,130,57,44,233,118,42,28,170,215,17,198,162,137,157,164,223,182,105,242,82,26,139,152,210,231,170,122,160,56,27,239,0],[160,224,147,175,176,237,126,28,226,16,186,200,149,6,2,195,81,86,84,222,58,0,197,233,32,36,250,36,150,97,208,74,139,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,175,1,178,61,129,112,118,162,180,92,178,179,187,8,193,159,88,107,50,59,21,36,17,87,21,27,120,193,231,46,250,160,0],[160,198,203,95,142,67,182,79,163,52,215,78,136,65,176,242,21,5,230,227,120,211,180,123,219,32,180,166,135,197,187,67,186,0],[160,233,11,203,144,35,127,66,38,147,63,249,208,31,136,253,118,129,195,190,252,103,30,209,103,175,19,31,90,157,186,240,15,0],[160,116,9,53,227,24,201,63,205,83,100,51,78,3,176,96,96,120,136,225,160,202,17,90,149,234,56,165,87,22,40,184,42,0],[160,242,20,107,113,105,239,136,8,144,132,56,162,225,51,73,150,27,145,239,210,114,198,211,182,32,230,120,58,58,217,173,72,0],[160,12,22,175,18,114,255,215,239,55,10,122,127,125,141,194,141,217,188,103,188,152,194,108,175,150,155,24,11,23,95,238,25,0],[160,40,218,53,174,159,41,102,174,207,210,68,46,147,137,18,7,231,77,152,244,11,253,97,148,81,205,17,30,51,123,221,102,0],[160,125,60,195,29,133,115,78,254,77,106,193,209,138,28,116,102,74,68,161,182,3,244,61,135,24,219,30,81,54,65,75,20,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,241,160,210,78,178,150,212,28,82,100,139,9,109,132,133,207,63,99,40,200,4,196,200,195,186,250,93,114,18,44,172,151,118,68,160,248,248,132,231,219,36,190,8,58,174,27,174,158,48,92,216,246,35,223,148,206,15,72,180,81,79,190,14,67,106,51,79,160,13,72,167,81,176,246,4,165,171,191,233,200,230,245,85,183,155,49,113,73,183,238,65,232,198,3,104,188,203,231,65,107,160,245,222,18,92,222,52,154,198,56,236,143,5,187,148,74,102,159,213,184,21,37,236,199,145,65,247,7,166,199,180,48,247,160,166,208,151,209,212,168,142,58,157,109,23,95,84,233,143,153,14,248,231,3,194,217,110,15,239,28,4,40,101,20,53,97,160,60,130,57,44,233,118,42,28,170,215,17,198,162,137,157,164,223,182,105,242,82,26,139,152,210,231,170,122,160,56,27,239,160,224,147,175,176,237,126,28,226,16,186,200,149,6,2,195,81,86,84,222,58,0,197,233,32,36,250,36,150,97,208,74,139,128,160,175,1,178,61,129,112,118,162,180,92,178,179,187,8,193,159,88,107,50,59,21,36,17,87,21,27,120,193,231,46,250,160,160,198,203,95,142,67,182,79,163,52,215,78,136,65,176,242,21,5,230,227,120,211,180,123,219,32,180,166,135,197,187,67,186,160,233,11,203,144,35,127,66,38,147,63,249,208,31,136,253,118,129,195,190,252,103,30,209,103,175,19,31,90,157,186,240,15,160,116,9,53,227,24,201,63,205,83,100,51,78,3,176,96,96,120,136,225,160,202,17,90,149,234,56,165,87,22,40,184,42,160,242,20,107,113,105,239,136,8,144,132,56,162,225,51,73,150,27,145,239,210,114,198,211,182,32,230,120,58,58,217,173,72,160,12,22,175,18,114,255,215,239,55,10,122,127,125,141,194,141,217,188,103,188,152,194,108,175,150,155,24,11,23,95,238,25,160,40,218,53,174,159,41,102,174,207,210,68,46,147,137,18,7,231,77,152,244,11,253,97,148,81,205,17,30,51,123,221,102,160,125,60,195,29,133,115,78,254,77,106,193,209,138,28,116,102,74,68,161,182,3,244,61,135,24,219,30,81,54,65,75,20,128],[249,1,241,160,210,78,178,150,212,28,82,100,139,9,109,132,133,207,63,99,40,200,4,196,200,195,186,250,93,114,18,44,172,151,118,68,160,248,248,132,231,219,36,190,8,58,174,27,174,158,48,92,216,246,35,223,148,206,15,72,180,81,79,190,14,67,106,51,79,160,13,72,167,81,176,246,4,165,171,191,233,200,230,245,85,183,155,49,113,73,183,238,65,232,198,3,104,188,203,231,65,107,160,245,222,18,92,222,52,154,198,56,236,143,5,187,148,74,102,159,213,184,21,37,236,199,145,65,247,7,166,199,180,48,247,160,166,208,151,209,212,168,142,58,157,109,23,95,84,233,143,153,14,248,231,3,194,217,110,15,239,28,4,40,101,20,53,97,160,60,130,57,44,233,118,42,28,170,215,17,198,162,137,157,164,223,182,105,242,82,26,139,152,210,231,170,122,160,56,27,239,160,224,147,175,176,237,126,28,226,16,186,200,149,6,2,195,81,86,84,222,58,0,197,233,32,36,250,36,150,97,208,74,139,128,160,175,1,178,61,129,112,118,162,180,92,178,179,187,8,193,159,88,107,50,59,21,36,17,87,21,27,120,193,231,46,250,160,160,198,203,95,142,67,182,79,163,52,215,78,136,65,176,242,21,5,230,227,120,211,180,123,219,32,180,166,135,197,187,67,186,160,233,11,203,144,35,127,66,38,147,63,249,208,31,136,253,118,129,195,190,252,103,30,209,103,175,19,31,90,157,186,240,15,160,116,9,53,227,24,201,63,205,83,100,51,78,3,176,96,96,120,136,225,160,202,17,90,149,234,56,165,87,22,40,184,42,160,242,20,107,113,105,239,136,8,144,132,56,162,225,51,73,150,27,145,239,210,114,198,211,182,32,230,120,58,58,217,173,72,160,12,22,175,18,114,255,215,239,55,10,122,127,125,141,194,141,217,188,103,188,152,194,108,175,150,155,24,11,23,95,238,25,160,229,104,249,34,92,158,241,146,58,109,87,65,16,57,148,193,196,216,75,75,23,242,59,8,146,130,42,254,205,234,174,62,160,125,60,195,29,133,115,78,254,77,106,193,209,138,28,116,102,74,68,161,182,3,244,61,135,24,219,30,81,54,65,75,20,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[248,145],[248,145]]}},"account":null,"storage":null,"values":[[160,80,212,104,138,191,68,67,228,70,6,232,171,124,66,35,101,130,116,159,84,49,253,75,91,27,244,105,102,42,237,198,64,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,14,93,53,85,28,125,127,94,154,216,252,195,217,123,43,84,179,177,1,179,37,196,60,212,174,27,240,131,156,45,30,47,0],[160,205,47,45,45,48,218,249,255,243,170,19,97,62,119,94,176,39,141,226,22,160,223,179,39,159,220,65,206,56,192,65,173,0],[160,50,7,84,178,113,185,153,86,226,228,109,96,229,189,177,154,48,210,208,72,55,188,165,81,252,132,72,106,229,90,76,92,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,64,173,190,85,245,27,215,241,104,119,0,147,61,155,51,41,52,3,142,121,197,151,126,68,251,26,55,133,129,160,120,30,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,145,128,160,14,93,53,85,28,125,127,94,154,216,252,195,217,123,43,84,179,177,1,179,37,196,60,212,174,27,240,131,156,45,30,47,160,205,47,45,45,48,218,249,255,243,170,19,97,62,119,94,176,39,141,226,22,160,223,179,39,159,220,65,206,56,192,65,173,160,50,7,84,178,113,185,153,86,226,228,109,96,229,189,177,154,48,210,208,72,55,188,165,81,252,132,72,106,229,90,76,92,128,128,128,128,128,128,128,160,64,173,190,85,245,27,215,241,104,119,0,147,61,155,51,41,52,3,142,121,197,151,126,68,251,26,55,133,129,160,120,30,128,128,128,128,128],[248,145,128,160,14,93,53,85,28,125,127,94,154,216,252,195,217,123,43,84,179,177,1,179,37,196,60,212,174,27,240,131,156,45,30,47,160,205,47,45,45,48,218,249,255,243,170,19,97,62,119,94,176,39,141,226,22,160,223,179,39,159,220,65,206,56,192,65,173,160,50,7,84,178,113,185,153,86,226,228,109,96,229,189,177,154,48,210,208,72,55,188,165,81,252,132,72,106,229,90,76,92,128,128,128,128,128,128,128,160,80,212,104,138,191,68,67,228,70,6,232,171,124,66,35,101,130,116,159,84,49,253,75,91,27,244,105,102,42,237,198,64,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[true,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":14,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,60,226,195,23,238,134,33,223,70,2,103,252,151,203,213,143,75,59,120,238,144,88,86,245,53,153,249,230,170,10,224,141,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,60,226,195,23,238,134,33,223,70,2,103,252,151,203,213,143,75,59,120,238,144,88,86,245,53,153,249,230,170,10,224,141,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,166,63,2,5,40,19,246,0,9,254,66,154,247,78,11,69,102,73,107,96,10,59,99,155,12,117,22,81,236,36,24,140,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,128,128,128,128,160,60,226,195,23,238,134,33,223,70,2,103,252,151,203,213,143,75,59,120,238,144,88,86,245,53,153,249,230,170,10,224,141,128,160,166,63,2,5,40,19,246,0,9,254,66,154,247,78,11,69,102,73,107,96,10,59,99,155,12,117,22,81,236,36,24,140,128,128],[248,81,128,128,128,128,128,128,128,128,128,128,128,128,160,60,226,195,23,238,134,33,223,70,2,103,252,151,203,213,143,75,59,120,238,144,88,86,245,53,153,249,230,170,10,224,141,128,160,166,63,2,5,40,19,246,0,9,254,66,154,247,78,11,69,102,73,107,96,10,59,99,155,12,117,22,81,236,36,24,140,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,67],"key":[235,207,117,31,216,242,20,172,137,89,10,84,218,35,38,178,182,67,5,68,54,127,178,216,248,46,67,173,108,157,55,18],"list_rlp_bytes":[[226],[225]],"value_rlp_bytes":[[27],[17]],"drifted_rlp_bytes":[225],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,32,235,117,17,208,2,186,74,12,134,238,103,127,37,240,27,164,245,42,218,188,162,9,151,17,57,90,177,190,250,180,61,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,63,117,31,216,242,20,172,137,89,10,84,218,35,38,178,182,67,5,68,54,127,178,216,248,46,67,173,108,157,55,18,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,59,117,17,208,2,186,74,12,134,238,103,127,37,240,27,164,245,42,218,188,162,9,151,17,57,90,177,190,250,180,61,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[226,160,32,235,117,17,208,2,186,74,12,134,238,103,127,37,240,27,164,245,42,218,188,162,9,151,17,57,90,177,190,250,180,61,27],[225,159,63,117,31,216,242,20,172,137,89,10,84,218,35,38,178,182,67,5,68,54,127,178,216,248,46,67,173,108,157,55,18,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,67],[225,159,59,117,17,208,2,186,74,12,134,238,103,127,37,240,27,164,245,42,218,188,162,9,151,17,57,90,177,190,250,180,61,27]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/AddBranchTwoLevelsLong.json b/zkevm-circuits/src/mpt_circuit/tests/AddBranchTwoLevelsLong.json new file mode 100644 index 0000000000..970527f84f --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/AddBranchTwoLevelsLong.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,51,65,142,115,86,153,45,96,46,75,208,124,208,7,163,16,107,176,78,205,174,240,138,104,153,241,130,159,183,150,255,172,0],[160,64,216,85,95,32,235,202,43,112,168,109,97,139,32,97,72,199,52,22,55,141,153,57,226,95,120,214,6,226,51,115,154,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,28,241,244,79,115,80,99,155,142,177,171,21,142,78,170,161,160,151,84,2,1,217,248,156,185,227,64,243,5,112,142,186,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,112,111,76,82,17,231,123,222,41,29,143,197,43,214,49,114,156,6,228,160,200,190,124,83,90,134,148,113,0,242,8,223,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,112,111,76,82,17,231,123,222,41,29,143,197,43,214,49,114,156,6,228,160,200,190,124,83,90,134,148,113,0,242,8,223,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,28,241,244,79,115,80,99,155,142,177,171,21,142,78,170,161,160,151,84,2,1,217,248,156,185,227,64,243,5,112,142,186,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,46,171,117,127,104,238,238,194,83,233,78,9,202,136,194,148,140,253,97,150,228,161,20,225,13,58,144,222,57,99,254,32,0],[160,138,127,33,146,228,217,81,168,148,54,25,221,110,14,147,44,205,207,240,252,85,10,74,6,90,215,37,163,85,197,209,147,0],[160,197,140,243,130,135,5,44,240,122,52,88,152,223,194,55,78,253,239,20,14,240,195,72,157,251,203,43,166,221,72,42,243,0],[160,75,39,144,178,195,157,130,92,242,146,126,25,212,148,140,173,8,127,165,43,106,75,70,197,89,209,124,226,17,57,179,182,0],[160,166,127,220,77,52,242,127,4,221,222,179,99,228,219,234,107,128,132,162,28,54,50,74,245,6,155,81,220,35,222,239,180,0],[160,38,204,210,52,201,118,93,167,52,245,177,88,126,219,176,152,61,185,0,121,90,138,186,64,250,226,250,116,44,255,69,138,0],[160,19,80,126,245,125,58,26,171,154,180,156,179,105,38,103,20,91,210,24,164,166,224,218,169,142,142,169,66,214,236,187,6,0],[160,165,82,147,29,195,97,238,45,114,242,138,56,34,241,197,209,102,77,31,87,107,168,63,130,23,5,76,252,18,13,236,167,0],[160,137,36,143,25,251,26,164,237,66,26,232,13,77,146,144,176,22,49,121,100,141,43,91,142,171,76,62,36,85,147,110,190,0],[160,11,115,235,188,72,84,161,207,127,77,34,28,249,39,93,96,107,210,35,230,154,186,144,28,119,73,153,188,24,77,109,240,0],[160,58,109,215,135,86,131,21,211,39,205,236,11,17,4,11,251,27,214,159,168,108,253,243,116,37,135,174,7,21,231,118,173,0],[160,196,152,69,59,144,47,23,238,69,44,248,41,68,85,141,160,133,102,55,49,102,245,19,140,135,71,233,138,80,112,134,106,0],[160,235,44,30,228,32,41,209,13,249,2,126,168,201,236,57,195,159,104,121,127,158,158,105,129,93,237,225,173,201,228,18,26,0],[160,73,123,173,142,67,153,155,66,154,32,234,242,62,142,135,231,90,130,33,64,124,47,23,76,160,193,31,112,13,86,158,163,0],[160,212,168,40,58,146,19,183,174,219,219,161,40,190,207,207,64,53,225,243,141,48,238,255,22,190,203,157,242,113,27,78,198,0],[160,230,64,192,124,51,112,56,150,2,235,12,184,74,44,180,235,29,218,102,116,42,9,138,165,90,10,72,105,142,17,120,130,0],[160,10,45,72,232,98,165,163,10,157,119,129,253,31,63,210,152,123,72,87,208,99,245,73,99,63,206,57,190,38,252,227,143,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,138,127,33,146,228,217,81,168,148,54,25,221,110,14,147,44,205,207,240,252,85,10,74,6,90,215,37,163,85,197,209,147,160,197,140,243,130,135,5,44,240,122,52,88,152,223,194,55,78,253,239,20,14,240,195,72,157,251,203,43,166,221,72,42,243,160,75,39,144,178,195,157,130,92,242,146,126,25,212,148,140,173,8,127,165,43,106,75,70,197,89,209,124,226,17,57,179,182,160,166,127,220,77,52,242,127,4,221,222,179,99,228,219,234,107,128,132,162,28,54,50,74,245,6,155,81,220,35,222,239,180,160,38,204,210,52,201,118,93,167,52,245,177,88,126,219,176,152,61,185,0,121,90,138,186,64,250,226,250,116,44,255,69,138,160,19,80,126,245,125,58,26,171,154,180,156,179,105,38,103,20,91,210,24,164,166,224,218,169,142,142,169,66,214,236,187,6,160,165,82,147,29,195,97,238,45,114,242,138,56,34,241,197,209,102,77,31,87,107,168,63,130,23,5,76,252,18,13,236,167,160,137,36,143,25,251,26,164,237,66,26,232,13,77,146,144,176,22,49,121,100,141,43,91,142,171,76,62,36,85,147,110,190,160,11,115,235,188,72,84,161,207,127,77,34,28,249,39,93,96,107,210,35,230,154,186,144,28,119,73,153,188,24,77,109,240,160,58,109,215,135,86,131,21,211,39,205,236,11,17,4,11,251,27,214,159,168,108,253,243,116,37,135,174,7,21,231,118,173,160,196,152,69,59,144,47,23,238,69,44,248,41,68,85,141,160,133,102,55,49,102,245,19,140,135,71,233,138,80,112,134,106,160,235,44,30,228,32,41,209,13,249,2,126,168,201,236,57,195,159,104,121,127,158,158,105,129,93,237,225,173,201,228,18,26,160,73,123,173,142,67,153,155,66,154,32,234,242,62,142,135,231,90,130,33,64,124,47,23,76,160,193,31,112,13,86,158,163,160,212,168,40,58,146,19,183,174,219,219,161,40,190,207,207,64,53,225,243,141,48,238,255,22,190,203,157,242,113,27,78,198,160,230,64,192,124,51,112,56,150,2,235,12,184,74,44,180,235,29,218,102,116,42,9,138,165,90,10,72,105,142,17,120,130,160,10,45,72,232,98,165,163,10,157,119,129,253,31,63,210,152,123,72,87,208,99,245,73,99,63,206,57,190,38,252,227,143,128],[249,2,17,160,138,127,33,146,228,217,81,168,148,54,25,221,110,14,147,44,205,207,240,252,85,10,74,6,90,215,37,163,85,197,209,147,160,197,140,243,130,135,5,44,240,122,52,88,152,223,194,55,78,253,239,20,14,240,195,72,157,251,203,43,166,221,72,42,243,160,75,39,144,178,195,157,130,92,242,146,126,25,212,148,140,173,8,127,165,43,106,75,70,197,89,209,124,226,17,57,179,182,160,166,127,220,77,52,242,127,4,221,222,179,99,228,219,234,107,128,132,162,28,54,50,74,245,6,155,81,220,35,222,239,180,160,38,204,210,52,201,118,93,167,52,245,177,88,126,219,176,152,61,185,0,121,90,138,186,64,250,226,250,116,44,255,69,138,160,19,80,126,245,125,58,26,171,154,180,156,179,105,38,103,20,91,210,24,164,166,224,218,169,142,142,169,66,214,236,187,6,160,165,82,147,29,195,97,238,45,114,242,138,56,34,241,197,209,102,77,31,87,107,168,63,130,23,5,76,252,18,13,236,167,160,137,36,143,25,251,26,164,237,66,26,232,13,77,146,144,176,22,49,121,100,141,43,91,142,171,76,62,36,85,147,110,190,160,11,115,235,188,72,84,161,207,127,77,34,28,249,39,93,96,107,210,35,230,154,186,144,28,119,73,153,188,24,77,109,240,160,46,171,117,127,104,238,238,194,83,233,78,9,202,136,194,148,140,253,97,150,228,161,20,225,13,58,144,222,57,99,254,32,160,196,152,69,59,144,47,23,238,69,44,248,41,68,85,141,160,133,102,55,49,102,245,19,140,135,71,233,138,80,112,134,106,160,235,44,30,228,32,41,209,13,249,2,126,168,201,236,57,195,159,104,121,127,158,158,105,129,93,237,225,173,201,228,18,26,160,73,123,173,142,67,153,155,66,154,32,234,242,62,142,135,231,90,130,33,64,124,47,23,76,160,193,31,112,13,86,158,163,160,212,168,40,58,146,19,183,174,219,219,161,40,190,207,207,64,53,225,243,141,48,238,255,22,190,203,157,242,113,27,78,198,160,230,64,192,124,51,112,56,150,2,235,12,184,74,44,180,235,29,218,102,116,42,9,138,165,90,10,72,105,142,17,120,130,160,10,45,72,232,98,165,163,10,157,119,129,253,31,63,210,152,123,72,87,208,99,245,73,99,63,206,57,190,38,252,227,143,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,134,63,30,134,185,236,136,110,216,149,200,29,150,68,11,249,220,44,129,142,104,27,141,110,40,213,239,1,101,88,73,149,0],[160,198,67,193,40,189,183,243,110,236,249,87,164,254,4,18,247,165,8,224,145,183,146,193,134,108,92,51,118,87,1,55,55,0],[160,207,77,142,134,69,57,3,137,194,215,136,159,200,3,106,136,207,128,121,101,74,111,119,8,28,25,67,95,75,149,240,179,0],[160,113,169,81,156,152,233,242,53,158,61,1,6,154,158,221,95,160,161,22,75,243,24,208,145,102,67,192,91,136,171,112,130,0],[160,146,166,81,45,210,69,39,90,8,44,60,221,195,241,31,210,253,3,69,225,11,88,250,193,159,251,4,231,245,233,133,226,0],[160,77,136,232,125,146,182,216,32,31,95,68,167,85,8,141,149,172,249,145,110,63,184,182,211,115,249,66,156,35,44,206,130,0],[160,187,154,109,62,12,234,181,48,71,107,26,151,43,194,36,229,11,31,4,19,154,49,106,141,191,91,11,104,128,73,95,246,0],[160,203,119,143,72,93,31,12,157,215,52,167,43,217,70,64,171,206,192,149,251,222,195,239,242,45,174,126,148,245,99,64,233,0],[160,73,244,169,88,68,149,214,152,203,249,139,51,80,134,156,226,19,139,105,13,52,70,14,183,53,59,223,4,28,123,104,254,0],[160,15,252,131,153,150,238,233,87,57,131,180,245,221,26,171,14,170,52,134,20,157,152,67,164,172,251,14,21,209,240,7,100,0],[160,179,220,4,245,160,115,14,86,110,172,166,147,215,255,160,56,101,86,150,82,125,169,134,241,36,61,221,34,216,202,244,140,0],[160,44,172,79,123,106,240,124,139,46,74,80,170,182,250,147,244,33,60,118,18,121,72,132,239,214,154,100,185,201,68,249,50,0],[160,93,101,130,85,29,12,134,80,207,223,101,52,21,168,12,11,168,61,48,111,61,146,166,227,57,219,149,137,240,172,245,215,0],[160,9,243,232,41,51,138,168,83,221,234,35,126,44,249,128,242,15,18,210,250,246,228,60,215,162,53,252,99,107,192,121,172,0],[160,96,65,44,193,20,161,35,105,195,200,17,242,161,224,50,75,252,5,9,96,245,206,238,107,193,80,195,112,227,16,154,88,0],[160,142,167,165,168,158,18,66,44,73,118,203,155,197,126,32,57,210,76,183,198,171,22,96,231,247,20,192,86,93,226,56,223,0],[160,58,140,167,212,151,173,213,191,229,255,38,103,52,10,86,110,98,108,97,176,58,199,242,10,81,76,108,153,252,112,99,84,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,198,67,193,40,189,183,243,110,236,249,87,164,254,4,18,247,165,8,224,145,183,146,193,134,108,92,51,118,87,1,55,55,160,207,77,142,134,69,57,3,137,194,215,136,159,200,3,106,136,207,128,121,101,74,111,119,8,28,25,67,95,75,149,240,179,160,113,169,81,156,152,233,242,53,158,61,1,6,154,158,221,95,160,161,22,75,243,24,208,145,102,67,192,91,136,171,112,130,160,146,166,81,45,210,69,39,90,8,44,60,221,195,241,31,210,253,3,69,225,11,88,250,193,159,251,4,231,245,233,133,226,160,77,136,232,125,146,182,216,32,31,95,68,167,85,8,141,149,172,249,145,110,63,184,182,211,115,249,66,156,35,44,206,130,160,187,154,109,62,12,234,181,48,71,107,26,151,43,194,36,229,11,31,4,19,154,49,106,141,191,91,11,104,128,73,95,246,160,203,119,143,72,93,31,12,157,215,52,167,43,217,70,64,171,206,192,149,251,222,195,239,242,45,174,126,148,245,99,64,233,160,73,244,169,88,68,149,214,152,203,249,139,51,80,134,156,226,19,139,105,13,52,70,14,183,53,59,223,4,28,123,104,254,160,15,252,131,153,150,238,233,87,57,131,180,245,221,26,171,14,170,52,134,20,157,152,67,164,172,251,14,21,209,240,7,100,160,179,220,4,245,160,115,14,86,110,172,166,147,215,255,160,56,101,86,150,82,125,169,134,241,36,61,221,34,216,202,244,140,160,44,172,79,123,106,240,124,139,46,74,80,170,182,250,147,244,33,60,118,18,121,72,132,239,214,154,100,185,201,68,249,50,160,93,101,130,85,29,12,134,80,207,223,101,52,21,168,12,11,168,61,48,111,61,146,166,227,57,219,149,137,240,172,245,215,160,9,243,232,41,51,138,168,83,221,234,35,126,44,249,128,242,15,18,210,250,246,228,60,215,162,53,252,99,107,192,121,172,160,96,65,44,193,20,161,35,105,195,200,17,242,161,224,50,75,252,5,9,96,245,206,238,107,193,80,195,112,227,16,154,88,160,142,167,165,168,158,18,66,44,73,118,203,155,197,126,32,57,210,76,183,198,171,22,96,231,247,20,192,86,93,226,56,223,160,58,140,167,212,151,173,213,191,229,255,38,103,52,10,86,110,98,108,97,176,58,199,242,10,81,76,108,153,252,112,99,84,128],[249,2,17,160,198,67,193,40,189,183,243,110,236,249,87,164,254,4,18,247,165,8,224,145,183,146,193,134,108,92,51,118,87,1,55,55,160,207,77,142,134,69,57,3,137,194,215,136,159,200,3,106,136,207,128,121,101,74,111,119,8,28,25,67,95,75,149,240,179,160,113,169,81,156,152,233,242,53,158,61,1,6,154,158,221,95,160,161,22,75,243,24,208,145,102,67,192,91,136,171,112,130,160,134,63,30,134,185,236,136,110,216,149,200,29,150,68,11,249,220,44,129,142,104,27,141,110,40,213,239,1,101,88,73,149,160,77,136,232,125,146,182,216,32,31,95,68,167,85,8,141,149,172,249,145,110,63,184,182,211,115,249,66,156,35,44,206,130,160,187,154,109,62,12,234,181,48,71,107,26,151,43,194,36,229,11,31,4,19,154,49,106,141,191,91,11,104,128,73,95,246,160,203,119,143,72,93,31,12,157,215,52,167,43,217,70,64,171,206,192,149,251,222,195,239,242,45,174,126,148,245,99,64,233,160,73,244,169,88,68,149,214,152,203,249,139,51,80,134,156,226,19,139,105,13,52,70,14,183,53,59,223,4,28,123,104,254,160,15,252,131,153,150,238,233,87,57,131,180,245,221,26,171,14,170,52,134,20,157,152,67,164,172,251,14,21,209,240,7,100,160,179,220,4,245,160,115,14,86,110,172,166,147,215,255,160,56,101,86,150,82,125,169,134,241,36,61,221,34,216,202,244,140,160,44,172,79,123,106,240,124,139,46,74,80,170,182,250,147,244,33,60,118,18,121,72,132,239,214,154,100,185,201,68,249,50,160,93,101,130,85,29,12,134,80,207,223,101,52,21,168,12,11,168,61,48,111,61,146,166,227,57,219,149,137,240,172,245,215,160,9,243,232,41,51,138,168,83,221,234,35,126,44,249,128,242,15,18,210,250,246,228,60,215,162,53,252,99,107,192,121,172,160,96,65,44,193,20,161,35,105,195,200,17,242,161,224,50,75,252,5,9,96,245,206,238,107,193,80,195,112,227,16,154,88,160,142,167,165,168,158,18,66,44,73,118,203,155,197,126,32,57,210,76,183,198,171,22,96,231,247,20,192,86,93,226,56,223,160,58,140,167,212,151,173,213,191,229,255,38,103,52,10,86,110,98,108,97,176,58,199,242,10,81,76,108,153,252,112,99,84,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,79,132,115,35,52,46,95,96,2,2,115,162,44,191,156,162,192,165,82,107,140,211,254,138,34,192,195,57,95,161,87,130,0],[160,244,90,153,105,161,223,18,232,143,116,173,76,165,86,100,59,34,223,188,180,94,207,49,118,75,123,131,57,56,71,90,155,0],[160,35,244,145,51,163,253,92,20,107,47,18,175,177,120,133,74,31,144,227,75,98,88,197,112,84,5,232,224,253,82,92,193,0],[160,56,31,246,86,166,185,197,202,17,183,247,144,180,14,107,226,134,183,166,172,239,29,163,58,196,63,55,89,218,100,180,5,0],[160,151,184,234,56,149,4,80,205,52,13,51,132,68,34,32,94,222,115,12,5,118,255,135,222,239,35,80,184,168,42,193,180,0],[160,7,116,25,167,219,104,220,53,4,9,24,182,47,50,131,32,172,204,234,115,222,179,166,70,157,253,49,88,35,213,21,97,0],[160,57,102,138,145,250,184,56,48,16,144,15,55,9,81,42,245,180,206,237,191,155,230,201,249,171,205,249,219,24,217,242,180,0],[160,40,172,201,0,99,38,60,144,110,245,49,191,234,99,210,148,99,153,13,46,117,79,20,46,111,119,21,146,19,155,125,247,0],[160,55,48,220,133,35,40,6,26,64,184,118,52,69,142,104,219,58,163,199,188,88,218,133,87,22,51,166,123,229,143,18,252,0],[160,212,227,94,79,219,148,169,148,209,138,63,40,180,238,223,228,22,24,6,127,75,11,78,125,251,182,212,139,99,52,66,96,0],[160,164,191,91,178,63,195,101,63,192,103,48,228,255,138,158,51,141,236,147,98,51,19,220,86,101,88,179,108,60,162,131,188,0],[160,104,89,56,67,130,177,255,66,86,223,47,205,194,196,137,228,139,65,105,207,33,85,109,121,82,166,72,219,252,44,251,57,0],[160,111,19,137,216,175,63,82,137,160,225,123,29,238,54,138,24,22,119,125,255,226,18,91,100,8,156,64,163,170,92,111,188,0],[160,179,104,56,90,73,209,179,12,114,124,226,101,207,76,169,141,233,163,30,169,164,29,239,241,132,182,13,231,109,83,55,124,0],[160,74,127,198,113,16,237,43,248,128,38,150,250,141,62,130,75,226,154,190,213,104,13,69,100,48,100,116,214,59,21,226,249,0],[160,72,200,11,232,31,74,35,44,148,20,228,145,97,203,250,194,63,178,38,50,249,24,15,28,51,65,120,134,249,52,209,18,0],[160,78,63,199,8,64,10,86,178,79,45,34,87,4,90,143,21,108,3,249,46,245,215,234,190,141,91,30,183,226,2,124,117,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,244,90,153,105,161,223,18,232,143,116,173,76,165,86,100,59,34,223,188,180,94,207,49,118,75,123,131,57,56,71,90,155,160,35,244,145,51,163,253,92,20,107,47,18,175,177,120,133,74,31,144,227,75,98,88,197,112,84,5,232,224,253,82,92,193,160,56,31,246,86,166,185,197,202,17,183,247,144,180,14,107,226,134,183,166,172,239,29,163,58,196,63,55,89,218,100,180,5,160,151,184,234,56,149,4,80,205,52,13,51,132,68,34,32,94,222,115,12,5,118,255,135,222,239,35,80,184,168,42,193,180,160,7,116,25,167,219,104,220,53,4,9,24,182,47,50,131,32,172,204,234,115,222,179,166,70,157,253,49,88,35,213,21,97,160,57,102,138,145,250,184,56,48,16,144,15,55,9,81,42,245,180,206,237,191,155,230,201,249,171,205,249,219,24,217,242,180,160,40,172,201,0,99,38,60,144,110,245,49,191,234,99,210,148,99,153,13,46,117,79,20,46,111,119,21,146,19,155,125,247,160,55,48,220,133,35,40,6,26,64,184,118,52,69,142,104,219,58,163,199,188,88,218,133,87,22,51,166,123,229,143,18,252,160,212,227,94,79,219,148,169,148,209,138,63,40,180,238,223,228,22,24,6,127,75,11,78,125,251,182,212,139,99,52,66,96,160,164,191,91,178,63,195,101,63,192,103,48,228,255,138,158,51,141,236,147,98,51,19,220,86,101,88,179,108,60,162,131,188,160,104,89,56,67,130,177,255,66,86,223,47,205,194,196,137,228,139,65,105,207,33,85,109,121,82,166,72,219,252,44,251,57,160,111,19,137,216,175,63,82,137,160,225,123,29,238,54,138,24,22,119,125,255,226,18,91,100,8,156,64,163,170,92,111,188,160,179,104,56,90,73,209,179,12,114,124,226,101,207,76,169,141,233,163,30,169,164,29,239,241,132,182,13,231,109,83,55,124,160,74,127,198,113,16,237,43,248,128,38,150,250,141,62,130,75,226,154,190,213,104,13,69,100,48,100,116,214,59,21,226,249,160,72,200,11,232,31,74,35,44,148,20,228,145,97,203,250,194,63,178,38,50,249,24,15,28,51,65,120,134,249,52,209,18,160,78,63,199,8,64,10,86,178,79,45,34,87,4,90,143,21,108,3,249,46,245,215,234,190,141,91,30,183,226,2,124,117,128],[249,2,17,160,244,90,153,105,161,223,18,232,143,116,173,76,165,86,100,59,34,223,188,180,94,207,49,118,75,123,131,57,56,71,90,155,160,35,244,145,51,163,253,92,20,107,47,18,175,177,120,133,74,31,144,227,75,98,88,197,112,84,5,232,224,253,82,92,193,160,56,31,246,86,166,185,197,202,17,183,247,144,180,14,107,226,134,183,166,172,239,29,163,58,196,63,55,89,218,100,180,5,160,151,184,234,56,149,4,80,205,52,13,51,132,68,34,32,94,222,115,12,5,118,255,135,222,239,35,80,184,168,42,193,180,160,7,116,25,167,219,104,220,53,4,9,24,182,47,50,131,32,172,204,234,115,222,179,166,70,157,253,49,88,35,213,21,97,160,57,102,138,145,250,184,56,48,16,144,15,55,9,81,42,245,180,206,237,191,155,230,201,249,171,205,249,219,24,217,242,180,160,40,172,201,0,99,38,60,144,110,245,49,191,234,99,210,148,99,153,13,46,117,79,20,46,111,119,21,146,19,155,125,247,160,55,48,220,133,35,40,6,26,64,184,118,52,69,142,104,219,58,163,199,188,88,218,133,87,22,51,166,123,229,143,18,252,160,212,227,94,79,219,148,169,148,209,138,63,40,180,238,223,228,22,24,6,127,75,11,78,125,251,182,212,139,99,52,66,96,160,164,191,91,178,63,195,101,63,192,103,48,228,255,138,158,51,141,236,147,98,51,19,220,86,101,88,179,108,60,162,131,188,160,79,132,115,35,52,46,95,96,2,2,115,162,44,191,156,162,192,165,82,107,140,211,254,138,34,192,195,57,95,161,87,130,160,111,19,137,216,175,63,82,137,160,225,123,29,238,54,138,24,22,119,125,255,226,18,91,100,8,156,64,163,170,92,111,188,160,179,104,56,90,73,209,179,12,114,124,226,101,207,76,169,141,233,163,30,169,164,29,239,241,132,182,13,231,109,83,55,124,160,74,127,198,113,16,237,43,248,128,38,150,250,141,62,130,75,226,154,190,213,104,13,69,100,48,100,116,214,59,21,226,249,160,72,200,11,232,31,74,35,44,148,20,228,145,97,203,250,194,63,178,38,50,249,24,15,28,51,65,120,134,249,52,209,18,160,78,63,199,8,64,10,86,178,79,45,34,87,4,90,143,21,108,3,249,46,245,215,234,190,141,91,30,183,226,2,124,117,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,174,127,128,165,147,138,20,51,157,73,19,218,37,23,117,111,124,78,248,64,26,173,136,151,108,81,69,93,159,165,157,5,0],[160,31,109,172,75,105,4,14,57,45,244,58,48,6,182,167,77,33,27,158,179,225,10,160,190,65,18,205,234,203,31,149,248,0],[160,249,185,13,165,46,190,201,29,233,194,85,20,90,49,5,239,196,72,4,149,231,198,233,205,184,229,33,77,180,173,94,64,0],[160,82,129,161,33,12,98,1,200,45,61,97,162,4,227,14,249,124,232,96,143,228,45,88,130,130,18,105,83,227,151,243,21,0],[160,169,22,29,162,128,118,215,236,62,197,203,115,21,225,173,252,66,198,114,216,145,225,159,207,244,197,165,113,68,34,111,120,0],[160,42,24,87,137,84,11,35,99,129,198,127,228,155,85,156,33,108,82,86,188,33,157,85,117,109,104,122,163,199,71,97,63,0],[160,11,94,4,143,200,153,73,140,12,194,99,245,42,75,213,134,196,88,111,252,98,232,176,220,205,40,216,49,119,232,23,67,0],[160,1,5,106,142,90,105,79,140,233,63,181,221,199,121,32,21,161,106,163,152,53,3,224,176,188,51,7,198,167,79,165,90,0],[160,150,118,135,165,112,209,186,73,182,110,213,153,11,97,202,165,172,118,207,177,205,95,81,49,100,101,116,100,208,230,237,80,0],[160,67,238,226,4,56,160,7,9,62,173,208,28,99,223,224,155,183,205,220,34,242,92,149,250,160,83,45,165,255,53,80,85,0],[160,221,34,188,59,37,202,169,39,154,48,42,130,80,3,246,216,89,251,207,115,72,73,225,9,116,121,163,152,114,57,189,36,0],[160,93,190,179,84,128,186,178,224,157,147,1,35,88,133,198,240,174,123,167,19,127,169,89,188,33,65,67,181,232,61,235,142,0],[160,249,150,32,155,251,221,189,3,17,222,136,218,255,253,247,6,68,131,188,44,136,25,225,166,203,97,213,235,72,140,179,74,0],[160,60,165,183,131,173,1,132,99,195,145,37,137,210,206,115,65,217,193,165,234,88,203,21,161,33,130,32,80,222,131,28,151,0],[160,248,74,45,130,224,19,138,254,188,235,199,198,22,55,76,108,18,205,98,191,11,6,161,209,15,113,27,58,204,61,59,121,0],[160,120,250,153,106,169,215,19,33,181,33,25,147,9,77,249,44,197,35,196,63,86,254,191,40,49,133,215,179,123,6,57,39,0],[160,72,83,225,135,107,103,237,232,69,31,197,32,83,174,47,120,173,153,124,102,145,126,109,167,123,104,244,110,141,82,94,83,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,31,109,172,75,105,4,14,57,45,244,58,48,6,182,167,77,33,27,158,179,225,10,160,190,65,18,205,234,203,31,149,248,160,249,185,13,165,46,190,201,29,233,194,85,20,90,49,5,239,196,72,4,149,231,198,233,205,184,229,33,77,180,173,94,64,160,82,129,161,33,12,98,1,200,45,61,97,162,4,227,14,249,124,232,96,143,228,45,88,130,130,18,105,83,227,151,243,21,160,169,22,29,162,128,118,215,236,62,197,203,115,21,225,173,252,66,198,114,216,145,225,159,207,244,197,165,113,68,34,111,120,160,42,24,87,137,84,11,35,99,129,198,127,228,155,85,156,33,108,82,86,188,33,157,85,117,109,104,122,163,199,71,97,63,160,11,94,4,143,200,153,73,140,12,194,99,245,42,75,213,134,196,88,111,252,98,232,176,220,205,40,216,49,119,232,23,67,160,1,5,106,142,90,105,79,140,233,63,181,221,199,121,32,21,161,106,163,152,53,3,224,176,188,51,7,198,167,79,165,90,160,150,118,135,165,112,209,186,73,182,110,213,153,11,97,202,165,172,118,207,177,205,95,81,49,100,101,116,100,208,230,237,80,160,67,238,226,4,56,160,7,9,62,173,208,28,99,223,224,155,183,205,220,34,242,92,149,250,160,83,45,165,255,53,80,85,160,221,34,188,59,37,202,169,39,154,48,42,130,80,3,246,216,89,251,207,115,72,73,225,9,116,121,163,152,114,57,189,36,160,93,190,179,84,128,186,178,224,157,147,1,35,88,133,198,240,174,123,167,19,127,169,89,188,33,65,67,181,232,61,235,142,160,249,150,32,155,251,221,189,3,17,222,136,218,255,253,247,6,68,131,188,44,136,25,225,166,203,97,213,235,72,140,179,74,160,60,165,183,131,173,1,132,99,195,145,37,137,210,206,115,65,217,193,165,234,88,203,21,161,33,130,32,80,222,131,28,151,160,248,74,45,130,224,19,138,254,188,235,199,198,22,55,76,108,18,205,98,191,11,6,161,209,15,113,27,58,204,61,59,121,160,120,250,153,106,169,215,19,33,181,33,25,147,9,77,249,44,197,35,196,63,86,254,191,40,49,133,215,179,123,6,57,39,160,72,83,225,135,107,103,237,232,69,31,197,32,83,174,47,120,173,153,124,102,145,126,109,167,123,104,244,110,141,82,94,83,128],[249,2,17,160,31,109,172,75,105,4,14,57,45,244,58,48,6,182,167,77,33,27,158,179,225,10,160,190,65,18,205,234,203,31,149,248,160,249,185,13,165,46,190,201,29,233,194,85,20,90,49,5,239,196,72,4,149,231,198,233,205,184,229,33,77,180,173,94,64,160,82,129,161,33,12,98,1,200,45,61,97,162,4,227,14,249,124,232,96,143,228,45,88,130,130,18,105,83,227,151,243,21,160,169,22,29,162,128,118,215,236,62,197,203,115,21,225,173,252,66,198,114,216,145,225,159,207,244,197,165,113,68,34,111,120,160,174,127,128,165,147,138,20,51,157,73,19,218,37,23,117,111,124,78,248,64,26,173,136,151,108,81,69,93,159,165,157,5,160,11,94,4,143,200,153,73,140,12,194,99,245,42,75,213,134,196,88,111,252,98,232,176,220,205,40,216,49,119,232,23,67,160,1,5,106,142,90,105,79,140,233,63,181,221,199,121,32,21,161,106,163,152,53,3,224,176,188,51,7,198,167,79,165,90,160,150,118,135,165,112,209,186,73,182,110,213,153,11,97,202,165,172,118,207,177,205,95,81,49,100,101,116,100,208,230,237,80,160,67,238,226,4,56,160,7,9,62,173,208,28,99,223,224,155,183,205,220,34,242,92,149,250,160,83,45,165,255,53,80,85,160,221,34,188,59,37,202,169,39,154,48,42,130,80,3,246,216,89,251,207,115,72,73,225,9,116,121,163,152,114,57,189,36,160,93,190,179,84,128,186,178,224,157,147,1,35,88,133,198,240,174,123,167,19,127,169,89,188,33,65,67,181,232,61,235,142,160,249,150,32,155,251,221,189,3,17,222,136,218,255,253,247,6,68,131,188,44,136,25,225,166,203,97,213,235,72,140,179,74,160,60,165,183,131,173,1,132,99,195,145,37,137,210,206,115,65,217,193,165,234,88,203,21,161,33,130,32,80,222,131,28,151,160,248,74,45,130,224,19,138,254,188,235,199,198,22,55,76,108,18,205,98,191,11,6,161,209,15,113,27,58,204,61,59,121,160,120,250,153,106,169,215,19,33,181,33,25,147,9,77,249,44,197,35,196,63,86,254,191,40,49,133,215,179,123,6,57,39,160,72,83,225,135,107,103,237,232,69,31,197,32,83,174,47,120,173,153,124,102,145,126,109,167,123,104,244,110,141,82,94,83,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,88,250,177,137,251,253,171,31,170,108,145,2,118,240,52,248,128,177,214,147,184,112,178,29,82,17,46,69,147,165,137,56,0],[160,13,157,185,252,114,76,122,218,166,113,146,46,92,127,68,128,20,109,167,255,153,41,182,219,247,46,231,71,3,136,72,105,0],[160,120,38,219,27,99,39,56,156,92,104,216,244,250,12,81,97,13,22,152,243,240,98,96,18,224,44,143,231,23,26,104,114,0],[160,177,239,243,230,211,42,186,150,132,69,102,238,71,233,209,51,15,164,42,234,70,36,68,136,63,127,115,55,223,7,111,191,0],[160,9,6,125,83,115,100,224,226,144,175,1,176,89,202,146,236,151,170,10,57,64,237,114,171,54,42,254,51,10,204,101,148,0],[160,76,50,165,220,142,156,132,106,64,235,161,217,161,75,0,230,74,96,37,235,140,79,95,249,209,98,202,165,160,223,132,227,0],[160,80,192,12,181,234,197,167,48,160,85,10,220,41,220,187,66,88,224,134,140,35,222,37,94,171,131,46,144,39,31,171,221,0],[160,250,83,109,214,245,126,181,19,9,194,132,223,136,217,180,69,130,139,209,157,145,173,134,85,209,184,39,144,12,0,67,58,0],[160,45,253,55,78,120,246,54,91,16,199,171,20,188,118,155,81,50,195,205,189,191,253,1,217,16,165,139,171,156,222,153,68,0],[160,186,156,147,99,35,199,104,175,127,207,113,246,23,3,22,210,100,90,161,166,222,127,145,102,113,241,207,233,201,22,186,103,0],[160,140,205,180,19,20,44,104,33,137,228,163,179,83,245,25,210,54,27,46,217,121,232,61,240,247,17,6,54,147,234,200,192,0],[160,175,110,149,185,114,213,216,188,47,36,254,115,151,98,218,192,167,178,101,32,28,105,225,132,84,12,189,210,213,53,147,24,0],[160,174,96,207,155,115,6,77,151,63,199,24,31,4,149,44,67,154,128,149,233,132,146,49,149,232,175,144,41,99,159,164,191,0],[160,219,130,167,157,148,69,117,35,59,187,83,145,209,70,155,92,167,58,48,74,247,48,247,243,9,180,224,214,216,3,67,168,0],[160,72,169,66,134,103,248,232,160,153,49,229,15,86,175,29,153,227,6,94,44,11,16,179,234,112,32,253,69,33,192,69,35,0],[160,228,44,167,227,222,157,95,241,127,84,99,190,39,16,42,250,204,124,46,138,35,80,87,36,134,74,111,75,146,205,95,189,0],[160,41,70,243,15,151,249,56,215,177,30,167,155,152,146,216,144,202,41,142,59,67,182,44,112,154,175,50,51,150,229,38,151,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,13,157,185,252,114,76,122,218,166,113,146,46,92,127,68,128,20,109,167,255,153,41,182,219,247,46,231,71,3,136,72,105,160,120,38,219,27,99,39,56,156,92,104,216,244,250,12,81,97,13,22,152,243,240,98,96,18,224,44,143,231,23,26,104,114,160,177,239,243,230,211,42,186,150,132,69,102,238,71,233,209,51,15,164,42,234,70,36,68,136,63,127,115,55,223,7,111,191,160,9,6,125,83,115,100,224,226,144,175,1,176,89,202,146,236,151,170,10,57,64,237,114,171,54,42,254,51,10,204,101,148,160,76,50,165,220,142,156,132,106,64,235,161,217,161,75,0,230,74,96,37,235,140,79,95,249,209,98,202,165,160,223,132,227,160,80,192,12,181,234,197,167,48,160,85,10,220,41,220,187,66,88,224,134,140,35,222,37,94,171,131,46,144,39,31,171,221,160,250,83,109,214,245,126,181,19,9,194,132,223,136,217,180,69,130,139,209,157,145,173,134,85,209,184,39,144,12,0,67,58,160,45,253,55,78,120,246,54,91,16,199,171,20,188,118,155,81,50,195,205,189,191,253,1,217,16,165,139,171,156,222,153,68,160,186,156,147,99,35,199,104,175,127,207,113,246,23,3,22,210,100,90,161,166,222,127,145,102,113,241,207,233,201,22,186,103,160,140,205,180,19,20,44,104,33,137,228,163,179,83,245,25,210,54,27,46,217,121,232,61,240,247,17,6,54,147,234,200,192,160,175,110,149,185,114,213,216,188,47,36,254,115,151,98,218,192,167,178,101,32,28,105,225,132,84,12,189,210,213,53,147,24,160,174,96,207,155,115,6,77,151,63,199,24,31,4,149,44,67,154,128,149,233,132,146,49,149,232,175,144,41,99,159,164,191,160,219,130,167,157,148,69,117,35,59,187,83,145,209,70,155,92,167,58,48,74,247,48,247,243,9,180,224,214,216,3,67,168,160,72,169,66,134,103,248,232,160,153,49,229,15,86,175,29,153,227,6,94,44,11,16,179,234,112,32,253,69,33,192,69,35,160,228,44,167,227,222,157,95,241,127,84,99,190,39,16,42,250,204,124,46,138,35,80,87,36,134,74,111,75,146,205,95,189,160,41,70,243,15,151,249,56,215,177,30,167,155,152,146,216,144,202,41,142,59,67,182,44,112,154,175,50,51,150,229,38,151,128],[249,2,17,160,13,157,185,252,114,76,122,218,166,113,146,46,92,127,68,128,20,109,167,255,153,41,182,219,247,46,231,71,3,136,72,105,160,120,38,219,27,99,39,56,156,92,104,216,244,250,12,81,97,13,22,152,243,240,98,96,18,224,44,143,231,23,26,104,114,160,177,239,243,230,211,42,186,150,132,69,102,238,71,233,209,51,15,164,42,234,70,36,68,136,63,127,115,55,223,7,111,191,160,9,6,125,83,115,100,224,226,144,175,1,176,89,202,146,236,151,170,10,57,64,237,114,171,54,42,254,51,10,204,101,148,160,76,50,165,220,142,156,132,106,64,235,161,217,161,75,0,230,74,96,37,235,140,79,95,249,209,98,202,165,160,223,132,227,160,88,250,177,137,251,253,171,31,170,108,145,2,118,240,52,248,128,177,214,147,184,112,178,29,82,17,46,69,147,165,137,56,160,250,83,109,214,245,126,181,19,9,194,132,223,136,217,180,69,130,139,209,157,145,173,134,85,209,184,39,144,12,0,67,58,160,45,253,55,78,120,246,54,91,16,199,171,20,188,118,155,81,50,195,205,189,191,253,1,217,16,165,139,171,156,222,153,68,160,186,156,147,99,35,199,104,175,127,207,113,246,23,3,22,210,100,90,161,166,222,127,145,102,113,241,207,233,201,22,186,103,160,140,205,180,19,20,44,104,33,137,228,163,179,83,245,25,210,54,27,46,217,121,232,61,240,247,17,6,54,147,234,200,192,160,175,110,149,185,114,213,216,188,47,36,254,115,151,98,218,192,167,178,101,32,28,105,225,132,84,12,189,210,213,53,147,24,160,174,96,207,155,115,6,77,151,63,199,24,31,4,149,44,67,154,128,149,233,132,146,49,149,232,175,144,41,99,159,164,191,160,219,130,167,157,148,69,117,35,59,187,83,145,209,70,155,92,167,58,48,74,247,48,247,243,9,180,224,214,216,3,67,168,160,72,169,66,134,103,248,232,160,153,49,229,15,86,175,29,153,227,6,94,44,11,16,179,234,112,32,253,69,33,192,69,35,160,228,44,167,227,222,157,95,241,127,84,99,190,39,16,42,250,204,124,46,138,35,80,87,36,134,74,111,75,146,205,95,189,160,41,70,243,15,151,249,56,215,177,30,167,155,152,146,216,144,202,41,142,59,67,182,44,112,154,175,50,51,150,229,38,151,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,167,211,155,160,201,251,76,202,216,44,134,208,243,169,194,31,136,106,132,127,255,30,231,154,164,250,237,71,247,7,71,108,0],[160,114,102,255,251,116,2,170,24,47,182,156,52,247,77,37,159,202,195,203,229,225,253,90,175,118,104,20,35,133,52,155,244,0],[160,78,23,202,198,202,214,14,58,125,132,219,67,63,207,85,200,153,36,149,233,28,35,139,230,17,117,203,142,79,111,121,218,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,135,254,104,129,55,206,89,47,238,27,174,86,42,28,197,55,89,83,86,225,100,145,89,86,248,29,217,37,103,201,188,154,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,66,197,211,26,77,6,194,179,239,36,39,81,34,130,78,91,43,170,187,156,32,87,79,162,118,9,74,166,52,228,112,213,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,94,222,210,28,114,128,49,122,255,137,107,72,124,187,176,57,17,151,86,90,100,190,79,176,183,4,146,102,255,76,23,211,0],[160,65,207,168,60,21,138,86,118,0,148,150,30,137,250,140,105,254,195,143,205,101,42,136,3,61,56,221,26,213,104,50,37,0],[160,165,159,178,156,166,213,224,178,67,173,170,94,214,7,34,151,218,154,172,77,122,38,235,178,69,98,97,32,143,225,253,133,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,224,50,44,205,185,131,62,225,83,116,214,175,71,47,115,103,169,72,147,250,234,126,41,228,220,75,22,91,142,198,49,233,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,160,114,102,255,251,116,2,170,24,47,182,156,52,247,77,37,159,202,195,203,229,225,253,90,175,118,104,20,35,133,52,155,244,160,78,23,202,198,202,214,14,58,125,132,219,67,63,207,85,200,153,36,149,233,28,35,139,230,17,117,203,142,79,111,121,218,128,128,160,135,254,104,129,55,206,89,47,238,27,174,86,42,28,197,55,89,83,86,225,100,145,89,86,248,29,217,37,103,201,188,154,128,160,66,197,211,26,77,6,194,179,239,36,39,81,34,130,78,91,43,170,187,156,32,87,79,162,118,9,74,166,52,228,112,213,128,128,128,160,94,222,210,28,114,128,49,122,255,137,107,72,124,187,176,57,17,151,86,90,100,190,79,176,183,4,146,102,255,76,23,211,160,65,207,168,60,21,138,86,118,0,148,150,30,137,250,140,105,254,195,143,205,101,42,136,3,61,56,221,26,213,104,50,37,160,165,159,178,156,166,213,224,178,67,173,170,94,214,7,34,151,218,154,172,77,122,38,235,178,69,98,97,32,143,225,253,133,128,160,224,50,44,205,185,131,62,225,83,116,214,175,71,47,115,103,169,72,147,250,234,126,41,228,220,75,22,91,142,198,49,233,128,128],[249,1,17,160,167,211,155,160,201,251,76,202,216,44,134,208,243,169,194,31,136,106,132,127,255,30,231,154,164,250,237,71,247,7,71,108,160,78,23,202,198,202,214,14,58,125,132,219,67,63,207,85,200,153,36,149,233,28,35,139,230,17,117,203,142,79,111,121,218,128,128,160,135,254,104,129,55,206,89,47,238,27,174,86,42,28,197,55,89,83,86,225,100,145,89,86,248,29,217,37,103,201,188,154,128,160,66,197,211,26,77,6,194,179,239,36,39,81,34,130,78,91,43,170,187,156,32,87,79,162,118,9,74,166,52,228,112,213,128,128,128,160,94,222,210,28,114,128,49,122,255,137,107,72,124,187,176,57,17,151,86,90,100,190,79,176,183,4,146,102,255,76,23,211,160,65,207,168,60,21,138,86,118,0,148,150,30,137,250,140,105,254,195,143,205,101,42,136,3,61,56,221,26,213,104,50,37,160,165,159,178,156,166,213,224,178,67,173,170,94,214,7,34,151,218,154,172,77,122,38,235,178,69,98,97,32,143,225,253,133,128,160,224,50,44,205,185,131,62,225,83,116,214,175,71,47,115,103,169,72,147,250,234,126,41,228,220,75,22,91,142,198,49,233,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,174,79,250,14,204,47,230,127,162,158,244,66,186,245,88,129,146,245,96,126,115,7,239,250,25,59,94,83,145,226,98,151,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,113,65,45,107,211,235,72,59,222,171,146,31,38,245,62,163,235,195,74,119,251,206,230,11,150,55,132,81,123,170,212,163,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,110,235,214,105,255,174,229,137,2,218,227,118,60,16,72,206,40,139,100,36,168,55,218,161,22,254,227,8,182,136,245,2,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,160,113,65,45,107,211,235,72,59,222,171,146,31,38,245,62,163,235,195,74,119,251,206,230,11,150,55,132,81,123,170,212,163,128,128,128,128,128,128,128,128,160,110,235,214,105,255,174,229,137,2,218,227,118,60,16,72,206,40,139,100,36,168,55,218,161,22,254,227,8,182,136,245,2,128,128,128,128],[248,81,128,128,128,160,174,79,250,14,204,47,230,127,162,158,244,66,186,245,88,129,146,245,96,126,115,7,239,250,25,59,94,83,145,226,98,151,128,128,128,128,128,128,128,128,160,110,235,214,105,255,174,229,137,2,218,227,118,60,16,72,206,40,139,100,36,168,55,218,161,22,254,227,8,182,136,245,2,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,251,239,18,80,24,140,50,182,60,87,149,120,38,223,78,36,232,177,156],"key":[89,58,69,3,8,255,129,146,76,148,81,97,14,199,143,32,220,69,111,203,226,251,70,230,53,231,48,120,90,97,54,153],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,32,8,255,129,146,76,148,81,97,14,199,143,32,220,69,111,203,226,251,70,230,53,231,48,120,90,97,54,153,0,0,0,0],[157,32,8,255,129,146,76,148,81,97,14,199,143,32,220,69,111,203,226,251,70,230,53,231,48,120,90,97,54,153,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,59,238,154,25,144,60,31,105,66,242,209,32,124,51,34,42,196,132,191,76,48,11,22,222,1,157,152,83,246,178,125,233,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,116,153,120,158,35,139,22,3,217,133,14,145,254,66,30,86,90,251,215,156,182,186,146,63,18,216,131,139,85,131,244,191,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,32,8,255,129,146,76,148,81,97,14,199,143,32,220,69,111,203,226,251,70,230,53,231,48,120,90,97,54,153,0,0,0,0]],"keccak_data":[[248,102,157,32,8,255,129,146,76,148,81,97,14,199,143,32,220,69,111,203,226,251,70,230,53,231,48,120,90,97,54,153,184,70,248,68,128,128,160,59,238,154,25,144,60,31,105,66,242,209,32,124,51,34,42,196,132,191,76,48,11,22,222,1,157,152,83,246,178,125,233,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,32,8,255,129,146,76,148,81,97,14,199,143,32,220,69,111,203,226,251,70,230,53,231,48,120,90,97,54,153,184,70,248,68,128,128,160,116,153,120,158,35,139,22,3,217,133,14,145,254,66,30,86,90,251,215,156,182,186,146,63,18,216,131,139,85,131,244,191,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,251,239,18,80,24,140,50,182,60,87,149,120,38,223,78,36,232,177,156]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,1,241],[249,1,241]]}},"account":null,"storage":null,"values":[[160,226,190,84,69,203,56,27,246,201,141,156,201,73,130,2,159,121,205,4,166,22,147,152,70,29,59,157,94,225,160,94,240,0],[160,204,194,226,85,82,6,124,142,106,162,69,119,101,234,203,92,9,35,49,34,179,169,184,74,212,205,153,215,64,2,69,11,0],[160,146,211,7,181,80,184,128,210,140,226,253,105,47,69,67,194,200,138,20,165,255,169,169,177,25,201,201,218,0,157,18,18,0],[160,208,33,205,224,108,205,186,93,109,76,30,211,146,25,7,254,115,208,196,105,121,42,163,177,198,23,15,36,5,46,198,180,0],[160,73,94,192,117,195,212,98,139,44,6,155,129,48,36,255,127,152,95,198,222,76,2,154,61,50,137,70,110,202,184,142,66,0],[160,228,14,214,173,91,109,190,107,102,99,110,81,204,134,132,104,22,80,232,183,99,126,181,222,22,99,161,241,43,24,96,129,0],[160,247,75,55,167,2,177,37,200,253,126,27,245,213,100,203,161,93,185,208,5,24,49,76,211,44,236,111,152,112,224,98,125,0],[160,230,22,253,170,152,113,254,12,166,248,9,27,116,170,80,101,127,172,42,94,164,184,103,63,63,203,166,141,193,187,87,168,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,117,149,153,237,216,63,165,171,137,208,135,9,180,117,70,208,83,218,63,200,170,93,35,163,51,9,83,161,89,60,217,179,0],[160,29,247,15,47,1,177,100,251,199,209,91,76,181,252,99,47,138,97,193,14,106,168,117,20,243,247,67,82,27,42,139,189,0],[160,86,153,243,205,214,216,172,185,100,30,86,99,49,82,49,247,177,238,16,87,18,126,87,139,153,240,219,140,182,83,105,31,0],[160,211,238,130,107,102,107,144,178,164,143,83,102,241,65,167,48,252,225,115,95,14,108,173,28,208,28,77,44,83,123,173,16,0],[160,186,221,17,0,200,65,124,37,1,181,128,208,86,182,251,162,107,80,43,141,35,165,131,83,91,111,47,110,176,231,141,210,0],[160,129,81,211,100,87,22,11,136,240,210,84,144,242,161,94,74,105,72,124,192,39,242,239,55,104,6,51,148,145,31,11,209,0],[160,157,197,131,4,128,188,75,87,93,202,109,247,146,82,145,233,192,9,140,188,190,68,177,254,198,174,127,240,178,104,50,107,0],[160,46,136,255,61,158,62,132,88,135,23,229,136,200,227,233,116,253,28,81,123,166,242,240,108,197,163,101,134,113,194,55,164,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,241,160,204,194,226,85,82,6,124,142,106,162,69,119,101,234,203,92,9,35,49,34,179,169,184,74,212,205,153,215,64,2,69,11,160,146,211,7,181,80,184,128,210,140,226,253,105,47,69,67,194,200,138,20,165,255,169,169,177,25,201,201,218,0,157,18,18,160,208,33,205,224,108,205,186,93,109,76,30,211,146,25,7,254,115,208,196,105,121,42,163,177,198,23,15,36,5,46,198,180,160,73,94,192,117,195,212,98,139,44,6,155,129,48,36,255,127,152,95,198,222,76,2,154,61,50,137,70,110,202,184,142,66,160,228,14,214,173,91,109,190,107,102,99,110,81,204,134,132,104,22,80,232,183,99,126,181,222,22,99,161,241,43,24,96,129,160,247,75,55,167,2,177,37,200,253,126,27,245,213,100,203,161,93,185,208,5,24,49,76,211,44,236,111,152,112,224,98,125,160,230,22,253,170,152,113,254,12,166,248,9,27,116,170,80,101,127,172,42,94,164,184,103,63,63,203,166,141,193,187,87,168,128,160,117,149,153,237,216,63,165,171,137,208,135,9,180,117,70,208,83,218,63,200,170,93,35,163,51,9,83,161,89,60,217,179,160,29,247,15,47,1,177,100,251,199,209,91,76,181,252,99,47,138,97,193,14,106,168,117,20,243,247,67,82,27,42,139,189,160,86,153,243,205,214,216,172,185,100,30,86,99,49,82,49,247,177,238,16,87,18,126,87,139,153,240,219,140,182,83,105,31,160,211,238,130,107,102,107,144,178,164,143,83,102,241,65,167,48,252,225,115,95,14,108,173,28,208,28,77,44,83,123,173,16,160,186,221,17,0,200,65,124,37,1,181,128,208,86,182,251,162,107,80,43,141,35,165,131,83,91,111,47,110,176,231,141,210,160,129,81,211,100,87,22,11,136,240,210,84,144,242,161,94,74,105,72,124,192,39,242,239,55,104,6,51,148,145,31,11,209,160,157,197,131,4,128,188,75,87,93,202,109,247,146,82,145,233,192,9,140,188,190,68,177,254,198,174,127,240,178,104,50,107,160,46,136,255,61,158,62,132,88,135,23,229,136,200,227,233,116,253,28,81,123,166,242,240,108,197,163,101,134,113,194,55,164,128],[249,1,241,160,204,194,226,85,82,6,124,142,106,162,69,119,101,234,203,92,9,35,49,34,179,169,184,74,212,205,153,215,64,2,69,11,160,146,211,7,181,80,184,128,210,140,226,253,105,47,69,67,194,200,138,20,165,255,169,169,177,25,201,201,218,0,157,18,18,160,208,33,205,224,108,205,186,93,109,76,30,211,146,25,7,254,115,208,196,105,121,42,163,177,198,23,15,36,5,46,198,180,160,73,94,192,117,195,212,98,139,44,6,155,129,48,36,255,127,152,95,198,222,76,2,154,61,50,137,70,110,202,184,142,66,160,228,14,214,173,91,109,190,107,102,99,110,81,204,134,132,104,22,80,232,183,99,126,181,222,22,99,161,241,43,24,96,129,160,247,75,55,167,2,177,37,200,253,126,27,245,213,100,203,161,93,185,208,5,24,49,76,211,44,236,111,152,112,224,98,125,160,230,22,253,170,152,113,254,12,166,248,9,27,116,170,80,101,127,172,42,94,164,184,103,63,63,203,166,141,193,187,87,168,128,160,117,149,153,237,216,63,165,171,137,208,135,9,180,117,70,208,83,218,63,200,170,93,35,163,51,9,83,161,89,60,217,179,160,29,247,15,47,1,177,100,251,199,209,91,76,181,252,99,47,138,97,193,14,106,168,117,20,243,247,67,82,27,42,139,189,160,86,153,243,205,214,216,172,185,100,30,86,99,49,82,49,247,177,238,16,87,18,126,87,139,153,240,219,140,182,83,105,31,160,211,238,130,107,102,107,144,178,164,143,83,102,241,65,167,48,252,225,115,95,14,108,173,28,208,28,77,44,83,123,173,16,160,186,221,17,0,200,65,124,37,1,181,128,208,86,182,251,162,107,80,43,141,35,165,131,83,91,111,47,110,176,231,141,210,160,129,81,211,100,87,22,11,136,240,210,84,144,242,161,94,74,105,72,124,192,39,242,239,55,104,6,51,148,145,31,11,209,160,226,190,84,69,203,56,27,246,201,141,156,201,73,130,2,159,121,205,4,166,22,147,152,70,29,59,157,94,225,160,94,240,160,46,136,255,61,158,62,132,88,135,23,229,136,200,227,233,116,253,28,81,123,166,242,240,108,197,163,101,134,113,194,55,164,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[248,145],[248,145]]}},"account":null,"storage":null,"values":[[160,182,104,108,5,101,67,68,63,182,144,81,1,94,196,132,5,233,246,221,169,26,88,78,224,208,14,115,84,171,42,152,115,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,184,46,19,86,166,55,200,224,128,167,165,206,11,235,15,52,250,109,102,0,79,105,149,189,78,159,248,136,147,11,192,141,0],[160,212,70,110,79,254,88,48,73,77,223,130,47,69,249,218,213,70,209,64,202,174,136,63,157,17,218,210,78,140,16,119,17,0],[160,239,94,255,112,200,63,102,226,213,74,59,200,189,160,157,223,171,118,210,95,226,64,126,179,91,80,127,33,117,247,158,28,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,180,129,224,29,6,87,114,132,127,60,150,193,184,179,91,229,253,70,217,195,127,123,249,72,244,77,90,191,216,137,219,65,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,145,128,160,184,46,19,86,166,55,200,224,128,167,165,206,11,235,15,52,250,109,102,0,79,105,149,189,78,159,248,136,147,11,192,141,160,212,70,110,79,254,88,48,73,77,223,130,47,69,249,218,213,70,209,64,202,174,136,63,157,17,218,210,78,140,16,119,17,160,239,94,255,112,200,63,102,226,213,74,59,200,189,160,157,223,171,118,210,95,226,64,126,179,91,80,127,33,117,247,158,28,128,128,128,128,128,128,128,160,180,129,224,29,6,87,114,132,127,60,150,193,184,179,91,229,253,70,217,195,127,123,249,72,244,77,90,191,216,137,219,65,128,128,128,128,128],[248,145,128,160,184,46,19,86,166,55,200,224,128,167,165,206,11,235,15,52,250,109,102,0,79,105,149,189,78,159,248,136,147,11,192,141,160,212,70,110,79,254,88,48,73,77,223,130,47,69,249,218,213,70,209,64,202,174,136,63,157,17,218,210,78,140,16,119,17,160,239,94,255,112,200,63,102,226,213,74,59,200,189,160,157,223,171,118,210,95,226,64,126,179,91,80,127,33,117,247,158,28,128,128,128,128,128,128,128,160,182,104,108,5,101,67,68,63,182,144,81,1,94,196,132,5,233,246,221,169,26,88,78,224,208,14,115,84,171,42,152,115,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[true,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":14,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,60,226,195,23,238,134,33,223,70,2,103,252,151,203,213,143,75,59,120,238,144,88,86,245,53,153,249,230,170,10,224,141,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,60,226,195,23,238,134,33,223,70,2,103,252,151,203,213,143,75,59,120,238,144,88,86,245,53,153,249,230,170,10,224,141,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,221,112,242,174,195,165,16,106,96,22,29,8,136,52,239,171,161,199,208,72,236,151,100,101,23,82,233,154,28,167,148,73,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,128,128,128,128,160,60,226,195,23,238,134,33,223,70,2,103,252,151,203,213,143,75,59,120,238,144,88,86,245,53,153,249,230,170,10,224,141,128,160,221,112,242,174,195,165,16,106,96,22,29,8,136,52,239,171,161,199,208,72,236,151,100,101,23,82,233,154,28,167,148,73,128,128],[248,81,128,128,128,128,128,128,128,128,128,128,128,128,160,60,226,195,23,238,134,33,223,70,2,103,252,151,203,213,143,75,59,120,238,144,88,86,245,53,153,249,230,170,10,224,141,128,160,221,112,242,174,195,165,16,106,96,22,29,8,136,52,239,171,161,199,208,72,236,151,100,101,23,82,233,154,28,167,148,73,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,67],"key":[235,207,117,31,216,242,20,172,137,89,10,84,218,35,38,178,182,67,5,68,54,127,178,216,248,46,67,173,108,157,55,18],"list_rlp_bytes":[[248,67],[225]],"value_rlp_bytes":[[161],[17]],"drifted_rlp_bytes":[248,66],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,32,235,117,17,208,2,186,74,12,134,238,103,127,37,240,27,164,245,42,218,188,162,9,151,17,57,90,177,190,250,180,61,0],[160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170,0],[159,63,117,31,216,242,20,172,137,89,10,84,218,35,38,178,182,67,5,68,54,127,178,216,248,46,67,173,108,157,55,18,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,59,117,17,208,2,186,74,12,134,238,103,127,37,240,27,164,245,42,218,188,162,9,151,17,57,90,177,190,250,180,61,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,67,160,32,235,117,17,208,2,186,74,12,134,238,103,127,37,240,27,164,245,42,218,188,162,9,151,17,57,90,177,190,250,180,61,161,160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170],[225,159,63,117,31,216,242,20,172,137,89,10,84,218,35,38,178,182,67,5,68,54,127,178,216,248,46,67,173,108,157,55,18,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,67],[248,66,159,59,117,17,208,2,186,74,12,134,238,103,127,37,240,27,164,245,42,218,188,162,9,151,17,57,90,177,190,250,180,61,161,160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/BalanceModCLong.json b/zkevm-circuits/src/mpt_circuit/tests/BalanceModCLong.json new file mode 100644 index 0000000000..f7543f5e89 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/BalanceModCLong.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"BalanceChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,34,65,36,198,35,126,190,229,144,5,107,155,205,36,98,181,113,214,141,98,195,52,141,193,242,4,73,192,83,104,100,155,0],[160,204,180,233,79,209,238,24,231,117,128,223,162,62,169,1,59,44,107,6,160,54,110,174,161,202,187,130,210,23,159,59,53,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,254,132,91,142,65,69,113,48,77,73,63,31,218,242,183,51,206,40,164,131,227,177,255,205,118,170,246,235,92,73,195,40,0],[160,207,25,136,176,219,19,125,248,221,226,37,49,126,193,111,64,241,36,42,95,246,32,248,209,249,221,118,115,191,198,60,251,0],[160,82,137,39,131,73,246,17,181,228,41,231,138,20,214,96,57,89,233,241,115,173,101,182,209,11,226,190,180,241,175,169,48,0],[160,96,13,97,228,114,130,227,139,95,235,181,156,221,158,24,50,37,122,38,159,136,47,158,219,154,150,169,255,217,229,255,46,0],[160,219,139,73,171,247,198,84,124,16,5,239,28,69,184,190,3,10,137,135,153,59,96,150,2,6,55,143,216,10,40,57,14,0],[160,230,172,97,53,138,81,182,253,34,92,102,213,85,230,62,204,38,19,157,159,106,244,141,231,119,139,30,82,17,248,166,188,0],[160,165,195,18,63,220,15,211,53,125,206,92,137,136,20,42,255,173,88,99,87,117,223,170,169,219,3,246,177,111,130,214,240,0],[160,235,197,24,239,109,16,89,37,244,65,114,121,182,69,143,224,194,139,246,253,79,0,205,84,137,161,40,60,103,249,123,227,0],[160,185,247,60,119,144,31,158,231,72,186,57,228,125,4,215,127,211,178,160,137,36,48,31,211,106,150,113,76,58,138,78,84,0],[160,102,186,8,67,98,6,255,253,62,105,39,103,84,162,49,65,188,180,38,231,30,27,102,244,243,173,98,242,124,202,42,116,0],[160,222,152,116,39,82,245,17,9,75,20,236,207,29,254,224,131,101,95,156,83,203,73,42,77,232,93,162,148,191,25,189,83,0],[160,252,82,105,110,184,232,101,73,206,42,128,36,141,47,9,242,208,212,80,107,99,31,203,220,189,127,118,88,235,51,100,16,0],[160,140,144,226,152,9,143,184,98,75,119,140,138,189,41,16,86,90,220,7,160,255,163,234,160,65,226,99,185,209,175,87,153,0],[160,147,222,156,155,5,248,196,245,42,104,123,89,226,59,146,179,152,243,188,16,203,141,242,245,35,37,186,247,242,233,116,194,0],[160,77,181,94,55,60,65,150,213,94,128,208,85,225,56,182,170,255,62,173,249,192,27,109,46,165,176,52,102,165,181,158,123,0],[160,41,92,138,175,248,169,35,32,3,60,85,173,153,77,167,97,48,46,186,178,179,251,81,119,52,133,83,208,66,99,253,98,0],[160,210,90,148,32,152,241,40,152,156,177,245,3,137,19,75,169,109,138,85,24,212,56,152,150,112,147,170,123,101,171,194,235,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,207,25,136,176,219,19,125,248,221,226,37,49,126,193,111,64,241,36,42,95,246,32,248,209,249,221,118,115,191,198,60,251,160,82,137,39,131,73,246,17,181,228,41,231,138,20,214,96,57,89,233,241,115,173,101,182,209,11,226,190,180,241,175,169,48,160,96,13,97,228,114,130,227,139,95,235,181,156,221,158,24,50,37,122,38,159,136,47,158,219,154,150,169,255,217,229,255,46,160,219,139,73,171,247,198,84,124,16,5,239,28,69,184,190,3,10,137,135,153,59,96,150,2,6,55,143,216,10,40,57,14,160,230,172,97,53,138,81,182,253,34,92,102,213,85,230,62,204,38,19,157,159,106,244,141,231,119,139,30,82,17,248,166,188,160,165,195,18,63,220,15,211,53,125,206,92,137,136,20,42,255,173,88,99,87,117,223,170,169,219,3,246,177,111,130,214,240,160,235,197,24,239,109,16,89,37,244,65,114,121,182,69,143,224,194,139,246,253,79,0,205,84,137,161,40,60,103,249,123,227,160,185,247,60,119,144,31,158,231,72,186,57,228,125,4,215,127,211,178,160,137,36,48,31,211,106,150,113,76,58,138,78,84,160,102,186,8,67,98,6,255,253,62,105,39,103,84,162,49,65,188,180,38,231,30,27,102,244,243,173,98,242,124,202,42,116,160,222,152,116,39,82,245,17,9,75,20,236,207,29,254,224,131,101,95,156,83,203,73,42,77,232,93,162,148,191,25,189,83,160,252,82,105,110,184,232,101,73,206,42,128,36,141,47,9,242,208,212,80,107,99,31,203,220,189,127,118,88,235,51,100,16,160,140,144,226,152,9,143,184,98,75,119,140,138,189,41,16,86,90,220,7,160,255,163,234,160,65,226,99,185,209,175,87,153,160,147,222,156,155,5,248,196,245,42,104,123,89,226,59,146,179,152,243,188,16,203,141,242,245,35,37,186,247,242,233,116,194,160,77,181,94,55,60,65,150,213,94,128,208,85,225,56,182,170,255,62,173,249,192,27,109,46,165,176,52,102,165,181,158,123,160,41,92,138,175,248,169,35,32,3,60,85,173,153,77,167,97,48,46,186,178,179,251,81,119,52,133,83,208,66,99,253,98,160,210,90,148,32,152,241,40,152,156,177,245,3,137,19,75,169,109,138,85,24,212,56,152,150,112,147,170,123,101,171,194,235,128],[249,2,17,160,207,25,136,176,219,19,125,248,221,226,37,49,126,193,111,64,241,36,42,95,246,32,248,209,249,221,118,115,191,198,60,251,160,82,137,39,131,73,246,17,181,228,41,231,138,20,214,96,57,89,233,241,115,173,101,182,209,11,226,190,180,241,175,169,48,160,96,13,97,228,114,130,227,139,95,235,181,156,221,158,24,50,37,122,38,159,136,47,158,219,154,150,169,255,217,229,255,46,160,219,139,73,171,247,198,84,124,16,5,239,28,69,184,190,3,10,137,135,153,59,96,150,2,6,55,143,216,10,40,57,14,160,230,172,97,53,138,81,182,253,34,92,102,213,85,230,62,204,38,19,157,159,106,244,141,231,119,139,30,82,17,248,166,188,160,165,195,18,63,220,15,211,53,125,206,92,137,136,20,42,255,173,88,99,87,117,223,170,169,219,3,246,177,111,130,214,240,160,235,197,24,239,109,16,89,37,244,65,114,121,182,69,143,224,194,139,246,253,79,0,205,84,137,161,40,60,103,249,123,227,160,185,247,60,119,144,31,158,231,72,186,57,228,125,4,215,127,211,178,160,137,36,48,31,211,106,150,113,76,58,138,78,84,160,254,132,91,142,65,69,113,48,77,73,63,31,218,242,183,51,206,40,164,131,227,177,255,205,118,170,246,235,92,73,195,40,160,222,152,116,39,82,245,17,9,75,20,236,207,29,254,224,131,101,95,156,83,203,73,42,77,232,93,162,148,191,25,189,83,160,252,82,105,110,184,232,101,73,206,42,128,36,141,47,9,242,208,212,80,107,99,31,203,220,189,127,118,88,235,51,100,16,160,140,144,226,152,9,143,184,98,75,119,140,138,189,41,16,86,90,220,7,160,255,163,234,160,65,226,99,185,209,175,87,153,160,147,222,156,155,5,248,196,245,42,104,123,89,226,59,146,179,152,243,188,16,203,141,242,245,35,37,186,247,242,233,116,194,160,77,181,94,55,60,65,150,213,94,128,208,85,225,56,182,170,255,62,173,249,192,27,109,46,165,176,52,102,165,181,158,123,160,41,92,138,175,248,169,35,32,3,60,85,173,153,77,167,97,48,46,186,178,179,251,81,119,52,133,83,208,66,99,253,98,160,210,90,148,32,152,241,40,152,156,177,245,3,137,19,75,169,109,138,85,24,212,56,152,150,112,147,170,123,101,171,194,235,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,173,106,158,107,24,228,255,101,96,171,3,109,88,75,148,137,21,188,140,186,37,161,103,51,249,28,86,142,140,211,71,179,0],[160,185,207,200,213,56,7,110,102,114,221,36,17,44,235,96,72,24,56,89,108,86,25,30,79,142,33,131,71,233,234,181,53,0],[160,73,225,11,221,155,171,136,49,120,235,145,99,196,74,157,29,116,206,12,141,230,240,195,122,151,74,166,229,232,22,126,246,0],[160,80,121,156,28,53,99,88,164,230,39,136,203,232,55,255,231,249,102,78,170,251,114,92,88,217,145,226,183,95,56,223,187,0],[160,163,146,165,215,149,117,178,63,158,245,105,172,162,59,192,102,249,164,174,73,95,251,0,54,115,164,23,72,139,184,132,203,0],[160,199,144,43,186,140,137,173,182,131,253,32,36,241,162,191,119,76,210,253,224,175,251,96,61,250,99,36,153,3,5,186,2,0],[160,74,38,67,220,86,118,240,239,235,168,19,91,46,48,156,217,193,137,41,113,15,205,87,144,180,124,206,92,234,10,98,139,0],[160,17,254,87,83,176,176,229,225,60,18,165,3,202,24,112,143,102,201,90,198,108,91,168,43,214,75,128,7,109,128,23,98,0],[160,133,102,218,45,158,147,123,122,97,217,249,112,28,105,126,167,154,36,107,161,196,74,178,135,23,51,1,95,194,34,36,137,0],[160,126,200,198,169,56,20,34,219,73,169,9,233,102,150,54,162,188,91,24,142,171,180,116,104,168,242,207,200,61,76,17,172,0],[160,241,136,63,109,78,45,245,249,67,57,193,79,67,81,114,65,186,157,88,113,89,151,103,240,95,205,27,74,251,209,101,60,0],[160,72,66,199,55,66,98,231,100,248,214,163,161,178,9,3,151,146,129,204,192,117,185,14,162,124,244,44,143,119,191,209,57,0],[160,46,6,23,44,36,193,135,80,112,149,30,93,80,145,214,55,177,8,75,205,60,16,87,202,13,148,165,6,4,87,206,205,0],[160,222,107,212,28,198,70,135,254,132,167,233,46,165,59,213,112,176,97,182,63,239,60,2,100,225,78,86,219,121,17,195,165,0],[160,10,30,132,95,237,95,140,66,13,73,236,134,195,75,145,209,201,163,103,81,212,222,226,178,98,247,7,178,73,245,5,193,0],[160,157,204,128,152,104,49,2,63,107,10,187,28,158,78,250,173,237,229,135,244,83,245,231,116,59,113,36,104,183,66,41,8,0],[160,58,151,253,129,134,23,226,231,132,68,204,108,105,65,77,221,173,126,117,91,201,65,191,85,91,47,246,235,84,84,70,64,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,185,207,200,213,56,7,110,102,114,221,36,17,44,235,96,72,24,56,89,108,86,25,30,79,142,33,131,71,233,234,181,53,160,73,225,11,221,155,171,136,49,120,235,145,99,196,74,157,29,116,206,12,141,230,240,195,122,151,74,166,229,232,22,126,246,160,80,121,156,28,53,99,88,164,230,39,136,203,232,55,255,231,249,102,78,170,251,114,92,88,217,145,226,183,95,56,223,187,160,163,146,165,215,149,117,178,63,158,245,105,172,162,59,192,102,249,164,174,73,95,251,0,54,115,164,23,72,139,184,132,203,160,199,144,43,186,140,137,173,182,131,253,32,36,241,162,191,119,76,210,253,224,175,251,96,61,250,99,36,153,3,5,186,2,160,74,38,67,220,86,118,240,239,235,168,19,91,46,48,156,217,193,137,41,113,15,205,87,144,180,124,206,92,234,10,98,139,160,17,254,87,83,176,176,229,225,60,18,165,3,202,24,112,143,102,201,90,198,108,91,168,43,214,75,128,7,109,128,23,98,160,133,102,218,45,158,147,123,122,97,217,249,112,28,105,126,167,154,36,107,161,196,74,178,135,23,51,1,95,194,34,36,137,160,126,200,198,169,56,20,34,219,73,169,9,233,102,150,54,162,188,91,24,142,171,180,116,104,168,242,207,200,61,76,17,172,160,241,136,63,109,78,45,245,249,67,57,193,79,67,81,114,65,186,157,88,113,89,151,103,240,95,205,27,74,251,209,101,60,160,72,66,199,55,66,98,231,100,248,214,163,161,178,9,3,151,146,129,204,192,117,185,14,162,124,244,44,143,119,191,209,57,160,46,6,23,44,36,193,135,80,112,149,30,93,80,145,214,55,177,8,75,205,60,16,87,202,13,148,165,6,4,87,206,205,160,222,107,212,28,198,70,135,254,132,167,233,46,165,59,213,112,176,97,182,63,239,60,2,100,225,78,86,219,121,17,195,165,160,10,30,132,95,237,95,140,66,13,73,236,134,195,75,145,209,201,163,103,81,212,222,226,178,98,247,7,178,73,245,5,193,160,157,204,128,152,104,49,2,63,107,10,187,28,158,78,250,173,237,229,135,244,83,245,231,116,59,113,36,104,183,66,41,8,160,58,151,253,129,134,23,226,231,132,68,204,108,105,65,77,221,173,126,117,91,201,65,191,85,91,47,246,235,84,84,70,64,128],[249,2,17,160,185,207,200,213,56,7,110,102,114,221,36,17,44,235,96,72,24,56,89,108,86,25,30,79,142,33,131,71,233,234,181,53,160,73,225,11,221,155,171,136,49,120,235,145,99,196,74,157,29,116,206,12,141,230,240,195,122,151,74,166,229,232,22,126,246,160,80,121,156,28,53,99,88,164,230,39,136,203,232,55,255,231,249,102,78,170,251,114,92,88,217,145,226,183,95,56,223,187,160,173,106,158,107,24,228,255,101,96,171,3,109,88,75,148,137,21,188,140,186,37,161,103,51,249,28,86,142,140,211,71,179,160,199,144,43,186,140,137,173,182,131,253,32,36,241,162,191,119,76,210,253,224,175,251,96,61,250,99,36,153,3,5,186,2,160,74,38,67,220,86,118,240,239,235,168,19,91,46,48,156,217,193,137,41,113,15,205,87,144,180,124,206,92,234,10,98,139,160,17,254,87,83,176,176,229,225,60,18,165,3,202,24,112,143,102,201,90,198,108,91,168,43,214,75,128,7,109,128,23,98,160,133,102,218,45,158,147,123,122,97,217,249,112,28,105,126,167,154,36,107,161,196,74,178,135,23,51,1,95,194,34,36,137,160,126,200,198,169,56,20,34,219,73,169,9,233,102,150,54,162,188,91,24,142,171,180,116,104,168,242,207,200,61,76,17,172,160,241,136,63,109,78,45,245,249,67,57,193,79,67,81,114,65,186,157,88,113,89,151,103,240,95,205,27,74,251,209,101,60,160,72,66,199,55,66,98,231,100,248,214,163,161,178,9,3,151,146,129,204,192,117,185,14,162,124,244,44,143,119,191,209,57,160,46,6,23,44,36,193,135,80,112,149,30,93,80,145,214,55,177,8,75,205,60,16,87,202,13,148,165,6,4,87,206,205,160,222,107,212,28,198,70,135,254,132,167,233,46,165,59,213,112,176,97,182,63,239,60,2,100,225,78,86,219,121,17,195,165,160,10,30,132,95,237,95,140,66,13,73,236,134,195,75,145,209,201,163,103,81,212,222,226,178,98,247,7,178,73,245,5,193,160,157,204,128,152,104,49,2,63,107,10,187,28,158,78,250,173,237,229,135,244,83,245,231,116,59,113,36,104,183,66,41,8,160,58,151,253,129,134,23,226,231,132,68,204,108,105,65,77,221,173,126,117,91,201,65,191,85,91,47,246,235,84,84,70,64,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,23,76,252,13,85,71,142,191,228,91,220,35,14,28,175,248,169,125,101,95,176,50,153,185,137,201,136,175,68,125,227,179,0],[160,231,95,10,238,177,7,32,101,219,128,213,171,45,55,12,233,220,76,10,224,110,85,30,112,72,0,28,46,26,178,165,127,0],[160,68,154,48,77,211,155,158,122,103,65,28,151,165,177,139,126,155,242,209,98,172,22,197,196,198,164,160,1,191,248,201,14,0],[160,226,197,189,105,117,223,207,34,106,169,20,185,220,121,234,106,141,248,253,225,66,0,82,201,120,184,102,45,245,44,112,98,0],[160,193,198,74,20,172,24,242,204,247,133,105,88,206,172,223,183,62,184,143,158,6,143,103,24,224,178,189,126,10,74,113,190,0],[160,43,204,227,62,184,13,182,217,216,210,48,27,217,75,64,252,242,140,3,182,202,118,144,176,148,26,196,214,100,122,226,213,0],[160,182,138,23,200,65,150,48,56,62,198,76,160,173,67,61,225,22,190,139,168,55,26,90,185,230,228,40,91,80,196,239,196,0],[160,24,17,32,125,206,81,93,62,53,124,234,251,38,171,115,163,153,207,6,136,152,179,28,6,29,25,100,153,224,243,112,41,0],[160,148,208,38,239,167,118,27,229,171,172,83,173,11,119,101,8,199,167,146,213,184,195,245,195,143,154,141,98,23,156,71,88,0],[160,0,111,208,29,187,84,114,172,204,96,22,253,97,161,125,144,215,97,197,58,152,97,231,141,59,95,211,214,3,43,242,134,0],[160,73,5,38,184,154,125,53,252,236,115,226,160,8,168,26,90,196,99,74,104,6,166,65,105,63,117,232,48,156,232,46,118,0],[160,73,99,227,191,237,215,26,167,84,198,202,187,25,227,145,193,205,222,64,59,165,140,59,62,35,148,177,238,21,32,11,15,0],[160,182,143,57,152,26,221,220,117,161,83,198,55,123,86,61,249,223,186,182,187,217,120,183,22,189,45,172,118,52,230,240,112,0],[160,29,91,34,243,70,153,248,21,0,182,206,197,142,239,125,148,136,12,7,134,242,200,194,32,51,118,7,64,50,191,74,93,0],[160,155,201,134,3,164,120,172,75,74,243,23,75,138,17,227,228,164,186,195,71,91,141,88,190,216,173,246,40,142,41,31,43,0],[160,45,240,236,48,240,10,170,254,49,102,210,93,150,99,189,36,99,179,2,19,159,122,78,177,123,218,46,32,5,59,135,130,0],[160,33,228,67,177,101,177,233,17,253,0,69,14,223,236,194,30,3,1,227,229,162,15,240,155,49,8,162,92,86,210,197,143,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,231,95,10,238,177,7,32,101,219,128,213,171,45,55,12,233,220,76,10,224,110,85,30,112,72,0,28,46,26,178,165,127,160,68,154,48,77,211,155,158,122,103,65,28,151,165,177,139,126,155,242,209,98,172,22,197,196,198,164,160,1,191,248,201,14,160,226,197,189,105,117,223,207,34,106,169,20,185,220,121,234,106,141,248,253,225,66,0,82,201,120,184,102,45,245,44,112,98,160,193,198,74,20,172,24,242,204,247,133,105,88,206,172,223,183,62,184,143,158,6,143,103,24,224,178,189,126,10,74,113,190,160,43,204,227,62,184,13,182,217,216,210,48,27,217,75,64,252,242,140,3,182,202,118,144,176,148,26,196,214,100,122,226,213,160,182,138,23,200,65,150,48,56,62,198,76,160,173,67,61,225,22,190,139,168,55,26,90,185,230,228,40,91,80,196,239,196,160,24,17,32,125,206,81,93,62,53,124,234,251,38,171,115,163,153,207,6,136,152,179,28,6,29,25,100,153,224,243,112,41,160,148,208,38,239,167,118,27,229,171,172,83,173,11,119,101,8,199,167,146,213,184,195,245,195,143,154,141,98,23,156,71,88,160,0,111,208,29,187,84,114,172,204,96,22,253,97,161,125,144,215,97,197,58,152,97,231,141,59,95,211,214,3,43,242,134,160,73,5,38,184,154,125,53,252,236,115,226,160,8,168,26,90,196,99,74,104,6,166,65,105,63,117,232,48,156,232,46,118,160,73,99,227,191,237,215,26,167,84,198,202,187,25,227,145,193,205,222,64,59,165,140,59,62,35,148,177,238,21,32,11,15,160,182,143,57,152,26,221,220,117,161,83,198,55,123,86,61,249,223,186,182,187,217,120,183,22,189,45,172,118,52,230,240,112,160,29,91,34,243,70,153,248,21,0,182,206,197,142,239,125,148,136,12,7,134,242,200,194,32,51,118,7,64,50,191,74,93,160,155,201,134,3,164,120,172,75,74,243,23,75,138,17,227,228,164,186,195,71,91,141,88,190,216,173,246,40,142,41,31,43,160,45,240,236,48,240,10,170,254,49,102,210,93,150,99,189,36,99,179,2,19,159,122,78,177,123,218,46,32,5,59,135,130,160,33,228,67,177,101,177,233,17,253,0,69,14,223,236,194,30,3,1,227,229,162,15,240,155,49,8,162,92,86,210,197,143,128],[249,2,17,160,231,95,10,238,177,7,32,101,219,128,213,171,45,55,12,233,220,76,10,224,110,85,30,112,72,0,28,46,26,178,165,127,160,68,154,48,77,211,155,158,122,103,65,28,151,165,177,139,126,155,242,209,98,172,22,197,196,198,164,160,1,191,248,201,14,160,226,197,189,105,117,223,207,34,106,169,20,185,220,121,234,106,141,248,253,225,66,0,82,201,120,184,102,45,245,44,112,98,160,23,76,252,13,85,71,142,191,228,91,220,35,14,28,175,248,169,125,101,95,176,50,153,185,137,201,136,175,68,125,227,179,160,43,204,227,62,184,13,182,217,216,210,48,27,217,75,64,252,242,140,3,182,202,118,144,176,148,26,196,214,100,122,226,213,160,182,138,23,200,65,150,48,56,62,198,76,160,173,67,61,225,22,190,139,168,55,26,90,185,230,228,40,91,80,196,239,196,160,24,17,32,125,206,81,93,62,53,124,234,251,38,171,115,163,153,207,6,136,152,179,28,6,29,25,100,153,224,243,112,41,160,148,208,38,239,167,118,27,229,171,172,83,173,11,119,101,8,199,167,146,213,184,195,245,195,143,154,141,98,23,156,71,88,160,0,111,208,29,187,84,114,172,204,96,22,253,97,161,125,144,215,97,197,58,152,97,231,141,59,95,211,214,3,43,242,134,160,73,5,38,184,154,125,53,252,236,115,226,160,8,168,26,90,196,99,74,104,6,166,65,105,63,117,232,48,156,232,46,118,160,73,99,227,191,237,215,26,167,84,198,202,187,25,227,145,193,205,222,64,59,165,140,59,62,35,148,177,238,21,32,11,15,160,182,143,57,152,26,221,220,117,161,83,198,55,123,86,61,249,223,186,182,187,217,120,183,22,189,45,172,118,52,230,240,112,160,29,91,34,243,70,153,248,21,0,182,206,197,142,239,125,148,136,12,7,134,242,200,194,32,51,118,7,64,50,191,74,93,160,155,201,134,3,164,120,172,75,74,243,23,75,138,17,227,228,164,186,195,71,91,141,88,190,216,173,246,40,142,41,31,43,160,45,240,236,48,240,10,170,254,49,102,210,93,150,99,189,36,99,179,2,19,159,122,78,177,123,218,46,32,5,59,135,130,160,33,228,67,177,101,177,233,17,253,0,69,14,223,236,194,30,3,1,227,229,162,15,240,155,49,8,162,92,86,210,197,143,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":2,"drifted_index":2,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,20,250,168,85,201,188,115,120,17,254,134,74,227,222,13,98,216,24,126,242,3,105,48,116,70,88,161,177,193,91,46,115,0],[160,182,157,141,96,64,124,32,139,164,168,123,177,23,245,189,220,225,84,136,136,88,10,6,219,58,97,25,182,69,71,237,143,0],[160,206,250,250,126,150,206,40,106,250,64,172,109,90,20,29,206,199,98,71,103,243,57,48,153,235,158,226,15,248,33,24,173,0],[160,136,63,198,240,187,66,179,160,160,234,247,50,225,28,133,166,186,193,44,232,206,69,231,205,70,97,57,71,100,210,28,206,0],[160,83,100,153,220,8,108,102,77,228,175,197,32,215,192,58,6,109,5,74,102,136,20,58,206,184,63,3,33,8,16,153,30,0],[160,175,232,48,82,151,173,48,31,217,187,131,102,232,238,240,77,20,136,215,3,165,190,235,207,83,24,118,111,5,33,118,184,0],[160,110,54,181,109,232,73,221,100,78,199,234,224,211,152,43,47,140,143,161,231,189,203,125,26,62,143,67,142,233,89,170,151,0],[160,246,236,40,139,47,246,79,126,248,202,223,217,217,99,115,141,110,146,2,242,28,96,147,41,125,191,216,113,201,41,89,235,0],[160,91,59,237,40,226,216,243,244,208,125,68,191,111,236,9,112,23,15,133,69,16,47,245,247,83,174,149,186,162,56,186,253,0],[160,220,44,238,195,63,188,246,232,190,154,148,17,70,121,20,98,79,195,188,168,110,0,5,208,4,130,188,87,169,192,70,98,0],[160,92,101,86,144,21,242,104,190,28,237,87,193,148,105,92,120,133,227,203,0,122,152,144,116,26,192,140,242,105,209,149,100,0],[160,9,90,216,179,219,207,78,116,148,217,99,115,243,103,47,189,57,153,134,100,125,171,152,207,119,127,3,229,255,164,27,92,0],[160,31,78,79,236,47,83,65,173,98,239,70,162,185,140,118,72,2,219,95,127,244,126,251,190,151,219,22,40,18,96,202,62,0],[160,159,240,142,98,4,180,205,200,240,26,148,146,37,243,63,216,214,244,168,209,3,157,90,160,14,74,97,151,36,250,19,11,0],[160,157,182,12,187,163,248,170,80,34,55,159,70,9,174,92,138,75,211,86,41,85,220,251,35,21,219,63,243,66,254,202,139,0],[160,219,165,14,121,240,76,195,159,115,215,66,217,73,217,69,74,103,150,182,161,200,213,160,60,101,94,176,97,200,45,237,58,0],[160,199,43,123,101,125,33,151,100,53,219,109,222,209,241,245,149,13,132,146,115,151,223,49,52,200,134,90,176,44,55,175,7,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,182,157,141,96,64,124,32,139,164,168,123,177,23,245,189,220,225,84,136,136,88,10,6,219,58,97,25,182,69,71,237,143,160,206,250,250,126,150,206,40,106,250,64,172,109,90,20,29,206,199,98,71,103,243,57,48,153,235,158,226,15,248,33,24,173,160,136,63,198,240,187,66,179,160,160,234,247,50,225,28,133,166,186,193,44,232,206,69,231,205,70,97,57,71,100,210,28,206,160,83,100,153,220,8,108,102,77,228,175,197,32,215,192,58,6,109,5,74,102,136,20,58,206,184,63,3,33,8,16,153,30,160,175,232,48,82,151,173,48,31,217,187,131,102,232,238,240,77,20,136,215,3,165,190,235,207,83,24,118,111,5,33,118,184,160,110,54,181,109,232,73,221,100,78,199,234,224,211,152,43,47,140,143,161,231,189,203,125,26,62,143,67,142,233,89,170,151,160,246,236,40,139,47,246,79,126,248,202,223,217,217,99,115,141,110,146,2,242,28,96,147,41,125,191,216,113,201,41,89,235,160,91,59,237,40,226,216,243,244,208,125,68,191,111,236,9,112,23,15,133,69,16,47,245,247,83,174,149,186,162,56,186,253,160,220,44,238,195,63,188,246,232,190,154,148,17,70,121,20,98,79,195,188,168,110,0,5,208,4,130,188,87,169,192,70,98,160,92,101,86,144,21,242,104,190,28,237,87,193,148,105,92,120,133,227,203,0,122,152,144,116,26,192,140,242,105,209,149,100,160,9,90,216,179,219,207,78,116,148,217,99,115,243,103,47,189,57,153,134,100,125,171,152,207,119,127,3,229,255,164,27,92,160,31,78,79,236,47,83,65,173,98,239,70,162,185,140,118,72,2,219,95,127,244,126,251,190,151,219,22,40,18,96,202,62,160,159,240,142,98,4,180,205,200,240,26,148,146,37,243,63,216,214,244,168,209,3,157,90,160,14,74,97,151,36,250,19,11,160,157,182,12,187,163,248,170,80,34,55,159,70,9,174,92,138,75,211,86,41,85,220,251,35,21,219,63,243,66,254,202,139,160,219,165,14,121,240,76,195,159,115,215,66,217,73,217,69,74,103,150,182,161,200,213,160,60,101,94,176,97,200,45,237,58,160,199,43,123,101,125,33,151,100,53,219,109,222,209,241,245,149,13,132,146,115,151,223,49,52,200,134,90,176,44,55,175,7,128],[249,2,17,160,182,157,141,96,64,124,32,139,164,168,123,177,23,245,189,220,225,84,136,136,88,10,6,219,58,97,25,182,69,71,237,143,160,206,250,250,126,150,206,40,106,250,64,172,109,90,20,29,206,199,98,71,103,243,57,48,153,235,158,226,15,248,33,24,173,160,20,250,168,85,201,188,115,120,17,254,134,74,227,222,13,98,216,24,126,242,3,105,48,116,70,88,161,177,193,91,46,115,160,83,100,153,220,8,108,102,77,228,175,197,32,215,192,58,6,109,5,74,102,136,20,58,206,184,63,3,33,8,16,153,30,160,175,232,48,82,151,173,48,31,217,187,131,102,232,238,240,77,20,136,215,3,165,190,235,207,83,24,118,111,5,33,118,184,160,110,54,181,109,232,73,221,100,78,199,234,224,211,152,43,47,140,143,161,231,189,203,125,26,62,143,67,142,233,89,170,151,160,246,236,40,139,47,246,79,126,248,202,223,217,217,99,115,141,110,146,2,242,28,96,147,41,125,191,216,113,201,41,89,235,160,91,59,237,40,226,216,243,244,208,125,68,191,111,236,9,112,23,15,133,69,16,47,245,247,83,174,149,186,162,56,186,253,160,220,44,238,195,63,188,246,232,190,154,148,17,70,121,20,98,79,195,188,168,110,0,5,208,4,130,188,87,169,192,70,98,160,92,101,86,144,21,242,104,190,28,237,87,193,148,105,92,120,133,227,203,0,122,152,144,116,26,192,140,242,105,209,149,100,160,9,90,216,179,219,207,78,116,148,217,99,115,243,103,47,189,57,153,134,100,125,171,152,207,119,127,3,229,255,164,27,92,160,31,78,79,236,47,83,65,173,98,239,70,162,185,140,118,72,2,219,95,127,244,126,251,190,151,219,22,40,18,96,202,62,160,159,240,142,98,4,180,205,200,240,26,148,146,37,243,63,216,214,244,168,209,3,157,90,160,14,74,97,151,36,250,19,11,160,157,182,12,187,163,248,170,80,34,55,159,70,9,174,92,138,75,211,86,41,85,220,251,35,21,219,63,243,66,254,202,139,160,219,165,14,121,240,76,195,159,115,215,66,217,73,217,69,74,103,150,182,161,200,213,160,60,101,94,176,97,200,45,237,58,160,199,43,123,101,125,33,151,100,53,219,109,222,209,241,245,149,13,132,146,115,151,223,49,52,200,134,90,176,44,55,175,7,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,120,203,9,69,238,148,217,156,202,38,88,253,144,24,236,217,48,96,103,115,220,27,82,75,50,127,189,115,205,101,174,202,0],[160,94,252,119,184,230,20,198,249,59,8,100,146,111,65,47,251,132,45,206,155,80,65,126,116,167,153,242,240,123,240,219,99,0],[160,136,152,181,189,76,53,26,15,182,1,207,203,181,22,6,6,200,2,117,30,10,12,115,143,252,15,145,127,204,60,243,89,0],[160,220,30,215,238,90,91,227,27,252,122,162,159,24,234,129,3,159,224,19,187,27,83,48,15,194,51,93,128,98,157,138,157,0],[160,189,224,0,206,122,88,196,193,22,254,84,35,16,85,192,156,141,53,73,131,58,39,69,158,160,8,145,61,189,235,223,172,0],[160,114,153,151,230,187,111,213,97,69,112,10,63,102,200,249,107,110,250,160,87,251,68,253,164,14,129,92,155,189,90,78,88,0],[160,58,185,6,193,165,112,29,102,93,153,129,133,146,171,173,163,8,103,60,245,12,132,237,215,148,21,110,112,118,248,86,38,0],[160,111,220,186,200,71,25,68,52,188,156,193,114,61,192,144,212,204,60,135,63,82,83,10,142,115,170,123,28,163,217,36,227,0],[160,56,6,103,29,198,117,228,108,168,136,138,60,223,164,68,163,23,61,161,137,95,136,76,96,115,222,102,2,235,221,131,46,0],[160,114,17,201,128,234,225,166,71,56,220,19,66,16,131,173,40,153,210,136,106,131,141,13,99,71,22,175,191,215,15,101,78,0],[160,185,94,15,81,91,143,215,241,124,65,158,52,51,57,215,14,218,130,60,86,253,44,29,240,181,205,139,65,112,13,204,77,0],[160,102,26,69,87,205,75,63,40,155,121,13,81,117,150,138,155,228,114,16,26,25,140,7,141,100,248,101,132,115,4,176,105,0],[160,24,199,37,127,95,171,48,236,127,237,165,168,41,131,156,81,237,94,229,55,146,128,118,40,87,182,139,163,199,212,247,104,0],[160,88,158,172,54,18,109,167,144,70,74,13,42,228,254,248,175,66,26,133,108,92,146,251,242,220,149,1,111,47,94,63,199,0],[160,238,152,117,3,226,86,88,17,227,43,23,69,229,181,232,20,61,111,103,237,187,174,85,213,127,183,53,89,129,116,181,82,0],[160,114,27,51,178,26,231,177,85,151,61,247,26,27,148,202,167,234,150,130,31,112,34,35,32,39,117,137,3,38,130,233,116,0],[160,140,132,128,4,217,75,11,41,33,8,232,186,150,199,39,25,126,160,7,206,8,181,41,155,76,120,59,226,180,191,136,111,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,94,252,119,184,230,20,198,249,59,8,100,146,111,65,47,251,132,45,206,155,80,65,126,116,167,153,242,240,123,240,219,99,160,136,152,181,189,76,53,26,15,182,1,207,203,181,22,6,6,200,2,117,30,10,12,115,143,252,15,145,127,204,60,243,89,160,220,30,215,238,90,91,227,27,252,122,162,159,24,234,129,3,159,224,19,187,27,83,48,15,194,51,93,128,98,157,138,157,160,189,224,0,206,122,88,196,193,22,254,84,35,16,85,192,156,141,53,73,131,58,39,69,158,160,8,145,61,189,235,223,172,160,114,153,151,230,187,111,213,97,69,112,10,63,102,200,249,107,110,250,160,87,251,68,253,164,14,129,92,155,189,90,78,88,160,58,185,6,193,165,112,29,102,93,153,129,133,146,171,173,163,8,103,60,245,12,132,237,215,148,21,110,112,118,248,86,38,160,111,220,186,200,71,25,68,52,188,156,193,114,61,192,144,212,204,60,135,63,82,83,10,142,115,170,123,28,163,217,36,227,160,56,6,103,29,198,117,228,108,168,136,138,60,223,164,68,163,23,61,161,137,95,136,76,96,115,222,102,2,235,221,131,46,160,114,17,201,128,234,225,166,71,56,220,19,66,16,131,173,40,153,210,136,106,131,141,13,99,71,22,175,191,215,15,101,78,160,185,94,15,81,91,143,215,241,124,65,158,52,51,57,215,14,218,130,60,86,253,44,29,240,181,205,139,65,112,13,204,77,160,102,26,69,87,205,75,63,40,155,121,13,81,117,150,138,155,228,114,16,26,25,140,7,141,100,248,101,132,115,4,176,105,160,24,199,37,127,95,171,48,236,127,237,165,168,41,131,156,81,237,94,229,55,146,128,118,40,87,182,139,163,199,212,247,104,160,88,158,172,54,18,109,167,144,70,74,13,42,228,254,248,175,66,26,133,108,92,146,251,242,220,149,1,111,47,94,63,199,160,238,152,117,3,226,86,88,17,227,43,23,69,229,181,232,20,61,111,103,237,187,174,85,213,127,183,53,89,129,116,181,82,160,114,27,51,178,26,231,177,85,151,61,247,26,27,148,202,167,234,150,130,31,112,34,35,32,39,117,137,3,38,130,233,116,160,140,132,128,4,217,75,11,41,33,8,232,186,150,199,39,25,126,160,7,206,8,181,41,155,76,120,59,226,180,191,136,111,128],[249,2,17,160,94,252,119,184,230,20,198,249,59,8,100,146,111,65,47,251,132,45,206,155,80,65,126,116,167,153,242,240,123,240,219,99,160,136,152,181,189,76,53,26,15,182,1,207,203,181,22,6,6,200,2,117,30,10,12,115,143,252,15,145,127,204,60,243,89,160,220,30,215,238,90,91,227,27,252,122,162,159,24,234,129,3,159,224,19,187,27,83,48,15,194,51,93,128,98,157,138,157,160,189,224,0,206,122,88,196,193,22,254,84,35,16,85,192,156,141,53,73,131,58,39,69,158,160,8,145,61,189,235,223,172,160,114,153,151,230,187,111,213,97,69,112,10,63,102,200,249,107,110,250,160,87,251,68,253,164,14,129,92,155,189,90,78,88,160,58,185,6,193,165,112,29,102,93,153,129,133,146,171,173,163,8,103,60,245,12,132,237,215,148,21,110,112,118,248,86,38,160,111,220,186,200,71,25,68,52,188,156,193,114,61,192,144,212,204,60,135,63,82,83,10,142,115,170,123,28,163,217,36,227,160,56,6,103,29,198,117,228,108,168,136,138,60,223,164,68,163,23,61,161,137,95,136,76,96,115,222,102,2,235,221,131,46,160,114,17,201,128,234,225,166,71,56,220,19,66,16,131,173,40,153,210,136,106,131,141,13,99,71,22,175,191,215,15,101,78,160,185,94,15,81,91,143,215,241,124,65,158,52,51,57,215,14,218,130,60,86,253,44,29,240,181,205,139,65,112,13,204,77,160,102,26,69,87,205,75,63,40,155,121,13,81,117,150,138,155,228,114,16,26,25,140,7,141,100,248,101,132,115,4,176,105,160,24,199,37,127,95,171,48,236,127,237,165,168,41,131,156,81,237,94,229,55,146,128,118,40,87,182,139,163,199,212,247,104,160,88,158,172,54,18,109,167,144,70,74,13,42,228,254,248,175,66,26,133,108,92,146,251,242,220,149,1,111,47,94,63,199,160,238,152,117,3,226,86,88,17,227,43,23,69,229,181,232,20,61,111,103,237,187,174,85,213,127,183,53,89,129,116,181,82,160,114,27,51,178,26,231,177,85,151,61,247,26,27,148,202,167,234,150,130,31,112,34,35,32,39,117,137,3,38,130,233,116,160,120,203,9,69,238,148,217,156,202,38,88,253,144,24,236,217,48,96,103,115,220,27,82,75,50,127,189,115,205,101,174,202,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,122,110,91,74,74,28,223,195,214,220,149,40,210,64,84,248,103,147,234,159,226,182,151,184,196,252,194,150,238,175,127,145,0],[160,135,34,48,42,14,239,143,189,170,69,134,123,218,36,72,2,163,192,143,204,12,109,175,58,141,118,94,36,206,191,118,32,0],[160,220,109,24,106,232,29,109,176,46,233,215,10,243,92,45,248,25,115,230,121,148,2,36,148,57,81,160,129,219,132,31,115,0],[160,106,59,42,152,93,61,176,69,106,48,79,39,47,12,7,140,163,95,23,216,137,66,239,155,185,168,89,196,116,195,127,103,0],[160,115,205,37,159,79,247,182,93,148,163,41,97,209,195,10,86,168,109,224,153,110,249,227,211,101,70,158,44,49,24,252,132,0],[160,220,148,213,4,41,28,43,101,120,138,61,233,81,137,234,115,228,127,178,20,124,231,241,244,229,119,116,247,123,242,120,26,0],[160,154,118,186,142,199,193,20,16,163,132,141,63,7,178,219,12,148,172,137,136,236,174,187,174,159,205,156,149,131,54,1,168,0],[160,214,253,5,60,164,8,246,254,113,111,196,26,242,176,242,139,188,226,145,21,205,48,78,102,182,33,77,57,202,84,48,0,0],[160,139,204,186,196,107,226,228,156,235,35,141,205,116,232,148,130,127,218,131,190,210,69,245,210,248,108,18,23,84,107,240,100,0],[160,218,108,35,164,234,199,139,87,95,227,117,52,209,236,84,73,11,20,160,142,193,96,135,109,246,191,233,164,121,163,102,222,0],[160,83,49,6,15,200,239,117,94,151,2,193,125,234,124,185,47,102,60,209,122,158,206,117,224,225,12,240,4,226,144,7,96,0],[160,223,125,252,178,10,71,117,227,106,4,72,134,3,198,40,42,202,83,144,150,218,69,209,146,150,21,92,64,12,28,148,148,0],[160,218,47,230,215,64,200,192,227,20,116,145,120,75,245,133,123,166,240,80,80,89,158,211,208,26,119,201,245,23,210,190,49,0],[160,143,250,205,245,173,47,73,123,110,113,113,235,19,17,71,220,138,246,108,253,89,89,132,195,28,111,161,26,177,198,209,123,0],[160,147,222,183,53,197,59,92,88,124,124,72,194,252,43,86,200,183,156,45,134,208,56,244,68,132,49,132,11,3,114,203,240,0],[160,142,37,97,120,142,29,148,214,255,167,235,163,36,83,145,158,144,213,127,247,2,111,187,10,161,113,14,12,154,236,177,150,0],[160,219,159,168,42,142,113,65,118,52,111,17,22,108,65,85,127,75,84,187,233,116,143,64,189,231,69,236,121,249,87,243,227,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,135,34,48,42,14,239,143,189,170,69,134,123,218,36,72,2,163,192,143,204,12,109,175,58,141,118,94,36,206,191,118,32,160,220,109,24,106,232,29,109,176,46,233,215,10,243,92,45,248,25,115,230,121,148,2,36,148,57,81,160,129,219,132,31,115,160,106,59,42,152,93,61,176,69,106,48,79,39,47,12,7,140,163,95,23,216,137,66,239,155,185,168,89,196,116,195,127,103,160,115,205,37,159,79,247,182,93,148,163,41,97,209,195,10,86,168,109,224,153,110,249,227,211,101,70,158,44,49,24,252,132,160,220,148,213,4,41,28,43,101,120,138,61,233,81,137,234,115,228,127,178,20,124,231,241,244,229,119,116,247,123,242,120,26,160,154,118,186,142,199,193,20,16,163,132,141,63,7,178,219,12,148,172,137,136,236,174,187,174,159,205,156,149,131,54,1,168,160,214,253,5,60,164,8,246,254,113,111,196,26,242,176,242,139,188,226,145,21,205,48,78,102,182,33,77,57,202,84,48,0,160,139,204,186,196,107,226,228,156,235,35,141,205,116,232,148,130,127,218,131,190,210,69,245,210,248,108,18,23,84,107,240,100,160,218,108,35,164,234,199,139,87,95,227,117,52,209,236,84,73,11,20,160,142,193,96,135,109,246,191,233,164,121,163,102,222,160,83,49,6,15,200,239,117,94,151,2,193,125,234,124,185,47,102,60,209,122,158,206,117,224,225,12,240,4,226,144,7,96,160,223,125,252,178,10,71,117,227,106,4,72,134,3,198,40,42,202,83,144,150,218,69,209,146,150,21,92,64,12,28,148,148,160,218,47,230,215,64,200,192,227,20,116,145,120,75,245,133,123,166,240,80,80,89,158,211,208,26,119,201,245,23,210,190,49,160,143,250,205,245,173,47,73,123,110,113,113,235,19,17,71,220,138,246,108,253,89,89,132,195,28,111,161,26,177,198,209,123,160,147,222,183,53,197,59,92,88,124,124,72,194,252,43,86,200,183,156,45,134,208,56,244,68,132,49,132,11,3,114,203,240,160,142,37,97,120,142,29,148,214,255,167,235,163,36,83,145,158,144,213,127,247,2,111,187,10,161,113,14,12,154,236,177,150,160,219,159,168,42,142,113,65,118,52,111,17,22,108,65,85,127,75,84,187,233,116,143,64,189,231,69,236,121,249,87,243,227,128],[249,2,17,160,135,34,48,42,14,239,143,189,170,69,134,123,218,36,72,2,163,192,143,204,12,109,175,58,141,118,94,36,206,191,118,32,160,220,109,24,106,232,29,109,176,46,233,215,10,243,92,45,248,25,115,230,121,148,2,36,148,57,81,160,129,219,132,31,115,160,106,59,42,152,93,61,176,69,106,48,79,39,47,12,7,140,163,95,23,216,137,66,239,155,185,168,89,196,116,195,127,103,160,122,110,91,74,74,28,223,195,214,220,149,40,210,64,84,248,103,147,234,159,226,182,151,184,196,252,194,150,238,175,127,145,160,220,148,213,4,41,28,43,101,120,138,61,233,81,137,234,115,228,127,178,20,124,231,241,244,229,119,116,247,123,242,120,26,160,154,118,186,142,199,193,20,16,163,132,141,63,7,178,219,12,148,172,137,136,236,174,187,174,159,205,156,149,131,54,1,168,160,214,253,5,60,164,8,246,254,113,111,196,26,242,176,242,139,188,226,145,21,205,48,78,102,182,33,77,57,202,84,48,0,160,139,204,186,196,107,226,228,156,235,35,141,205,116,232,148,130,127,218,131,190,210,69,245,210,248,108,18,23,84,107,240,100,160,218,108,35,164,234,199,139,87,95,227,117,52,209,236,84,73,11,20,160,142,193,96,135,109,246,191,233,164,121,163,102,222,160,83,49,6,15,200,239,117,94,151,2,193,125,234,124,185,47,102,60,209,122,158,206,117,224,225,12,240,4,226,144,7,96,160,223,125,252,178,10,71,117,227,106,4,72,134,3,198,40,42,202,83,144,150,218,69,209,146,150,21,92,64,12,28,148,148,160,218,47,230,215,64,200,192,227,20,116,145,120,75,245,133,123,166,240,80,80,89,158,211,208,26,119,201,245,23,210,190,49,160,143,250,205,245,173,47,73,123,110,113,113,235,19,17,71,220,138,246,108,253,89,89,132,195,28,111,161,26,177,198,209,123,160,147,222,183,53,197,59,92,88,124,124,72,194,252,43,86,200,183,156,45,134,208,56,244,68,132,49,132,11,3,114,203,240,160,142,37,97,120,142,29,148,214,255,167,235,163,36,83,145,158,144,213,127,247,2,111,187,10,161,113,14,12,154,236,177,150,160,219,159,168,42,142,113,65,118,52,111,17,22,108,65,85,127,75,84,187,233,116,143,64,189,231,69,236,121,249,87,243,227,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[248,241],[248,241]]}},"account":null,"storage":null,"values":[[160,114,114,89,65,55,137,147,83,81,17,239,131,238,229,60,17,2,25,79,243,116,60,227,197,91,104,22,235,159,79,239,70,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,141,164,222,208,114,53,138,42,68,185,35,22,209,135,11,97,236,54,41,171,248,148,120,199,164,25,5,47,208,236,247,210,0],[160,208,177,229,217,205,98,195,68,182,154,209,69,75,36,206,247,42,217,69,77,176,29,182,159,27,47,146,195,212,187,71,199,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,102,101,11,70,156,88,24,31,7,55,179,211,135,114,238,179,201,6,208,181,163,120,106,23,174,138,148,70,209,38,35,198,0],[160,38,86,198,208,216,23,120,168,85,81,136,16,250,33,229,226,49,165,159,207,113,95,140,88,217,8,230,152,28,12,27,121,0],[160,4,47,26,239,50,241,69,138,14,179,226,234,13,64,122,236,209,53,87,153,54,206,120,176,192,254,19,85,51,100,217,101,0],[160,240,24,25,158,169,202,34,38,106,221,208,86,5,147,221,187,73,137,97,91,147,230,239,222,197,208,19,216,5,223,83,220,0],[160,154,40,44,216,26,128,75,165,2,28,255,39,10,252,225,252,114,120,145,118,215,194,126,79,235,164,46,153,237,126,129,100,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,241,128,128,128,128,160,141,164,222,208,114,53,138,42,68,185,35,22,209,135,11,97,236,54,41,171,248,148,120,199,164,25,5,47,208,236,247,210,160,208,177,229,217,205,98,195,68,182,154,209,69,75,36,206,247,42,217,69,77,176,29,182,159,27,47,146,195,212,187,71,199,128,160,102,101,11,70,156,88,24,31,7,55,179,211,135,114,238,179,201,6,208,181,163,120,106,23,174,138,148,70,209,38,35,198,160,38,86,198,208,216,23,120,168,85,81,136,16,250,33,229,226,49,165,159,207,113,95,140,88,217,8,230,152,28,12,27,121,160,4,47,26,239,50,241,69,138,14,179,226,234,13,64,122,236,209,53,87,153,54,206,120,176,192,254,19,85,51,100,217,101,160,240,24,25,158,169,202,34,38,106,221,208,86,5,147,221,187,73,137,97,91,147,230,239,222,197,208,19,216,5,223,83,220,160,154,40,44,216,26,128,75,165,2,28,255,39,10,252,225,252,114,120,145,118,215,194,126,79,235,164,46,153,237,126,129,100,128,128,128,128,128],[248,241,128,128,128,128,160,141,164,222,208,114,53,138,42,68,185,35,22,209,135,11,97,236,54,41,171,248,148,120,199,164,25,5,47,208,236,247,210,160,208,177,229,217,205,98,195,68,182,154,209,69,75,36,206,247,42,217,69,77,176,29,182,159,27,47,146,195,212,187,71,199,128,160,102,101,11,70,156,88,24,31,7,55,179,211,135,114,238,179,201,6,208,181,163,120,106,23,174,138,148,70,209,38,35,198,160,38,86,198,208,216,23,120,168,85,81,136,16,250,33,229,226,49,165,159,207,113,95,140,88,217,8,230,152,28,12,27,121,160,114,114,89,65,55,137,147,83,81,17,239,131,238,229,60,17,2,25,79,243,116,60,227,197,91,104,22,235,159,79,239,70,160,240,24,25,158,169,202,34,38,106,221,208,86,5,147,221,187,73,137,97,91,147,230,239,222,197,208,19,216,5,223,83,220,160,154,40,44,216,26,128,75,165,2,28,255,39,10,252,225,252,114,120,145,118,215,194,126,79,235,164,46,153,237,126,129,100,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[104,213,166,231,139,216,115,75,125,25,12,189,152,84,155,114,191,160,128,11],"key":[131,50,243,150,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196],"list_rlp_bytes":[[248,109],[248,104]],"value_rlp_bytes":[[184,77],[184,72]],"value_list_rlp_bytes":[[248,75],[248,70]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,104]},"storage":null,"values":[[157,54,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196,0,0,0,0],[157,54,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196,0,0,0,0],[7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[135,28,5,107,201,118,120,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[130,1,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,54,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196,0,0,0,0]],"keccak_data":[[248,109,157,54,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196,184,77,248,75,7,135,28,5,107,201,118,120,59,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,104,157,54,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196,184,72,248,70,7,130,1,183,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[104,213,166,231,139,216,115,75,125,25,12,189,152,84,155,114,191,160,128,11]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/BalanceModCShort.json b/zkevm-circuits/src/mpt_circuit/tests/BalanceModCShort.json new file mode 100644 index 0000000000..22ebabada4 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/BalanceModCShort.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"BalanceChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,34,65,36,198,35,126,190,229,144,5,107,155,205,36,98,181,113,214,141,98,195,52,141,193,242,4,73,192,83,104,100,155,0],[160,215,119,227,233,37,72,17,15,142,183,35,133,251,179,81,254,127,107,246,174,74,50,43,56,89,173,145,219,175,167,219,197,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,11,7,95,123,150,106,97,239,117,52,95,22,109,67,230,7,196,125,239,148,77,4,248,125,157,16,192,195,105,167,215,166,0],[160,207,25,136,176,219,19,125,248,221,226,37,49,126,193,111,64,241,36,42,95,246,32,248,209,249,221,118,115,191,198,60,251,0],[160,82,137,39,131,73,246,17,181,228,41,231,138,20,214,96,57,89,233,241,115,173,101,182,209,11,226,190,180,241,175,169,48,0],[160,96,13,97,228,114,130,227,139,95,235,181,156,221,158,24,50,37,122,38,159,136,47,158,219,154,150,169,255,217,229,255,46,0],[160,219,139,73,171,247,198,84,124,16,5,239,28,69,184,190,3,10,137,135,153,59,96,150,2,6,55,143,216,10,40,57,14,0],[160,230,172,97,53,138,81,182,253,34,92,102,213,85,230,62,204,38,19,157,159,106,244,141,231,119,139,30,82,17,248,166,188,0],[160,165,195,18,63,220,15,211,53,125,206,92,137,136,20,42,255,173,88,99,87,117,223,170,169,219,3,246,177,111,130,214,240,0],[160,235,197,24,239,109,16,89,37,244,65,114,121,182,69,143,224,194,139,246,253,79,0,205,84,137,161,40,60,103,249,123,227,0],[160,185,247,60,119,144,31,158,231,72,186,57,228,125,4,215,127,211,178,160,137,36,48,31,211,106,150,113,76,58,138,78,84,0],[160,102,186,8,67,98,6,255,253,62,105,39,103,84,162,49,65,188,180,38,231,30,27,102,244,243,173,98,242,124,202,42,116,0],[160,222,152,116,39,82,245,17,9,75,20,236,207,29,254,224,131,101,95,156,83,203,73,42,77,232,93,162,148,191,25,189,83,0],[160,252,82,105,110,184,232,101,73,206,42,128,36,141,47,9,242,208,212,80,107,99,31,203,220,189,127,118,88,235,51,100,16,0],[160,140,144,226,152,9,143,184,98,75,119,140,138,189,41,16,86,90,220,7,160,255,163,234,160,65,226,99,185,209,175,87,153,0],[160,147,222,156,155,5,248,196,245,42,104,123,89,226,59,146,179,152,243,188,16,203,141,242,245,35,37,186,247,242,233,116,194,0],[160,77,181,94,55,60,65,150,213,94,128,208,85,225,56,182,170,255,62,173,249,192,27,109,46,165,176,52,102,165,181,158,123,0],[160,41,92,138,175,248,169,35,32,3,60,85,173,153,77,167,97,48,46,186,178,179,251,81,119,52,133,83,208,66,99,253,98,0],[160,210,90,148,32,152,241,40,152,156,177,245,3,137,19,75,169,109,138,85,24,212,56,152,150,112,147,170,123,101,171,194,235,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,207,25,136,176,219,19,125,248,221,226,37,49,126,193,111,64,241,36,42,95,246,32,248,209,249,221,118,115,191,198,60,251,160,82,137,39,131,73,246,17,181,228,41,231,138,20,214,96,57,89,233,241,115,173,101,182,209,11,226,190,180,241,175,169,48,160,96,13,97,228,114,130,227,139,95,235,181,156,221,158,24,50,37,122,38,159,136,47,158,219,154,150,169,255,217,229,255,46,160,219,139,73,171,247,198,84,124,16,5,239,28,69,184,190,3,10,137,135,153,59,96,150,2,6,55,143,216,10,40,57,14,160,230,172,97,53,138,81,182,253,34,92,102,213,85,230,62,204,38,19,157,159,106,244,141,231,119,139,30,82,17,248,166,188,160,165,195,18,63,220,15,211,53,125,206,92,137,136,20,42,255,173,88,99,87,117,223,170,169,219,3,246,177,111,130,214,240,160,235,197,24,239,109,16,89,37,244,65,114,121,182,69,143,224,194,139,246,253,79,0,205,84,137,161,40,60,103,249,123,227,160,185,247,60,119,144,31,158,231,72,186,57,228,125,4,215,127,211,178,160,137,36,48,31,211,106,150,113,76,58,138,78,84,160,102,186,8,67,98,6,255,253,62,105,39,103,84,162,49,65,188,180,38,231,30,27,102,244,243,173,98,242,124,202,42,116,160,222,152,116,39,82,245,17,9,75,20,236,207,29,254,224,131,101,95,156,83,203,73,42,77,232,93,162,148,191,25,189,83,160,252,82,105,110,184,232,101,73,206,42,128,36,141,47,9,242,208,212,80,107,99,31,203,220,189,127,118,88,235,51,100,16,160,140,144,226,152,9,143,184,98,75,119,140,138,189,41,16,86,90,220,7,160,255,163,234,160,65,226,99,185,209,175,87,153,160,147,222,156,155,5,248,196,245,42,104,123,89,226,59,146,179,152,243,188,16,203,141,242,245,35,37,186,247,242,233,116,194,160,77,181,94,55,60,65,150,213,94,128,208,85,225,56,182,170,255,62,173,249,192,27,109,46,165,176,52,102,165,181,158,123,160,41,92,138,175,248,169,35,32,3,60,85,173,153,77,167,97,48,46,186,178,179,251,81,119,52,133,83,208,66,99,253,98,160,210,90,148,32,152,241,40,152,156,177,245,3,137,19,75,169,109,138,85,24,212,56,152,150,112,147,170,123,101,171,194,235,128],[249,2,17,160,207,25,136,176,219,19,125,248,221,226,37,49,126,193,111,64,241,36,42,95,246,32,248,209,249,221,118,115,191,198,60,251,160,82,137,39,131,73,246,17,181,228,41,231,138,20,214,96,57,89,233,241,115,173,101,182,209,11,226,190,180,241,175,169,48,160,96,13,97,228,114,130,227,139,95,235,181,156,221,158,24,50,37,122,38,159,136,47,158,219,154,150,169,255,217,229,255,46,160,219,139,73,171,247,198,84,124,16,5,239,28,69,184,190,3,10,137,135,153,59,96,150,2,6,55,143,216,10,40,57,14,160,230,172,97,53,138,81,182,253,34,92,102,213,85,230,62,204,38,19,157,159,106,244,141,231,119,139,30,82,17,248,166,188,160,165,195,18,63,220,15,211,53,125,206,92,137,136,20,42,255,173,88,99,87,117,223,170,169,219,3,246,177,111,130,214,240,160,235,197,24,239,109,16,89,37,244,65,114,121,182,69,143,224,194,139,246,253,79,0,205,84,137,161,40,60,103,249,123,227,160,185,247,60,119,144,31,158,231,72,186,57,228,125,4,215,127,211,178,160,137,36,48,31,211,106,150,113,76,58,138,78,84,160,11,7,95,123,150,106,97,239,117,52,95,22,109,67,230,7,196,125,239,148,77,4,248,125,157,16,192,195,105,167,215,166,160,222,152,116,39,82,245,17,9,75,20,236,207,29,254,224,131,101,95,156,83,203,73,42,77,232,93,162,148,191,25,189,83,160,252,82,105,110,184,232,101,73,206,42,128,36,141,47,9,242,208,212,80,107,99,31,203,220,189,127,118,88,235,51,100,16,160,140,144,226,152,9,143,184,98,75,119,140,138,189,41,16,86,90,220,7,160,255,163,234,160,65,226,99,185,209,175,87,153,160,147,222,156,155,5,248,196,245,42,104,123,89,226,59,146,179,152,243,188,16,203,141,242,245,35,37,186,247,242,233,116,194,160,77,181,94,55,60,65,150,213,94,128,208,85,225,56,182,170,255,62,173,249,192,27,109,46,165,176,52,102,165,181,158,123,160,41,92,138,175,248,169,35,32,3,60,85,173,153,77,167,97,48,46,186,178,179,251,81,119,52,133,83,208,66,99,253,98,160,210,90,148,32,152,241,40,152,156,177,245,3,137,19,75,169,109,138,85,24,212,56,152,150,112,147,170,123,101,171,194,235,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,191,82,42,177,141,86,136,32,99,146,95,105,178,156,103,107,237,21,124,15,152,6,49,112,134,7,149,239,21,199,106,196,0],[160,185,207,200,213,56,7,110,102,114,221,36,17,44,235,96,72,24,56,89,108,86,25,30,79,142,33,131,71,233,234,181,53,0],[160,73,225,11,221,155,171,136,49,120,235,145,99,196,74,157,29,116,206,12,141,230,240,195,122,151,74,166,229,232,22,126,246,0],[160,80,121,156,28,53,99,88,164,230,39,136,203,232,55,255,231,249,102,78,170,251,114,92,88,217,145,226,183,95,56,223,187,0],[160,163,146,165,215,149,117,178,63,158,245,105,172,162,59,192,102,249,164,174,73,95,251,0,54,115,164,23,72,139,184,132,203,0],[160,199,144,43,186,140,137,173,182,131,253,32,36,241,162,191,119,76,210,253,224,175,251,96,61,250,99,36,153,3,5,186,2,0],[160,74,38,67,220,86,118,240,239,235,168,19,91,46,48,156,217,193,137,41,113,15,205,87,144,180,124,206,92,234,10,98,139,0],[160,17,254,87,83,176,176,229,225,60,18,165,3,202,24,112,143,102,201,90,198,108,91,168,43,214,75,128,7,109,128,23,98,0],[160,133,102,218,45,158,147,123,122,97,217,249,112,28,105,126,167,154,36,107,161,196,74,178,135,23,51,1,95,194,34,36,137,0],[160,126,200,198,169,56,20,34,219,73,169,9,233,102,150,54,162,188,91,24,142,171,180,116,104,168,242,207,200,61,76,17,172,0],[160,241,136,63,109,78,45,245,249,67,57,193,79,67,81,114,65,186,157,88,113,89,151,103,240,95,205,27,74,251,209,101,60,0],[160,72,66,199,55,66,98,231,100,248,214,163,161,178,9,3,151,146,129,204,192,117,185,14,162,124,244,44,143,119,191,209,57,0],[160,46,6,23,44,36,193,135,80,112,149,30,93,80,145,214,55,177,8,75,205,60,16,87,202,13,148,165,6,4,87,206,205,0],[160,222,107,212,28,198,70,135,254,132,167,233,46,165,59,213,112,176,97,182,63,239,60,2,100,225,78,86,219,121,17,195,165,0],[160,10,30,132,95,237,95,140,66,13,73,236,134,195,75,145,209,201,163,103,81,212,222,226,178,98,247,7,178,73,245,5,193,0],[160,157,204,128,152,104,49,2,63,107,10,187,28,158,78,250,173,237,229,135,244,83,245,231,116,59,113,36,104,183,66,41,8,0],[160,58,151,253,129,134,23,226,231,132,68,204,108,105,65,77,221,173,126,117,91,201,65,191,85,91,47,246,235,84,84,70,64,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,185,207,200,213,56,7,110,102,114,221,36,17,44,235,96,72,24,56,89,108,86,25,30,79,142,33,131,71,233,234,181,53,160,73,225,11,221,155,171,136,49,120,235,145,99,196,74,157,29,116,206,12,141,230,240,195,122,151,74,166,229,232,22,126,246,160,80,121,156,28,53,99,88,164,230,39,136,203,232,55,255,231,249,102,78,170,251,114,92,88,217,145,226,183,95,56,223,187,160,163,146,165,215,149,117,178,63,158,245,105,172,162,59,192,102,249,164,174,73,95,251,0,54,115,164,23,72,139,184,132,203,160,199,144,43,186,140,137,173,182,131,253,32,36,241,162,191,119,76,210,253,224,175,251,96,61,250,99,36,153,3,5,186,2,160,74,38,67,220,86,118,240,239,235,168,19,91,46,48,156,217,193,137,41,113,15,205,87,144,180,124,206,92,234,10,98,139,160,17,254,87,83,176,176,229,225,60,18,165,3,202,24,112,143,102,201,90,198,108,91,168,43,214,75,128,7,109,128,23,98,160,133,102,218,45,158,147,123,122,97,217,249,112,28,105,126,167,154,36,107,161,196,74,178,135,23,51,1,95,194,34,36,137,160,126,200,198,169,56,20,34,219,73,169,9,233,102,150,54,162,188,91,24,142,171,180,116,104,168,242,207,200,61,76,17,172,160,241,136,63,109,78,45,245,249,67,57,193,79,67,81,114,65,186,157,88,113,89,151,103,240,95,205,27,74,251,209,101,60,160,72,66,199,55,66,98,231,100,248,214,163,161,178,9,3,151,146,129,204,192,117,185,14,162,124,244,44,143,119,191,209,57,160,46,6,23,44,36,193,135,80,112,149,30,93,80,145,214,55,177,8,75,205,60,16,87,202,13,148,165,6,4,87,206,205,160,222,107,212,28,198,70,135,254,132,167,233,46,165,59,213,112,176,97,182,63,239,60,2,100,225,78,86,219,121,17,195,165,160,10,30,132,95,237,95,140,66,13,73,236,134,195,75,145,209,201,163,103,81,212,222,226,178,98,247,7,178,73,245,5,193,160,157,204,128,152,104,49,2,63,107,10,187,28,158,78,250,173,237,229,135,244,83,245,231,116,59,113,36,104,183,66,41,8,160,58,151,253,129,134,23,226,231,132,68,204,108,105,65,77,221,173,126,117,91,201,65,191,85,91,47,246,235,84,84,70,64,128],[249,2,17,160,185,207,200,213,56,7,110,102,114,221,36,17,44,235,96,72,24,56,89,108,86,25,30,79,142,33,131,71,233,234,181,53,160,73,225,11,221,155,171,136,49,120,235,145,99,196,74,157,29,116,206,12,141,230,240,195,122,151,74,166,229,232,22,126,246,160,80,121,156,28,53,99,88,164,230,39,136,203,232,55,255,231,249,102,78,170,251,114,92,88,217,145,226,183,95,56,223,187,160,191,82,42,177,141,86,136,32,99,146,95,105,178,156,103,107,237,21,124,15,152,6,49,112,134,7,149,239,21,199,106,196,160,199,144,43,186,140,137,173,182,131,253,32,36,241,162,191,119,76,210,253,224,175,251,96,61,250,99,36,153,3,5,186,2,160,74,38,67,220,86,118,240,239,235,168,19,91,46,48,156,217,193,137,41,113,15,205,87,144,180,124,206,92,234,10,98,139,160,17,254,87,83,176,176,229,225,60,18,165,3,202,24,112,143,102,201,90,198,108,91,168,43,214,75,128,7,109,128,23,98,160,133,102,218,45,158,147,123,122,97,217,249,112,28,105,126,167,154,36,107,161,196,74,178,135,23,51,1,95,194,34,36,137,160,126,200,198,169,56,20,34,219,73,169,9,233,102,150,54,162,188,91,24,142,171,180,116,104,168,242,207,200,61,76,17,172,160,241,136,63,109,78,45,245,249,67,57,193,79,67,81,114,65,186,157,88,113,89,151,103,240,95,205,27,74,251,209,101,60,160,72,66,199,55,66,98,231,100,248,214,163,161,178,9,3,151,146,129,204,192,117,185,14,162,124,244,44,143,119,191,209,57,160,46,6,23,44,36,193,135,80,112,149,30,93,80,145,214,55,177,8,75,205,60,16,87,202,13,148,165,6,4,87,206,205,160,222,107,212,28,198,70,135,254,132,167,233,46,165,59,213,112,176,97,182,63,239,60,2,100,225,78,86,219,121,17,195,165,160,10,30,132,95,237,95,140,66,13,73,236,134,195,75,145,209,201,163,103,81,212,222,226,178,98,247,7,178,73,245,5,193,160,157,204,128,152,104,49,2,63,107,10,187,28,158,78,250,173,237,229,135,244,83,245,231,116,59,113,36,104,183,66,41,8,160,58,151,253,129,134,23,226,231,132,68,204,108,105,65,77,221,173,126,117,91,201,65,191,85,91,47,246,235,84,84,70,64,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,183,219,70,226,179,5,129,109,157,38,44,155,133,219,225,116,64,71,122,63,125,181,242,78,166,169,210,22,22,155,75,67,0],[160,231,95,10,238,177,7,32,101,219,128,213,171,45,55,12,233,220,76,10,224,110,85,30,112,72,0,28,46,26,178,165,127,0],[160,68,154,48,77,211,155,158,122,103,65,28,151,165,177,139,126,155,242,209,98,172,22,197,196,198,164,160,1,191,248,201,14,0],[160,226,197,189,105,117,223,207,34,106,169,20,185,220,121,234,106,141,248,253,225,66,0,82,201,120,184,102,45,245,44,112,98,0],[160,193,198,74,20,172,24,242,204,247,133,105,88,206,172,223,183,62,184,143,158,6,143,103,24,224,178,189,126,10,74,113,190,0],[160,43,204,227,62,184,13,182,217,216,210,48,27,217,75,64,252,242,140,3,182,202,118,144,176,148,26,196,214,100,122,226,213,0],[160,182,138,23,200,65,150,48,56,62,198,76,160,173,67,61,225,22,190,139,168,55,26,90,185,230,228,40,91,80,196,239,196,0],[160,24,17,32,125,206,81,93,62,53,124,234,251,38,171,115,163,153,207,6,136,152,179,28,6,29,25,100,153,224,243,112,41,0],[160,148,208,38,239,167,118,27,229,171,172,83,173,11,119,101,8,199,167,146,213,184,195,245,195,143,154,141,98,23,156,71,88,0],[160,0,111,208,29,187,84,114,172,204,96,22,253,97,161,125,144,215,97,197,58,152,97,231,141,59,95,211,214,3,43,242,134,0],[160,73,5,38,184,154,125,53,252,236,115,226,160,8,168,26,90,196,99,74,104,6,166,65,105,63,117,232,48,156,232,46,118,0],[160,73,99,227,191,237,215,26,167,84,198,202,187,25,227,145,193,205,222,64,59,165,140,59,62,35,148,177,238,21,32,11,15,0],[160,182,143,57,152,26,221,220,117,161,83,198,55,123,86,61,249,223,186,182,187,217,120,183,22,189,45,172,118,52,230,240,112,0],[160,29,91,34,243,70,153,248,21,0,182,206,197,142,239,125,148,136,12,7,134,242,200,194,32,51,118,7,64,50,191,74,93,0],[160,155,201,134,3,164,120,172,75,74,243,23,75,138,17,227,228,164,186,195,71,91,141,88,190,216,173,246,40,142,41,31,43,0],[160,45,240,236,48,240,10,170,254,49,102,210,93,150,99,189,36,99,179,2,19,159,122,78,177,123,218,46,32,5,59,135,130,0],[160,33,228,67,177,101,177,233,17,253,0,69,14,223,236,194,30,3,1,227,229,162,15,240,155,49,8,162,92,86,210,197,143,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,231,95,10,238,177,7,32,101,219,128,213,171,45,55,12,233,220,76,10,224,110,85,30,112,72,0,28,46,26,178,165,127,160,68,154,48,77,211,155,158,122,103,65,28,151,165,177,139,126,155,242,209,98,172,22,197,196,198,164,160,1,191,248,201,14,160,226,197,189,105,117,223,207,34,106,169,20,185,220,121,234,106,141,248,253,225,66,0,82,201,120,184,102,45,245,44,112,98,160,193,198,74,20,172,24,242,204,247,133,105,88,206,172,223,183,62,184,143,158,6,143,103,24,224,178,189,126,10,74,113,190,160,43,204,227,62,184,13,182,217,216,210,48,27,217,75,64,252,242,140,3,182,202,118,144,176,148,26,196,214,100,122,226,213,160,182,138,23,200,65,150,48,56,62,198,76,160,173,67,61,225,22,190,139,168,55,26,90,185,230,228,40,91,80,196,239,196,160,24,17,32,125,206,81,93,62,53,124,234,251,38,171,115,163,153,207,6,136,152,179,28,6,29,25,100,153,224,243,112,41,160,148,208,38,239,167,118,27,229,171,172,83,173,11,119,101,8,199,167,146,213,184,195,245,195,143,154,141,98,23,156,71,88,160,0,111,208,29,187,84,114,172,204,96,22,253,97,161,125,144,215,97,197,58,152,97,231,141,59,95,211,214,3,43,242,134,160,73,5,38,184,154,125,53,252,236,115,226,160,8,168,26,90,196,99,74,104,6,166,65,105,63,117,232,48,156,232,46,118,160,73,99,227,191,237,215,26,167,84,198,202,187,25,227,145,193,205,222,64,59,165,140,59,62,35,148,177,238,21,32,11,15,160,182,143,57,152,26,221,220,117,161,83,198,55,123,86,61,249,223,186,182,187,217,120,183,22,189,45,172,118,52,230,240,112,160,29,91,34,243,70,153,248,21,0,182,206,197,142,239,125,148,136,12,7,134,242,200,194,32,51,118,7,64,50,191,74,93,160,155,201,134,3,164,120,172,75,74,243,23,75,138,17,227,228,164,186,195,71,91,141,88,190,216,173,246,40,142,41,31,43,160,45,240,236,48,240,10,170,254,49,102,210,93,150,99,189,36,99,179,2,19,159,122,78,177,123,218,46,32,5,59,135,130,160,33,228,67,177,101,177,233,17,253,0,69,14,223,236,194,30,3,1,227,229,162,15,240,155,49,8,162,92,86,210,197,143,128],[249,2,17,160,231,95,10,238,177,7,32,101,219,128,213,171,45,55,12,233,220,76,10,224,110,85,30,112,72,0,28,46,26,178,165,127,160,68,154,48,77,211,155,158,122,103,65,28,151,165,177,139,126,155,242,209,98,172,22,197,196,198,164,160,1,191,248,201,14,160,226,197,189,105,117,223,207,34,106,169,20,185,220,121,234,106,141,248,253,225,66,0,82,201,120,184,102,45,245,44,112,98,160,183,219,70,226,179,5,129,109,157,38,44,155,133,219,225,116,64,71,122,63,125,181,242,78,166,169,210,22,22,155,75,67,160,43,204,227,62,184,13,182,217,216,210,48,27,217,75,64,252,242,140,3,182,202,118,144,176,148,26,196,214,100,122,226,213,160,182,138,23,200,65,150,48,56,62,198,76,160,173,67,61,225,22,190,139,168,55,26,90,185,230,228,40,91,80,196,239,196,160,24,17,32,125,206,81,93,62,53,124,234,251,38,171,115,163,153,207,6,136,152,179,28,6,29,25,100,153,224,243,112,41,160,148,208,38,239,167,118,27,229,171,172,83,173,11,119,101,8,199,167,146,213,184,195,245,195,143,154,141,98,23,156,71,88,160,0,111,208,29,187,84,114,172,204,96,22,253,97,161,125,144,215,97,197,58,152,97,231,141,59,95,211,214,3,43,242,134,160,73,5,38,184,154,125,53,252,236,115,226,160,8,168,26,90,196,99,74,104,6,166,65,105,63,117,232,48,156,232,46,118,160,73,99,227,191,237,215,26,167,84,198,202,187,25,227,145,193,205,222,64,59,165,140,59,62,35,148,177,238,21,32,11,15,160,182,143,57,152,26,221,220,117,161,83,198,55,123,86,61,249,223,186,182,187,217,120,183,22,189,45,172,118,52,230,240,112,160,29,91,34,243,70,153,248,21,0,182,206,197,142,239,125,148,136,12,7,134,242,200,194,32,51,118,7,64,50,191,74,93,160,155,201,134,3,164,120,172,75,74,243,23,75,138,17,227,228,164,186,195,71,91,141,88,190,216,173,246,40,142,41,31,43,160,45,240,236,48,240,10,170,254,49,102,210,93,150,99,189,36,99,179,2,19,159,122,78,177,123,218,46,32,5,59,135,130,160,33,228,67,177,101,177,233,17,253,0,69,14,223,236,194,30,3,1,227,229,162,15,240,155,49,8,162,92,86,210,197,143,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":2,"drifted_index":2,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,140,189,42,227,234,225,34,139,39,33,109,133,147,104,7,213,94,5,177,115,67,233,167,121,108,158,178,28,99,133,191,221,0],[160,182,157,141,96,64,124,32,139,164,168,123,177,23,245,189,220,225,84,136,136,88,10,6,219,58,97,25,182,69,71,237,143,0],[160,206,250,250,126,150,206,40,106,250,64,172,109,90,20,29,206,199,98,71,103,243,57,48,153,235,158,226,15,248,33,24,173,0],[160,136,63,198,240,187,66,179,160,160,234,247,50,225,28,133,166,186,193,44,232,206,69,231,205,70,97,57,71,100,210,28,206,0],[160,83,100,153,220,8,108,102,77,228,175,197,32,215,192,58,6,109,5,74,102,136,20,58,206,184,63,3,33,8,16,153,30,0],[160,175,232,48,82,151,173,48,31,217,187,131,102,232,238,240,77,20,136,215,3,165,190,235,207,83,24,118,111,5,33,118,184,0],[160,110,54,181,109,232,73,221,100,78,199,234,224,211,152,43,47,140,143,161,231,189,203,125,26,62,143,67,142,233,89,170,151,0],[160,246,236,40,139,47,246,79,126,248,202,223,217,217,99,115,141,110,146,2,242,28,96,147,41,125,191,216,113,201,41,89,235,0],[160,91,59,237,40,226,216,243,244,208,125,68,191,111,236,9,112,23,15,133,69,16,47,245,247,83,174,149,186,162,56,186,253,0],[160,220,44,238,195,63,188,246,232,190,154,148,17,70,121,20,98,79,195,188,168,110,0,5,208,4,130,188,87,169,192,70,98,0],[160,92,101,86,144,21,242,104,190,28,237,87,193,148,105,92,120,133,227,203,0,122,152,144,116,26,192,140,242,105,209,149,100,0],[160,9,90,216,179,219,207,78,116,148,217,99,115,243,103,47,189,57,153,134,100,125,171,152,207,119,127,3,229,255,164,27,92,0],[160,31,78,79,236,47,83,65,173,98,239,70,162,185,140,118,72,2,219,95,127,244,126,251,190,151,219,22,40,18,96,202,62,0],[160,159,240,142,98,4,180,205,200,240,26,148,146,37,243,63,216,214,244,168,209,3,157,90,160,14,74,97,151,36,250,19,11,0],[160,157,182,12,187,163,248,170,80,34,55,159,70,9,174,92,138,75,211,86,41,85,220,251,35,21,219,63,243,66,254,202,139,0],[160,219,165,14,121,240,76,195,159,115,215,66,217,73,217,69,74,103,150,182,161,200,213,160,60,101,94,176,97,200,45,237,58,0],[160,199,43,123,101,125,33,151,100,53,219,109,222,209,241,245,149,13,132,146,115,151,223,49,52,200,134,90,176,44,55,175,7,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,182,157,141,96,64,124,32,139,164,168,123,177,23,245,189,220,225,84,136,136,88,10,6,219,58,97,25,182,69,71,237,143,160,206,250,250,126,150,206,40,106,250,64,172,109,90,20,29,206,199,98,71,103,243,57,48,153,235,158,226,15,248,33,24,173,160,136,63,198,240,187,66,179,160,160,234,247,50,225,28,133,166,186,193,44,232,206,69,231,205,70,97,57,71,100,210,28,206,160,83,100,153,220,8,108,102,77,228,175,197,32,215,192,58,6,109,5,74,102,136,20,58,206,184,63,3,33,8,16,153,30,160,175,232,48,82,151,173,48,31,217,187,131,102,232,238,240,77,20,136,215,3,165,190,235,207,83,24,118,111,5,33,118,184,160,110,54,181,109,232,73,221,100,78,199,234,224,211,152,43,47,140,143,161,231,189,203,125,26,62,143,67,142,233,89,170,151,160,246,236,40,139,47,246,79,126,248,202,223,217,217,99,115,141,110,146,2,242,28,96,147,41,125,191,216,113,201,41,89,235,160,91,59,237,40,226,216,243,244,208,125,68,191,111,236,9,112,23,15,133,69,16,47,245,247,83,174,149,186,162,56,186,253,160,220,44,238,195,63,188,246,232,190,154,148,17,70,121,20,98,79,195,188,168,110,0,5,208,4,130,188,87,169,192,70,98,160,92,101,86,144,21,242,104,190,28,237,87,193,148,105,92,120,133,227,203,0,122,152,144,116,26,192,140,242,105,209,149,100,160,9,90,216,179,219,207,78,116,148,217,99,115,243,103,47,189,57,153,134,100,125,171,152,207,119,127,3,229,255,164,27,92,160,31,78,79,236,47,83,65,173,98,239,70,162,185,140,118,72,2,219,95,127,244,126,251,190,151,219,22,40,18,96,202,62,160,159,240,142,98,4,180,205,200,240,26,148,146,37,243,63,216,214,244,168,209,3,157,90,160,14,74,97,151,36,250,19,11,160,157,182,12,187,163,248,170,80,34,55,159,70,9,174,92,138,75,211,86,41,85,220,251,35,21,219,63,243,66,254,202,139,160,219,165,14,121,240,76,195,159,115,215,66,217,73,217,69,74,103,150,182,161,200,213,160,60,101,94,176,97,200,45,237,58,160,199,43,123,101,125,33,151,100,53,219,109,222,209,241,245,149,13,132,146,115,151,223,49,52,200,134,90,176,44,55,175,7,128],[249,2,17,160,182,157,141,96,64,124,32,139,164,168,123,177,23,245,189,220,225,84,136,136,88,10,6,219,58,97,25,182,69,71,237,143,160,206,250,250,126,150,206,40,106,250,64,172,109,90,20,29,206,199,98,71,103,243,57,48,153,235,158,226,15,248,33,24,173,160,140,189,42,227,234,225,34,139,39,33,109,133,147,104,7,213,94,5,177,115,67,233,167,121,108,158,178,28,99,133,191,221,160,83,100,153,220,8,108,102,77,228,175,197,32,215,192,58,6,109,5,74,102,136,20,58,206,184,63,3,33,8,16,153,30,160,175,232,48,82,151,173,48,31,217,187,131,102,232,238,240,77,20,136,215,3,165,190,235,207,83,24,118,111,5,33,118,184,160,110,54,181,109,232,73,221,100,78,199,234,224,211,152,43,47,140,143,161,231,189,203,125,26,62,143,67,142,233,89,170,151,160,246,236,40,139,47,246,79,126,248,202,223,217,217,99,115,141,110,146,2,242,28,96,147,41,125,191,216,113,201,41,89,235,160,91,59,237,40,226,216,243,244,208,125,68,191,111,236,9,112,23,15,133,69,16,47,245,247,83,174,149,186,162,56,186,253,160,220,44,238,195,63,188,246,232,190,154,148,17,70,121,20,98,79,195,188,168,110,0,5,208,4,130,188,87,169,192,70,98,160,92,101,86,144,21,242,104,190,28,237,87,193,148,105,92,120,133,227,203,0,122,152,144,116,26,192,140,242,105,209,149,100,160,9,90,216,179,219,207,78,116,148,217,99,115,243,103,47,189,57,153,134,100,125,171,152,207,119,127,3,229,255,164,27,92,160,31,78,79,236,47,83,65,173,98,239,70,162,185,140,118,72,2,219,95,127,244,126,251,190,151,219,22,40,18,96,202,62,160,159,240,142,98,4,180,205,200,240,26,148,146,37,243,63,216,214,244,168,209,3,157,90,160,14,74,97,151,36,250,19,11,160,157,182,12,187,163,248,170,80,34,55,159,70,9,174,92,138,75,211,86,41,85,220,251,35,21,219,63,243,66,254,202,139,160,219,165,14,121,240,76,195,159,115,215,66,217,73,217,69,74,103,150,182,161,200,213,160,60,101,94,176,97,200,45,237,58,160,199,43,123,101,125,33,151,100,53,219,109,222,209,241,245,149,13,132,146,115,151,223,49,52,200,134,90,176,44,55,175,7,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,132,54,201,11,96,145,99,24,22,214,203,107,206,124,19,232,235,225,175,151,177,29,210,71,182,254,180,64,238,255,98,25,0],[160,94,252,119,184,230,20,198,249,59,8,100,146,111,65,47,251,132,45,206,155,80,65,126,116,167,153,242,240,123,240,219,99,0],[160,136,152,181,189,76,53,26,15,182,1,207,203,181,22,6,6,200,2,117,30,10,12,115,143,252,15,145,127,204,60,243,89,0],[160,220,30,215,238,90,91,227,27,252,122,162,159,24,234,129,3,159,224,19,187,27,83,48,15,194,51,93,128,98,157,138,157,0],[160,189,224,0,206,122,88,196,193,22,254,84,35,16,85,192,156,141,53,73,131,58,39,69,158,160,8,145,61,189,235,223,172,0],[160,114,153,151,230,187,111,213,97,69,112,10,63,102,200,249,107,110,250,160,87,251,68,253,164,14,129,92,155,189,90,78,88,0],[160,58,185,6,193,165,112,29,102,93,153,129,133,146,171,173,163,8,103,60,245,12,132,237,215,148,21,110,112,118,248,86,38,0],[160,111,220,186,200,71,25,68,52,188,156,193,114,61,192,144,212,204,60,135,63,82,83,10,142,115,170,123,28,163,217,36,227,0],[160,56,6,103,29,198,117,228,108,168,136,138,60,223,164,68,163,23,61,161,137,95,136,76,96,115,222,102,2,235,221,131,46,0],[160,114,17,201,128,234,225,166,71,56,220,19,66,16,131,173,40,153,210,136,106,131,141,13,99,71,22,175,191,215,15,101,78,0],[160,185,94,15,81,91,143,215,241,124,65,158,52,51,57,215,14,218,130,60,86,253,44,29,240,181,205,139,65,112,13,204,77,0],[160,102,26,69,87,205,75,63,40,155,121,13,81,117,150,138,155,228,114,16,26,25,140,7,141,100,248,101,132,115,4,176,105,0],[160,24,199,37,127,95,171,48,236,127,237,165,168,41,131,156,81,237,94,229,55,146,128,118,40,87,182,139,163,199,212,247,104,0],[160,88,158,172,54,18,109,167,144,70,74,13,42,228,254,248,175,66,26,133,108,92,146,251,242,220,149,1,111,47,94,63,199,0],[160,238,152,117,3,226,86,88,17,227,43,23,69,229,181,232,20,61,111,103,237,187,174,85,213,127,183,53,89,129,116,181,82,0],[160,114,27,51,178,26,231,177,85,151,61,247,26,27,148,202,167,234,150,130,31,112,34,35,32,39,117,137,3,38,130,233,116,0],[160,140,132,128,4,217,75,11,41,33,8,232,186,150,199,39,25,126,160,7,206,8,181,41,155,76,120,59,226,180,191,136,111,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,94,252,119,184,230,20,198,249,59,8,100,146,111,65,47,251,132,45,206,155,80,65,126,116,167,153,242,240,123,240,219,99,160,136,152,181,189,76,53,26,15,182,1,207,203,181,22,6,6,200,2,117,30,10,12,115,143,252,15,145,127,204,60,243,89,160,220,30,215,238,90,91,227,27,252,122,162,159,24,234,129,3,159,224,19,187,27,83,48,15,194,51,93,128,98,157,138,157,160,189,224,0,206,122,88,196,193,22,254,84,35,16,85,192,156,141,53,73,131,58,39,69,158,160,8,145,61,189,235,223,172,160,114,153,151,230,187,111,213,97,69,112,10,63,102,200,249,107,110,250,160,87,251,68,253,164,14,129,92,155,189,90,78,88,160,58,185,6,193,165,112,29,102,93,153,129,133,146,171,173,163,8,103,60,245,12,132,237,215,148,21,110,112,118,248,86,38,160,111,220,186,200,71,25,68,52,188,156,193,114,61,192,144,212,204,60,135,63,82,83,10,142,115,170,123,28,163,217,36,227,160,56,6,103,29,198,117,228,108,168,136,138,60,223,164,68,163,23,61,161,137,95,136,76,96,115,222,102,2,235,221,131,46,160,114,17,201,128,234,225,166,71,56,220,19,66,16,131,173,40,153,210,136,106,131,141,13,99,71,22,175,191,215,15,101,78,160,185,94,15,81,91,143,215,241,124,65,158,52,51,57,215,14,218,130,60,86,253,44,29,240,181,205,139,65,112,13,204,77,160,102,26,69,87,205,75,63,40,155,121,13,81,117,150,138,155,228,114,16,26,25,140,7,141,100,248,101,132,115,4,176,105,160,24,199,37,127,95,171,48,236,127,237,165,168,41,131,156,81,237,94,229,55,146,128,118,40,87,182,139,163,199,212,247,104,160,88,158,172,54,18,109,167,144,70,74,13,42,228,254,248,175,66,26,133,108,92,146,251,242,220,149,1,111,47,94,63,199,160,238,152,117,3,226,86,88,17,227,43,23,69,229,181,232,20,61,111,103,237,187,174,85,213,127,183,53,89,129,116,181,82,160,114,27,51,178,26,231,177,85,151,61,247,26,27,148,202,167,234,150,130,31,112,34,35,32,39,117,137,3,38,130,233,116,160,140,132,128,4,217,75,11,41,33,8,232,186,150,199,39,25,126,160,7,206,8,181,41,155,76,120,59,226,180,191,136,111,128],[249,2,17,160,94,252,119,184,230,20,198,249,59,8,100,146,111,65,47,251,132,45,206,155,80,65,126,116,167,153,242,240,123,240,219,99,160,136,152,181,189,76,53,26,15,182,1,207,203,181,22,6,6,200,2,117,30,10,12,115,143,252,15,145,127,204,60,243,89,160,220,30,215,238,90,91,227,27,252,122,162,159,24,234,129,3,159,224,19,187,27,83,48,15,194,51,93,128,98,157,138,157,160,189,224,0,206,122,88,196,193,22,254,84,35,16,85,192,156,141,53,73,131,58,39,69,158,160,8,145,61,189,235,223,172,160,114,153,151,230,187,111,213,97,69,112,10,63,102,200,249,107,110,250,160,87,251,68,253,164,14,129,92,155,189,90,78,88,160,58,185,6,193,165,112,29,102,93,153,129,133,146,171,173,163,8,103,60,245,12,132,237,215,148,21,110,112,118,248,86,38,160,111,220,186,200,71,25,68,52,188,156,193,114,61,192,144,212,204,60,135,63,82,83,10,142,115,170,123,28,163,217,36,227,160,56,6,103,29,198,117,228,108,168,136,138,60,223,164,68,163,23,61,161,137,95,136,76,96,115,222,102,2,235,221,131,46,160,114,17,201,128,234,225,166,71,56,220,19,66,16,131,173,40,153,210,136,106,131,141,13,99,71,22,175,191,215,15,101,78,160,185,94,15,81,91,143,215,241,124,65,158,52,51,57,215,14,218,130,60,86,253,44,29,240,181,205,139,65,112,13,204,77,160,102,26,69,87,205,75,63,40,155,121,13,81,117,150,138,155,228,114,16,26,25,140,7,141,100,248,101,132,115,4,176,105,160,24,199,37,127,95,171,48,236,127,237,165,168,41,131,156,81,237,94,229,55,146,128,118,40,87,182,139,163,199,212,247,104,160,88,158,172,54,18,109,167,144,70,74,13,42,228,254,248,175,66,26,133,108,92,146,251,242,220,149,1,111,47,94,63,199,160,238,152,117,3,226,86,88,17,227,43,23,69,229,181,232,20,61,111,103,237,187,174,85,213,127,183,53,89,129,116,181,82,160,114,27,51,178,26,231,177,85,151,61,247,26,27,148,202,167,234,150,130,31,112,34,35,32,39,117,137,3,38,130,233,116,160,132,54,201,11,96,145,99,24,22,214,203,107,206,124,19,232,235,225,175,151,177,29,210,71,182,254,180,64,238,255,98,25,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,103,160,25,207,238,14,124,214,115,33,134,80,81,127,179,67,224,80,122,202,125,152,117,87,53,11,2,57,193,44,161,191,0],[160,135,34,48,42,14,239,143,189,170,69,134,123,218,36,72,2,163,192,143,204,12,109,175,58,141,118,94,36,206,191,118,32,0],[160,220,109,24,106,232,29,109,176,46,233,215,10,243,92,45,248,25,115,230,121,148,2,36,148,57,81,160,129,219,132,31,115,0],[160,106,59,42,152,93,61,176,69,106,48,79,39,47,12,7,140,163,95,23,216,137,66,239,155,185,168,89,196,116,195,127,103,0],[160,115,205,37,159,79,247,182,93,148,163,41,97,209,195,10,86,168,109,224,153,110,249,227,211,101,70,158,44,49,24,252,132,0],[160,220,148,213,4,41,28,43,101,120,138,61,233,81,137,234,115,228,127,178,20,124,231,241,244,229,119,116,247,123,242,120,26,0],[160,154,118,186,142,199,193,20,16,163,132,141,63,7,178,219,12,148,172,137,136,236,174,187,174,159,205,156,149,131,54,1,168,0],[160,214,253,5,60,164,8,246,254,113,111,196,26,242,176,242,139,188,226,145,21,205,48,78,102,182,33,77,57,202,84,48,0,0],[160,139,204,186,196,107,226,228,156,235,35,141,205,116,232,148,130,127,218,131,190,210,69,245,210,248,108,18,23,84,107,240,100,0],[160,218,108,35,164,234,199,139,87,95,227,117,52,209,236,84,73,11,20,160,142,193,96,135,109,246,191,233,164,121,163,102,222,0],[160,83,49,6,15,200,239,117,94,151,2,193,125,234,124,185,47,102,60,209,122,158,206,117,224,225,12,240,4,226,144,7,96,0],[160,223,125,252,178,10,71,117,227,106,4,72,134,3,198,40,42,202,83,144,150,218,69,209,146,150,21,92,64,12,28,148,148,0],[160,218,47,230,215,64,200,192,227,20,116,145,120,75,245,133,123,166,240,80,80,89,158,211,208,26,119,201,245,23,210,190,49,0],[160,143,250,205,245,173,47,73,123,110,113,113,235,19,17,71,220,138,246,108,253,89,89,132,195,28,111,161,26,177,198,209,123,0],[160,147,222,183,53,197,59,92,88,124,124,72,194,252,43,86,200,183,156,45,134,208,56,244,68,132,49,132,11,3,114,203,240,0],[160,142,37,97,120,142,29,148,214,255,167,235,163,36,83,145,158,144,213,127,247,2,111,187,10,161,113,14,12,154,236,177,150,0],[160,219,159,168,42,142,113,65,118,52,111,17,22,108,65,85,127,75,84,187,233,116,143,64,189,231,69,236,121,249,87,243,227,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,135,34,48,42,14,239,143,189,170,69,134,123,218,36,72,2,163,192,143,204,12,109,175,58,141,118,94,36,206,191,118,32,160,220,109,24,106,232,29,109,176,46,233,215,10,243,92,45,248,25,115,230,121,148,2,36,148,57,81,160,129,219,132,31,115,160,106,59,42,152,93,61,176,69,106,48,79,39,47,12,7,140,163,95,23,216,137,66,239,155,185,168,89,196,116,195,127,103,160,115,205,37,159,79,247,182,93,148,163,41,97,209,195,10,86,168,109,224,153,110,249,227,211,101,70,158,44,49,24,252,132,160,220,148,213,4,41,28,43,101,120,138,61,233,81,137,234,115,228,127,178,20,124,231,241,244,229,119,116,247,123,242,120,26,160,154,118,186,142,199,193,20,16,163,132,141,63,7,178,219,12,148,172,137,136,236,174,187,174,159,205,156,149,131,54,1,168,160,214,253,5,60,164,8,246,254,113,111,196,26,242,176,242,139,188,226,145,21,205,48,78,102,182,33,77,57,202,84,48,0,160,139,204,186,196,107,226,228,156,235,35,141,205,116,232,148,130,127,218,131,190,210,69,245,210,248,108,18,23,84,107,240,100,160,218,108,35,164,234,199,139,87,95,227,117,52,209,236,84,73,11,20,160,142,193,96,135,109,246,191,233,164,121,163,102,222,160,83,49,6,15,200,239,117,94,151,2,193,125,234,124,185,47,102,60,209,122,158,206,117,224,225,12,240,4,226,144,7,96,160,223,125,252,178,10,71,117,227,106,4,72,134,3,198,40,42,202,83,144,150,218,69,209,146,150,21,92,64,12,28,148,148,160,218,47,230,215,64,200,192,227,20,116,145,120,75,245,133,123,166,240,80,80,89,158,211,208,26,119,201,245,23,210,190,49,160,143,250,205,245,173,47,73,123,110,113,113,235,19,17,71,220,138,246,108,253,89,89,132,195,28,111,161,26,177,198,209,123,160,147,222,183,53,197,59,92,88,124,124,72,194,252,43,86,200,183,156,45,134,208,56,244,68,132,49,132,11,3,114,203,240,160,142,37,97,120,142,29,148,214,255,167,235,163,36,83,145,158,144,213,127,247,2,111,187,10,161,113,14,12,154,236,177,150,160,219,159,168,42,142,113,65,118,52,111,17,22,108,65,85,127,75,84,187,233,116,143,64,189,231,69,236,121,249,87,243,227,128],[249,2,17,160,135,34,48,42,14,239,143,189,170,69,134,123,218,36,72,2,163,192,143,204,12,109,175,58,141,118,94,36,206,191,118,32,160,220,109,24,106,232,29,109,176,46,233,215,10,243,92,45,248,25,115,230,121,148,2,36,148,57,81,160,129,219,132,31,115,160,106,59,42,152,93,61,176,69,106,48,79,39,47,12,7,140,163,95,23,216,137,66,239,155,185,168,89,196,116,195,127,103,160,103,160,25,207,238,14,124,214,115,33,134,80,81,127,179,67,224,80,122,202,125,152,117,87,53,11,2,57,193,44,161,191,160,220,148,213,4,41,28,43,101,120,138,61,233,81,137,234,115,228,127,178,20,124,231,241,244,229,119,116,247,123,242,120,26,160,154,118,186,142,199,193,20,16,163,132,141,63,7,178,219,12,148,172,137,136,236,174,187,174,159,205,156,149,131,54,1,168,160,214,253,5,60,164,8,246,254,113,111,196,26,242,176,242,139,188,226,145,21,205,48,78,102,182,33,77,57,202,84,48,0,160,139,204,186,196,107,226,228,156,235,35,141,205,116,232,148,130,127,218,131,190,210,69,245,210,248,108,18,23,84,107,240,100,160,218,108,35,164,234,199,139,87,95,227,117,52,209,236,84,73,11,20,160,142,193,96,135,109,246,191,233,164,121,163,102,222,160,83,49,6,15,200,239,117,94,151,2,193,125,234,124,185,47,102,60,209,122,158,206,117,224,225,12,240,4,226,144,7,96,160,223,125,252,178,10,71,117,227,106,4,72,134,3,198,40,42,202,83,144,150,218,69,209,146,150,21,92,64,12,28,148,148,160,218,47,230,215,64,200,192,227,20,116,145,120,75,245,133,123,166,240,80,80,89,158,211,208,26,119,201,245,23,210,190,49,160,143,250,205,245,173,47,73,123,110,113,113,235,19,17,71,220,138,246,108,253,89,89,132,195,28,111,161,26,177,198,209,123,160,147,222,183,53,197,59,92,88,124,124,72,194,252,43,86,200,183,156,45,134,208,56,244,68,132,49,132,11,3,114,203,240,160,142,37,97,120,142,29,148,214,255,167,235,163,36,83,145,158,144,213,127,247,2,111,187,10,161,113,14,12,154,236,177,150,160,219,159,168,42,142,113,65,118,52,111,17,22,108,65,85,127,75,84,187,233,116,143,64,189,231,69,236,121,249,87,243,227,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[248,241],[248,241]]}},"account":null,"storage":null,"values":[[160,79,119,50,238,231,143,169,238,3,236,32,180,120,110,203,163,142,44,140,58,54,72,177,76,66,137,235,88,86,23,185,251,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,141,164,222,208,114,53,138,42,68,185,35,22,209,135,11,97,236,54,41,171,248,148,120,199,164,25,5,47,208,236,247,210,0],[160,208,177,229,217,205,98,195,68,182,154,209,69,75,36,206,247,42,217,69,77,176,29,182,159,27,47,146,195,212,187,71,199,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,102,101,11,70,156,88,24,31,7,55,179,211,135,114,238,179,201,6,208,181,163,120,106,23,174,138,148,70,209,38,35,198,0],[160,38,86,198,208,216,23,120,168,85,81,136,16,250,33,229,226,49,165,159,207,113,95,140,88,217,8,230,152,28,12,27,121,0],[160,4,47,26,239,50,241,69,138,14,179,226,234,13,64,122,236,209,53,87,153,54,206,120,176,192,254,19,85,51,100,217,101,0],[160,240,24,25,158,169,202,34,38,106,221,208,86,5,147,221,187,73,137,97,91,147,230,239,222,197,208,19,216,5,223,83,220,0],[160,154,40,44,216,26,128,75,165,2,28,255,39,10,252,225,252,114,120,145,118,215,194,126,79,235,164,46,153,237,126,129,100,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,241,128,128,128,128,160,141,164,222,208,114,53,138,42,68,185,35,22,209,135,11,97,236,54,41,171,248,148,120,199,164,25,5,47,208,236,247,210,160,208,177,229,217,205,98,195,68,182,154,209,69,75,36,206,247,42,217,69,77,176,29,182,159,27,47,146,195,212,187,71,199,128,160,102,101,11,70,156,88,24,31,7,55,179,211,135,114,238,179,201,6,208,181,163,120,106,23,174,138,148,70,209,38,35,198,160,38,86,198,208,216,23,120,168,85,81,136,16,250,33,229,226,49,165,159,207,113,95,140,88,217,8,230,152,28,12,27,121,160,4,47,26,239,50,241,69,138,14,179,226,234,13,64,122,236,209,53,87,153,54,206,120,176,192,254,19,85,51,100,217,101,160,240,24,25,158,169,202,34,38,106,221,208,86,5,147,221,187,73,137,97,91,147,230,239,222,197,208,19,216,5,223,83,220,160,154,40,44,216,26,128,75,165,2,28,255,39,10,252,225,252,114,120,145,118,215,194,126,79,235,164,46,153,237,126,129,100,128,128,128,128,128],[248,241,128,128,128,128,160,141,164,222,208,114,53,138,42,68,185,35,22,209,135,11,97,236,54,41,171,248,148,120,199,164,25,5,47,208,236,247,210,160,208,177,229,217,205,98,195,68,182,154,209,69,75,36,206,247,42,217,69,77,176,29,182,159,27,47,146,195,212,187,71,199,128,160,102,101,11,70,156,88,24,31,7,55,179,211,135,114,238,179,201,6,208,181,163,120,106,23,174,138,148,70,209,38,35,198,160,38,86,198,208,216,23,120,168,85,81,136,16,250,33,229,226,49,165,159,207,113,95,140,88,217,8,230,152,28,12,27,121,160,79,119,50,238,231,143,169,238,3,236,32,180,120,110,203,163,142,44,140,58,54,72,177,76,66,137,235,88,86,23,185,251,160,240,24,25,158,169,202,34,38,106,221,208,86,5,147,221,187,73,137,97,91,147,230,239,222,197,208,19,216,5,223,83,220,160,154,40,44,216,26,128,75,165,2,28,255,39,10,252,225,252,114,120,145,118,215,194,126,79,235,164,46,153,237,126,129,100,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[104,213,166,231,139,216,115,75,125,25,12,189,152,84,155,114,191,160,128,11],"key":[131,50,243,150,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196],"list_rlp_bytes":[[248,109],[248,102]],"value_rlp_bytes":[[184,77],[184,70]],"value_list_rlp_bytes":[[248,75],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,54,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196,0,0,0,0],[157,54,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196,0,0,0,0],[7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[135,28,5,107,201,118,120,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,54,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196,0,0,0,0]],"keccak_data":[[248,109,157,54,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196,184,77,248,75,7,135,28,5,107,201,118,120,59,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,54,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196,184,70,248,68,7,98,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[104,213,166,231,139,216,115,75,125,25,12,189,152,84,155,114,191,160,128,11]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/BranchAfterExtNode.json b/zkevm-circuits/src/mpt_circuit/tests/BranchAfterExtNode.json new file mode 100644 index 0000000000..1f214b1a2f --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/BranchAfterExtNode.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":true,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,73,49,198,255,107,143,229,48,234,92,155,36,85,51,114,24,8,103,83,24,237,216,9,33,197,9,79,133,194,252,244,22,0],[160,133,2,227,97,29,49,149,137,63,240,21,59,248,88,238,177,157,104,56,137,140,80,96,81,212,121,90,135,253,19,159,21,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,201,82,215,59,18,170,24,170,99,224,138,251,104,161,255,21,159,170,37,168,170,150,210,218,152,170,1,74,126,225,27,17,0],[160,187,84,133,211,175,183,225,157,237,166,42,206,27,229,213,198,22,221,15,74,13,210,245,59,159,38,203,39,14,108,244,118,0],[160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,0],[160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,0],[160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,0],[160,78,68,202,236,255,69,201,137,31,116,246,162,21,103,53,136,110,237,246,241,167,51,98,142,188,128,46,199,157,132,70,72,0],[160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,0],[160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,0],[160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,0],[160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,0],[160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,0],[160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,0],[160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,0],[160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,0],[160,123,28,84,241,94,41,155,213,139,223,239,151,65,83,140,120,40,181,215,209,26,72,159,156,32,208,82,179,71,29,244,117,0],[160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,0],[160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,187,84,133,211,175,183,225,157,237,166,42,206,27,229,213,198,22,221,15,74,13,210,245,59,159,38,203,39,14,108,244,118,160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,160,78,68,202,236,255,69,201,137,31,116,246,162,21,103,53,136,110,237,246,241,167,51,98,142,188,128,46,199,157,132,70,72,160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,160,123,28,84,241,94,41,155,213,139,223,239,151,65,83,140,120,40,181,215,209,26,72,159,156,32,208,82,179,71,29,244,117,160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,128],[249,2,17,160,201,82,215,59,18,170,24,170,99,224,138,251,104,161,255,21,159,170,37,168,170,150,210,218,152,170,1,74,126,225,27,17,160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,160,78,68,202,236,255,69,201,137,31,116,246,162,21,103,53,136,110,237,246,241,167,51,98,142,188,128,46,199,157,132,70,72,160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,160,123,28,84,241,94,41,155,213,139,223,239,151,65,83,140,120,40,181,215,209,26,72,159,156,32,208,82,179,71,29,244,117,160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,43,209,201,146,215,51,147,204,1,146,123,227,189,47,252,60,205,89,3,243,8,71,141,72,251,19,75,25,117,76,208,111,0],[160,228,90,158,133,202,177,182,235,24,179,13,242,198,172,196,72,187,172,106,48,216,22,70,130,59,49,34,62,22,229,6,62,0],[160,51,189,113,113,213,86,185,129,246,132,144,100,235,9,65,43,36,254,220,8,18,18,125,185,54,6,112,67,245,61,177,185,0],[160,202,86,148,95,7,77,164,241,85,135,64,69,147,250,243,165,13,23,234,14,33,164,24,173,110,201,155,223,75,243,249,20,0],[160,218,35,233,0,79,120,45,241,40,238,161,173,255,119,149,45,200,95,145,183,247,202,72,147,170,197,242,29,36,195,161,201,0],[160,186,94,198,31,167,128,238,2,175,25,219,153,103,124,55,86,15,196,240,223,92,39,141,157,250,40,55,243,15,114,188,107,0],[160,131,16,173,145,98,92,46,52,41,167,64,102,183,226,224,201,88,50,94,78,127,163,236,72,107,115,183,200,48,12,254,247,0],[160,115,46,92,16,59,244,213,173,254,248,55,115,2,104,9,217,64,85,57,182,126,147,41,58,2,52,46,131,173,47,183,102,0],[160,48,209,79,240,194,170,181,125,31,186,244,152,171,20,81,155,78,157,148,241,73,163,220,21,240,238,197,173,248,223,37,225,0],[160,56,244,219,12,202,242,227,236,239,236,44,56,233,3,223,197,32,51,128,97,2,211,111,210,185,170,33,239,86,129,17,85,0],[160,90,67,189,146,229,90,167,141,246,14,112,182,181,59,99,102,196,8,15,214,165,189,215,181,51,180,106,255,74,117,246,242,0],[160,160,196,16,170,89,239,228,22,177,33,49,102,250,182,128,206,51,11,212,108,62,191,135,127,241,70,9,238,106,56,54,0,0],[160,47,65,233,24,120,110,85,114,147,6,139,30,218,155,63,159,134,237,78,101,166,165,54,62,227,38,33,9,246,224,139,23,0],[160,1,244,42,64,240,47,111,36,187,151,176,156,77,57,52,232,176,59,231,207,187,144,42,204,28,143,214,122,122,90,186,206,0],[160,10,203,220,226,120,122,110,161,119,32,155,209,59,252,157,7,121,215,226,181,36,158,2,17,162,151,65,100,225,67,18,245,0],[160,218,219,225,19,228,19,46,12,12,60,212,134,126,10,32,68,208,229,163,212,75,53,6,119,237,66,252,146,68,208,4,212,0],[160,91,28,212,38,52,113,173,123,188,155,32,196,251,89,0,47,200,132,14,137,163,114,112,59,172,245,25,8,95,36,170,231,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,228,90,158,133,202,177,182,235,24,179,13,242,198,172,196,72,187,172,106,48,216,22,70,130,59,49,34,62,22,229,6,62,160,51,189,113,113,213,86,185,129,246,132,144,100,235,9,65,43,36,254,220,8,18,18,125,185,54,6,112,67,245,61,177,185,160,202,86,148,95,7,77,164,241,85,135,64,69,147,250,243,165,13,23,234,14,33,164,24,173,110,201,155,223,75,243,249,20,160,218,35,233,0,79,120,45,241,40,238,161,173,255,119,149,45,200,95,145,183,247,202,72,147,170,197,242,29,36,195,161,201,160,186,94,198,31,167,128,238,2,175,25,219,153,103,124,55,86,15,196,240,223,92,39,141,157,250,40,55,243,15,114,188,107,160,131,16,173,145,98,92,46,52,41,167,64,102,183,226,224,201,88,50,94,78,127,163,236,72,107,115,183,200,48,12,254,247,160,115,46,92,16,59,244,213,173,254,248,55,115,2,104,9,217,64,85,57,182,126,147,41,58,2,52,46,131,173,47,183,102,160,48,209,79,240,194,170,181,125,31,186,244,152,171,20,81,155,78,157,148,241,73,163,220,21,240,238,197,173,248,223,37,225,160,56,244,219,12,202,242,227,236,239,236,44,56,233,3,223,197,32,51,128,97,2,211,111,210,185,170,33,239,86,129,17,85,160,90,67,189,146,229,90,167,141,246,14,112,182,181,59,99,102,196,8,15,214,165,189,215,181,51,180,106,255,74,117,246,242,160,160,196,16,170,89,239,228,22,177,33,49,102,250,182,128,206,51,11,212,108,62,191,135,127,241,70,9,238,106,56,54,0,160,47,65,233,24,120,110,85,114,147,6,139,30,218,155,63,159,134,237,78,101,166,165,54,62,227,38,33,9,246,224,139,23,160,1,244,42,64,240,47,111,36,187,151,176,156,77,57,52,232,176,59,231,207,187,144,42,204,28,143,214,122,122,90,186,206,160,10,203,220,226,120,122,110,161,119,32,155,209,59,252,157,7,121,215,226,181,36,158,2,17,162,151,65,100,225,67,18,245,160,218,219,225,19,228,19,46,12,12,60,212,134,126,10,32,68,208,229,163,212,75,53,6,119,237,66,252,146,68,208,4,212,160,91,28,212,38,52,113,173,123,188,155,32,196,251,89,0,47,200,132,14,137,163,114,112,59,172,245,25,8,95,36,170,231,128],[249,2,17,160,228,90,158,133,202,177,182,235,24,179,13,242,198,172,196,72,187,172,106,48,216,22,70,130,59,49,34,62,22,229,6,62,160,51,189,113,113,213,86,185,129,246,132,144,100,235,9,65,43,36,254,220,8,18,18,125,185,54,6,112,67,245,61,177,185,160,202,86,148,95,7,77,164,241,85,135,64,69,147,250,243,165,13,23,234,14,33,164,24,173,110,201,155,223,75,243,249,20,160,218,35,233,0,79,120,45,241,40,238,161,173,255,119,149,45,200,95,145,183,247,202,72,147,170,197,242,29,36,195,161,201,160,186,94,198,31,167,128,238,2,175,25,219,153,103,124,55,86,15,196,240,223,92,39,141,157,250,40,55,243,15,114,188,107,160,131,16,173,145,98,92,46,52,41,167,64,102,183,226,224,201,88,50,94,78,127,163,236,72,107,115,183,200,48,12,254,247,160,115,46,92,16,59,244,213,173,254,248,55,115,2,104,9,217,64,85,57,182,126,147,41,58,2,52,46,131,173,47,183,102,160,48,209,79,240,194,170,181,125,31,186,244,152,171,20,81,155,78,157,148,241,73,163,220,21,240,238,197,173,248,223,37,225,160,56,244,219,12,202,242,227,236,239,236,44,56,233,3,223,197,32,51,128,97,2,211,111,210,185,170,33,239,86,129,17,85,160,90,67,189,146,229,90,167,141,246,14,112,182,181,59,99,102,196,8,15,214,165,189,215,181,51,180,106,255,74,117,246,242,160,160,196,16,170,89,239,228,22,177,33,49,102,250,182,128,206,51,11,212,108,62,191,135,127,241,70,9,238,106,56,54,0,160,47,65,233,24,120,110,85,114,147,6,139,30,218,155,63,159,134,237,78,101,166,165,54,62,227,38,33,9,246,224,139,23,160,1,244,42,64,240,47,111,36,187,151,176,156,77,57,52,232,176,59,231,207,187,144,42,204,28,143,214,122,122,90,186,206,160,10,203,220,226,120,122,110,161,119,32,155,209,59,252,157,7,121,215,226,181,36,158,2,17,162,151,65,100,225,67,18,245,160,218,219,225,19,228,19,46,12,12,60,212,134,126,10,32,68,208,229,163,212,75,53,6,119,237,66,252,146,68,208,4,212,160,43,209,201,146,215,51,147,204,1,146,123,227,189,47,252,60,205,89,3,243,8,71,141,72,251,19,75,25,117,76,208,111,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":2,"drifted_index":2,"list_rlp_bytes":[[249,1,177],[249,1,177]]}},"account":null,"storage":null,"values":[[160,2,174,138,82,84,255,182,248,253,181,51,224,221,3,112,69,39,51,135,237,254,6,172,229,112,226,35,3,72,76,148,51,0],[160,99,177,38,18,210,137,248,128,13,121,176,69,191,235,206,191,181,117,177,222,14,16,95,204,110,208,0,163,182,129,33,138,0],[160,25,210,151,245,124,244,121,252,126,45,119,75,127,236,178,195,35,231,204,35,192,134,91,79,57,132,61,141,117,94,179,232,0],[160,55,233,31,130,172,126,78,192,134,117,159,42,63,243,55,221,15,180,31,197,219,27,234,1,214,92,166,208,129,149,215,61,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,135,225,224,84,220,117,208,97,69,191,21,139,124,116,109,53,88,110,160,234,100,180,148,59,9,44,118,87,242,104,161,16,0],[160,73,179,229,105,249,212,24,135,95,212,77,66,41,207,114,27,114,121,233,135,173,219,211,60,205,64,12,165,237,95,166,21,0],[160,219,224,13,96,100,120,184,230,49,179,64,233,74,12,226,105,247,132,204,142,178,138,64,67,36,235,249,253,251,77,249,100,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,144,59,163,188,253,212,40,167,204,216,147,144,206,163,194,67,219,255,80,65,66,62,11,227,114,155,181,68,68,128,94,204,0],[160,205,63,6,36,139,159,139,81,68,226,163,228,208,11,205,113,111,145,45,187,168,204,45,240,25,45,66,70,130,137,41,81,0],[160,99,195,182,73,239,159,112,203,139,195,225,122,156,151,190,189,202,124,109,39,143,14,145,184,134,13,109,74,228,153,109,81,0],[160,253,45,254,233,113,161,50,39,197,51,184,39,198,61,227,148,108,47,19,213,78,21,163,41,88,86,249,63,121,63,75,202,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,125,165,0,3,0,26,104,16,128,209,133,126,91,181,133,82,44,120,105,170,26,199,31,29,134,37,166,34,15,249,176,190,0],[160,128,240,222,115,77,99,29,94,39,225,187,123,87,18,70,22,23,170,117,158,125,128,252,234,112,131,69,68,59,209,22,85,0],[160,127,100,1,11,22,34,85,247,179,203,10,60,88,105,31,196,222,39,91,240,157,67,237,89,122,152,63,245,221,175,21,52,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,177,160,99,177,38,18,210,137,248,128,13,121,176,69,191,235,206,191,181,117,177,222,14,16,95,204,110,208,0,163,182,129,33,138,160,25,210,151,245,124,244,121,252,126,45,119,75,127,236,178,195,35,231,204,35,192,134,91,79,57,132,61,141,117,94,179,232,160,55,233,31,130,172,126,78,192,134,117,159,42,63,243,55,221,15,180,31,197,219,27,234,1,214,92,166,208,129,149,215,61,128,160,135,225,224,84,220,117,208,97,69,191,21,139,124,116,109,53,88,110,160,234,100,180,148,59,9,44,118,87,242,104,161,16,160,73,179,229,105,249,212,24,135,95,212,77,66,41,207,114,27,114,121,233,135,173,219,211,60,205,64,12,165,237,95,166,21,160,219,224,13,96,100,120,184,230,49,179,64,233,74,12,226,105,247,132,204,142,178,138,64,67,36,235,249,253,251,77,249,100,128,160,144,59,163,188,253,212,40,167,204,216,147,144,206,163,194,67,219,255,80,65,66,62,11,227,114,155,181,68,68,128,94,204,160,205,63,6,36,139,159,139,81,68,226,163,228,208,11,205,113,111,145,45,187,168,204,45,240,25,45,66,70,130,137,41,81,160,99,195,182,73,239,159,112,203,139,195,225,122,156,151,190,189,202,124,109,39,143,14,145,184,134,13,109,74,228,153,109,81,160,253,45,254,233,113,161,50,39,197,51,184,39,198,61,227,148,108,47,19,213,78,21,163,41,88,86,249,63,121,63,75,202,128,160,125,165,0,3,0,26,104,16,128,209,133,126,91,181,133,82,44,120,105,170,26,199,31,29,134,37,166,34,15,249,176,190,160,128,240,222,115,77,99,29,94,39,225,187,123,87,18,70,22,23,170,117,158,125,128,252,234,112,131,69,68,59,209,22,85,160,127,100,1,11,22,34,85,247,179,203,10,60,88,105,31,196,222,39,91,240,157,67,237,89,122,152,63,245,221,175,21,52,128],[249,1,177,160,99,177,38,18,210,137,248,128,13,121,176,69,191,235,206,191,181,117,177,222,14,16,95,204,110,208,0,163,182,129,33,138,160,25,210,151,245,124,244,121,252,126,45,119,75,127,236,178,195,35,231,204,35,192,134,91,79,57,132,61,141,117,94,179,232,160,2,174,138,82,84,255,182,248,253,181,51,224,221,3,112,69,39,51,135,237,254,6,172,229,112,226,35,3,72,76,148,51,128,160,135,225,224,84,220,117,208,97,69,191,21,139,124,116,109,53,88,110,160,234,100,180,148,59,9,44,118,87,242,104,161,16,160,73,179,229,105,249,212,24,135,95,212,77,66,41,207,114,27,114,121,233,135,173,219,211,60,205,64,12,165,237,95,166,21,160,219,224,13,96,100,120,184,230,49,179,64,233,74,12,226,105,247,132,204,142,178,138,64,67,36,235,249,253,251,77,249,100,128,160,144,59,163,188,253,212,40,167,204,216,147,144,206,163,194,67,219,255,80,65,66,62,11,227,114,155,181,68,68,128,94,204,160,205,63,6,36,139,159,139,81,68,226,163,228,208,11,205,113,111,145,45,187,168,204,45,240,25,45,66,70,130,137,41,81,160,99,195,182,73,239,159,112,203,139,195,225,122,156,151,190,189,202,124,109,39,143,14,145,184,134,13,109,74,228,153,109,81,160,253,45,254,233,113,161,50,39,197,51,184,39,198,61,227,148,108,47,19,213,78,21,163,41,88,86,249,63,121,63,75,202,128,160,125,165,0,3,0,26,104,16,128,209,133,126,91,181,133,82,44,120,105,170,26,199,31,29,134,37,166,34,15,249,176,190,160,128,240,222,115,77,99,29,94,39,225,187,123,87,18,70,22,23,170,117,158,125,128,252,234,112,131,69,68,59,209,22,85,160,127,100,1,11,22,34,85,247,179,203,10,60,88,105,31,196,222,39,91,240,157,67,237,89,122,152,63,245,221,175,21,52,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":6,"drifted_index":6,"list_rlp_bytes":[[248,145],[248,145]]}},"account":null,"storage":null,"values":[[160,217,61,8,41,170,75,215,43,11,14,15,230,88,212,149,46,106,205,214,237,84,92,86,93,232,60,222,106,55,147,101,230,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,238,154,201,77,98,196,200,204,121,221,49,134,97,232,39,160,114,160,141,30,114,252,26,214,28,58,52,226,46,201,177,99,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,88,162,103,248,232,250,22,70,107,53,87,130,165,1,203,138,60,106,132,145,81,226,14,83,31,153,68,197,55,15,140,105,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,218,227,95,52,213,45,132,15,136,106,204,149,152,130,189,75,195,239,217,100,37,131,72,204,18,234,23,163,199,152,227,191,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,156,139,22,126,67,235,50,223,254,156,178,25,208,133,19,117,164,170,21,123,10,101,150,194,186,210,53,153,87,94,88,111,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,145,128,128,160,238,154,201,77,98,196,200,204,121,221,49,134,97,232,39,160,114,160,141,30,114,252,26,214,28,58,52,226,46,201,177,99,128,128,128,160,88,162,103,248,232,250,22,70,107,53,87,130,165,1,203,138,60,106,132,145,81,226,14,83,31,153,68,197,55,15,140,105,128,128,160,218,227,95,52,213,45,132,15,136,106,204,149,152,130,189,75,195,239,217,100,37,131,72,204,18,234,23,163,199,152,227,191,128,128,128,160,156,139,22,126,67,235,50,223,254,156,178,25,208,133,19,117,164,170,21,123,10,101,150,194,186,210,53,153,87,94,88,111,128,128,128],[248,145,128,128,160,238,154,201,77,98,196,200,204,121,221,49,134,97,232,39,160,114,160,141,30,114,252,26,214,28,58,52,226,46,201,177,99,128,128,128,160,217,61,8,41,170,75,215,43,11,14,15,230,88,212,149,46,106,205,214,237,84,92,86,93,232,60,222,106,55,147,101,230,128,128,160,218,227,95,52,213,45,132,15,136,106,204,149,152,130,189,75,195,239,217,100,37,131,72,204,18,234,23,163,199,152,227,191,128,128,128,160,156,139,22,126,67,235,50,223,254,156,178,25,208,133,19,117,164,170,21,123,10,101,150,194,186,210,53,153,87,94,88,111,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[64,239,191,18,88,1,56,188,98,60,149,117,114,134,223,78,36,235,129,201],"key":[15,38,111,83,152,199,146,197,13,7,247,158,141,236,60,29,161,103,169,163,5,167,129,168,249,194,99,251,188,6,108,110],"list_rlp_bytes":[[248,104],[248,104]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,104]},"storage":null,"values":[[159,32,111,83,152,199,146,197,13,7,247,158,141,236,60,29,161,103,169,163,5,167,129,168,249,194,99,251,188,6,108,110,0,0],[159,32,111,83,152,199,146,197,13,7,247,158,141,236,60,29,161,103,169,163,5,167,129,168,249,194,99,251,188,6,108,110,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,206,60,99,19,56,41,46,91,119,41,228,201,230,159,100,118,59,157,41,75,211,227,103,55,152,239,160,70,4,195,6,118,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,189,55,225,123,133,61,150,163,237,126,25,170,46,40,228,1,41,44,59,122,58,75,245,58,171,7,210,231,202,59,135,154,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,32,111,83,152,199,146,197,13,7,247,158,141,236,60,29,161,103,169,163,5,167,129,168,249,194,99,251,188,6,108,110,0,0]],"keccak_data":[[248,104,159,32,111,83,152,199,146,197,13,7,247,158,141,236,60,29,161,103,169,163,5,167,129,168,249,194,99,251,188,6,108,110,184,70,248,68,128,128,160,206,60,99,19,56,41,46,91,119,41,228,201,230,159,100,118,59,157,41,75,211,227,103,55,152,239,160,70,4,195,6,118,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,104,159,32,111,83,152,199,146,197,13,7,247,158,141,236,60,29,161,103,169,163,5,167,129,168,249,194,99,251,188,6,108,110,184,70,248,68,128,128,160,189,55,225,123,133,61,150,163,237,126,25,170,46,40,228,1,41,44,59,122,58,75,245,58,171,7,210,231,202,59,135,154,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[64,239,191,18,88,1,56,188,98,60,149,117,114,134,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[246]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[248,66],[248,66]]}},"account":null,"storage":null,"values":[[160,7,183,183,148,161,25,123,161,98,23,137,130,80,12,69,205,222,125,44,175,140,155,36,144,55,2,125,69,98,224,86,251,0],[160,75,150,51,162,232,158,194,193,228,60,197,8,205,113,214,156,238,205,24,119,77,80,160,26,15,249,56,84,89,213,252,59,0],[209,141,48,0,0,0,0,0,0,0,0,0,0,0,1,130,129,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,192,93,231,222,179,200,105,115,118,250,132,32,214,33,150,76,209,104,175,229,53,28,212,120,93,242,40,176,125,156,228,131,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,156,212,46,116,133,187,242,221,106,185,132,133,34,227,69,211,83,195,203,224,50,98,64,237,136,10,142,227,36,175,100,243,0]],"keccak_data":[[248,66,160,75,150,51,162,232,158,194,193,228,60,197,8,205,113,214,156,238,205,24,119,77,80,160,26,15,249,56,84,89,213,252,59,209,141,48,0,0,0,0,0,0,0,0,0,0,0,1,130,129,222,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128],[248,66,160,7,183,183,148,161,25,123,161,98,23,137,130,80,12,69,205,222,125,44,175,140,155,36,144,55,2,125,69,98,224,86,251,209,141,48,0,0,0,0,0,0,0,0,0,0,0,1,130,129,222,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128],[246,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,192,93,231,222,179,200,105,115,118,250,132,32,214,33,150,76,209,104,175,229,53,28,212,120,93,242,40,176,125,156,228,131],[246,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,156,212,46,116,133,187,242,221,106,185,132,133,34,227,69,211,83,195,203,224,50,98,64,237,136,10,142,227,36,175,100,243]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[246]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[241],[241]]}},"account":null,"storage":null,"values":[[207,141,32,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[207,141,32,0,0,0,0,0,0,0,0,0,0,0,0,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[209,141,32,0,0,0,0,0,0,0,0,0,0,0,0,130,129,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,192,93,231,222,179,200,105,115,118,250,132,32,214,33,150,76,209,104,175,229,53,28,212,120,93,242,40,176,125,156,228,131,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,156,212,46,116,133,187,242,221,106,185,132,133,34,227,69,211,83,195,203,224,50,98,64,237,136,10,142,227,36,175,100,243,0]],"keccak_data":[[241,128,207,141,32,0,0,0,0,0,0,0,0,0,0,0,0,111,209,141,32,0,0,0,0,0,0,0,0,0,0,0,0,130,129,222,128,128,128,128,128,128,128,128,128,128,128,128,128,128],[241,128,207,141,32,0,0,0,0,0,0,0,0,0,0,0,0,17,209,141,32,0,0,0,0,0,0,0,0,0,0,0,0,130,129,222,128,128,128,128,128,128,128,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0],"key":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0],"list_rlp_bytes":[[207],[207]],"value_rlp_bytes":[[111],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[141,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[141,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[207,141,32,0,0,0,0,0,0,0,0,0,0,0,0,111],[207,141,32,0,0,0,0,0,0,0,0,0,0,0,0,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/Delete.json b/zkevm-circuits/src/mpt_circuit/tests/Delete.json new file mode 100644 index 0000000000..f15f2fe35d --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/Delete.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,218,110,100,128,176,131,123,43,191,247,227,164,23,145,105,138,227,233,252,165,190,74,150,50,10,57,106,83,238,228,14,181,0],[160,84,27,227,242,46,79,217,60,221,76,65,125,42,157,63,52,34,165,202,198,158,242,170,12,250,183,1,89,170,90,124,240,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,229,85,66,101,164,18,174,4,193,17,231,89,184,45,172,160,106,220,225,230,188,118,241,61,23,183,252,64,125,234,108,86,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,1,179,209,160,190,31,71,37,162,8,20,180,241,65,149,199,218,75,226,181,16,203,85,161,80,98,214,77,121,236,45,250,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,1,179,209,160,190,31,71,37,162,8,20,180,241,65,149,199,218,75,226,181,16,203,85,161,80,98,214,77,121,236,45,250,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,85,66,101,164,18,174,4,193,17,231,89,184,45,172,160,106,220,225,230,188,118,241,61,23,183,252,64,125,234,108,86,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,39,149,4,210,226,215,230,253,241,43,60,106,167,66,11,25,158,0,95,180,121,254,20,201,146,23,49,57,40,49,236,239,0],[160,138,127,33,146,228,217,81,168,148,54,25,221,110,14,147,44,205,207,240,252,85,10,74,6,90,215,37,163,85,197,209,147,0],[160,197,140,243,130,135,5,44,240,122,52,88,152,223,194,55,78,253,239,20,14,240,195,72,157,251,203,43,166,221,72,42,243,0],[160,75,39,144,178,195,157,130,92,242,146,126,25,212,148,140,173,8,127,165,43,106,75,70,197,89,209,124,226,17,57,179,182,0],[160,166,127,220,77,52,242,127,4,221,222,179,99,228,219,234,107,128,132,162,28,54,50,74,245,6,155,81,220,35,222,239,180,0],[160,38,204,210,52,201,118,93,167,52,245,177,88,126,219,176,152,61,185,0,121,90,138,186,64,250,226,250,116,44,255,69,138,0],[160,19,80,126,245,125,58,26,171,154,180,156,179,105,38,103,20,91,210,24,164,166,224,218,169,142,142,169,66,214,236,187,6,0],[160,165,82,147,29,195,97,238,45,114,242,138,56,34,241,197,209,102,77,31,87,107,168,63,130,23,5,76,252,18,13,236,167,0],[160,137,36,143,25,251,26,164,237,66,26,232,13,77,146,144,176,22,49,121,100,141,43,91,142,171,76,62,36,85,147,110,190,0],[160,11,115,235,188,72,84,161,207,127,77,34,28,249,39,93,96,107,210,35,230,154,186,144,28,119,73,153,188,24,77,109,240,0],[160,32,16,34,222,52,84,189,67,5,218,27,231,255,241,137,75,169,212,46,174,56,117,221,170,189,159,246,103,118,27,94,55,0],[160,196,152,69,59,144,47,23,238,69,44,248,41,68,85,141,160,133,102,55,49,102,245,19,140,135,71,233,138,80,112,134,106,0],[160,235,44,30,228,32,41,209,13,249,2,126,168,201,236,57,195,159,104,121,127,158,158,105,129,93,237,225,173,201,228,18,26,0],[160,73,123,173,142,67,153,155,66,154,32,234,242,62,142,135,231,90,130,33,64,124,47,23,76,160,193,31,112,13,86,158,163,0],[160,67,172,147,42,66,143,144,134,20,166,53,4,147,237,132,74,8,236,52,204,149,64,245,53,239,141,110,255,96,55,150,41,0],[160,230,64,192,124,51,112,56,150,2,235,12,184,74,44,180,235,29,218,102,116,42,9,138,165,90,10,72,105,142,17,120,130,0],[160,10,45,72,232,98,165,163,10,157,119,129,253,31,63,210,152,123,72,87,208,99,245,73,99,63,206,57,190,38,252,227,143,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,138,127,33,146,228,217,81,168,148,54,25,221,110,14,147,44,205,207,240,252,85,10,74,6,90,215,37,163,85,197,209,147,160,197,140,243,130,135,5,44,240,122,52,88,152,223,194,55,78,253,239,20,14,240,195,72,157,251,203,43,166,221,72,42,243,160,75,39,144,178,195,157,130,92,242,146,126,25,212,148,140,173,8,127,165,43,106,75,70,197,89,209,124,226,17,57,179,182,160,166,127,220,77,52,242,127,4,221,222,179,99,228,219,234,107,128,132,162,28,54,50,74,245,6,155,81,220,35,222,239,180,160,38,204,210,52,201,118,93,167,52,245,177,88,126,219,176,152,61,185,0,121,90,138,186,64,250,226,250,116,44,255,69,138,160,19,80,126,245,125,58,26,171,154,180,156,179,105,38,103,20,91,210,24,164,166,224,218,169,142,142,169,66,214,236,187,6,160,165,82,147,29,195,97,238,45,114,242,138,56,34,241,197,209,102,77,31,87,107,168,63,130,23,5,76,252,18,13,236,167,160,137,36,143,25,251,26,164,237,66,26,232,13,77,146,144,176,22,49,121,100,141,43,91,142,171,76,62,36,85,147,110,190,160,11,115,235,188,72,84,161,207,127,77,34,28,249,39,93,96,107,210,35,230,154,186,144,28,119,73,153,188,24,77,109,240,160,32,16,34,222,52,84,189,67,5,218,27,231,255,241,137,75,169,212,46,174,56,117,221,170,189,159,246,103,118,27,94,55,160,196,152,69,59,144,47,23,238,69,44,248,41,68,85,141,160,133,102,55,49,102,245,19,140,135,71,233,138,80,112,134,106,160,235,44,30,228,32,41,209,13,249,2,126,168,201,236,57,195,159,104,121,127,158,158,105,129,93,237,225,173,201,228,18,26,160,73,123,173,142,67,153,155,66,154,32,234,242,62,142,135,231,90,130,33,64,124,47,23,76,160,193,31,112,13,86,158,163,160,67,172,147,42,66,143,144,134,20,166,53,4,147,237,132,74,8,236,52,204,149,64,245,53,239,141,110,255,96,55,150,41,160,230,64,192,124,51,112,56,150,2,235,12,184,74,44,180,235,29,218,102,116,42,9,138,165,90,10,72,105,142,17,120,130,160,10,45,72,232,98,165,163,10,157,119,129,253,31,63,210,152,123,72,87,208,99,245,73,99,63,206,57,190,38,252,227,143,128],[249,2,17,160,138,127,33,146,228,217,81,168,148,54,25,221,110,14,147,44,205,207,240,252,85,10,74,6,90,215,37,163,85,197,209,147,160,197,140,243,130,135,5,44,240,122,52,88,152,223,194,55,78,253,239,20,14,240,195,72,157,251,203,43,166,221,72,42,243,160,75,39,144,178,195,157,130,92,242,146,126,25,212,148,140,173,8,127,165,43,106,75,70,197,89,209,124,226,17,57,179,182,160,166,127,220,77,52,242,127,4,221,222,179,99,228,219,234,107,128,132,162,28,54,50,74,245,6,155,81,220,35,222,239,180,160,38,204,210,52,201,118,93,167,52,245,177,88,126,219,176,152,61,185,0,121,90,138,186,64,250,226,250,116,44,255,69,138,160,19,80,126,245,125,58,26,171,154,180,156,179,105,38,103,20,91,210,24,164,166,224,218,169,142,142,169,66,214,236,187,6,160,165,82,147,29,195,97,238,45,114,242,138,56,34,241,197,209,102,77,31,87,107,168,63,130,23,5,76,252,18,13,236,167,160,137,36,143,25,251,26,164,237,66,26,232,13,77,146,144,176,22,49,121,100,141,43,91,142,171,76,62,36,85,147,110,190,160,11,115,235,188,72,84,161,207,127,77,34,28,249,39,93,96,107,210,35,230,154,186,144,28,119,73,153,188,24,77,109,240,160,32,16,34,222,52,84,189,67,5,218,27,231,255,241,137,75,169,212,46,174,56,117,221,170,189,159,246,103,118,27,94,55,160,196,152,69,59,144,47,23,238,69,44,248,41,68,85,141,160,133,102,55,49,102,245,19,140,135,71,233,138,80,112,134,106,160,235,44,30,228,32,41,209,13,249,2,126,168,201,236,57,195,159,104,121,127,158,158,105,129,93,237,225,173,201,228,18,26,160,73,123,173,142,67,153,155,66,154,32,234,242,62,142,135,231,90,130,33,64,124,47,23,76,160,193,31,112,13,86,158,163,160,39,149,4,210,226,215,230,253,241,43,60,106,167,66,11,25,158,0,95,180,121,254,20,201,146,23,49,57,40,49,236,239,160,230,64,192,124,51,112,56,150,2,235,12,184,74,44,180,235,29,218,102,116,42,9,138,165,90,10,72,105,142,17,120,130,160,10,45,72,232,98,165,163,10,157,119,129,253,31,63,210,152,123,72,87,208,99,245,73,99,63,206,57,190,38,252,227,143,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,187,26,138,182,228,97,38,119,38,255,158,141,201,88,239,54,157,55,128,7,82,64,3,106,133,5,228,120,188,160,234,13,0],[160,197,231,48,103,38,7,173,117,12,20,51,182,11,87,222,40,77,188,92,69,92,53,227,8,250,106,244,145,29,52,230,151,0],[160,154,82,11,203,9,145,186,145,136,225,249,62,199,90,44,38,162,54,50,99,210,85,206,90,1,178,255,210,176,229,113,95,0],[160,140,103,125,56,229,186,162,127,251,37,7,209,112,168,143,47,130,218,152,95,188,148,97,94,125,62,13,67,158,219,140,102,0],[160,84,46,90,116,65,253,68,22,64,68,51,234,145,131,78,197,249,218,14,209,163,80,178,53,254,46,250,57,133,113,200,89,0],[160,162,235,75,247,92,244,76,253,73,211,248,116,9,54,242,194,13,134,143,25,190,186,198,65,34,166,54,32,243,151,231,102,0],[160,161,197,85,143,15,36,104,180,13,94,200,104,2,76,83,192,139,171,20,61,13,196,223,246,104,63,34,167,168,96,10,225,0],[160,173,9,7,225,209,215,137,81,24,103,35,49,37,86,93,62,4,41,212,2,155,26,191,231,236,123,164,164,178,222,69,120,0],[160,62,16,216,112,182,235,226,119,230,5,178,251,220,132,175,101,23,240,234,190,166,194,63,236,32,158,55,246,207,116,232,155,0],[160,8,173,176,239,73,96,14,91,102,220,35,246,187,73,10,193,20,168,218,146,62,216,214,136,230,45,94,27,130,108,237,120,0],[160,33,214,70,211,94,3,131,63,213,105,172,210,185,17,14,67,142,203,132,182,92,199,32,89,142,96,41,187,146,202,188,36,0],[160,119,77,169,169,146,124,148,58,128,207,243,185,181,197,98,210,128,49,255,131,140,176,153,161,13,165,255,115,86,71,138,238,0],[160,67,136,153,186,59,65,196,111,31,168,91,205,87,151,7,96,234,126,97,135,226,141,156,148,57,155,48,91,254,171,213,167,0],[160,77,236,226,8,156,188,36,175,111,158,194,39,205,26,49,234,231,26,142,47,79,145,10,249,231,89,169,124,89,202,178,96,0],[160,51,111,24,54,139,227,11,24,232,28,10,171,16,13,88,204,215,5,135,174,135,225,160,83,225,215,99,43,105,219,49,132,0],[160,24,172,179,190,174,150,46,174,18,107,24,60,25,5,23,68,234,6,144,154,35,28,200,74,19,131,12,134,128,205,136,207,0],[160,184,38,8,229,253,255,217,230,136,194,145,252,249,100,253,60,92,81,80,148,91,45,232,226,92,99,69,68,214,128,253,147,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,197,231,48,103,38,7,173,117,12,20,51,182,11,87,222,40,77,188,92,69,92,53,227,8,250,106,244,145,29,52,230,151,160,154,82,11,203,9,145,186,145,136,225,249,62,199,90,44,38,162,54,50,99,210,85,206,90,1,178,255,210,176,229,113,95,160,140,103,125,56,229,186,162,127,251,37,7,209,112,168,143,47,130,218,152,95,188,148,97,94,125,62,13,67,158,219,140,102,160,84,46,90,116,65,253,68,22,64,68,51,234,145,131,78,197,249,218,14,209,163,80,178,53,254,46,250,57,133,113,200,89,160,162,235,75,247,92,244,76,253,73,211,248,116,9,54,242,194,13,134,143,25,190,186,198,65,34,166,54,32,243,151,231,102,160,161,197,85,143,15,36,104,180,13,94,200,104,2,76,83,192,139,171,20,61,13,196,223,246,104,63,34,167,168,96,10,225,160,173,9,7,225,209,215,137,81,24,103,35,49,37,86,93,62,4,41,212,2,155,26,191,231,236,123,164,164,178,222,69,120,160,62,16,216,112,182,235,226,119,230,5,178,251,220,132,175,101,23,240,234,190,166,194,63,236,32,158,55,246,207,116,232,155,160,8,173,176,239,73,96,14,91,102,220,35,246,187,73,10,193,20,168,218,146,62,216,214,136,230,45,94,27,130,108,237,120,160,33,214,70,211,94,3,131,63,213,105,172,210,185,17,14,67,142,203,132,182,92,199,32,89,142,96,41,187,146,202,188,36,160,119,77,169,169,146,124,148,58,128,207,243,185,181,197,98,210,128,49,255,131,140,176,153,161,13,165,255,115,86,71,138,238,160,67,136,153,186,59,65,196,111,31,168,91,205,87,151,7,96,234,126,97,135,226,141,156,148,57,155,48,91,254,171,213,167,160,77,236,226,8,156,188,36,175,111,158,194,39,205,26,49,234,231,26,142,47,79,145,10,249,231,89,169,124,89,202,178,96,160,51,111,24,54,139,227,11,24,232,28,10,171,16,13,88,204,215,5,135,174,135,225,160,83,225,215,99,43,105,219,49,132,160,24,172,179,190,174,150,46,174,18,107,24,60,25,5,23,68,234,6,144,154,35,28,200,74,19,131,12,134,128,205,136,207,160,184,38,8,229,253,255,217,230,136,194,145,252,249,100,253,60,92,81,80,148,91,45,232,226,92,99,69,68,214,128,253,147,128],[249,2,17,160,197,231,48,103,38,7,173,117,12,20,51,182,11,87,222,40,77,188,92,69,92,53,227,8,250,106,244,145,29,52,230,151,160,154,82,11,203,9,145,186,145,136,225,249,62,199,90,44,38,162,54,50,99,210,85,206,90,1,178,255,210,176,229,113,95,160,140,103,125,56,229,186,162,127,251,37,7,209,112,168,143,47,130,218,152,95,188,148,97,94,125,62,13,67,158,219,140,102,160,84,46,90,116,65,253,68,22,64,68,51,234,145,131,78,197,249,218,14,209,163,80,178,53,254,46,250,57,133,113,200,89,160,162,235,75,247,92,244,76,253,73,211,248,116,9,54,242,194,13,134,143,25,190,186,198,65,34,166,54,32,243,151,231,102,160,161,197,85,143,15,36,104,180,13,94,200,104,2,76,83,192,139,171,20,61,13,196,223,246,104,63,34,167,168,96,10,225,160,173,9,7,225,209,215,137,81,24,103,35,49,37,86,93,62,4,41,212,2,155,26,191,231,236,123,164,164,178,222,69,120,160,62,16,216,112,182,235,226,119,230,5,178,251,220,132,175,101,23,240,234,190,166,194,63,236,32,158,55,246,207,116,232,155,160,8,173,176,239,73,96,14,91,102,220,35,246,187,73,10,193,20,168,218,146,62,216,214,136,230,45,94,27,130,108,237,120,160,187,26,138,182,228,97,38,119,38,255,158,141,201,88,239,54,157,55,128,7,82,64,3,106,133,5,228,120,188,160,234,13,160,119,77,169,169,146,124,148,58,128,207,243,185,181,197,98,210,128,49,255,131,140,176,153,161,13,165,255,115,86,71,138,238,160,67,136,153,186,59,65,196,111,31,168,91,205,87,151,7,96,234,126,97,135,226,141,156,148,57,155,48,91,254,171,213,167,160,77,236,226,8,156,188,36,175,111,158,194,39,205,26,49,234,231,26,142,47,79,145,10,249,231,89,169,124,89,202,178,96,160,51,111,24,54,139,227,11,24,232,28,10,171,16,13,88,204,215,5,135,174,135,225,160,83,225,215,99,43,105,219,49,132,160,24,172,179,190,174,150,46,174,18,107,24,60,25,5,23,68,234,6,144,154,35,28,200,74,19,131,12,134,128,205,136,207,160,184,38,8,229,253,255,217,230,136,194,145,252,249,100,253,60,92,81,80,148,91,45,232,226,92,99,69,68,214,128,253,147,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,167,34,80,85,35,174,171,80,108,48,210,213,78,250,191,121,25,15,30,202,150,147,27,28,221,115,5,32,19,223,97,236,0],[160,125,74,126,248,86,169,68,35,49,168,132,99,137,212,236,79,189,254,94,166,134,22,1,74,185,146,219,241,15,74,65,218,0],[160,219,75,57,173,103,161,146,32,47,54,239,44,26,176,251,240,194,12,87,215,167,14,224,60,25,106,136,118,126,1,42,189,0],[160,235,84,250,20,76,13,182,98,231,158,14,29,202,244,23,151,133,228,39,72,188,72,103,42,231,51,131,210,101,98,171,76,0],[160,233,81,62,143,42,17,107,82,103,126,7,141,5,178,47,134,25,165,27,64,89,199,70,193,6,250,46,20,17,110,76,57,0],[160,197,146,38,14,161,151,232,168,38,89,143,115,122,131,158,137,60,80,243,149,119,194,54,4,168,42,198,202,78,5,64,33,0],[160,175,4,209,60,1,241,127,145,40,153,82,204,69,198,130,205,115,197,145,2,4,115,63,123,152,171,252,218,202,202,151,148,0],[160,172,170,129,122,3,100,213,82,138,59,188,135,123,101,21,132,99,92,54,88,25,190,81,104,53,36,101,104,132,6,116,8,0],[160,72,6,247,185,224,238,53,6,147,105,46,122,207,34,250,37,164,16,159,246,208,226,251,11,7,63,103,172,204,119,4,199,0],[160,190,16,240,99,25,225,170,128,217,199,215,177,95,47,51,156,5,182,212,64,74,145,175,44,3,90,246,252,179,167,135,57,0],[160,13,216,19,1,116,113,14,175,160,96,135,246,226,11,82,4,37,220,170,106,253,152,57,172,40,123,43,144,17,4,47,207,0],[160,34,53,247,223,152,226,146,15,166,107,95,88,123,91,251,24,81,90,55,203,51,30,15,195,119,180,178,148,8,254,206,120,0],[160,139,12,48,110,61,77,74,194,216,185,57,168,183,101,66,178,37,6,81,223,231,207,204,146,23,192,190,118,126,2,250,196,0],[160,80,54,137,178,123,229,95,84,253,234,172,186,90,184,34,181,103,26,144,251,29,92,88,42,31,94,46,152,130,83,71,116,0],[160,34,7,1,162,215,105,181,218,201,228,55,52,7,62,177,84,8,194,149,78,71,197,120,222,104,177,252,253,61,160,85,139,0],[160,179,242,156,11,37,81,255,116,249,54,61,142,204,6,231,65,121,97,106,157,62,227,11,132,201,97,0,185,174,197,251,80,0],[160,229,92,87,49,11,64,13,58,226,148,42,196,235,82,186,150,184,226,249,237,46,95,193,232,45,174,178,148,94,195,111,48,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,125,74,126,248,86,169,68,35,49,168,132,99,137,212,236,79,189,254,94,166,134,22,1,74,185,146,219,241,15,74,65,218,160,219,75,57,173,103,161,146,32,47,54,239,44,26,176,251,240,194,12,87,215,167,14,224,60,25,106,136,118,126,1,42,189,160,235,84,250,20,76,13,182,98,231,158,14,29,202,244,23,151,133,228,39,72,188,72,103,42,231,51,131,210,101,98,171,76,160,233,81,62,143,42,17,107,82,103,126,7,141,5,178,47,134,25,165,27,64,89,199,70,193,6,250,46,20,17,110,76,57,160,197,146,38,14,161,151,232,168,38,89,143,115,122,131,158,137,60,80,243,149,119,194,54,4,168,42,198,202,78,5,64,33,160,175,4,209,60,1,241,127,145,40,153,82,204,69,198,130,205,115,197,145,2,4,115,63,123,152,171,252,218,202,202,151,148,160,172,170,129,122,3,100,213,82,138,59,188,135,123,101,21,132,99,92,54,88,25,190,81,104,53,36,101,104,132,6,116,8,160,72,6,247,185,224,238,53,6,147,105,46,122,207,34,250,37,164,16,159,246,208,226,251,11,7,63,103,172,204,119,4,199,160,190,16,240,99,25,225,170,128,217,199,215,177,95,47,51,156,5,182,212,64,74,145,175,44,3,90,246,252,179,167,135,57,160,13,216,19,1,116,113,14,175,160,96,135,246,226,11,82,4,37,220,170,106,253,152,57,172,40,123,43,144,17,4,47,207,160,34,53,247,223,152,226,146,15,166,107,95,88,123,91,251,24,81,90,55,203,51,30,15,195,119,180,178,148,8,254,206,120,160,139,12,48,110,61,77,74,194,216,185,57,168,183,101,66,178,37,6,81,223,231,207,204,146,23,192,190,118,126,2,250,196,160,80,54,137,178,123,229,95,84,253,234,172,186,90,184,34,181,103,26,144,251,29,92,88,42,31,94,46,152,130,83,71,116,160,34,7,1,162,215,105,181,218,201,228,55,52,7,62,177,84,8,194,149,78,71,197,120,222,104,177,252,253,61,160,85,139,160,179,242,156,11,37,81,255,116,249,54,61,142,204,6,231,65,121,97,106,157,62,227,11,132,201,97,0,185,174,197,251,80,160,229,92,87,49,11,64,13,58,226,148,42,196,235,82,186,150,184,226,249,237,46,95,193,232,45,174,178,148,94,195,111,48,128],[249,2,17,160,125,74,126,248,86,169,68,35,49,168,132,99,137,212,236,79,189,254,94,166,134,22,1,74,185,146,219,241,15,74,65,218,160,219,75,57,173,103,161,146,32,47,54,239,44,26,176,251,240,194,12,87,215,167,14,224,60,25,106,136,118,126,1,42,189,160,235,84,250,20,76,13,182,98,231,158,14,29,202,244,23,151,133,228,39,72,188,72,103,42,231,51,131,210,101,98,171,76,160,233,81,62,143,42,17,107,82,103,126,7,141,5,178,47,134,25,165,27,64,89,199,70,193,6,250,46,20,17,110,76,57,160,197,146,38,14,161,151,232,168,38,89,143,115,122,131,158,137,60,80,243,149,119,194,54,4,168,42,198,202,78,5,64,33,160,175,4,209,60,1,241,127,145,40,153,82,204,69,198,130,205,115,197,145,2,4,115,63,123,152,171,252,218,202,202,151,148,160,172,170,129,122,3,100,213,82,138,59,188,135,123,101,21,132,99,92,54,88,25,190,81,104,53,36,101,104,132,6,116,8,160,72,6,247,185,224,238,53,6,147,105,46,122,207,34,250,37,164,16,159,246,208,226,251,11,7,63,103,172,204,119,4,199,160,190,16,240,99,25,225,170,128,217,199,215,177,95,47,51,156,5,182,212,64,74,145,175,44,3,90,246,252,179,167,135,57,160,167,34,80,85,35,174,171,80,108,48,210,213,78,250,191,121,25,15,30,202,150,147,27,28,221,115,5,32,19,223,97,236,160,34,53,247,223,152,226,146,15,166,107,95,88,123,91,251,24,81,90,55,203,51,30,15,195,119,180,178,148,8,254,206,120,160,139,12,48,110,61,77,74,194,216,185,57,168,183,101,66,178,37,6,81,223,231,207,204,146,23,192,190,118,126,2,250,196,160,80,54,137,178,123,229,95,84,253,234,172,186,90,184,34,181,103,26,144,251,29,92,88,42,31,94,46,152,130,83,71,116,160,34,7,1,162,215,105,181,218,201,228,55,52,7,62,177,84,8,194,149,78,71,197,120,222,104,177,252,253,61,160,85,139,160,179,242,156,11,37,81,255,116,249,54,61,142,204,6,231,65,121,97,106,157,62,227,11,132,201,97,0,185,174,197,251,80,160,229,92,87,49,11,64,13,58,226,148,42,196,235,82,186,150,184,226,249,237,46,95,193,232,45,174,178,148,94,195,111,48,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,146,137,223,118,24,96,49,135,45,59,143,123,17,88,198,204,55,186,195,238,80,213,26,201,92,65,131,127,68,149,207,192,0],[160,151,238,112,224,247,108,112,37,39,160,247,97,154,125,73,83,197,42,57,242,102,14,230,13,41,218,94,21,156,188,35,226,0],[160,1,116,179,209,115,124,92,148,111,188,114,215,254,118,74,122,130,141,23,157,56,124,193,94,191,179,36,215,223,28,14,128,0],[160,0,71,8,34,155,236,236,223,154,149,245,179,128,224,213,191,253,210,82,219,233,120,226,37,42,92,25,163,24,193,23,132,0],[160,204,241,75,233,146,181,17,185,45,114,164,23,2,0,162,247,50,142,57,255,139,187,16,148,168,228,180,249,100,192,242,246,0],[160,162,241,99,108,209,132,149,52,205,93,149,40,205,138,48,175,177,231,4,184,193,238,211,231,152,33,202,12,123,241,75,228,0],[160,184,43,242,133,167,108,12,129,248,74,50,236,44,48,16,166,0,23,219,222,5,135,127,191,23,146,22,225,21,25,11,0,0],[160,206,36,241,143,241,46,253,229,196,86,194,15,51,171,219,95,224,79,171,15,196,113,163,100,124,253,223,177,217,71,106,237,0],[160,167,110,228,148,35,99,119,180,174,156,133,82,116,32,156,185,163,244,215,183,239,170,218,186,40,124,21,153,133,234,200,53,0],[160,87,46,75,107,206,141,163,91,195,15,32,220,237,222,237,218,103,144,216,61,135,155,135,252,226,253,222,72,113,117,251,237,0],[160,67,224,214,79,44,124,117,76,163,141,88,157,63,64,31,199,24,16,61,71,96,163,178,99,133,221,255,21,129,123,237,126,0],[160,89,1,72,66,205,45,158,95,232,171,217,247,156,68,195,211,102,65,90,175,111,126,136,122,54,97,6,177,193,198,205,172,0],[160,19,238,157,137,106,249,43,236,174,204,114,221,132,118,20,110,46,3,251,163,165,47,60,150,99,157,45,59,215,164,240,4,0],[160,31,162,46,240,4,124,162,143,221,210,214,22,119,137,9,31,103,236,67,41,192,166,245,192,20,143,184,28,67,3,168,183,0],[160,24,154,117,247,129,52,114,202,155,163,139,23,81,136,240,225,255,161,168,114,24,230,23,166,140,39,10,130,159,237,218,141,0],[160,163,41,222,243,138,253,74,89,73,41,187,90,157,217,229,42,147,229,222,168,203,165,249,153,59,57,161,13,108,233,209,58,0],[160,220,12,252,110,137,240,198,127,172,22,194,153,141,149,54,3,181,177,38,161,205,128,75,186,118,77,124,252,42,251,130,111,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,151,238,112,224,247,108,112,37,39,160,247,97,154,125,73,83,197,42,57,242,102,14,230,13,41,218,94,21,156,188,35,226,160,1,116,179,209,115,124,92,148,111,188,114,215,254,118,74,122,130,141,23,157,56,124,193,94,191,179,36,215,223,28,14,128,160,0,71,8,34,155,236,236,223,154,149,245,179,128,224,213,191,253,210,82,219,233,120,226,37,42,92,25,163,24,193,23,132,160,204,241,75,233,146,181,17,185,45,114,164,23,2,0,162,247,50,142,57,255,139,187,16,148,168,228,180,249,100,192,242,246,160,162,241,99,108,209,132,149,52,205,93,149,40,205,138,48,175,177,231,4,184,193,238,211,231,152,33,202,12,123,241,75,228,160,184,43,242,133,167,108,12,129,248,74,50,236,44,48,16,166,0,23,219,222,5,135,127,191,23,146,22,225,21,25,11,0,160,206,36,241,143,241,46,253,229,196,86,194,15,51,171,219,95,224,79,171,15,196,113,163,100,124,253,223,177,217,71,106,237,160,167,110,228,148,35,99,119,180,174,156,133,82,116,32,156,185,163,244,215,183,239,170,218,186,40,124,21,153,133,234,200,53,160,87,46,75,107,206,141,163,91,195,15,32,220,237,222,237,218,103,144,216,61,135,155,135,252,226,253,222,72,113,117,251,237,160,67,224,214,79,44,124,117,76,163,141,88,157,63,64,31,199,24,16,61,71,96,163,178,99,133,221,255,21,129,123,237,126,160,89,1,72,66,205,45,158,95,232,171,217,247,156,68,195,211,102,65,90,175,111,126,136,122,54,97,6,177,193,198,205,172,160,19,238,157,137,106,249,43,236,174,204,114,221,132,118,20,110,46,3,251,163,165,47,60,150,99,157,45,59,215,164,240,4,160,31,162,46,240,4,124,162,143,221,210,214,22,119,137,9,31,103,236,67,41,192,166,245,192,20,143,184,28,67,3,168,183,160,24,154,117,247,129,52,114,202,155,163,139,23,81,136,240,225,255,161,168,114,24,230,23,166,140,39,10,130,159,237,218,141,160,163,41,222,243,138,253,74,89,73,41,187,90,157,217,229,42,147,229,222,168,203,165,249,153,59,57,161,13,108,233,209,58,160,220,12,252,110,137,240,198,127,172,22,194,153,141,149,54,3,181,177,38,161,205,128,75,186,118,77,124,252,42,251,130,111,128],[249,2,17,160,151,238,112,224,247,108,112,37,39,160,247,97,154,125,73,83,197,42,57,242,102,14,230,13,41,218,94,21,156,188,35,226,160,1,116,179,209,115,124,92,148,111,188,114,215,254,118,74,122,130,141,23,157,56,124,193,94,191,179,36,215,223,28,14,128,160,0,71,8,34,155,236,236,223,154,149,245,179,128,224,213,191,253,210,82,219,233,120,226,37,42,92,25,163,24,193,23,132,160,204,241,75,233,146,181,17,185,45,114,164,23,2,0,162,247,50,142,57,255,139,187,16,148,168,228,180,249,100,192,242,246,160,162,241,99,108,209,132,149,52,205,93,149,40,205,138,48,175,177,231,4,184,193,238,211,231,152,33,202,12,123,241,75,228,160,184,43,242,133,167,108,12,129,248,74,50,236,44,48,16,166,0,23,219,222,5,135,127,191,23,146,22,225,21,25,11,0,160,206,36,241,143,241,46,253,229,196,86,194,15,51,171,219,95,224,79,171,15,196,113,163,100,124,253,223,177,217,71,106,237,160,167,110,228,148,35,99,119,180,174,156,133,82,116,32,156,185,163,244,215,183,239,170,218,186,40,124,21,153,133,234,200,53,160,87,46,75,107,206,141,163,91,195,15,32,220,237,222,237,218,103,144,216,61,135,155,135,252,226,253,222,72,113,117,251,237,160,67,224,214,79,44,124,117,76,163,141,88,157,63,64,31,199,24,16,61,71,96,163,178,99,133,221,255,21,129,123,237,126,160,146,137,223,118,24,96,49,135,45,59,143,123,17,88,198,204,55,186,195,238,80,213,26,201,92,65,131,127,68,149,207,192,160,19,238,157,137,106,249,43,236,174,204,114,221,132,118,20,110,46,3,251,163,165,47,60,150,99,157,45,59,215,164,240,4,160,31,162,46,240,4,124,162,143,221,210,214,22,119,137,9,31,103,236,67,41,192,166,245,192,20,143,184,28,67,3,168,183,160,24,154,117,247,129,52,114,202,155,163,139,23,81,136,240,225,255,161,168,114,24,230,23,166,140,39,10,130,159,237,218,141,160,163,41,222,243,138,253,74,89,73,41,187,90,157,217,229,42,147,229,222,168,203,165,249,153,59,57,161,13,108,233,209,58,160,220,12,252,110,137,240,198,127,172,22,194,153,141,149,54,3,181,177,38,161,205,128,75,186,118,77,124,252,42,251,130,111,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,168,53,198,53,112,41,107,98,88,61,68,81,213,246,190,26,54,28,104,225,250,215,243,205,222,134,187,216,78,119,25,185,0],[160,225,81,108,140,98,152,13,246,35,239,5,153,9,166,50,233,121,164,152,228,226,17,151,65,106,167,102,92,16,59,249,136,0],[160,107,92,196,55,207,175,110,96,43,175,38,134,36,117,133,28,216,201,103,81,137,84,169,36,251,56,154,29,15,3,189,203,0],[160,117,154,94,41,23,162,159,225,162,164,42,45,130,108,170,190,218,253,30,185,175,217,17,239,249,172,231,218,219,43,181,86,0],[160,37,41,137,20,90,26,35,186,26,73,207,127,250,57,174,108,120,20,39,175,244,60,239,1,43,67,136,121,144,14,76,222,0],[160,154,126,178,192,243,147,211,79,6,30,87,124,140,106,152,73,107,168,200,5,61,31,5,37,69,55,76,38,184,26,91,128,0],[160,37,27,88,141,242,111,143,197,40,4,39,131,12,182,241,251,88,142,171,62,105,162,165,192,190,87,115,112,214,13,169,53,0],[160,142,49,71,55,162,148,178,200,133,110,217,76,141,179,5,115,76,183,188,89,197,85,5,80,188,30,2,168,156,138,208,189,0],[160,91,175,130,107,241,98,251,105,125,153,195,99,196,137,103,149,193,252,235,228,111,183,90,202,150,175,86,93,203,7,200,20,0],[160,171,163,163,67,112,7,116,47,240,137,251,126,177,18,95,77,15,138,188,32,123,236,33,223,56,108,47,170,214,186,159,70,0],[160,143,241,129,73,20,49,226,245,216,233,146,114,215,154,131,112,11,218,155,33,143,150,109,25,206,175,254,92,79,44,36,253,0],[160,118,214,56,71,10,70,161,205,252,48,27,52,160,69,226,140,182,43,110,210,226,20,87,13,200,147,218,180,45,170,120,72,0],[160,82,29,220,15,112,113,238,11,228,148,111,173,189,85,228,210,14,107,4,123,26,233,208,93,123,118,15,103,62,203,186,110,0],[160,249,190,187,67,48,67,62,222,166,186,234,89,75,210,197,153,196,51,86,164,238,174,145,208,164,75,120,165,93,155,168,75,0],[160,71,56,186,65,195,251,53,25,252,211,94,0,188,188,68,76,192,233,54,105,68,62,143,185,252,202,248,61,245,61,234,34,0],[160,52,240,79,112,130,239,98,31,170,71,42,231,4,209,193,11,207,183,161,61,125,89,2,149,221,10,196,155,115,11,76,49,0],[160,165,134,187,104,57,191,143,205,111,105,174,200,174,68,128,6,208,91,174,106,90,206,154,53,179,81,180,5,49,210,114,155,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,225,81,108,140,98,152,13,246,35,239,5,153,9,166,50,233,121,164,152,228,226,17,151,65,106,167,102,92,16,59,249,136,160,107,92,196,55,207,175,110,96,43,175,38,134,36,117,133,28,216,201,103,81,137,84,169,36,251,56,154,29,15,3,189,203,160,117,154,94,41,23,162,159,225,162,164,42,45,130,108,170,190,218,253,30,185,175,217,17,239,249,172,231,218,219,43,181,86,160,37,41,137,20,90,26,35,186,26,73,207,127,250,57,174,108,120,20,39,175,244,60,239,1,43,67,136,121,144,14,76,222,160,154,126,178,192,243,147,211,79,6,30,87,124,140,106,152,73,107,168,200,5,61,31,5,37,69,55,76,38,184,26,91,128,160,37,27,88,141,242,111,143,197,40,4,39,131,12,182,241,251,88,142,171,62,105,162,165,192,190,87,115,112,214,13,169,53,160,142,49,71,55,162,148,178,200,133,110,217,76,141,179,5,115,76,183,188,89,197,85,5,80,188,30,2,168,156,138,208,189,160,91,175,130,107,241,98,251,105,125,153,195,99,196,137,103,149,193,252,235,228,111,183,90,202,150,175,86,93,203,7,200,20,160,171,163,163,67,112,7,116,47,240,137,251,126,177,18,95,77,15,138,188,32,123,236,33,223,56,108,47,170,214,186,159,70,160,143,241,129,73,20,49,226,245,216,233,146,114,215,154,131,112,11,218,155,33,143,150,109,25,206,175,254,92,79,44,36,253,160,118,214,56,71,10,70,161,205,252,48,27,52,160,69,226,140,182,43,110,210,226,20,87,13,200,147,218,180,45,170,120,72,160,82,29,220,15,112,113,238,11,228,148,111,173,189,85,228,210,14,107,4,123,26,233,208,93,123,118,15,103,62,203,186,110,160,249,190,187,67,48,67,62,222,166,186,234,89,75,210,197,153,196,51,86,164,238,174,145,208,164,75,120,165,93,155,168,75,160,71,56,186,65,195,251,53,25,252,211,94,0,188,188,68,76,192,233,54,105,68,62,143,185,252,202,248,61,245,61,234,34,160,52,240,79,112,130,239,98,31,170,71,42,231,4,209,193,11,207,183,161,61,125,89,2,149,221,10,196,155,115,11,76,49,160,165,134,187,104,57,191,143,205,111,105,174,200,174,68,128,6,208,91,174,106,90,206,154,53,179,81,180,5,49,210,114,155,128],[249,2,17,160,168,53,198,53,112,41,107,98,88,61,68,81,213,246,190,26,54,28,104,225,250,215,243,205,222,134,187,216,78,119,25,185,160,107,92,196,55,207,175,110,96,43,175,38,134,36,117,133,28,216,201,103,81,137,84,169,36,251,56,154,29,15,3,189,203,160,117,154,94,41,23,162,159,225,162,164,42,45,130,108,170,190,218,253,30,185,175,217,17,239,249,172,231,218,219,43,181,86,160,37,41,137,20,90,26,35,186,26,73,207,127,250,57,174,108,120,20,39,175,244,60,239,1,43,67,136,121,144,14,76,222,160,154,126,178,192,243,147,211,79,6,30,87,124,140,106,152,73,107,168,200,5,61,31,5,37,69,55,76,38,184,26,91,128,160,37,27,88,141,242,111,143,197,40,4,39,131,12,182,241,251,88,142,171,62,105,162,165,192,190,87,115,112,214,13,169,53,160,142,49,71,55,162,148,178,200,133,110,217,76,141,179,5,115,76,183,188,89,197,85,5,80,188,30,2,168,156,138,208,189,160,91,175,130,107,241,98,251,105,125,153,195,99,196,137,103,149,193,252,235,228,111,183,90,202,150,175,86,93,203,7,200,20,160,171,163,163,67,112,7,116,47,240,137,251,126,177,18,95,77,15,138,188,32,123,236,33,223,56,108,47,170,214,186,159,70,160,143,241,129,73,20,49,226,245,216,233,146,114,215,154,131,112,11,218,155,33,143,150,109,25,206,175,254,92,79,44,36,253,160,118,214,56,71,10,70,161,205,252,48,27,52,160,69,226,140,182,43,110,210,226,20,87,13,200,147,218,180,45,170,120,72,160,82,29,220,15,112,113,238,11,228,148,111,173,189,85,228,210,14,107,4,123,26,233,208,93,123,118,15,103,62,203,186,110,160,249,190,187,67,48,67,62,222,166,186,234,89,75,210,197,153,196,51,86,164,238,174,145,208,164,75,120,165,93,155,168,75,160,71,56,186,65,195,251,53,25,252,211,94,0,188,188,68,76,192,233,54,105,68,62,143,185,252,202,248,61,245,61,234,34,160,52,240,79,112,130,239,98,31,170,71,42,231,4,209,193,11,207,183,161,61,125,89,2,149,221,10,196,155,115,11,76,49,160,165,134,187,104,57,191,143,205,111,105,174,200,174,68,128,6,208,91,174,106,90,206,154,53,179,81,180,5,49,210,114,155,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[249,1,49],[249,1,49]]}},"account":null,"storage":null,"values":[[160,41,147,98,24,85,186,44,175,208,104,119,29,53,221,60,48,164,243,164,149,75,137,204,156,3,97,96,188,45,241,168,182,0],[160,125,47,79,21,19,105,245,160,62,194,7,96,123,111,174,70,236,209,147,236,40,192,202,196,148,241,21,173,5,2,161,244,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,129,13,71,182,208,163,51,10,150,5,150,167,180,203,157,17,45,139,115,203,44,19,240,41,184,115,203,242,100,102,13,7,0],[160,114,224,200,157,76,114,214,6,195,125,27,186,150,210,238,179,87,94,218,104,18,197,120,149,126,126,113,12,139,5,108,1,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,67,157,32,142,241,119,59,244,223,124,187,111,50,118,138,205,201,9,124,22,91,155,181,170,189,90,135,6,6,182,160,122,0],[160,158,171,83,47,136,35,33,191,37,248,123,195,35,28,25,160,194,98,220,49,73,213,41,133,70,119,124,128,125,57,68,179,0],[160,65,85,14,231,213,219,2,2,143,164,109,175,152,61,126,156,59,154,84,55,14,25,63,101,203,219,50,106,58,91,136,48,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,176,121,254,239,124,116,165,167,156,24,203,241,137,46,235,202,206,160,9,35,161,127,165,177,90,152,109,255,212,182,6,84,0],[160,135,224,153,63,51,241,39,176,241,40,53,4,15,131,12,131,52,249,199,131,161,11,202,194,244,83,166,43,66,11,160,20,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,43,80,53,202,155,10,238,156,44,34,117,188,185,132,23,201,204,115,146,213,138,204,85,221,103,93,246,136,207,121,41,35,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,49,160,125,47,79,21,19,105,245,160,62,194,7,96,123,111,174,70,236,209,147,236,40,192,202,196,148,241,21,173,5,2,161,244,128,160,129,13,71,182,208,163,51,10,150,5,150,167,180,203,157,17,45,139,115,203,44,19,240,41,184,115,203,242,100,102,13,7,160,114,224,200,157,76,114,214,6,195,125,27,186,150,210,238,179,87,94,218,104,18,197,120,149,126,126,113,12,139,5,108,1,128,160,67,157,32,142,241,119,59,244,223,124,187,111,50,118,138,205,201,9,124,22,91,155,181,170,189,90,135,6,6,182,160,122,160,158,171,83,47,136,35,33,191,37,248,123,195,35,28,25,160,194,98,220,49,73,213,41,133,70,119,124,128,125,57,68,179,160,65,85,14,231,213,219,2,2,143,164,109,175,152,61,126,156,59,154,84,55,14,25,63,101,203,219,50,106,58,91,136,48,128,160,176,121,254,239,124,116,165,167,156,24,203,241,137,46,235,202,206,160,9,35,161,127,165,177,90,152,109,255,212,182,6,84,160,135,224,153,63,51,241,39,176,241,40,53,4,15,131,12,131,52,249,199,131,161,11,202,194,244,83,166,43,66,11,160,20,128,128,128,160,43,80,53,202,155,10,238,156,44,34,117,188,185,132,23,201,204,115,146,213,138,204,85,221,103,93,246,136,207,121,41,35,128,128],[249,1,49,160,125,47,79,21,19,105,245,160,62,194,7,96,123,111,174,70,236,209,147,236,40,192,202,196,148,241,21,173,5,2,161,244,128,160,129,13,71,182,208,163,51,10,150,5,150,167,180,203,157,17,45,139,115,203,44,19,240,41,184,115,203,242,100,102,13,7,160,114,224,200,157,76,114,214,6,195,125,27,186,150,210,238,179,87,94,218,104,18,197,120,149,126,126,113,12,139,5,108,1,128,160,67,157,32,142,241,119,59,244,223,124,187,111,50,118,138,205,201,9,124,22,91,155,181,170,189,90,135,6,6,182,160,122,160,158,171,83,47,136,35,33,191,37,248,123,195,35,28,25,160,194,98,220,49,73,213,41,133,70,119,124,128,125,57,68,179,160,65,85,14,231,213,219,2,2,143,164,109,175,152,61,126,156,59,154,84,55,14,25,63,101,203,219,50,106,58,91,136,48,128,160,41,147,98,24,85,186,44,175,208,104,119,29,53,221,60,48,164,243,164,149,75,137,204,156,3,97,96,188,45,241,168,182,160,135,224,153,63,51,241,39,176,241,40,53,4,15,131,12,131,52,249,199,131,161,11,202,194,244,83,166,43,66,11,160,20,128,128,128,160,43,80,53,202,155,10,238,156,44,34,117,188,185,132,23,201,204,115,146,213,138,204,85,221,103,93,246,136,207,121,41,35,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,56,43,155,161,166,246,207,195,185,110,250,230,163,101,224,62,53,178,97,184,200,160,179,95,74,78,196,144,156,43,236,4,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,114,59,169,3,89,76,47,74,88,56,177,15,150,90,24,176,74,182,181,105,252,128,15,38,241,209,60,215,146,177,198,145,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,34,163,112,240,39,98,119,178,8,162,4,25,53,206,141,225,246,90,16,39,43,9,132,87,212,91,31,93,239,115,217,226,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,128,128,128,128,128,160,114,59,169,3,89,76,47,74,88,56,177,15,150,90,24,176,74,182,181,105,252,128,15,38,241,209,60,215,146,177,198,145,128,160,34,163,112,240,39,98,119,178,8,162,4,25,53,206,141,225,246,90,16,39,43,9,132,87,212,91,31,93,239,115,217,226,128],[248,81,128,128,128,128,128,128,128,128,128,128,128,128,128,160,56,43,155,161,166,246,207,195,185,110,250,230,163,101,224,62,53,178,97,184,200,160,179,95,74,78,196,144,156,43,236,4,128,160,34,163,112,240,39,98,119,178,8,162,4,25,53,206,141,225,246,90,16,39,43,9,132,87,212,91,31,93,239,115,217,226,128]]},{"start":null,"extension_branch":null,"account":{"address":[80,239,191,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,255],"key":[93,153,160,157,250,208,20,125,91,96,10,231,77,201,17,65,199,140,170,55,125,216,50,134,155,14,109,12,229,234,121,163],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,32,250,208,20,125,91,96,10,231,77,201,17,65,199,140,170,55,125,216,50,134,155,14,109,12,229,234,121,163,0,0,0,0],[157,32,250,208,20,125,91,96,10,231,77,201,17,65,199,140,170,55,125,216,50,134,155,14,109,12,229,234,121,163,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,183,66,57,68,223,65,224,47,2,141,219,194,115,253,121,184,235,136,123,113,68,251,240,153,71,1,84,206,179,32,124,235,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,19,125,188,252,117,114,67,102,55,130,135,220,107,94,29,227,40,158,10,93,47,252,121,141,172,229,191,118,237,110,126,91,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,32,250,208,20,125,91,96,10,231,77,201,17,65,199,140,170,55,125,216,50,134,155,14,109,12,229,234,121,163,0,0,0,0]],"keccak_data":[[248,102,157,32,250,208,20,125,91,96,10,231,77,201,17,65,199,140,170,55,125,216,50,134,155,14,109,12,229,234,121,163,184,70,248,68,128,128,160,183,66,57,68,223,65,224,47,2,141,219,194,115,253,121,184,235,136,123,113,68,251,240,153,71,1,84,206,179,32,124,235,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,32,250,208,20,125,91,96,10,231,77,201,17,65,199,140,170,55,125,216,50,134,155,14,109,12,229,234,121,163,184,70,248,68,128,128,160,19,125,188,252,117,114,67,102,55,130,135,220,107,94,29,227,40,158,10,93,47,252,121,141,172,229,191,118,237,110,126,91,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[80,239,191,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,255]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[248,145],[248,113]]}},"account":null,"storage":null,"values":[[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,72,60,74,5,54,117,71,47,106,23,182,201,62,220,8,110,27,167,71,23,146,242,232,52,223,140,42,119,248,108,135,32,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,57,40,153,102,116,57,12,45,227,151,243,15,209,190,153,39,168,112,100,71,230,61,231,209,236,140,76,215,209,54,79,207,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,159,39,130,222,203,249,142,81,55,139,64,6,22,12,143,162,175,230,36,237,232,155,124,204,110,116,252,198,133,76,220,1,0],[160,86,226,119,60,216,97,15,139,34,8,38,142,255,156,49,173,130,253,167,45,80,84,212,83,199,74,50,231,7,158,64,201,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,145,128,128,128,128,128,128,128,160,72,60,74,5,54,117,71,47,106,23,182,201,62,220,8,110,27,167,71,23,146,242,232,52,223,140,42,119,248,108,135,32,128,128,160,57,40,153,102,116,57,12,45,227,151,243,15,209,190,153,39,168,112,100,71,230,61,231,209,236,140,76,215,209,54,79,207,128,128,128,160,159,39,130,222,203,249,142,81,55,139,64,6,22,12,143,162,175,230,36,237,232,155,124,204,110,116,252,198,133,76,220,1,160,86,226,119,60,216,97,15,139,34,8,38,142,255,156,49,173,130,253,167,45,80,84,212,83,199,74,50,231,7,158,64,201,128],[248,113,128,128,128,128,128,128,128,160,72,60,74,5,54,117,71,47,106,23,182,201,62,220,8,110,27,167,71,23,146,242,232,52,223,140,42,119,248,108,135,32,128,128,128,128,128,128,160,159,39,130,222,203,249,142,81,55,139,64,6,22,12,143,162,175,230,36,237,232,155,124,204,110,116,252,198,133,76,220,1,160,86,226,119,60,216,97,15,139,34,8,38,142,255,156,49,173,130,253,167,45,80,84,212,83,199,74,50,231,7,158,64,201,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,170,187,187,171,171],"key":[173,145,139,212,190,206,158,137,248,251,22,79,255,130,36,208,237,37,188,162,171,22,122,192,112,17,0,33,220,239,73,163],"list_rlp_bytes":[[226],[226]],"value_rlp_bytes":[[4],[0]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,61,145,139,212,190,206,158,137,248,251,22,79,255,130,36,208,237,37,188,162,171,22,122,192,112,17,0,33,220,239,73,163,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,61,145,139,212,190,206,158,137,248,251,22,79,255,130,36,208,237,37,188,162,171,22,122,192,112,17,0,33,220,239,73,163,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[226,160,61,145,139,212,190,206,158,137,248,251,22,79,255,130,36,208,237,37,188,162,171,22,122,192,112,17,0,33,220,239,73,163,4],[226,160,61,145,139,212,190,206,158,137,248,251,22,79,255,130,36,208,237,37,188,162,171,22,122,192,112,17,0,33,220,239,73,163,4],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,170,187,187,171,171]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/DeleteAccount.json b/zkevm-circuits/src/mpt_circuit/tests/DeleteAccount.json new file mode 100644 index 0000000000..f1d3f165fa --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/DeleteAccount.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"AccountDestructed"},"extension_branch":null,"account":null,"storage":null,"values":[[160,38,136,144,17,65,61,119,219,41,247,230,48,119,74,3,66,17,246,178,178,51,54,229,7,151,157,126,48,143,147,4,93,0],[160,214,126,77,69,3,67,4,100,37,174,66,113,71,67,83,133,122,184,96,219,192,161,221,230,75,65,181,205,58,83,43,243,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,0],[160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,0],[160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,0],[160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,0],[160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,0],[160,217,207,245,213,242,65,138,253,22,164,218,92,34,31,220,139,212,117,32,197,146,121,34,246,154,104,23,123,100,218,106,192,0],[160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,0],[160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,0],[160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,0],[160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,0],[160,70,194,158,253,33,133,28,78,50,189,211,208,22,171,254,164,25,187,186,125,232,233,79,79,17,138,214,244,254,201,16,68,0],[160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,0],[160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,0],[160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,0],[160,123,28,84,241,94,41,155,213,139,223,239,151,65,83,140,120,40,181,215,209,26,72,159,156,32,208,82,179,71,29,244,117,0],[160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,0],[160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,160,217,207,245,213,242,65,138,253,22,164,218,92,34,31,220,139,212,117,32,197,146,121,34,246,154,104,23,123,100,218,106,192,160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,160,70,194,158,253,33,133,28,78,50,189,211,208,22,171,254,164,25,187,186,125,232,233,79,79,17,138,214,244,254,201,16,68,160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,160,123,28,84,241,94,41,155,213,139,223,239,151,65,83,140,120,40,181,215,209,26,72,159,156,32,208,82,179,71,29,244,117,160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,128],[249,2,17,160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,160,217,207,245,213,242,65,138,253,22,164,218,92,34,31,220,139,212,117,32,197,146,121,34,246,154,104,23,123,100,218,106,192,160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,160,123,28,84,241,94,41,155,213,139,223,239,151,65,83,140,120,40,181,215,209,26,72,159,156,32,208,82,179,71,29,244,117,160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,153,11,242,211,42,155,107,237,88,100,219,214,126,177,12,26,208,44,151,202,156,90,102,134,114,49,56,71,180,103,83,155,0],[160,194,161,194,230,101,254,160,95,77,48,211,27,39,42,140,4,122,172,243,209,160,183,193,160,238,144,110,96,160,53,201,176,0],[160,250,10,79,191,155,218,123,133,247,187,164,39,212,171,124,199,15,61,52,217,80,166,252,43,206,177,62,170,118,143,250,130,0],[160,108,102,161,204,241,214,151,12,80,163,235,72,19,184,65,25,37,28,43,113,212,14,119,160,157,125,65,13,140,22,81,190,0],[160,245,247,207,229,123,97,61,242,10,237,62,241,112,223,174,20,21,134,98,167,15,69,64,87,208,137,239,130,24,225,217,69,0],[160,30,98,56,45,136,244,48,122,241,246,213,147,38,112,85,225,114,131,195,165,25,146,5,1,23,56,98,204,84,80,107,55,0],[160,13,130,198,244,51,130,38,64,159,240,127,232,249,153,1,46,213,170,213,218,230,166,137,75,171,46,198,189,169,81,129,186,0],[160,229,29,41,136,113,129,3,220,51,225,243,185,32,77,145,131,244,109,144,247,2,225,2,109,44,231,85,92,179,219,46,140,0],[160,227,50,165,83,125,101,94,90,180,34,108,124,83,107,32,6,40,120,220,212,90,176,135,180,166,38,78,212,164,7,245,229,0],[160,222,11,99,19,179,52,163,176,103,195,226,8,255,145,136,231,40,146,50,179,99,64,50,201,97,4,155,234,232,183,233,49,0],[160,71,164,38,186,162,94,167,107,171,137,209,18,250,139,176,186,4,118,148,176,251,124,23,138,249,89,144,1,84,248,27,55,0],[160,52,112,5,32,127,130,195,189,56,88,183,178,155,208,74,148,123,54,232,217,185,32,49,156,71,67,15,17,2,49,204,243,0],[160,170,23,213,11,235,134,180,70,232,51,146,38,58,251,66,201,29,6,217,33,53,126,153,255,165,144,117,128,91,14,16,43,0],[160,148,51,14,129,178,95,21,66,170,110,219,0,237,74,184,241,156,135,49,91,139,227,83,112,52,218,111,108,140,199,255,219,0],[160,222,192,22,245,232,111,105,228,68,180,87,180,31,116,42,56,93,1,147,1,207,113,217,240,248,143,123,135,213,26,66,139,0],[160,239,77,239,217,232,159,0,139,212,31,73,0,211,56,197,222,20,67,13,26,183,202,29,28,187,243,0,57,12,134,3,140,0],[160,174,27,143,154,179,94,7,70,236,47,69,149,186,217,141,122,66,236,237,90,80,133,141,159,145,213,6,253,155,38,62,98,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,194,161,194,230,101,254,160,95,77,48,211,27,39,42,140,4,122,172,243,209,160,183,193,160,238,144,110,96,160,53,201,176,160,250,10,79,191,155,218,123,133,247,187,164,39,212,171,124,199,15,61,52,217,80,166,252,43,206,177,62,170,118,143,250,130,160,108,102,161,204,241,214,151,12,80,163,235,72,19,184,65,25,37,28,43,113,212,14,119,160,157,125,65,13,140,22,81,190,160,245,247,207,229,123,97,61,242,10,237,62,241,112,223,174,20,21,134,98,167,15,69,64,87,208,137,239,130,24,225,217,69,160,30,98,56,45,136,244,48,122,241,246,213,147,38,112,85,225,114,131,195,165,25,146,5,1,23,56,98,204,84,80,107,55,160,13,130,198,244,51,130,38,64,159,240,127,232,249,153,1,46,213,170,213,218,230,166,137,75,171,46,198,189,169,81,129,186,160,229,29,41,136,113,129,3,220,51,225,243,185,32,77,145,131,244,109,144,247,2,225,2,109,44,231,85,92,179,219,46,140,160,227,50,165,83,125,101,94,90,180,34,108,124,83,107,32,6,40,120,220,212,90,176,135,180,166,38,78,212,164,7,245,229,160,222,11,99,19,179,52,163,176,103,195,226,8,255,145,136,231,40,146,50,179,99,64,50,201,97,4,155,234,232,183,233,49,160,71,164,38,186,162,94,167,107,171,137,209,18,250,139,176,186,4,118,148,176,251,124,23,138,249,89,144,1,84,248,27,55,160,52,112,5,32,127,130,195,189,56,88,183,178,155,208,74,148,123,54,232,217,185,32,49,156,71,67,15,17,2,49,204,243,160,170,23,213,11,235,134,180,70,232,51,146,38,58,251,66,201,29,6,217,33,53,126,153,255,165,144,117,128,91,14,16,43,160,148,51,14,129,178,95,21,66,170,110,219,0,237,74,184,241,156,135,49,91,139,227,83,112,52,218,111,108,140,199,255,219,160,222,192,22,245,232,111,105,228,68,180,87,180,31,116,42,56,93,1,147,1,207,113,217,240,248,143,123,135,213,26,66,139,160,239,77,239,217,232,159,0,139,212,31,73,0,211,56,197,222,20,67,13,26,183,202,29,28,187,243,0,57,12,134,3,140,160,174,27,143,154,179,94,7,70,236,47,69,149,186,217,141,122,66,236,237,90,80,133,141,159,145,213,6,253,155,38,62,98,128],[249,2,17,160,194,161,194,230,101,254,160,95,77,48,211,27,39,42,140,4,122,172,243,209,160,183,193,160,238,144,110,96,160,53,201,176,160,250,10,79,191,155,218,123,133,247,187,164,39,212,171,124,199,15,61,52,217,80,166,252,43,206,177,62,170,118,143,250,130,160,108,102,161,204,241,214,151,12,80,163,235,72,19,184,65,25,37,28,43,113,212,14,119,160,157,125,65,13,140,22,81,190,160,245,247,207,229,123,97,61,242,10,237,62,241,112,223,174,20,21,134,98,167,15,69,64,87,208,137,239,130,24,225,217,69,160,30,98,56,45,136,244,48,122,241,246,213,147,38,112,85,225,114,131,195,165,25,146,5,1,23,56,98,204,84,80,107,55,160,13,130,198,244,51,130,38,64,159,240,127,232,249,153,1,46,213,170,213,218,230,166,137,75,171,46,198,189,169,81,129,186,160,229,29,41,136,113,129,3,220,51,225,243,185,32,77,145,131,244,109,144,247,2,225,2,109,44,231,85,92,179,219,46,140,160,227,50,165,83,125,101,94,90,180,34,108,124,83,107,32,6,40,120,220,212,90,176,135,180,166,38,78,212,164,7,245,229,160,153,11,242,211,42,155,107,237,88,100,219,214,126,177,12,26,208,44,151,202,156,90,102,134,114,49,56,71,180,103,83,155,160,71,164,38,186,162,94,167,107,171,137,209,18,250,139,176,186,4,118,148,176,251,124,23,138,249,89,144,1,84,248,27,55,160,52,112,5,32,127,130,195,189,56,88,183,178,155,208,74,148,123,54,232,217,185,32,49,156,71,67,15,17,2,49,204,243,160,170,23,213,11,235,134,180,70,232,51,146,38,58,251,66,201,29,6,217,33,53,126,153,255,165,144,117,128,91,14,16,43,160,148,51,14,129,178,95,21,66,170,110,219,0,237,74,184,241,156,135,49,91,139,227,83,112,52,218,111,108,140,199,255,219,160,222,192,22,245,232,111,105,228,68,180,87,180,31,116,42,56,93,1,147,1,207,113,217,240,248,143,123,135,213,26,66,139,160,239,77,239,217,232,159,0,139,212,31,73,0,211,56,197,222,20,67,13,26,183,202,29,28,187,243,0,57,12,134,3,140,160,174,27,143,154,179,94,7,70,236,47,69,149,186,217,141,122,66,236,237,90,80,133,141,159,145,213,6,253,155,38,62,98,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,1,241],[249,1,241]]}},"account":null,"storage":null,"values":[[160,28,112,123,243,58,65,19,173,193,62,43,196,68,11,199,175,196,53,79,221,234,57,235,71,250,241,172,58,120,76,168,217,0],[160,118,7,164,153,100,57,90,154,30,0,132,181,165,29,36,198,58,44,76,97,239,47,37,177,191,34,92,76,241,19,47,94,0],[160,46,34,26,12,126,235,135,79,110,204,251,192,231,83,198,108,124,65,171,229,253,211,251,65,212,206,12,190,210,183,234,20,0],[160,224,197,106,11,198,50,194,19,158,253,80,223,164,183,241,23,64,168,71,165,108,101,245,129,13,135,141,128,243,212,58,136,0],[160,154,188,169,221,11,40,133,220,40,23,84,96,133,124,6,24,145,50,158,186,225,79,156,243,79,157,191,46,202,228,116,45,0],[160,101,106,135,142,233,228,56,130,2,230,168,173,72,92,95,95,72,138,18,205,234,66,58,111,124,122,115,39,149,234,142,65,0],[160,92,203,247,191,21,27,33,100,88,238,173,241,57,84,16,21,154,15,98,233,168,236,45,101,62,138,169,99,20,246,199,180,0],[160,180,92,247,111,158,28,57,148,203,72,82,23,123,108,136,31,116,208,22,126,99,192,40,25,134,34,0,68,97,29,209,205,0],[160,189,240,142,201,255,115,229,75,221,46,28,254,224,96,249,93,114,58,42,106,182,133,165,73,22,103,228,48,78,75,210,41,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,228,188,6,163,117,73,6,69,7,72,145,92,254,178,24,206,5,249,71,115,251,136,163,185,24,35,186,20,24,55,230,170,0],[160,140,237,204,190,22,29,102,222,151,44,132,113,246,67,213,84,224,22,149,128,33,33,180,168,29,238,117,1,169,54,238,81,0],[160,196,248,47,123,243,93,49,203,5,232,213,184,40,188,187,27,103,137,133,70,75,220,228,144,70,51,216,100,24,144,80,108,0],[160,148,60,145,205,168,58,189,238,39,184,40,235,191,82,185,191,84,220,104,112,6,113,34,188,43,20,36,80,222,48,33,46,0],[160,22,118,116,216,102,36,81,233,167,172,29,8,114,58,60,74,239,119,168,37,174,234,243,147,173,91,54,70,18,103,166,48,0],[160,211,183,136,193,129,118,137,177,237,5,246,89,27,163,189,164,220,183,70,35,179,24,251,231,60,88,245,247,203,0,66,240,0],[160,246,48,79,85,101,158,175,5,227,79,143,178,102,111,85,252,55,35,113,53,68,107,226,66,254,21,132,83,150,50,43,30,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,241,160,118,7,164,153,100,57,90,154,30,0,132,181,165,29,36,198,58,44,76,97,239,47,37,177,191,34,92,76,241,19,47,94,160,46,34,26,12,126,235,135,79,110,204,251,192,231,83,198,108,124,65,171,229,253,211,251,65,212,206,12,190,210,183,234,20,160,224,197,106,11,198,50,194,19,158,253,80,223,164,183,241,23,64,168,71,165,108,101,245,129,13,135,141,128,243,212,58,136,160,154,188,169,221,11,40,133,220,40,23,84,96,133,124,6,24,145,50,158,186,225,79,156,243,79,157,191,46,202,228,116,45,160,101,106,135,142,233,228,56,130,2,230,168,173,72,92,95,95,72,138,18,205,234,66,58,111,124,122,115,39,149,234,142,65,160,92,203,247,191,21,27,33,100,88,238,173,241,57,84,16,21,154,15,98,233,168,236,45,101,62,138,169,99,20,246,199,180,160,180,92,247,111,158,28,57,148,203,72,82,23,123,108,136,31,116,208,22,126,99,192,40,25,134,34,0,68,97,29,209,205,160,189,240,142,201,255,115,229,75,221,46,28,254,224,96,249,93,114,58,42,106,182,133,165,73,22,103,228,48,78,75,210,41,128,160,228,188,6,163,117,73,6,69,7,72,145,92,254,178,24,206,5,249,71,115,251,136,163,185,24,35,186,20,24,55,230,170,160,140,237,204,190,22,29,102,222,151,44,132,113,246,67,213,84,224,22,149,128,33,33,180,168,29,238,117,1,169,54,238,81,160,196,248,47,123,243,93,49,203,5,232,213,184,40,188,187,27,103,137,133,70,75,220,228,144,70,51,216,100,24,144,80,108,160,148,60,145,205,168,58,189,238,39,184,40,235,191,82,185,191,84,220,104,112,6,113,34,188,43,20,36,80,222,48,33,46,160,22,118,116,216,102,36,81,233,167,172,29,8,114,58,60,74,239,119,168,37,174,234,243,147,173,91,54,70,18,103,166,48,160,211,183,136,193,129,118,137,177,237,5,246,89,27,163,189,164,220,183,70,35,179,24,251,231,60,88,245,247,203,0,66,240,160,246,48,79,85,101,158,175,5,227,79,143,178,102,111,85,252,55,35,113,53,68,107,226,66,254,21,132,83,150,50,43,30,128],[249,1,241,160,118,7,164,153,100,57,90,154,30,0,132,181,165,29,36,198,58,44,76,97,239,47,37,177,191,34,92,76,241,19,47,94,160,46,34,26,12,126,235,135,79,110,204,251,192,231,83,198,108,124,65,171,229,253,211,251,65,212,206,12,190,210,183,234,20,160,224,197,106,11,198,50,194,19,158,253,80,223,164,183,241,23,64,168,71,165,108,101,245,129,13,135,141,128,243,212,58,136,160,154,188,169,221,11,40,133,220,40,23,84,96,133,124,6,24,145,50,158,186,225,79,156,243,79,157,191,46,202,228,116,45,160,101,106,135,142,233,228,56,130,2,230,168,173,72,92,95,95,72,138,18,205,234,66,58,111,124,122,115,39,149,234,142,65,160,92,203,247,191,21,27,33,100,88,238,173,241,57,84,16,21,154,15,98,233,168,236,45,101,62,138,169,99,20,246,199,180,160,180,92,247,111,158,28,57,148,203,72,82,23,123,108,136,31,116,208,22,126,99,192,40,25,134,34,0,68,97,29,209,205,160,189,240,142,201,255,115,229,75,221,46,28,254,224,96,249,93,114,58,42,106,182,133,165,73,22,103,228,48,78,75,210,41,128,160,228,188,6,163,117,73,6,69,7,72,145,92,254,178,24,206,5,249,71,115,251,136,163,185,24,35,186,20,24,55,230,170,160,140,237,204,190,22,29,102,222,151,44,132,113,246,67,213,84,224,22,149,128,33,33,180,168,29,238,117,1,169,54,238,81,160,196,248,47,123,243,93,49,203,5,232,213,184,40,188,187,27,103,137,133,70,75,220,228,144,70,51,216,100,24,144,80,108,160,148,60,145,205,168,58,189,238,39,184,40,235,191,82,185,191,84,220,104,112,6,113,34,188,43,20,36,80,222,48,33,46,160,22,118,116,216,102,36,81,233,167,172,29,8,114,58,60,74,239,119,168,37,174,234,243,147,173,91,54,70,18,103,166,48,160,28,112,123,243,58,65,19,173,193,62,43,196,68,11,199,175,196,53,79,221,234,57,235,71,250,241,172,58,120,76,168,217,160,246,48,79,85,101,158,175,5,227,79,143,178,102,111,85,252,55,35,113,53,68,107,226,66,254,21,132,83,150,50,43,30,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[248,113],[248,81]]}},"account":null,"storage":null,"values":[[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,90,102,126,52,123,142,237,166,163,241,255,65,67,206,65,181,45,101,41,147,86,72,136,7,64,208,10,60,216,219,29,48,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,31,135,73,204,174,167,159,229,36,59,217,161,39,71,252,185,59,171,62,199,226,95,101,195,206,134,71,61,127,129,37,56,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,203,196,24,180,91,92,42,155,178,224,138,157,186,202,85,129,212,160,95,196,131,76,51,38,251,230,158,133,225,177,41,135,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,113,128,160,90,102,126,52,123,142,237,166,163,241,255,65,67,206,65,181,45,101,41,147,86,72,136,7,64,208,10,60,216,219,29,48,128,128,128,128,128,128,128,160,31,135,73,204,174,167,159,229,36,59,217,161,39,71,252,185,59,171,62,199,226,95,101,195,206,134,71,61,127,129,37,56,128,160,203,196,24,180,91,92,42,155,178,224,138,157,186,202,85,129,212,160,95,196,131,76,51,38,251,230,158,133,225,177,41,135,128,128,128,128,128],[248,81,128,128,128,128,128,128,128,128,128,160,31,135,73,204,174,167,159,229,36,59,217,161,39,71,252,185,59,171,62,199,226,95,101,195,206,134,71,61,127,129,37,56,128,160,203,196,24,180,91,92,42,155,178,224,138,157,186,202,85,129,212,160,95,196,131,76,51,38,251,230,158,133,225,177,41,135,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[170,172,207,18,88,1,56,188,43,188,238,234,161,17,223,78,66,171,129,171],"key":[152,225,119,223,167,154,212,87,64,146,72,80,232,124,99,244,129,117,156,137,200,71,85,240,47,81,246,247,59,192,177,160],"list_rlp_bytes":[[248,104],[248,104]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,104]},"storage":null,"values":[[159,32,119,223,167,154,212,87,64,146,72,80,232,124,99,244,129,117,156,137,200,71,85,240,47,81,246,247,59,192,177,160,0,0],[159,32,119,223,167,154,212,87,64,146,72,80,232,124,99,244,129,117,156,137,200,71,85,240,47,81,246,247,59,192,177,160,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,32,119,223,167,154,212,87,64,146,72,80,232,124,99,244,129,117,156,137,200,71,85,240,47,81,246,247,59,192,177,160,0,0]],"keccak_data":[[248,104,159,32,119,223,167,154,212,87,64,146,72,80,232,124,99,244,129,117,156,137,200,71,85,240,47,81,246,247,59,192,177,160,184,70,248,68,128,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,104,159,32,119,223,167,154,212,87,64,146,72,80,232,124,99,244,129,117,156,137,200,71,85,240,47,81,246,247,59,192,177,160,184,70,248,68,128,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[170,172,207,18,88,1,56,188,43,188,238,234,161,17,223,78,66,171,129,171]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/DeleteBranch.json b/zkevm-circuits/src/mpt_circuit/tests/DeleteBranch.json new file mode 100644 index 0000000000..a43ca45d3e --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/DeleteBranch.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,215,29,100,35,200,250,244,119,169,77,227,236,6,12,117,46,135,119,245,198,237,244,177,211,177,8,49,143,69,33,62,17,0],[160,169,139,49,72,136,199,217,138,243,35,108,179,248,3,71,60,148,54,144,67,43,94,177,146,67,28,81,171,126,84,202,73,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,35,228,176,170,215,46,230,30,195,244,233,217,205,89,182,252,121,182,2,252,21,90,173,42,161,39,28,67,125,174,239,74,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,59,111,66,200,203,135,101,57,47,46,152,81,58,83,5,134,139,97,140,151,187,186,76,12,128,155,52,179,210,255,187,193,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,59,111,66,200,203,135,101,57,47,46,152,81,58,83,5,134,139,97,140,151,187,186,76,12,128,155,52,179,210,255,187,193,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,35,228,176,170,215,46,230,30,195,244,233,217,205,89,182,252,121,182,2,252,21,90,173,42,161,39,28,67,125,174,239,74,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,68,231,161,225,86,211,177,78,193,254,112,12,122,235,192,114,3,252,216,255,5,162,36,123,62,143,251,46,224,61,192,71,0],[160,15,53,57,39,28,241,32,159,6,13,76,168,64,116,189,102,17,43,114,60,149,104,137,55,32,175,217,185,24,100,154,39,0],[160,110,58,129,42,7,242,95,48,22,117,24,235,247,115,27,159,148,240,189,82,238,245,24,104,4,88,96,153,87,62,124,87,0],[160,23,125,132,126,57,77,125,108,183,122,223,20,200,11,140,116,8,197,125,77,164,229,34,187,130,255,11,5,123,106,18,226,0],[160,34,142,142,168,173,99,151,78,20,223,49,167,173,193,155,22,185,57,77,94,140,81,219,8,205,119,152,79,221,53,32,207,0],[160,47,68,110,156,219,87,42,252,153,153,146,44,71,68,241,42,115,255,196,172,147,166,193,209,18,197,101,149,78,252,80,101,0],[160,177,72,39,32,231,101,153,80,19,87,43,118,153,180,111,107,120,208,26,121,107,122,223,78,248,252,112,146,129,121,183,249,0],[160,166,43,253,9,132,156,69,206,240,132,245,215,140,18,136,28,76,115,232,35,55,46,97,106,111,29,136,215,243,244,104,17,0],[160,81,197,227,235,119,136,89,180,1,44,243,14,3,35,252,32,39,239,6,187,20,67,5,160,124,3,15,223,92,185,169,242,0],[160,149,116,118,68,110,184,206,46,175,107,154,14,16,171,116,53,96,139,243,244,119,49,149,255,105,200,203,196,178,219,6,82,0],[160,110,155,225,108,252,161,111,115,34,161,168,254,20,210,73,55,53,84,44,62,235,227,145,125,56,152,100,115,68,140,102,72,0],[160,215,32,96,214,100,112,201,119,187,39,102,186,145,221,83,195,0,96,163,123,49,150,62,117,25,68,3,71,226,217,71,5,0],[160,216,77,122,185,166,60,76,175,212,143,31,218,53,223,132,60,243,170,247,163,51,217,81,184,10,173,42,95,228,91,232,94,0],[160,102,201,63,187,90,100,67,28,66,169,235,107,142,189,159,208,34,47,59,148,229,29,242,190,206,105,91,103,217,108,220,3,0],[160,130,214,88,212,94,182,185,119,29,142,174,223,89,224,222,59,117,224,157,226,110,51,196,90,175,27,158,67,104,153,87,154,0],[160,32,215,128,174,120,163,233,16,26,195,200,23,79,233,122,253,170,114,110,149,85,164,70,233,70,156,107,147,254,209,174,11,0],[160,193,92,89,242,135,228,231,76,186,23,253,187,202,250,103,245,131,178,24,164,47,129,106,19,179,50,117,153,14,62,38,242,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,15,53,57,39,28,241,32,159,6,13,76,168,64,116,189,102,17,43,114,60,149,104,137,55,32,175,217,185,24,100,154,39,160,110,58,129,42,7,242,95,48,22,117,24,235,247,115,27,159,148,240,189,82,238,245,24,104,4,88,96,153,87,62,124,87,160,23,125,132,126,57,77,125,108,183,122,223,20,200,11,140,116,8,197,125,77,164,229,34,187,130,255,11,5,123,106,18,226,160,34,142,142,168,173,99,151,78,20,223,49,167,173,193,155,22,185,57,77,94,140,81,219,8,205,119,152,79,221,53,32,207,160,47,68,110,156,219,87,42,252,153,153,146,44,71,68,241,42,115,255,196,172,147,166,193,209,18,197,101,149,78,252,80,101,160,177,72,39,32,231,101,153,80,19,87,43,118,153,180,111,107,120,208,26,121,107,122,223,78,248,252,112,146,129,121,183,249,160,166,43,253,9,132,156,69,206,240,132,245,215,140,18,136,28,76,115,232,35,55,46,97,106,111,29,136,215,243,244,104,17,160,81,197,227,235,119,136,89,180,1,44,243,14,3,35,252,32,39,239,6,187,20,67,5,160,124,3,15,223,92,185,169,242,160,149,116,118,68,110,184,206,46,175,107,154,14,16,171,116,53,96,139,243,244,119,49,149,255,105,200,203,196,178,219,6,82,160,110,155,225,108,252,161,111,115,34,161,168,254,20,210,73,55,53,84,44,62,235,227,145,125,56,152,100,115,68,140,102,72,160,215,32,96,214,100,112,201,119,187,39,102,186,145,221,83,195,0,96,163,123,49,150,62,117,25,68,3,71,226,217,71,5,160,216,77,122,185,166,60,76,175,212,143,31,218,53,223,132,60,243,170,247,163,51,217,81,184,10,173,42,95,228,91,232,94,160,102,201,63,187,90,100,67,28,66,169,235,107,142,189,159,208,34,47,59,148,229,29,242,190,206,105,91,103,217,108,220,3,160,130,214,88,212,94,182,185,119,29,142,174,223,89,224,222,59,117,224,157,226,110,51,196,90,175,27,158,67,104,153,87,154,160,32,215,128,174,120,163,233,16,26,195,200,23,79,233,122,253,170,114,110,149,85,164,70,233,70,156,107,147,254,209,174,11,160,193,92,89,242,135,228,231,76,186,23,253,187,202,250,103,245,131,178,24,164,47,129,106,19,179,50,117,153,14,62,38,242,128],[249,2,17,160,68,231,161,225,86,211,177,78,193,254,112,12,122,235,192,114,3,252,216,255,5,162,36,123,62,143,251,46,224,61,192,71,160,110,58,129,42,7,242,95,48,22,117,24,235,247,115,27,159,148,240,189,82,238,245,24,104,4,88,96,153,87,62,124,87,160,23,125,132,126,57,77,125,108,183,122,223,20,200,11,140,116,8,197,125,77,164,229,34,187,130,255,11,5,123,106,18,226,160,34,142,142,168,173,99,151,78,20,223,49,167,173,193,155,22,185,57,77,94,140,81,219,8,205,119,152,79,221,53,32,207,160,47,68,110,156,219,87,42,252,153,153,146,44,71,68,241,42,115,255,196,172,147,166,193,209,18,197,101,149,78,252,80,101,160,177,72,39,32,231,101,153,80,19,87,43,118,153,180,111,107,120,208,26,121,107,122,223,78,248,252,112,146,129,121,183,249,160,166,43,253,9,132,156,69,206,240,132,245,215,140,18,136,28,76,115,232,35,55,46,97,106,111,29,136,215,243,244,104,17,160,81,197,227,235,119,136,89,180,1,44,243,14,3,35,252,32,39,239,6,187,20,67,5,160,124,3,15,223,92,185,169,242,160,149,116,118,68,110,184,206,46,175,107,154,14,16,171,116,53,96,139,243,244,119,49,149,255,105,200,203,196,178,219,6,82,160,110,155,225,108,252,161,111,115,34,161,168,254,20,210,73,55,53,84,44,62,235,227,145,125,56,152,100,115,68,140,102,72,160,215,32,96,214,100,112,201,119,187,39,102,186,145,221,83,195,0,96,163,123,49,150,62,117,25,68,3,71,226,217,71,5,160,216,77,122,185,166,60,76,175,212,143,31,218,53,223,132,60,243,170,247,163,51,217,81,184,10,173,42,95,228,91,232,94,160,102,201,63,187,90,100,67,28,66,169,235,107,142,189,159,208,34,47,59,148,229,29,242,190,206,105,91,103,217,108,220,3,160,130,214,88,212,94,182,185,119,29,142,174,223,89,224,222,59,117,224,157,226,110,51,196,90,175,27,158,67,104,153,87,154,160,32,215,128,174,120,163,233,16,26,195,200,23,79,233,122,253,170,114,110,149,85,164,70,233,70,156,107,147,254,209,174,11,160,193,92,89,242,135,228,231,76,186,23,253,187,202,250,103,245,131,178,24,164,47,129,106,19,179,50,117,153,14,62,38,242,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,27,55,98,183,253,202,203,218,14,22,157,190,199,110,222,197,246,96,225,222,217,24,126,129,158,219,129,57,35,51,176,126,0],[160,203,155,95,87,117,89,227,1,217,141,101,249,141,158,153,95,57,45,108,7,84,133,182,147,7,139,122,231,21,23,226,103,0],[160,188,163,150,57,80,114,215,193,143,127,89,221,62,221,86,183,127,100,168,107,42,49,189,156,105,218,5,224,92,189,172,181,0],[160,189,200,185,43,254,21,61,66,80,169,111,67,41,173,87,178,122,36,149,1,252,148,74,183,75,215,140,190,247,233,157,166,0],[160,90,232,38,248,218,244,187,228,128,210,102,136,44,231,95,36,18,93,232,21,115,141,9,150,218,2,176,12,32,51,14,6,0],[160,73,83,206,253,141,54,4,255,244,59,102,75,250,181,149,232,147,36,0,75,62,69,224,82,190,115,134,87,40,76,145,41,0],[160,160,208,52,138,80,98,153,103,185,255,188,140,179,114,176,55,52,0,6,124,26,160,219,69,77,232,122,138,28,234,140,144,0],[160,188,24,14,57,108,199,179,93,67,114,38,247,227,100,73,16,77,120,28,98,134,184,51,71,55,110,175,63,160,225,134,78,0],[160,228,73,41,12,77,17,23,126,199,117,200,201,175,207,4,224,106,66,164,36,10,79,83,9,140,5,149,112,207,216,120,208,0],[160,165,120,23,142,28,190,69,250,104,116,6,96,69,168,108,27,67,77,236,187,66,25,158,38,151,201,131,109,22,53,163,146,0],[160,52,196,20,106,22,179,12,48,221,80,93,115,60,211,148,103,60,166,62,6,34,79,50,128,138,201,233,113,178,243,147,176,0],[160,135,243,26,28,242,33,207,232,196,225,22,158,16,152,31,246,237,195,183,223,5,255,10,175,126,4,255,89,197,222,199,86,0],[160,230,153,215,131,5,248,22,225,108,26,208,120,178,22,164,27,6,26,123,38,38,161,120,244,202,99,125,226,113,144,222,250,0],[160,91,62,246,193,194,69,43,200,24,226,234,231,163,85,40,196,18,201,130,81,131,130,58,155,200,87,30,228,26,39,186,198,0],[160,192,154,190,147,129,133,38,29,125,30,178,151,134,105,100,129,255,121,107,53,193,82,137,113,35,37,66,236,11,215,106,81,0],[160,14,128,144,203,252,2,235,241,233,228,77,51,93,37,47,112,66,14,208,159,231,214,197,129,38,82,120,106,2,133,183,51,0],[160,173,162,203,251,233,190,24,248,49,5,68,76,226,83,131,69,152,101,45,251,152,123,185,132,147,27,75,39,43,148,107,151,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,203,155,95,87,117,89,227,1,217,141,101,249,141,158,153,95,57,45,108,7,84,133,182,147,7,139,122,231,21,23,226,103,160,188,163,150,57,80,114,215,193,143,127,89,221,62,221,86,183,127,100,168,107,42,49,189,156,105,218,5,224,92,189,172,181,160,189,200,185,43,254,21,61,66,80,169,111,67,41,173,87,178,122,36,149,1,252,148,74,183,75,215,140,190,247,233,157,166,160,90,232,38,248,218,244,187,228,128,210,102,136,44,231,95,36,18,93,232,21,115,141,9,150,218,2,176,12,32,51,14,6,160,73,83,206,253,141,54,4,255,244,59,102,75,250,181,149,232,147,36,0,75,62,69,224,82,190,115,134,87,40,76,145,41,160,160,208,52,138,80,98,153,103,185,255,188,140,179,114,176,55,52,0,6,124,26,160,219,69,77,232,122,138,28,234,140,144,160,188,24,14,57,108,199,179,93,67,114,38,247,227,100,73,16,77,120,28,98,134,184,51,71,55,110,175,63,160,225,134,78,160,228,73,41,12,77,17,23,126,199,117,200,201,175,207,4,224,106,66,164,36,10,79,83,9,140,5,149,112,207,216,120,208,160,165,120,23,142,28,190,69,250,104,116,6,96,69,168,108,27,67,77,236,187,66,25,158,38,151,201,131,109,22,53,163,146,160,52,196,20,106,22,179,12,48,221,80,93,115,60,211,148,103,60,166,62,6,34,79,50,128,138,201,233,113,178,243,147,176,160,135,243,26,28,242,33,207,232,196,225,22,158,16,152,31,246,237,195,183,223,5,255,10,175,126,4,255,89,197,222,199,86,160,230,153,215,131,5,248,22,225,108,26,208,120,178,22,164,27,6,26,123,38,38,161,120,244,202,99,125,226,113,144,222,250,160,91,62,246,193,194,69,43,200,24,226,234,231,163,85,40,196,18,201,130,81,131,130,58,155,200,87,30,228,26,39,186,198,160,192,154,190,147,129,133,38,29,125,30,178,151,134,105,100,129,255,121,107,53,193,82,137,113,35,37,66,236,11,215,106,81,160,14,128,144,203,252,2,235,241,233,228,77,51,93,37,47,112,66,14,208,159,231,214,197,129,38,82,120,106,2,133,183,51,160,173,162,203,251,233,190,24,248,49,5,68,76,226,83,131,69,152,101,45,251,152,123,185,132,147,27,75,39,43,148,107,151,128],[249,2,17,160,203,155,95,87,117,89,227,1,217,141,101,249,141,158,153,95,57,45,108,7,84,133,182,147,7,139,122,231,21,23,226,103,160,188,163,150,57,80,114,215,193,143,127,89,221,62,221,86,183,127,100,168,107,42,49,189,156,105,218,5,224,92,189,172,181,160,189,200,185,43,254,21,61,66,80,169,111,67,41,173,87,178,122,36,149,1,252,148,74,183,75,215,140,190,247,233,157,166,160,90,232,38,248,218,244,187,228,128,210,102,136,44,231,95,36,18,93,232,21,115,141,9,150,218,2,176,12,32,51,14,6,160,73,83,206,253,141,54,4,255,244,59,102,75,250,181,149,232,147,36,0,75,62,69,224,82,190,115,134,87,40,76,145,41,160,160,208,52,138,80,98,153,103,185,255,188,140,179,114,176,55,52,0,6,124,26,160,219,69,77,232,122,138,28,234,140,144,160,188,24,14,57,108,199,179,93,67,114,38,247,227,100,73,16,77,120,28,98,134,184,51,71,55,110,175,63,160,225,134,78,160,27,55,98,183,253,202,203,218,14,22,157,190,199,110,222,197,246,96,225,222,217,24,126,129,158,219,129,57,35,51,176,126,160,165,120,23,142,28,190,69,250,104,116,6,96,69,168,108,27,67,77,236,187,66,25,158,38,151,201,131,109,22,53,163,146,160,52,196,20,106,22,179,12,48,221,80,93,115,60,211,148,103,60,166,62,6,34,79,50,128,138,201,233,113,178,243,147,176,160,135,243,26,28,242,33,207,232,196,225,22,158,16,152,31,246,237,195,183,223,5,255,10,175,126,4,255,89,197,222,199,86,160,230,153,215,131,5,248,22,225,108,26,208,120,178,22,164,27,6,26,123,38,38,161,120,244,202,99,125,226,113,144,222,250,160,91,62,246,193,194,69,43,200,24,226,234,231,163,85,40,196,18,201,130,81,131,130,58,155,200,87,30,228,26,39,186,198,160,192,154,190,147,129,133,38,29,125,30,178,151,134,105,100,129,255,121,107,53,193,82,137,113,35,37,66,236,11,215,106,81,160,14,128,144,203,252,2,235,241,233,228,77,51,93,37,47,112,66,14,208,159,231,214,197,129,38,82,120,106,2,133,183,51,160,173,162,203,251,233,190,24,248,49,5,68,76,226,83,131,69,152,101,45,251,152,123,185,132,147,27,75,39,43,148,107,151,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,249,198,7,73,147,155,130,236,110,233,250,185,153,190,11,87,56,236,212,244,47,6,162,186,237,57,142,126,149,65,178,70,0],[160,18,101,131,99,126,62,177,176,175,227,126,135,118,209,104,15,94,158,126,16,229,198,137,117,11,34,35,62,178,30,163,248,0],[160,123,77,145,2,49,149,132,119,66,128,99,180,104,48,205,73,38,111,127,154,84,105,17,109,172,41,1,167,138,149,41,197,0],[160,228,84,196,109,225,221,106,213,221,42,103,185,196,80,28,44,45,200,105,40,150,222,61,195,209,95,113,249,176,40,5,63,0],[160,57,180,21,162,82,214,201,178,13,24,168,146,173,64,220,156,111,23,92,99,128,86,239,146,141,16,164,32,61,228,24,252,0],[160,221,77,220,77,60,8,208,125,197,94,117,28,51,186,182,146,218,106,153,242,157,130,65,8,93,181,176,201,61,217,226,188,0],[160,95,59,244,69,176,194,201,31,125,255,220,28,103,214,148,154,127,99,26,109,173,66,52,23,1,60,147,162,80,99,188,236,0],[160,94,6,112,250,23,8,104,209,124,72,179,6,84,228,243,196,51,255,70,178,198,180,66,149,151,64,224,175,184,51,212,48,0],[160,11,201,156,205,193,219,63,118,255,224,240,48,231,49,122,209,244,250,224,94,216,123,40,54,116,186,221,227,221,132,216,67,0],[160,136,9,150,131,203,52,228,56,242,25,217,67,235,8,215,182,31,74,211,94,217,79,209,16,4,192,28,235,93,231,96,76,0],[160,119,104,63,90,18,237,89,22,227,96,42,219,237,100,73,197,72,104,91,52,37,89,25,160,55,192,131,58,199,46,60,131,0],[160,46,149,72,144,169,206,96,227,113,138,83,174,178,221,89,8,175,2,33,252,13,164,190,189,77,38,2,91,18,127,213,65,0],[160,95,216,69,179,165,202,5,147,92,56,127,225,44,221,125,249,123,220,22,5,61,232,19,189,232,214,54,125,115,119,201,172,0],[160,224,113,151,12,186,75,55,144,38,209,227,30,34,228,208,27,169,96,0,12,185,6,253,244,23,85,210,94,36,160,84,233,0],[160,123,185,21,96,91,242,200,150,30,108,158,68,137,183,154,165,141,137,69,61,111,69,151,124,135,96,47,189,159,197,141,109,0],[160,125,71,101,150,240,123,112,189,178,113,195,130,32,119,90,72,75,26,27,13,156,155,85,206,217,59,26,71,93,158,39,71,0],[160,187,234,38,148,78,204,38,226,195,40,135,117,172,91,176,90,44,64,115,127,44,5,223,121,204,177,224,6,72,69,219,52,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,18,101,131,99,126,62,177,176,175,227,126,135,118,209,104,15,94,158,126,16,229,198,137,117,11,34,35,62,178,30,163,248,160,123,77,145,2,49,149,132,119,66,128,99,180,104,48,205,73,38,111,127,154,84,105,17,109,172,41,1,167,138,149,41,197,160,228,84,196,109,225,221,106,213,221,42,103,185,196,80,28,44,45,200,105,40,150,222,61,195,209,95,113,249,176,40,5,63,160,57,180,21,162,82,214,201,178,13,24,168,146,173,64,220,156,111,23,92,99,128,86,239,146,141,16,164,32,61,228,24,252,160,221,77,220,77,60,8,208,125,197,94,117,28,51,186,182,146,218,106,153,242,157,130,65,8,93,181,176,201,61,217,226,188,160,95,59,244,69,176,194,201,31,125,255,220,28,103,214,148,154,127,99,26,109,173,66,52,23,1,60,147,162,80,99,188,236,160,94,6,112,250,23,8,104,209,124,72,179,6,84,228,243,196,51,255,70,178,198,180,66,149,151,64,224,175,184,51,212,48,160,11,201,156,205,193,219,63,118,255,224,240,48,231,49,122,209,244,250,224,94,216,123,40,54,116,186,221,227,221,132,216,67,160,136,9,150,131,203,52,228,56,242,25,217,67,235,8,215,182,31,74,211,94,217,79,209,16,4,192,28,235,93,231,96,76,160,119,104,63,90,18,237,89,22,227,96,42,219,237,100,73,197,72,104,91,52,37,89,25,160,55,192,131,58,199,46,60,131,160,46,149,72,144,169,206,96,227,113,138,83,174,178,221,89,8,175,2,33,252,13,164,190,189,77,38,2,91,18,127,213,65,160,95,216,69,179,165,202,5,147,92,56,127,225,44,221,125,249,123,220,22,5,61,232,19,189,232,214,54,125,115,119,201,172,160,224,113,151,12,186,75,55,144,38,209,227,30,34,228,208,27,169,96,0,12,185,6,253,244,23,85,210,94,36,160,84,233,160,123,185,21,96,91,242,200,150,30,108,158,68,137,183,154,165,141,137,69,61,111,69,151,124,135,96,47,189,159,197,141,109,160,125,71,101,150,240,123,112,189,178,113,195,130,32,119,90,72,75,26,27,13,156,155,85,206,217,59,26,71,93,158,39,71,160,187,234,38,148,78,204,38,226,195,40,135,117,172,91,176,90,44,64,115,127,44,5,223,121,204,177,224,6,72,69,219,52,128],[249,2,17,160,18,101,131,99,126,62,177,176,175,227,126,135,118,209,104,15,94,158,126,16,229,198,137,117,11,34,35,62,178,30,163,248,160,123,77,145,2,49,149,132,119,66,128,99,180,104,48,205,73,38,111,127,154,84,105,17,109,172,41,1,167,138,149,41,197,160,228,84,196,109,225,221,106,213,221,42,103,185,196,80,28,44,45,200,105,40,150,222,61,195,209,95,113,249,176,40,5,63,160,57,180,21,162,82,214,201,178,13,24,168,146,173,64,220,156,111,23,92,99,128,86,239,146,141,16,164,32,61,228,24,252,160,221,77,220,77,60,8,208,125,197,94,117,28,51,186,182,146,218,106,153,242,157,130,65,8,93,181,176,201,61,217,226,188,160,95,59,244,69,176,194,201,31,125,255,220,28,103,214,148,154,127,99,26,109,173,66,52,23,1,60,147,162,80,99,188,236,160,94,6,112,250,23,8,104,209,124,72,179,6,84,228,243,196,51,255,70,178,198,180,66,149,151,64,224,175,184,51,212,48,160,11,201,156,205,193,219,63,118,255,224,240,48,231,49,122,209,244,250,224,94,216,123,40,54,116,186,221,227,221,132,216,67,160,136,9,150,131,203,52,228,56,242,25,217,67,235,8,215,182,31,74,211,94,217,79,209,16,4,192,28,235,93,231,96,76,160,119,104,63,90,18,237,89,22,227,96,42,219,237,100,73,197,72,104,91,52,37,89,25,160,55,192,131,58,199,46,60,131,160,249,198,7,73,147,155,130,236,110,233,250,185,153,190,11,87,56,236,212,244,47,6,162,186,237,57,142,126,149,65,178,70,160,95,216,69,179,165,202,5,147,92,56,127,225,44,221,125,249,123,220,22,5,61,232,19,189,232,214,54,125,115,119,201,172,160,224,113,151,12,186,75,55,144,38,209,227,30,34,228,208,27,169,96,0,12,185,6,253,244,23,85,210,94,36,160,84,233,160,123,185,21,96,91,242,200,150,30,108,158,68,137,183,154,165,141,137,69,61,111,69,151,124,135,96,47,189,159,197,141,109,160,125,71,101,150,240,123,112,189,178,113,195,130,32,119,90,72,75,26,27,13,156,155,85,206,217,59,26,71,93,158,39,71,160,187,234,38,148,78,204,38,226,195,40,135,117,172,91,176,90,44,64,115,127,44,5,223,121,204,177,224,6,72,69,219,52,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,150,255,246,62,128,198,219,153,242,50,85,231,93,85,28,248,252,70,153,217,105,131,168,90,238,155,91,11,216,140,74,190,0],[160,242,2,171,154,117,67,183,250,218,253,33,96,220,233,103,151,143,248,43,219,201,31,152,207,250,11,159,89,205,184,172,92,0],[160,94,62,196,11,252,4,219,198,190,74,155,51,246,207,218,67,129,63,216,218,72,175,172,224,137,160,96,134,226,114,47,195,0],[160,220,79,232,150,202,231,168,173,188,255,225,151,144,139,249,219,36,187,29,212,214,185,0,192,68,162,52,233,73,225,122,150,0],[160,229,205,66,75,137,233,239,158,213,31,184,170,113,28,14,95,228,163,230,217,44,59,83,57,45,154,53,190,19,59,10,63,0],[160,171,173,13,119,118,83,126,195,155,168,160,114,190,126,19,0,84,155,235,249,230,181,166,24,244,51,220,204,19,15,51,175,0],[160,201,73,106,93,160,10,118,123,25,90,105,19,47,135,130,153,156,207,226,225,15,82,27,135,61,128,220,184,17,94,110,177,0],[160,218,168,9,97,183,136,161,198,224,221,17,71,51,108,207,121,212,149,178,73,190,222,141,247,213,242,255,160,26,176,77,38,0],[160,237,119,82,16,183,65,62,159,240,179,19,26,11,16,44,3,64,168,63,74,10,78,71,227,186,142,190,205,186,207,49,142,0],[160,42,172,54,189,75,55,223,72,136,29,3,141,155,14,149,66,142,84,189,114,127,187,100,248,43,189,196,167,36,181,231,7,0],[160,73,154,87,78,68,23,198,202,125,208,225,65,212,131,176,106,241,32,205,89,118,198,78,65,255,246,17,251,230,38,180,236,0],[160,142,157,77,137,233,28,128,1,129,145,213,117,190,4,183,43,124,147,234,128,39,139,110,130,234,77,212,116,237,195,2,242,0],[160,59,123,38,31,102,144,63,66,145,71,139,212,180,12,124,51,51,181,240,42,222,34,158,243,223,202,217,39,232,24,241,83,0],[160,52,42,172,218,151,94,170,154,240,82,182,191,125,158,101,53,25,212,36,121,118,213,118,40,134,35,5,201,97,224,22,73,0],[160,32,77,63,202,20,30,148,131,246,63,206,1,161,162,223,229,161,170,188,254,98,253,74,34,74,125,81,92,75,54,220,104,0],[160,131,64,211,54,20,43,128,119,87,143,37,137,121,203,178,221,254,49,45,173,187,29,137,12,193,227,248,236,92,54,110,1,0],[160,213,68,36,157,232,139,139,48,229,98,150,111,106,139,2,105,167,209,229,52,203,82,2,192,190,108,27,204,227,211,133,144,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,242,2,171,154,117,67,183,250,218,253,33,96,220,233,103,151,143,248,43,219,201,31,152,207,250,11,159,89,205,184,172,92,160,94,62,196,11,252,4,219,198,190,74,155,51,246,207,218,67,129,63,216,218,72,175,172,224,137,160,96,134,226,114,47,195,160,220,79,232,150,202,231,168,173,188,255,225,151,144,139,249,219,36,187,29,212,214,185,0,192,68,162,52,233,73,225,122,150,160,229,205,66,75,137,233,239,158,213,31,184,170,113,28,14,95,228,163,230,217,44,59,83,57,45,154,53,190,19,59,10,63,160,171,173,13,119,118,83,126,195,155,168,160,114,190,126,19,0,84,155,235,249,230,181,166,24,244,51,220,204,19,15,51,175,160,201,73,106,93,160,10,118,123,25,90,105,19,47,135,130,153,156,207,226,225,15,82,27,135,61,128,220,184,17,94,110,177,160,218,168,9,97,183,136,161,198,224,221,17,71,51,108,207,121,212,149,178,73,190,222,141,247,213,242,255,160,26,176,77,38,160,237,119,82,16,183,65,62,159,240,179,19,26,11,16,44,3,64,168,63,74,10,78,71,227,186,142,190,205,186,207,49,142,160,42,172,54,189,75,55,223,72,136,29,3,141,155,14,149,66,142,84,189,114,127,187,100,248,43,189,196,167,36,181,231,7,160,73,154,87,78,68,23,198,202,125,208,225,65,212,131,176,106,241,32,205,89,118,198,78,65,255,246,17,251,230,38,180,236,160,142,157,77,137,233,28,128,1,129,145,213,117,190,4,183,43,124,147,234,128,39,139,110,130,234,77,212,116,237,195,2,242,160,59,123,38,31,102,144,63,66,145,71,139,212,180,12,124,51,51,181,240,42,222,34,158,243,223,202,217,39,232,24,241,83,160,52,42,172,218,151,94,170,154,240,82,182,191,125,158,101,53,25,212,36,121,118,213,118,40,134,35,5,201,97,224,22,73,160,32,77,63,202,20,30,148,131,246,63,206,1,161,162,223,229,161,170,188,254,98,253,74,34,74,125,81,92,75,54,220,104,160,131,64,211,54,20,43,128,119,87,143,37,137,121,203,178,221,254,49,45,173,187,29,137,12,193,227,248,236,92,54,110,1,160,213,68,36,157,232,139,139,48,229,98,150,111,106,139,2,105,167,209,229,52,203,82,2,192,190,108,27,204,227,211,133,144,128],[249,2,17,160,242,2,171,154,117,67,183,250,218,253,33,96,220,233,103,151,143,248,43,219,201,31,152,207,250,11,159,89,205,184,172,92,160,94,62,196,11,252,4,219,198,190,74,155,51,246,207,218,67,129,63,216,218,72,175,172,224,137,160,96,134,226,114,47,195,160,220,79,232,150,202,231,168,173,188,255,225,151,144,139,249,219,36,187,29,212,214,185,0,192,68,162,52,233,73,225,122,150,160,150,255,246,62,128,198,219,153,242,50,85,231,93,85,28,248,252,70,153,217,105,131,168,90,238,155,91,11,216,140,74,190,160,171,173,13,119,118,83,126,195,155,168,160,114,190,126,19,0,84,155,235,249,230,181,166,24,244,51,220,204,19,15,51,175,160,201,73,106,93,160,10,118,123,25,90,105,19,47,135,130,153,156,207,226,225,15,82,27,135,61,128,220,184,17,94,110,177,160,218,168,9,97,183,136,161,198,224,221,17,71,51,108,207,121,212,149,178,73,190,222,141,247,213,242,255,160,26,176,77,38,160,237,119,82,16,183,65,62,159,240,179,19,26,11,16,44,3,64,168,63,74,10,78,71,227,186,142,190,205,186,207,49,142,160,42,172,54,189,75,55,223,72,136,29,3,141,155,14,149,66,142,84,189,114,127,187,100,248,43,189,196,167,36,181,231,7,160,73,154,87,78,68,23,198,202,125,208,225,65,212,131,176,106,241,32,205,89,118,198,78,65,255,246,17,251,230,38,180,236,160,142,157,77,137,233,28,128,1,129,145,213,117,190,4,183,43,124,147,234,128,39,139,110,130,234,77,212,116,237,195,2,242,160,59,123,38,31,102,144,63,66,145,71,139,212,180,12,124,51,51,181,240,42,222,34,158,243,223,202,217,39,232,24,241,83,160,52,42,172,218,151,94,170,154,240,82,182,191,125,158,101,53,25,212,36,121,118,213,118,40,134,35,5,201,97,224,22,73,160,32,77,63,202,20,30,148,131,246,63,206,1,161,162,223,229,161,170,188,254,98,253,74,34,74,125,81,92,75,54,220,104,160,131,64,211,54,20,43,128,119,87,143,37,137,121,203,178,221,254,49,45,173,187,29,137,12,193,227,248,236,92,54,110,1,160,213,68,36,157,232,139,139,48,229,98,150,111,106,139,2,105,167,209,229,52,203,82,2,192,190,108,27,204,227,211,133,144,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,77,43,135,12,47,105,172,239,71,1,29,239,104,51,139,237,241,152,22,72,230,70,71,100,172,70,142,223,123,247,139,53,0],[160,225,232,51,165,157,149,214,172,159,91,52,197,92,79,27,34,18,214,233,102,92,19,214,91,32,116,131,121,228,212,45,173,0],[160,186,231,194,219,141,216,81,127,112,19,44,4,197,255,156,246,56,53,192,172,81,0,190,171,131,183,207,225,157,5,205,203,0],[160,5,37,120,149,32,224,148,140,41,239,6,196,60,15,198,63,169,180,108,45,160,224,159,181,133,158,91,197,190,154,203,10,0],[160,206,41,225,167,22,123,70,153,72,9,218,77,191,79,238,156,75,60,222,100,52,133,96,110,170,182,93,140,189,66,45,239,0],[160,44,152,168,61,56,222,129,36,0,209,174,69,227,181,236,79,151,11,103,49,153,203,205,62,215,37,210,216,30,204,184,239,0],[160,157,132,195,214,126,178,154,131,217,152,109,121,6,103,197,126,44,188,216,167,153,198,208,113,235,8,85,231,177,226,61,117,0],[160,144,228,135,93,42,239,76,219,45,190,35,101,156,189,124,220,215,186,245,209,99,192,154,77,168,214,179,29,1,155,200,134,0],[160,192,120,30,76,123,195,21,17,192,189,151,231,243,167,107,75,8,30,49,20,146,46,20,236,164,183,35,0,78,4,126,83,0],[160,211,177,15,128,75,240,250,199,98,147,192,74,184,207,230,94,146,40,86,160,2,77,225,77,192,140,56,244,155,92,206,232,0],[160,173,25,97,151,4,14,250,193,102,223,32,217,175,89,167,237,209,24,122,69,121,79,52,130,12,5,168,192,23,40,137,235,0],[160,137,64,183,69,124,15,95,148,156,197,5,103,87,251,140,6,99,53,127,206,1,232,43,229,156,255,7,243,225,97,131,126,0],[160,179,253,144,148,128,37,142,180,177,255,1,66,190,186,243,213,157,165,10,255,107,128,127,167,193,163,167,161,122,77,89,125,0],[160,241,128,172,157,189,54,79,20,246,136,62,239,208,239,44,44,50,16,212,4,94,187,29,162,200,16,139,228,29,143,243,146,0],[160,102,10,219,89,69,53,202,19,147,75,79,217,149,73,63,22,38,222,90,158,146,32,5,145,248,86,183,195,230,207,33,75,0],[160,223,212,45,62,78,73,59,224,92,164,146,215,86,0,81,183,118,204,100,114,26,15,133,36,201,52,85,71,51,180,34,185,0],[160,228,216,210,49,162,105,158,82,165,38,198,174,140,67,178,57,230,168,65,109,207,201,158,221,86,140,92,9,99,107,97,46,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,225,232,51,165,157,149,214,172,159,91,52,197,92,79,27,34,18,214,233,102,92,19,214,91,32,116,131,121,228,212,45,173,160,186,231,194,219,141,216,81,127,112,19,44,4,197,255,156,246,56,53,192,172,81,0,190,171,131,183,207,225,157,5,205,203,160,5,37,120,149,32,224,148,140,41,239,6,196,60,15,198,63,169,180,108,45,160,224,159,181,133,158,91,197,190,154,203,10,160,206,41,225,167,22,123,70,153,72,9,218,77,191,79,238,156,75,60,222,100,52,133,96,110,170,182,93,140,189,66,45,239,160,44,152,168,61,56,222,129,36,0,209,174,69,227,181,236,79,151,11,103,49,153,203,205,62,215,37,210,216,30,204,184,239,160,157,132,195,214,126,178,154,131,217,152,109,121,6,103,197,126,44,188,216,167,153,198,208,113,235,8,85,231,177,226,61,117,160,144,228,135,93,42,239,76,219,45,190,35,101,156,189,124,220,215,186,245,209,99,192,154,77,168,214,179,29,1,155,200,134,160,192,120,30,76,123,195,21,17,192,189,151,231,243,167,107,75,8,30,49,20,146,46,20,236,164,183,35,0,78,4,126,83,160,211,177,15,128,75,240,250,199,98,147,192,74,184,207,230,94,146,40,86,160,2,77,225,77,192,140,56,244,155,92,206,232,160,173,25,97,151,4,14,250,193,102,223,32,217,175,89,167,237,209,24,122,69,121,79,52,130,12,5,168,192,23,40,137,235,160,137,64,183,69,124,15,95,148,156,197,5,103,87,251,140,6,99,53,127,206,1,232,43,229,156,255,7,243,225,97,131,126,160,179,253,144,148,128,37,142,180,177,255,1,66,190,186,243,213,157,165,10,255,107,128,127,167,193,163,167,161,122,77,89,125,160,241,128,172,157,189,54,79,20,246,136,62,239,208,239,44,44,50,16,212,4,94,187,29,162,200,16,139,228,29,143,243,146,160,102,10,219,89,69,53,202,19,147,75,79,217,149,73,63,22,38,222,90,158,146,32,5,145,248,86,183,195,230,207,33,75,160,223,212,45,62,78,73,59,224,92,164,146,215,86,0,81,183,118,204,100,114,26,15,133,36,201,52,85,71,51,180,34,185,160,228,216,210,49,162,105,158,82,165,38,198,174,140,67,178,57,230,168,65,109,207,201,158,221,86,140,92,9,99,107,97,46,128],[249,2,17,160,225,232,51,165,157,149,214,172,159,91,52,197,92,79,27,34,18,214,233,102,92,19,214,91,32,116,131,121,228,212,45,173,160,186,231,194,219,141,216,81,127,112,19,44,4,197,255,156,246,56,53,192,172,81,0,190,171,131,183,207,225,157,5,205,203,160,5,37,120,149,32,224,148,140,41,239,6,196,60,15,198,63,169,180,108,45,160,224,159,181,133,158,91,197,190,154,203,10,160,206,41,225,167,22,123,70,153,72,9,218,77,191,79,238,156,75,60,222,100,52,133,96,110,170,182,93,140,189,66,45,239,160,77,43,135,12,47,105,172,239,71,1,29,239,104,51,139,237,241,152,22,72,230,70,71,100,172,70,142,223,123,247,139,53,160,157,132,195,214,126,178,154,131,217,152,109,121,6,103,197,126,44,188,216,167,153,198,208,113,235,8,85,231,177,226,61,117,160,144,228,135,93,42,239,76,219,45,190,35,101,156,189,124,220,215,186,245,209,99,192,154,77,168,214,179,29,1,155,200,134,160,192,120,30,76,123,195,21,17,192,189,151,231,243,167,107,75,8,30,49,20,146,46,20,236,164,183,35,0,78,4,126,83,160,211,177,15,128,75,240,250,199,98,147,192,74,184,207,230,94,146,40,86,160,2,77,225,77,192,140,56,244,155,92,206,232,160,173,25,97,151,4,14,250,193,102,223,32,217,175,89,167,237,209,24,122,69,121,79,52,130,12,5,168,192,23,40,137,235,160,137,64,183,69,124,15,95,148,156,197,5,103,87,251,140,6,99,53,127,206,1,232,43,229,156,255,7,243,225,97,131,126,160,179,253,144,148,128,37,142,180,177,255,1,66,190,186,243,213,157,165,10,255,107,128,127,167,193,163,167,161,122,77,89,125,160,241,128,172,157,189,54,79,20,246,136,62,239,208,239,44,44,50,16,212,4,94,187,29,162,200,16,139,228,29,143,243,146,160,102,10,219,89,69,53,202,19,147,75,79,217,149,73,63,22,38,222,90,158,146,32,5,145,248,86,183,195,230,207,33,75,160,223,212,45,62,78,73,59,224,92,164,146,215,86,0,81,183,118,204,100,114,26,15,133,36,201,52,85,71,51,180,34,185,160,228,216,210,49,162,105,158,82,165,38,198,174,140,67,178,57,230,168,65,109,207,201,158,221,86,140,92,9,99,107,97,46,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[249,1,81],[249,1,81]]}},"account":null,"storage":null,"values":[[160,16,238,121,221,8,62,255,126,145,187,203,63,109,185,49,237,238,210,95,212,103,236,254,204,149,141,220,207,87,115,159,117,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,126,89,243,163,251,3,42,80,28,227,221,179,112,180,6,58,46,112,97,57,250,199,36,99,83,92,22,81,68,105,251,253,0],[160,222,135,108,9,125,128,158,39,223,159,120,131,119,128,75,223,82,85,111,166,60,55,62,106,33,237,97,88,171,251,110,83,0],[160,238,20,66,157,50,235,164,218,147,118,186,198,235,147,24,94,48,180,79,119,68,82,203,50,235,129,116,45,59,90,227,198,0],[160,200,98,184,237,83,92,112,182,117,142,212,216,62,48,72,251,95,237,24,207,177,248,104,246,147,248,219,150,222,77,63,81,0],[160,40,35,69,178,99,44,6,12,126,7,150,179,188,212,149,193,218,249,148,224,100,55,136,115,8,195,205,107,201,168,139,61,0],[160,29,115,216,229,14,147,21,18,226,132,84,216,185,235,81,186,128,168,30,61,56,41,88,179,171,177,190,243,130,49,168,45,0],[160,202,151,152,210,74,58,69,175,88,49,120,106,204,230,130,103,14,132,65,172,174,65,17,11,240,205,119,236,4,0,118,164,0],[160,214,147,34,2,67,220,5,60,110,112,134,199,90,244,11,47,150,74,66,234,181,224,162,27,126,30,214,228,102,189,59,58,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,170,50,109,146,183,123,238,90,8,191,231,253,106,24,164,181,231,48,100,133,99,115,153,95,87,85,217,182,119,149,98,210,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,160,115,126,112,147,196,136,28,15,150,162,92,47,205,78,44,227,63,239,211,17,100,85,208,222,189,246,240,192,14,141,34,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,81,128,128,160,126,89,243,163,251,3,42,80,28,227,221,179,112,180,6,58,46,112,97,57,250,199,36,99,83,92,22,81,68,105,251,253,160,222,135,108,9,125,128,158,39,223,159,120,131,119,128,75,223,82,85,111,166,60,55,62,106,33,237,97,88,171,251,110,83,160,238,20,66,157,50,235,164,218,147,118,186,198,235,147,24,94,48,180,79,119,68,82,203,50,235,129,116,45,59,90,227,198,160,200,98,184,237,83,92,112,182,117,142,212,216,62,48,72,251,95,237,24,207,177,248,104,246,147,248,219,150,222,77,63,81,160,40,35,69,178,99,44,6,12,126,7,150,179,188,212,149,193,218,249,148,224,100,55,136,115,8,195,205,107,201,168,139,61,160,29,115,216,229,14,147,21,18,226,132,84,216,185,235,81,186,128,168,30,61,56,41,88,179,171,177,190,243,130,49,168,45,160,202,151,152,210,74,58,69,175,88,49,120,106,204,230,130,103,14,132,65,172,174,65,17,11,240,205,119,236,4,0,118,164,160,214,147,34,2,67,220,5,60,110,112,134,199,90,244,11,47,150,74,66,234,181,224,162,27,126,30,214,228,102,189,59,58,128,160,170,50,109,146,183,123,238,90,8,191,231,253,106,24,164,181,231,48,100,133,99,115,153,95,87,85,217,182,119,149,98,210,128,128,160,160,115,126,112,147,196,136,28,15,150,162,92,47,205,78,44,227,63,239,211,17,100,85,208,222,189,246,240,192,14,141,34,128,128],[249,1,81,128,128,160,126,89,243,163,251,3,42,80,28,227,221,179,112,180,6,58,46,112,97,57,250,199,36,99,83,92,22,81,68,105,251,253,160,222,135,108,9,125,128,158,39,223,159,120,131,119,128,75,223,82,85,111,166,60,55,62,106,33,237,97,88,171,251,110,83,160,238,20,66,157,50,235,164,218,147,118,186,198,235,147,24,94,48,180,79,119,68,82,203,50,235,129,116,45,59,90,227,198,160,200,98,184,237,83,92,112,182,117,142,212,216,62,48,72,251,95,237,24,207,177,248,104,246,147,248,219,150,222,77,63,81,160,40,35,69,178,99,44,6,12,126,7,150,179,188,212,149,193,218,249,148,224,100,55,136,115,8,195,205,107,201,168,139,61,160,29,115,216,229,14,147,21,18,226,132,84,216,185,235,81,186,128,168,30,61,56,41,88,179,171,177,190,243,130,49,168,45,160,202,151,152,210,74,58,69,175,88,49,120,106,204,230,130,103,14,132,65,172,174,65,17,11,240,205,119,236,4,0,118,164,160,16,238,121,221,8,62,255,126,145,187,203,63,109,185,49,237,238,210,95,212,103,236,254,204,149,141,220,207,87,115,159,117,128,160,170,50,109,146,183,123,238,90,8,191,231,253,106,24,164,181,231,48,100,133,99,115,153,95,87,85,217,182,119,149,98,210,128,128,160,160,115,126,112,147,196,136,28,15,150,162,92,47,205,78,44,227,63,239,211,17,100,85,208,222,189,246,240,192,14,141,34,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,139,75,142,149,216,208,148,103,91,226,208,1,78,92,83,171,125,72,209,252,218,96,83,186,9,180,55,154,126,131,102,247,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,64,47,191,0,189,168,195,89,129,204,127,203,58,8,34,179,83,126,228,51,194,75,211,252,10,168,112,171,164,121,200,180,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,91,4,66,187,249,23,104,33,122,237,229,16,188,109,90,154,129,145,99,109,134,186,14,229,72,90,153,34,238,156,211,107,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,128,128,128,128,160,64,47,191,0,189,168,195,89,129,204,127,203,58,8,34,179,83,126,228,51,194,75,211,252,10,168,112,171,164,121,200,180,128,160,91,4,66,187,249,23,104,33,122,237,229,16,188,109,90,154,129,145,99,109,134,186,14,229,72,90,153,34,238,156,211,107,128,128],[248,81,128,128,128,128,128,128,128,128,128,128,128,128,160,64,47,191,0,189,168,195,89,129,204,127,203,58,8,34,179,83,126,228,51,194,75,211,252,10,168,112,171,164,121,200,180,128,160,139,75,142,149,216,208,148,103,91,226,208,1,78,92,83,171,125,72,209,252,218,96,83,186,9,180,55,154,126,131,102,247,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,172,239,18,160,24,140,50,179,108,87,149,120,38,223,78,36,232,177,156],"key":[240,122,52,158,98,115,194,37,21,136,10,199,128,184,179,154,98,246,29,99,101,194,196,151,203,221,118,74,72,36,144,3],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,32,98,115,194,37,21,136,10,199,128,184,179,154,98,246,29,99,101,194,196,151,203,221,118,74,72,36,144,3,0,0,0,0],[157,32,98,115,194,37,21,136,10,199,128,184,179,154,98,246,29,99,101,194,196,151,203,221,118,74,72,36,144,3,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,171,42,78,18,177,180,238,153,179,59,19,204,42,191,99,67,34,13,186,150,182,248,85,246,203,5,78,100,66,177,67,87,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,34,9,26,236,216,126,38,97,246,26,239,6,34,40,56,116,94,219,126,222,203,231,92,185,208,129,161,103,150,61,141,219,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,32,98,115,194,37,21,136,10,199,128,184,179,154,98,246,29,99,101,194,196,151,203,221,118,74,72,36,144,3,0,0,0,0]],"keccak_data":[[248,102,157,32,98,115,194,37,21,136,10,199,128,184,179,154,98,246,29,99,101,194,196,151,203,221,118,74,72,36,144,3,184,70,248,68,128,128,160,171,42,78,18,177,180,238,153,179,59,19,204,42,191,99,67,34,13,186,150,182,248,85,246,203,5,78,100,66,177,67,87,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,32,98,115,194,37,21,136,10,199,128,184,179,154,98,246,29,99,101,194,196,151,203,221,118,74,72,36,144,3,184,70,248,68,128,128,160,34,9,26,236,216,126,38,97,246,26,239,6,34,40,56,116,94,219,126,222,203,231,92,185,208,129,161,103,150,61,141,219,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,172,239,18,160,24,140,50,179,108,87,149,120,38,223,78,36,232,177,156]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,231,160,23,201,249,252,202,208,4,42,135,61,223,37,20,185,3,139,114,22,224,137,147,165,217,172,117,125,92,148,248,132,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,7,210,6,255,67,175,247,92,102,119,156,229,123,247,194,190,248,169,147,67,112,228,154,4,214,23,1,30,152,5,1,0,0],[160,242,254,41,131,38,96,21,41,126,30,91,249,131,36,111,64,224,241,229,178,113,57,239,46,136,233,110,147,142,224,163,98,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,44,101,202,123,117,60,149,140,142,80,214,32,183,9,26,179,182,230,122,9,227,114,154,52,86,1,122,19,222,101,80,92,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,183,34,40,197,3,177,131,161,151,115,230,143,54,203,227,126,69,21,200,61,67,25,71,98,51,70,73,110,193,44,182,205,0],[160,208,116,0,207,60,219,204,112,114,205,139,82,193,67,203,232,157,82,114,88,223,37,91,64,78,124,132,37,192,7,43,127,0],[160,182,125,33,138,97,61,106,190,138,58,144,68,124,174,73,226,238,104,187,197,11,41,28,224,16,0,203,207,23,97,33,46,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,40,71,220,92,25,123,66,96,16,179,122,36,197,85,99,143,54,156,208,167,218,100,73,177,18,208,111,117,95,216,31,77,0],[160,66,91,45,217,134,150,81,45,245,31,24,58,119,203,119,107,48,102,62,20,28,198,137,102,97,85,147,86,30,84,207,213,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,128,128,160,7,210,6,255,67,175,247,92,102,119,156,229,123,247,194,190,248,169,147,67,112,228,154,4,214,23,1,30,152,5,1,0,160,242,254,41,131,38,96,21,41,126,30,91,249,131,36,111,64,224,241,229,178,113,57,239,46,136,233,110,147,142,224,163,98,128,160,44,101,202,123,117,60,149,140,142,80,214,32,183,9,26,179,182,230,122,9,227,114,154,52,86,1,122,19,222,101,80,92,128,160,183,34,40,197,3,177,131,161,151,115,230,143,54,203,227,126,69,21,200,61,67,25,71,98,51,70,73,110,193,44,182,205,160,208,116,0,207,60,219,204,112,114,205,139,82,193,67,203,232,157,82,114,88,223,37,91,64,78,124,132,37,192,7,43,127,160,182,125,33,138,97,61,106,190,138,58,144,68,124,174,73,226,238,104,187,197,11,41,28,224,16,0,203,207,23,97,33,46,128,128,160,40,71,220,92,25,123,66,96,16,179,122,36,197,85,99,143,54,156,208,167,218,100,73,177,18,208,111,117,95,216,31,77,160,66,91,45,217,134,150,81,45,245,31,24,58,119,203,119,107,48,102,62,20,28,198,137,102,97,85,147,86,30,84,207,213,128,128,128],[249,1,17,128,128,160,7,210,6,255,67,175,247,92,102,119,156,229,123,247,194,190,248,169,147,67,112,228,154,4,214,23,1,30,152,5,1,0,160,242,254,41,131,38,96,21,41,126,30,91,249,131,36,111,64,224,241,229,178,113,57,239,46,136,233,110,147,142,224,163,98,128,160,44,101,202,123,117,60,149,140,142,80,214,32,183,9,26,179,182,230,122,9,227,114,154,52,86,1,122,19,222,101,80,92,128,160,183,34,40,197,3,177,131,161,151,115,230,143,54,203,227,126,69,21,200,61,67,25,71,98,51,70,73,110,193,44,182,205,160,208,116,0,207,60,219,204,112,114,205,139,82,193,67,203,232,157,82,114,88,223,37,91,64,78,124,132,37,192,7,43,127,160,182,125,33,138,97,61,106,190,138,58,144,68,124,174,73,226,238,104,187,197,11,41,28,224,16,0,203,207,23,97,33,46,128,128,160,231,160,23,201,249,252,202,208,4,42,135,61,223,37,20,185,3,139,114,22,224,137,147,165,217,172,117,125,92,148,248,132,160,66,91,45,217,134,150,81,45,245,31,24,58,119,203,119,107,48,102,62,20,28,198,137,102,97,85,147,86,30,84,207,213,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,true],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":3,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,65,150,210,125,138,85,146,238,4,146,110,73,218,235,98,102,168,38,61,95,86,184,28,166,106,25,132,238,59,100,249,119,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,83,4,178,118,255,101,254,216,233,148,231,120,193,165,135,167,69,174,198,124,175,150,241,5,241,119,81,113,14,200,241,188,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,65,150,210,125,138,85,146,238,4,146,110,73,218,235,98,102,168,38,61,95,86,184,28,166,106,25,132,238,59,100,249,119,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,160,83,4,178,118,255,101,254,216,233,148,231,120,193,165,135,167,69,174,198,124,175,150,241,5,241,119,81,113,14,200,241,188,128,128,128,128,128,128,128,160,65,150,210,125,138,85,146,238,4,146,110,73,218,235,98,102,168,38,61,95,86,184,28,166,106,25,132,238,59,100,249,119,128,128,128,128,128],[248,81,128,128,128,160,83,4,178,118,255,101,254,216,233,148,231,120,193,165,135,167,69,174,198,124,175,150,241,5,241,119,81,113,14,200,241,188,128,128,128,128,128,128,128,160,65,150,210,125,138,85,146,238,4,146,110,73,218,235,98,102,168,38,61,95,86,184,28,166,106,25,132,238,59,100,249,119,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,221,34,119,170],"key":[203,29,94,15,90,200,208,249,71,35,236,235,72,247,160,201,194,234,242,115,207,54,109,28,193,140,203,170,96,165,212,83],"list_rlp_bytes":[[226],[226]],"value_rlp_bytes":[[9],[5]],"drifted_rlp_bytes":[226],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,32,29,94,15,90,200,208,249,71,35,236,235,72,247,160,201,194,234,242,115,207,54,109,28,193,140,203,170,96,165,212,83,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,51,62,151,72,208,183,158,110,122,82,218,22,62,0,172,84,114,170,48,10,115,161,72,169,90,30,106,224,154,198,226,145,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,62,151,72,208,183,158,110,122,82,218,22,62,0,172,84,114,170,48,10,115,161,72,169,90,30,106,224,154,198,226,145,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[226,160,32,29,94,15,90,200,208,249,71,35,236,235,72,247,160,201,194,234,242,115,207,54,109,28,193,140,203,170,96,165,212,83,9],[226,160,51,62,151,72,208,183,158,110,122,82,218,22,62,0,172,84,114,170,48,10,115,161,72,169,90,30,106,224,154,198,226,145,5],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,221,34,119,170],[226,160,32,62,151,72,208,183,158,110,122,82,218,22,62,0,172,84,114,170,48,10,115,161,72,169,90,30,106,224,154,198,226,145,5]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/DeleteBranchLong.json b/zkevm-circuits/src/mpt_circuit/tests/DeleteBranchLong.json new file mode 100644 index 0000000000..560dc926cb --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/DeleteBranchLong.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,236,125,169,64,189,28,24,1,128,155,165,39,133,192,225,239,246,242,141,168,50,1,100,209,29,82,93,87,125,217,48,22,0],[160,158,121,107,54,109,51,70,55,153,2,60,23,77,254,173,211,30,123,93,162,149,10,98,146,201,150,81,0,193,223,197,143,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,188,216,49,69,82,81,125,178,18,55,181,68,0,10,140,168,177,11,227,51,17,61,194,131,63,187,164,126,180,72,18,20,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,175,42,76,21,80,212,68,146,99,28,60,90,60,62,234,145,35,221,172,58,201,16,196,208,232,172,182,72,77,75,255,33,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,175,42,76,21,80,212,68,146,99,28,60,90,60,62,234,145,35,221,172,58,201,16,196,208,232,172,182,72,77,75,255,33,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,188,216,49,69,82,81,125,178,18,55,181,68,0,10,140,168,177,11,227,51,17,61,194,131,63,187,164,126,180,72,18,20,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,125,41,87,252,234,143,157,200,147,217,206,81,71,104,146,158,44,12,166,249,54,94,177,18,36,139,93,124,146,95,56,197,0],[160,12,128,177,67,228,108,148,216,112,110,161,125,156,177,227,160,103,131,162,105,29,173,77,64,33,164,233,34,185,238,177,147,0],[160,110,58,129,42,7,242,95,48,22,117,24,235,247,115,27,159,148,240,189,82,238,245,24,104,4,88,96,153,87,62,124,87,0],[160,23,125,132,126,57,77,125,108,183,122,223,20,200,11,140,116,8,197,125,77,164,229,34,187,130,255,11,5,123,106,18,226,0],[160,34,142,142,168,173,99,151,78,20,223,49,167,173,193,155,22,185,57,77,94,140,81,219,8,205,119,152,79,221,53,32,207,0],[160,47,68,110,156,219,87,42,252,153,153,146,44,71,68,241,42,115,255,196,172,147,166,193,209,18,197,101,149,78,252,80,101,0],[160,177,72,39,32,231,101,153,80,19,87,43,118,153,180,111,107,120,208,26,121,107,122,223,78,248,252,112,146,129,121,183,249,0],[160,166,43,253,9,132,156,69,206,240,132,245,215,140,18,136,28,76,115,232,35,55,46,97,106,111,29,136,215,243,244,104,17,0],[160,81,197,227,235,119,136,89,180,1,44,243,14,3,35,252,32,39,239,6,187,20,67,5,160,124,3,15,223,92,185,169,242,0],[160,149,116,118,68,110,184,206,46,175,107,154,14,16,171,116,53,96,139,243,244,119,49,149,255,105,200,203,196,178,219,6,82,0],[160,110,155,225,108,252,161,111,115,34,161,168,254,20,210,73,55,53,84,44,62,235,227,145,125,56,152,100,115,68,140,102,72,0],[160,215,32,96,214,100,112,201,119,187,39,102,186,145,221,83,195,0,96,163,123,49,150,62,117,25,68,3,71,226,217,71,5,0],[160,216,77,122,185,166,60,76,175,212,143,31,218,53,223,132,60,243,170,247,163,51,217,81,184,10,173,42,95,228,91,232,94,0],[160,102,201,63,187,90,100,67,28,66,169,235,107,142,189,159,208,34,47,59,148,229,29,242,190,206,105,91,103,217,108,220,3,0],[160,130,214,88,212,94,182,185,119,29,142,174,223,89,224,222,59,117,224,157,226,110,51,196,90,175,27,158,67,104,153,87,154,0],[160,32,215,128,174,120,163,233,16,26,195,200,23,79,233,122,253,170,114,110,149,85,164,70,233,70,156,107,147,254,209,174,11,0],[160,193,92,89,242,135,228,231,76,186,23,253,187,202,250,103,245,131,178,24,164,47,129,106,19,179,50,117,153,14,62,38,242,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,12,128,177,67,228,108,148,216,112,110,161,125,156,177,227,160,103,131,162,105,29,173,77,64,33,164,233,34,185,238,177,147,160,110,58,129,42,7,242,95,48,22,117,24,235,247,115,27,159,148,240,189,82,238,245,24,104,4,88,96,153,87,62,124,87,160,23,125,132,126,57,77,125,108,183,122,223,20,200,11,140,116,8,197,125,77,164,229,34,187,130,255,11,5,123,106,18,226,160,34,142,142,168,173,99,151,78,20,223,49,167,173,193,155,22,185,57,77,94,140,81,219,8,205,119,152,79,221,53,32,207,160,47,68,110,156,219,87,42,252,153,153,146,44,71,68,241,42,115,255,196,172,147,166,193,209,18,197,101,149,78,252,80,101,160,177,72,39,32,231,101,153,80,19,87,43,118,153,180,111,107,120,208,26,121,107,122,223,78,248,252,112,146,129,121,183,249,160,166,43,253,9,132,156,69,206,240,132,245,215,140,18,136,28,76,115,232,35,55,46,97,106,111,29,136,215,243,244,104,17,160,81,197,227,235,119,136,89,180,1,44,243,14,3,35,252,32,39,239,6,187,20,67,5,160,124,3,15,223,92,185,169,242,160,149,116,118,68,110,184,206,46,175,107,154,14,16,171,116,53,96,139,243,244,119,49,149,255,105,200,203,196,178,219,6,82,160,110,155,225,108,252,161,111,115,34,161,168,254,20,210,73,55,53,84,44,62,235,227,145,125,56,152,100,115,68,140,102,72,160,215,32,96,214,100,112,201,119,187,39,102,186,145,221,83,195,0,96,163,123,49,150,62,117,25,68,3,71,226,217,71,5,160,216,77,122,185,166,60,76,175,212,143,31,218,53,223,132,60,243,170,247,163,51,217,81,184,10,173,42,95,228,91,232,94,160,102,201,63,187,90,100,67,28,66,169,235,107,142,189,159,208,34,47,59,148,229,29,242,190,206,105,91,103,217,108,220,3,160,130,214,88,212,94,182,185,119,29,142,174,223,89,224,222,59,117,224,157,226,110,51,196,90,175,27,158,67,104,153,87,154,160,32,215,128,174,120,163,233,16,26,195,200,23,79,233,122,253,170,114,110,149,85,164,70,233,70,156,107,147,254,209,174,11,160,193,92,89,242,135,228,231,76,186,23,253,187,202,250,103,245,131,178,24,164,47,129,106,19,179,50,117,153,14,62,38,242,128],[249,2,17,160,125,41,87,252,234,143,157,200,147,217,206,81,71,104,146,158,44,12,166,249,54,94,177,18,36,139,93,124,146,95,56,197,160,110,58,129,42,7,242,95,48,22,117,24,235,247,115,27,159,148,240,189,82,238,245,24,104,4,88,96,153,87,62,124,87,160,23,125,132,126,57,77,125,108,183,122,223,20,200,11,140,116,8,197,125,77,164,229,34,187,130,255,11,5,123,106,18,226,160,34,142,142,168,173,99,151,78,20,223,49,167,173,193,155,22,185,57,77,94,140,81,219,8,205,119,152,79,221,53,32,207,160,47,68,110,156,219,87,42,252,153,153,146,44,71,68,241,42,115,255,196,172,147,166,193,209,18,197,101,149,78,252,80,101,160,177,72,39,32,231,101,153,80,19,87,43,118,153,180,111,107,120,208,26,121,107,122,223,78,248,252,112,146,129,121,183,249,160,166,43,253,9,132,156,69,206,240,132,245,215,140,18,136,28,76,115,232,35,55,46,97,106,111,29,136,215,243,244,104,17,160,81,197,227,235,119,136,89,180,1,44,243,14,3,35,252,32,39,239,6,187,20,67,5,160,124,3,15,223,92,185,169,242,160,149,116,118,68,110,184,206,46,175,107,154,14,16,171,116,53,96,139,243,244,119,49,149,255,105,200,203,196,178,219,6,82,160,110,155,225,108,252,161,111,115,34,161,168,254,20,210,73,55,53,84,44,62,235,227,145,125,56,152,100,115,68,140,102,72,160,215,32,96,214,100,112,201,119,187,39,102,186,145,221,83,195,0,96,163,123,49,150,62,117,25,68,3,71,226,217,71,5,160,216,77,122,185,166,60,76,175,212,143,31,218,53,223,132,60,243,170,247,163,51,217,81,184,10,173,42,95,228,91,232,94,160,102,201,63,187,90,100,67,28,66,169,235,107,142,189,159,208,34,47,59,148,229,29,242,190,206,105,91,103,217,108,220,3,160,130,214,88,212,94,182,185,119,29,142,174,223,89,224,222,59,117,224,157,226,110,51,196,90,175,27,158,67,104,153,87,154,160,32,215,128,174,120,163,233,16,26,195,200,23,79,233,122,253,170,114,110,149,85,164,70,233,70,156,107,147,254,209,174,11,160,193,92,89,242,135,228,231,76,186,23,253,187,202,250,103,245,131,178,24,164,47,129,106,19,179,50,117,153,14,62,38,242,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,76,198,171,90,208,105,4,83,113,86,242,249,239,23,242,248,212,81,253,220,171,99,235,69,102,10,23,60,25,92,237,123,0],[160,203,155,95,87,117,89,227,1,217,141,101,249,141,158,153,95,57,45,108,7,84,133,182,147,7,139,122,231,21,23,226,103,0],[160,188,163,150,57,80,114,215,193,143,127,89,221,62,221,86,183,127,100,168,107,42,49,189,156,105,218,5,224,92,189,172,181,0],[160,189,200,185,43,254,21,61,66,80,169,111,67,41,173,87,178,122,36,149,1,252,148,74,183,75,215,140,190,247,233,157,166,0],[160,90,232,38,248,218,244,187,228,128,210,102,136,44,231,95,36,18,93,232,21,115,141,9,150,218,2,176,12,32,51,14,6,0],[160,73,83,206,253,141,54,4,255,244,59,102,75,250,181,149,232,147,36,0,75,62,69,224,82,190,115,134,87,40,76,145,41,0],[160,160,208,52,138,80,98,153,103,185,255,188,140,179,114,176,55,52,0,6,124,26,160,219,69,77,232,122,138,28,234,140,144,0],[160,188,24,14,57,108,199,179,93,67,114,38,247,227,100,73,16,77,120,28,98,134,184,51,71,55,110,175,63,160,225,134,78,0],[160,106,88,235,96,118,234,14,58,144,115,86,12,236,203,91,133,172,254,188,168,4,124,100,205,10,34,67,87,173,254,114,145,0],[160,165,120,23,142,28,190,69,250,104,116,6,96,69,168,108,27,67,77,236,187,66,25,158,38,151,201,131,109,22,53,163,146,0],[160,52,196,20,106,22,179,12,48,221,80,93,115,60,211,148,103,60,166,62,6,34,79,50,128,138,201,233,113,178,243,147,176,0],[160,135,243,26,28,242,33,207,232,196,225,22,158,16,152,31,246,237,195,183,223,5,255,10,175,126,4,255,89,197,222,199,86,0],[160,230,153,215,131,5,248,22,225,108,26,208,120,178,22,164,27,6,26,123,38,38,161,120,244,202,99,125,226,113,144,222,250,0],[160,91,62,246,193,194,69,43,200,24,226,234,231,163,85,40,196,18,201,130,81,131,130,58,155,200,87,30,228,26,39,186,198,0],[160,192,154,190,147,129,133,38,29,125,30,178,151,134,105,100,129,255,121,107,53,193,82,137,113,35,37,66,236,11,215,106,81,0],[160,14,128,144,203,252,2,235,241,233,228,77,51,93,37,47,112,66,14,208,159,231,214,197,129,38,82,120,106,2,133,183,51,0],[160,173,162,203,251,233,190,24,248,49,5,68,76,226,83,131,69,152,101,45,251,152,123,185,132,147,27,75,39,43,148,107,151,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,203,155,95,87,117,89,227,1,217,141,101,249,141,158,153,95,57,45,108,7,84,133,182,147,7,139,122,231,21,23,226,103,160,188,163,150,57,80,114,215,193,143,127,89,221,62,221,86,183,127,100,168,107,42,49,189,156,105,218,5,224,92,189,172,181,160,189,200,185,43,254,21,61,66,80,169,111,67,41,173,87,178,122,36,149,1,252,148,74,183,75,215,140,190,247,233,157,166,160,90,232,38,248,218,244,187,228,128,210,102,136,44,231,95,36,18,93,232,21,115,141,9,150,218,2,176,12,32,51,14,6,160,73,83,206,253,141,54,4,255,244,59,102,75,250,181,149,232,147,36,0,75,62,69,224,82,190,115,134,87,40,76,145,41,160,160,208,52,138,80,98,153,103,185,255,188,140,179,114,176,55,52,0,6,124,26,160,219,69,77,232,122,138,28,234,140,144,160,188,24,14,57,108,199,179,93,67,114,38,247,227,100,73,16,77,120,28,98,134,184,51,71,55,110,175,63,160,225,134,78,160,106,88,235,96,118,234,14,58,144,115,86,12,236,203,91,133,172,254,188,168,4,124,100,205,10,34,67,87,173,254,114,145,160,165,120,23,142,28,190,69,250,104,116,6,96,69,168,108,27,67,77,236,187,66,25,158,38,151,201,131,109,22,53,163,146,160,52,196,20,106,22,179,12,48,221,80,93,115,60,211,148,103,60,166,62,6,34,79,50,128,138,201,233,113,178,243,147,176,160,135,243,26,28,242,33,207,232,196,225,22,158,16,152,31,246,237,195,183,223,5,255,10,175,126,4,255,89,197,222,199,86,160,230,153,215,131,5,248,22,225,108,26,208,120,178,22,164,27,6,26,123,38,38,161,120,244,202,99,125,226,113,144,222,250,160,91,62,246,193,194,69,43,200,24,226,234,231,163,85,40,196,18,201,130,81,131,130,58,155,200,87,30,228,26,39,186,198,160,192,154,190,147,129,133,38,29,125,30,178,151,134,105,100,129,255,121,107,53,193,82,137,113,35,37,66,236,11,215,106,81,160,14,128,144,203,252,2,235,241,233,228,77,51,93,37,47,112,66,14,208,159,231,214,197,129,38,82,120,106,2,133,183,51,160,173,162,203,251,233,190,24,248,49,5,68,76,226,83,131,69,152,101,45,251,152,123,185,132,147,27,75,39,43,148,107,151,128],[249,2,17,160,203,155,95,87,117,89,227,1,217,141,101,249,141,158,153,95,57,45,108,7,84,133,182,147,7,139,122,231,21,23,226,103,160,188,163,150,57,80,114,215,193,143,127,89,221,62,221,86,183,127,100,168,107,42,49,189,156,105,218,5,224,92,189,172,181,160,189,200,185,43,254,21,61,66,80,169,111,67,41,173,87,178,122,36,149,1,252,148,74,183,75,215,140,190,247,233,157,166,160,90,232,38,248,218,244,187,228,128,210,102,136,44,231,95,36,18,93,232,21,115,141,9,150,218,2,176,12,32,51,14,6,160,73,83,206,253,141,54,4,255,244,59,102,75,250,181,149,232,147,36,0,75,62,69,224,82,190,115,134,87,40,76,145,41,160,160,208,52,138,80,98,153,103,185,255,188,140,179,114,176,55,52,0,6,124,26,160,219,69,77,232,122,138,28,234,140,144,160,188,24,14,57,108,199,179,93,67,114,38,247,227,100,73,16,77,120,28,98,134,184,51,71,55,110,175,63,160,225,134,78,160,76,198,171,90,208,105,4,83,113,86,242,249,239,23,242,248,212,81,253,220,171,99,235,69,102,10,23,60,25,92,237,123,160,165,120,23,142,28,190,69,250,104,116,6,96,69,168,108,27,67,77,236,187,66,25,158,38,151,201,131,109,22,53,163,146,160,52,196,20,106,22,179,12,48,221,80,93,115,60,211,148,103,60,166,62,6,34,79,50,128,138,201,233,113,178,243,147,176,160,135,243,26,28,242,33,207,232,196,225,22,158,16,152,31,246,237,195,183,223,5,255,10,175,126,4,255,89,197,222,199,86,160,230,153,215,131,5,248,22,225,108,26,208,120,178,22,164,27,6,26,123,38,38,161,120,244,202,99,125,226,113,144,222,250,160,91,62,246,193,194,69,43,200,24,226,234,231,163,85,40,196,18,201,130,81,131,130,58,155,200,87,30,228,26,39,186,198,160,192,154,190,147,129,133,38,29,125,30,178,151,134,105,100,129,255,121,107,53,193,82,137,113,35,37,66,236,11,215,106,81,160,14,128,144,203,252,2,235,241,233,228,77,51,93,37,47,112,66,14,208,159,231,214,197,129,38,82,120,106,2,133,183,51,160,173,162,203,251,233,190,24,248,49,5,68,76,226,83,131,69,152,101,45,251,152,123,185,132,147,27,75,39,43,148,107,151,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,180,137,138,17,102,140,255,18,207,123,233,147,29,115,80,241,121,12,239,86,122,12,242,157,253,26,85,165,165,57,34,147,0],[160,18,101,131,99,126,62,177,176,175,227,126,135,118,209,104,15,94,158,126,16,229,198,137,117,11,34,35,62,178,30,163,248,0],[160,123,77,145,2,49,149,132,119,66,128,99,180,104,48,205,73,38,111,127,154,84,105,17,109,172,41,1,167,138,149,41,197,0],[160,228,84,196,109,225,221,106,213,221,42,103,185,196,80,28,44,45,200,105,40,150,222,61,195,209,95,113,249,176,40,5,63,0],[160,57,180,21,162,82,214,201,178,13,24,168,146,173,64,220,156,111,23,92,99,128,86,239,146,141,16,164,32,61,228,24,252,0],[160,221,77,220,77,60,8,208,125,197,94,117,28,51,186,182,146,218,106,153,242,157,130,65,8,93,181,176,201,61,217,226,188,0],[160,95,59,244,69,176,194,201,31,125,255,220,28,103,214,148,154,127,99,26,109,173,66,52,23,1,60,147,162,80,99,188,236,0],[160,94,6,112,250,23,8,104,209,124,72,179,6,84,228,243,196,51,255,70,178,198,180,66,149,151,64,224,175,184,51,212,48,0],[160,11,201,156,205,193,219,63,118,255,224,240,48,231,49,122,209,244,250,224,94,216,123,40,54,116,186,221,227,221,132,216,67,0],[160,136,9,150,131,203,52,228,56,242,25,217,67,235,8,215,182,31,74,211,94,217,79,209,16,4,192,28,235,93,231,96,76,0],[160,119,104,63,90,18,237,89,22,227,96,42,219,237,100,73,197,72,104,91,52,37,89,25,160,55,192,131,58,199,46,60,131,0],[160,73,137,207,194,11,153,89,152,228,2,9,7,73,113,205,205,29,58,248,192,128,183,123,50,65,13,92,193,58,116,206,83,0],[160,95,216,69,179,165,202,5,147,92,56,127,225,44,221,125,249,123,220,22,5,61,232,19,189,232,214,54,125,115,119,201,172,0],[160,224,113,151,12,186,75,55,144,38,209,227,30,34,228,208,27,169,96,0,12,185,6,253,244,23,85,210,94,36,160,84,233,0],[160,123,185,21,96,91,242,200,150,30,108,158,68,137,183,154,165,141,137,69,61,111,69,151,124,135,96,47,189,159,197,141,109,0],[160,125,71,101,150,240,123,112,189,178,113,195,130,32,119,90,72,75,26,27,13,156,155,85,206,217,59,26,71,93,158,39,71,0],[160,187,234,38,148,78,204,38,226,195,40,135,117,172,91,176,90,44,64,115,127,44,5,223,121,204,177,224,6,72,69,219,52,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,18,101,131,99,126,62,177,176,175,227,126,135,118,209,104,15,94,158,126,16,229,198,137,117,11,34,35,62,178,30,163,248,160,123,77,145,2,49,149,132,119,66,128,99,180,104,48,205,73,38,111,127,154,84,105,17,109,172,41,1,167,138,149,41,197,160,228,84,196,109,225,221,106,213,221,42,103,185,196,80,28,44,45,200,105,40,150,222,61,195,209,95,113,249,176,40,5,63,160,57,180,21,162,82,214,201,178,13,24,168,146,173,64,220,156,111,23,92,99,128,86,239,146,141,16,164,32,61,228,24,252,160,221,77,220,77,60,8,208,125,197,94,117,28,51,186,182,146,218,106,153,242,157,130,65,8,93,181,176,201,61,217,226,188,160,95,59,244,69,176,194,201,31,125,255,220,28,103,214,148,154,127,99,26,109,173,66,52,23,1,60,147,162,80,99,188,236,160,94,6,112,250,23,8,104,209,124,72,179,6,84,228,243,196,51,255,70,178,198,180,66,149,151,64,224,175,184,51,212,48,160,11,201,156,205,193,219,63,118,255,224,240,48,231,49,122,209,244,250,224,94,216,123,40,54,116,186,221,227,221,132,216,67,160,136,9,150,131,203,52,228,56,242,25,217,67,235,8,215,182,31,74,211,94,217,79,209,16,4,192,28,235,93,231,96,76,160,119,104,63,90,18,237,89,22,227,96,42,219,237,100,73,197,72,104,91,52,37,89,25,160,55,192,131,58,199,46,60,131,160,73,137,207,194,11,153,89,152,228,2,9,7,73,113,205,205,29,58,248,192,128,183,123,50,65,13,92,193,58,116,206,83,160,95,216,69,179,165,202,5,147,92,56,127,225,44,221,125,249,123,220,22,5,61,232,19,189,232,214,54,125,115,119,201,172,160,224,113,151,12,186,75,55,144,38,209,227,30,34,228,208,27,169,96,0,12,185,6,253,244,23,85,210,94,36,160,84,233,160,123,185,21,96,91,242,200,150,30,108,158,68,137,183,154,165,141,137,69,61,111,69,151,124,135,96,47,189,159,197,141,109,160,125,71,101,150,240,123,112,189,178,113,195,130,32,119,90,72,75,26,27,13,156,155,85,206,217,59,26,71,93,158,39,71,160,187,234,38,148,78,204,38,226,195,40,135,117,172,91,176,90,44,64,115,127,44,5,223,121,204,177,224,6,72,69,219,52,128],[249,2,17,160,18,101,131,99,126,62,177,176,175,227,126,135,118,209,104,15,94,158,126,16,229,198,137,117,11,34,35,62,178,30,163,248,160,123,77,145,2,49,149,132,119,66,128,99,180,104,48,205,73,38,111,127,154,84,105,17,109,172,41,1,167,138,149,41,197,160,228,84,196,109,225,221,106,213,221,42,103,185,196,80,28,44,45,200,105,40,150,222,61,195,209,95,113,249,176,40,5,63,160,57,180,21,162,82,214,201,178,13,24,168,146,173,64,220,156,111,23,92,99,128,86,239,146,141,16,164,32,61,228,24,252,160,221,77,220,77,60,8,208,125,197,94,117,28,51,186,182,146,218,106,153,242,157,130,65,8,93,181,176,201,61,217,226,188,160,95,59,244,69,176,194,201,31,125,255,220,28,103,214,148,154,127,99,26,109,173,66,52,23,1,60,147,162,80,99,188,236,160,94,6,112,250,23,8,104,209,124,72,179,6,84,228,243,196,51,255,70,178,198,180,66,149,151,64,224,175,184,51,212,48,160,11,201,156,205,193,219,63,118,255,224,240,48,231,49,122,209,244,250,224,94,216,123,40,54,116,186,221,227,221,132,216,67,160,136,9,150,131,203,52,228,56,242,25,217,67,235,8,215,182,31,74,211,94,217,79,209,16,4,192,28,235,93,231,96,76,160,119,104,63,90,18,237,89,22,227,96,42,219,237,100,73,197,72,104,91,52,37,89,25,160,55,192,131,58,199,46,60,131,160,180,137,138,17,102,140,255,18,207,123,233,147,29,115,80,241,121,12,239,86,122,12,242,157,253,26,85,165,165,57,34,147,160,95,216,69,179,165,202,5,147,92,56,127,225,44,221,125,249,123,220,22,5,61,232,19,189,232,214,54,125,115,119,201,172,160,224,113,151,12,186,75,55,144,38,209,227,30,34,228,208,27,169,96,0,12,185,6,253,244,23,85,210,94,36,160,84,233,160,123,185,21,96,91,242,200,150,30,108,158,68,137,183,154,165,141,137,69,61,111,69,151,124,135,96,47,189,159,197,141,109,160,125,71,101,150,240,123,112,189,178,113,195,130,32,119,90,72,75,26,27,13,156,155,85,206,217,59,26,71,93,158,39,71,160,187,234,38,148,78,204,38,226,195,40,135,117,172,91,176,90,44,64,115,127,44,5,223,121,204,177,224,6,72,69,219,52,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,208,196,157,107,175,74,78,234,195,183,88,178,109,151,109,37,88,109,87,64,187,235,22,40,98,248,194,28,212,129,83,106,0],[160,242,2,171,154,117,67,183,250,218,253,33,96,220,233,103,151,143,248,43,219,201,31,152,207,250,11,159,89,205,184,172,92,0],[160,94,62,196,11,252,4,219,198,190,74,155,51,246,207,218,67,129,63,216,218,72,175,172,224,137,160,96,134,226,114,47,195,0],[160,220,79,232,150,202,231,168,173,188,255,225,151,144,139,249,219,36,187,29,212,214,185,0,192,68,162,52,233,73,225,122,150,0],[160,21,82,154,46,19,33,202,75,98,24,45,27,91,74,102,234,26,169,65,132,23,27,120,253,91,93,18,191,51,197,102,187,0],[160,171,173,13,119,118,83,126,195,155,168,160,114,190,126,19,0,84,155,235,249,230,181,166,24,244,51,220,204,19,15,51,175,0],[160,201,73,106,93,160,10,118,123,25,90,105,19,47,135,130,153,156,207,226,225,15,82,27,135,61,128,220,184,17,94,110,177,0],[160,218,168,9,97,183,136,161,198,224,221,17,71,51,108,207,121,212,149,178,73,190,222,141,247,213,242,255,160,26,176,77,38,0],[160,237,119,82,16,183,65,62,159,240,179,19,26,11,16,44,3,64,168,63,74,10,78,71,227,186,142,190,205,186,207,49,142,0],[160,42,172,54,189,75,55,223,72,136,29,3,141,155,14,149,66,142,84,189,114,127,187,100,248,43,189,196,167,36,181,231,7,0],[160,73,154,87,78,68,23,198,202,125,208,225,65,212,131,176,106,241,32,205,89,118,198,78,65,255,246,17,251,230,38,180,236,0],[160,142,157,77,137,233,28,128,1,129,145,213,117,190,4,183,43,124,147,234,128,39,139,110,130,234,77,212,116,237,195,2,242,0],[160,59,123,38,31,102,144,63,66,145,71,139,212,180,12,124,51,51,181,240,42,222,34,158,243,223,202,217,39,232,24,241,83,0],[160,52,42,172,218,151,94,170,154,240,82,182,191,125,158,101,53,25,212,36,121,118,213,118,40,134,35,5,201,97,224,22,73,0],[160,32,77,63,202,20,30,148,131,246,63,206,1,161,162,223,229,161,170,188,254,98,253,74,34,74,125,81,92,75,54,220,104,0],[160,131,64,211,54,20,43,128,119,87,143,37,137,121,203,178,221,254,49,45,173,187,29,137,12,193,227,248,236,92,54,110,1,0],[160,213,68,36,157,232,139,139,48,229,98,150,111,106,139,2,105,167,209,229,52,203,82,2,192,190,108,27,204,227,211,133,144,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,242,2,171,154,117,67,183,250,218,253,33,96,220,233,103,151,143,248,43,219,201,31,152,207,250,11,159,89,205,184,172,92,160,94,62,196,11,252,4,219,198,190,74,155,51,246,207,218,67,129,63,216,218,72,175,172,224,137,160,96,134,226,114,47,195,160,220,79,232,150,202,231,168,173,188,255,225,151,144,139,249,219,36,187,29,212,214,185,0,192,68,162,52,233,73,225,122,150,160,21,82,154,46,19,33,202,75,98,24,45,27,91,74,102,234,26,169,65,132,23,27,120,253,91,93,18,191,51,197,102,187,160,171,173,13,119,118,83,126,195,155,168,160,114,190,126,19,0,84,155,235,249,230,181,166,24,244,51,220,204,19,15,51,175,160,201,73,106,93,160,10,118,123,25,90,105,19,47,135,130,153,156,207,226,225,15,82,27,135,61,128,220,184,17,94,110,177,160,218,168,9,97,183,136,161,198,224,221,17,71,51,108,207,121,212,149,178,73,190,222,141,247,213,242,255,160,26,176,77,38,160,237,119,82,16,183,65,62,159,240,179,19,26,11,16,44,3,64,168,63,74,10,78,71,227,186,142,190,205,186,207,49,142,160,42,172,54,189,75,55,223,72,136,29,3,141,155,14,149,66,142,84,189,114,127,187,100,248,43,189,196,167,36,181,231,7,160,73,154,87,78,68,23,198,202,125,208,225,65,212,131,176,106,241,32,205,89,118,198,78,65,255,246,17,251,230,38,180,236,160,142,157,77,137,233,28,128,1,129,145,213,117,190,4,183,43,124,147,234,128,39,139,110,130,234,77,212,116,237,195,2,242,160,59,123,38,31,102,144,63,66,145,71,139,212,180,12,124,51,51,181,240,42,222,34,158,243,223,202,217,39,232,24,241,83,160,52,42,172,218,151,94,170,154,240,82,182,191,125,158,101,53,25,212,36,121,118,213,118,40,134,35,5,201,97,224,22,73,160,32,77,63,202,20,30,148,131,246,63,206,1,161,162,223,229,161,170,188,254,98,253,74,34,74,125,81,92,75,54,220,104,160,131,64,211,54,20,43,128,119,87,143,37,137,121,203,178,221,254,49,45,173,187,29,137,12,193,227,248,236,92,54,110,1,160,213,68,36,157,232,139,139,48,229,98,150,111,106,139,2,105,167,209,229,52,203,82,2,192,190,108,27,204,227,211,133,144,128],[249,2,17,160,242,2,171,154,117,67,183,250,218,253,33,96,220,233,103,151,143,248,43,219,201,31,152,207,250,11,159,89,205,184,172,92,160,94,62,196,11,252,4,219,198,190,74,155,51,246,207,218,67,129,63,216,218,72,175,172,224,137,160,96,134,226,114,47,195,160,220,79,232,150,202,231,168,173,188,255,225,151,144,139,249,219,36,187,29,212,214,185,0,192,68,162,52,233,73,225,122,150,160,208,196,157,107,175,74,78,234,195,183,88,178,109,151,109,37,88,109,87,64,187,235,22,40,98,248,194,28,212,129,83,106,160,171,173,13,119,118,83,126,195,155,168,160,114,190,126,19,0,84,155,235,249,230,181,166,24,244,51,220,204,19,15,51,175,160,201,73,106,93,160,10,118,123,25,90,105,19,47,135,130,153,156,207,226,225,15,82,27,135,61,128,220,184,17,94,110,177,160,218,168,9,97,183,136,161,198,224,221,17,71,51,108,207,121,212,149,178,73,190,222,141,247,213,242,255,160,26,176,77,38,160,237,119,82,16,183,65,62,159,240,179,19,26,11,16,44,3,64,168,63,74,10,78,71,227,186,142,190,205,186,207,49,142,160,42,172,54,189,75,55,223,72,136,29,3,141,155,14,149,66,142,84,189,114,127,187,100,248,43,189,196,167,36,181,231,7,160,73,154,87,78,68,23,198,202,125,208,225,65,212,131,176,106,241,32,205,89,118,198,78,65,255,246,17,251,230,38,180,236,160,142,157,77,137,233,28,128,1,129,145,213,117,190,4,183,43,124,147,234,128,39,139,110,130,234,77,212,116,237,195,2,242,160,59,123,38,31,102,144,63,66,145,71,139,212,180,12,124,51,51,181,240,42,222,34,158,243,223,202,217,39,232,24,241,83,160,52,42,172,218,151,94,170,154,240,82,182,191,125,158,101,53,25,212,36,121,118,213,118,40,134,35,5,201,97,224,22,73,160,32,77,63,202,20,30,148,131,246,63,206,1,161,162,223,229,161,170,188,254,98,253,74,34,74,125,81,92,75,54,220,104,160,131,64,211,54,20,43,128,119,87,143,37,137,121,203,178,221,254,49,45,173,187,29,137,12,193,227,248,236,92,54,110,1,160,213,68,36,157,232,139,139,48,229,98,150,111,106,139,2,105,167,209,229,52,203,82,2,192,190,108,27,204,227,211,133,144,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,67,245,214,17,84,162,173,24,213,36,79,11,50,10,60,208,55,9,17,180,104,217,245,134,94,154,108,245,143,135,111,53,0],[160,225,232,51,165,157,149,214,172,159,91,52,197,92,79,27,34,18,214,233,102,92,19,214,91,32,116,131,121,228,212,45,173,0],[160,186,231,194,219,141,216,81,127,112,19,44,4,197,255,156,246,56,53,192,172,81,0,190,171,131,183,207,225,157,5,205,203,0],[160,5,37,120,149,32,224,148,140,41,239,6,196,60,15,198,63,169,180,108,45,160,224,159,181,133,158,91,197,190,154,203,10,0],[160,206,41,225,167,22,123,70,153,72,9,218,77,191,79,238,156,75,60,222,100,52,133,96,110,170,182,93,140,189,66,45,239,0],[160,32,177,20,28,165,210,36,188,254,155,15,238,17,26,247,18,247,34,174,201,88,150,203,252,208,115,125,38,181,244,120,62,0],[160,157,132,195,214,126,178,154,131,217,152,109,121,6,103,197,126,44,188,216,167,153,198,208,113,235,8,85,231,177,226,61,117,0],[160,144,228,135,93,42,239,76,219,45,190,35,101,156,189,124,220,215,186,245,209,99,192,154,77,168,214,179,29,1,155,200,134,0],[160,192,120,30,76,123,195,21,17,192,189,151,231,243,167,107,75,8,30,49,20,146,46,20,236,164,183,35,0,78,4,126,83,0],[160,211,177,15,128,75,240,250,199,98,147,192,74,184,207,230,94,146,40,86,160,2,77,225,77,192,140,56,244,155,92,206,232,0],[160,173,25,97,151,4,14,250,193,102,223,32,217,175,89,167,237,209,24,122,69,121,79,52,130,12,5,168,192,23,40,137,235,0],[160,137,64,183,69,124,15,95,148,156,197,5,103,87,251,140,6,99,53,127,206,1,232,43,229,156,255,7,243,225,97,131,126,0],[160,179,253,144,148,128,37,142,180,177,255,1,66,190,186,243,213,157,165,10,255,107,128,127,167,193,163,167,161,122,77,89,125,0],[160,241,128,172,157,189,54,79,20,246,136,62,239,208,239,44,44,50,16,212,4,94,187,29,162,200,16,139,228,29,143,243,146,0],[160,102,10,219,89,69,53,202,19,147,75,79,217,149,73,63,22,38,222,90,158,146,32,5,145,248,86,183,195,230,207,33,75,0],[160,223,212,45,62,78,73,59,224,92,164,146,215,86,0,81,183,118,204,100,114,26,15,133,36,201,52,85,71,51,180,34,185,0],[160,228,216,210,49,162,105,158,82,165,38,198,174,140,67,178,57,230,168,65,109,207,201,158,221,86,140,92,9,99,107,97,46,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,225,232,51,165,157,149,214,172,159,91,52,197,92,79,27,34,18,214,233,102,92,19,214,91,32,116,131,121,228,212,45,173,160,186,231,194,219,141,216,81,127,112,19,44,4,197,255,156,246,56,53,192,172,81,0,190,171,131,183,207,225,157,5,205,203,160,5,37,120,149,32,224,148,140,41,239,6,196,60,15,198,63,169,180,108,45,160,224,159,181,133,158,91,197,190,154,203,10,160,206,41,225,167,22,123,70,153,72,9,218,77,191,79,238,156,75,60,222,100,52,133,96,110,170,182,93,140,189,66,45,239,160,32,177,20,28,165,210,36,188,254,155,15,238,17,26,247,18,247,34,174,201,88,150,203,252,208,115,125,38,181,244,120,62,160,157,132,195,214,126,178,154,131,217,152,109,121,6,103,197,126,44,188,216,167,153,198,208,113,235,8,85,231,177,226,61,117,160,144,228,135,93,42,239,76,219,45,190,35,101,156,189,124,220,215,186,245,209,99,192,154,77,168,214,179,29,1,155,200,134,160,192,120,30,76,123,195,21,17,192,189,151,231,243,167,107,75,8,30,49,20,146,46,20,236,164,183,35,0,78,4,126,83,160,211,177,15,128,75,240,250,199,98,147,192,74,184,207,230,94,146,40,86,160,2,77,225,77,192,140,56,244,155,92,206,232,160,173,25,97,151,4,14,250,193,102,223,32,217,175,89,167,237,209,24,122,69,121,79,52,130,12,5,168,192,23,40,137,235,160,137,64,183,69,124,15,95,148,156,197,5,103,87,251,140,6,99,53,127,206,1,232,43,229,156,255,7,243,225,97,131,126,160,179,253,144,148,128,37,142,180,177,255,1,66,190,186,243,213,157,165,10,255,107,128,127,167,193,163,167,161,122,77,89,125,160,241,128,172,157,189,54,79,20,246,136,62,239,208,239,44,44,50,16,212,4,94,187,29,162,200,16,139,228,29,143,243,146,160,102,10,219,89,69,53,202,19,147,75,79,217,149,73,63,22,38,222,90,158,146,32,5,145,248,86,183,195,230,207,33,75,160,223,212,45,62,78,73,59,224,92,164,146,215,86,0,81,183,118,204,100,114,26,15,133,36,201,52,85,71,51,180,34,185,160,228,216,210,49,162,105,158,82,165,38,198,174,140,67,178,57,230,168,65,109,207,201,158,221,86,140,92,9,99,107,97,46,128],[249,2,17,160,225,232,51,165,157,149,214,172,159,91,52,197,92,79,27,34,18,214,233,102,92,19,214,91,32,116,131,121,228,212,45,173,160,186,231,194,219,141,216,81,127,112,19,44,4,197,255,156,246,56,53,192,172,81,0,190,171,131,183,207,225,157,5,205,203,160,5,37,120,149,32,224,148,140,41,239,6,196,60,15,198,63,169,180,108,45,160,224,159,181,133,158,91,197,190,154,203,10,160,206,41,225,167,22,123,70,153,72,9,218,77,191,79,238,156,75,60,222,100,52,133,96,110,170,182,93,140,189,66,45,239,160,67,245,214,17,84,162,173,24,213,36,79,11,50,10,60,208,55,9,17,180,104,217,245,134,94,154,108,245,143,135,111,53,160,157,132,195,214,126,178,154,131,217,152,109,121,6,103,197,126,44,188,216,167,153,198,208,113,235,8,85,231,177,226,61,117,160,144,228,135,93,42,239,76,219,45,190,35,101,156,189,124,220,215,186,245,209,99,192,154,77,168,214,179,29,1,155,200,134,160,192,120,30,76,123,195,21,17,192,189,151,231,243,167,107,75,8,30,49,20,146,46,20,236,164,183,35,0,78,4,126,83,160,211,177,15,128,75,240,250,199,98,147,192,74,184,207,230,94,146,40,86,160,2,77,225,77,192,140,56,244,155,92,206,232,160,173,25,97,151,4,14,250,193,102,223,32,217,175,89,167,237,209,24,122,69,121,79,52,130,12,5,168,192,23,40,137,235,160,137,64,183,69,124,15,95,148,156,197,5,103,87,251,140,6,99,53,127,206,1,232,43,229,156,255,7,243,225,97,131,126,160,179,253,144,148,128,37,142,180,177,255,1,66,190,186,243,213,157,165,10,255,107,128,127,167,193,163,167,161,122,77,89,125,160,241,128,172,157,189,54,79,20,246,136,62,239,208,239,44,44,50,16,212,4,94,187,29,162,200,16,139,228,29,143,243,146,160,102,10,219,89,69,53,202,19,147,75,79,217,149,73,63,22,38,222,90,158,146,32,5,145,248,86,183,195,230,207,33,75,160,223,212,45,62,78,73,59,224,92,164,146,215,86,0,81,183,118,204,100,114,26,15,133,36,201,52,85,71,51,180,34,185,160,228,216,210,49,162,105,158,82,165,38,198,174,140,67,178,57,230,168,65,109,207,201,158,221,86,140,92,9,99,107,97,46,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[249,1,81],[249,1,81]]}},"account":null,"storage":null,"values":[[160,129,80,139,28,69,52,151,22,48,144,115,255,77,49,134,160,185,135,245,63,99,65,64,253,32,185,19,126,164,137,197,137,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,126,89,243,163,251,3,42,80,28,227,221,179,112,180,6,58,46,112,97,57,250,199,36,99,83,92,22,81,68,105,251,253,0],[160,222,135,108,9,125,128,158,39,223,159,120,131,119,128,75,223,82,85,111,166,60,55,62,106,33,237,97,88,171,251,110,83,0],[160,238,20,66,157,50,235,164,218,147,118,186,198,235,147,24,94,48,180,79,119,68,82,203,50,235,129,116,45,59,90,227,198,0],[160,200,98,184,237,83,92,112,182,117,142,212,216,62,48,72,251,95,237,24,207,177,248,104,246,147,248,219,150,222,77,63,81,0],[160,40,35,69,178,99,44,6,12,126,7,150,179,188,212,149,193,218,249,148,224,100,55,136,115,8,195,205,107,201,168,139,61,0],[160,29,115,216,229,14,147,21,18,226,132,84,216,185,235,81,186,128,168,30,61,56,41,88,179,171,177,190,243,130,49,168,45,0],[160,202,151,152,210,74,58,69,175,88,49,120,106,204,230,130,103,14,132,65,172,174,65,17,11,240,205,119,236,4,0,118,164,0],[160,82,233,236,139,34,202,254,90,231,46,247,252,30,246,192,141,133,209,220,52,102,138,148,133,245,203,233,168,139,186,115,189,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,170,50,109,146,183,123,238,90,8,191,231,253,106,24,164,181,231,48,100,133,99,115,153,95,87,85,217,182,119,149,98,210,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,160,115,126,112,147,196,136,28,15,150,162,92,47,205,78,44,227,63,239,211,17,100,85,208,222,189,246,240,192,14,141,34,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,81,128,128,160,126,89,243,163,251,3,42,80,28,227,221,179,112,180,6,58,46,112,97,57,250,199,36,99,83,92,22,81,68,105,251,253,160,222,135,108,9,125,128,158,39,223,159,120,131,119,128,75,223,82,85,111,166,60,55,62,106,33,237,97,88,171,251,110,83,160,238,20,66,157,50,235,164,218,147,118,186,198,235,147,24,94,48,180,79,119,68,82,203,50,235,129,116,45,59,90,227,198,160,200,98,184,237,83,92,112,182,117,142,212,216,62,48,72,251,95,237,24,207,177,248,104,246,147,248,219,150,222,77,63,81,160,40,35,69,178,99,44,6,12,126,7,150,179,188,212,149,193,218,249,148,224,100,55,136,115,8,195,205,107,201,168,139,61,160,29,115,216,229,14,147,21,18,226,132,84,216,185,235,81,186,128,168,30,61,56,41,88,179,171,177,190,243,130,49,168,45,160,202,151,152,210,74,58,69,175,88,49,120,106,204,230,130,103,14,132,65,172,174,65,17,11,240,205,119,236,4,0,118,164,160,82,233,236,139,34,202,254,90,231,46,247,252,30,246,192,141,133,209,220,52,102,138,148,133,245,203,233,168,139,186,115,189,128,160,170,50,109,146,183,123,238,90,8,191,231,253,106,24,164,181,231,48,100,133,99,115,153,95,87,85,217,182,119,149,98,210,128,128,160,160,115,126,112,147,196,136,28,15,150,162,92,47,205,78,44,227,63,239,211,17,100,85,208,222,189,246,240,192,14,141,34,128,128],[249,1,81,128,128,160,126,89,243,163,251,3,42,80,28,227,221,179,112,180,6,58,46,112,97,57,250,199,36,99,83,92,22,81,68,105,251,253,160,222,135,108,9,125,128,158,39,223,159,120,131,119,128,75,223,82,85,111,166,60,55,62,106,33,237,97,88,171,251,110,83,160,238,20,66,157,50,235,164,218,147,118,186,198,235,147,24,94,48,180,79,119,68,82,203,50,235,129,116,45,59,90,227,198,160,200,98,184,237,83,92,112,182,117,142,212,216,62,48,72,251,95,237,24,207,177,248,104,246,147,248,219,150,222,77,63,81,160,40,35,69,178,99,44,6,12,126,7,150,179,188,212,149,193,218,249,148,224,100,55,136,115,8,195,205,107,201,168,139,61,160,29,115,216,229,14,147,21,18,226,132,84,216,185,235,81,186,128,168,30,61,56,41,88,179,171,177,190,243,130,49,168,45,160,202,151,152,210,74,58,69,175,88,49,120,106,204,230,130,103,14,132,65,172,174,65,17,11,240,205,119,236,4,0,118,164,160,129,80,139,28,69,52,151,22,48,144,115,255,77,49,134,160,185,135,245,63,99,65,64,253,32,185,19,126,164,137,197,137,128,160,170,50,109,146,183,123,238,90,8,191,231,253,106,24,164,181,231,48,100,133,99,115,153,95,87,85,217,182,119,149,98,210,128,128,160,160,115,126,112,147,196,136,28,15,150,162,92,47,205,78,44,227,63,239,211,17,100,85,208,222,189,246,240,192,14,141,34,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,37,17,13,129,200,178,72,108,252,80,129,125,105,199,107,145,1,235,148,55,189,95,170,24,143,191,86,39,171,58,50,138,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,64,47,191,0,189,168,195,89,129,204,127,203,58,8,34,179,83,126,228,51,194,75,211,252,10,168,112,171,164,121,200,180,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,39,4,135,119,170,144,247,93,151,121,202,21,17,248,83,237,112,167,212,125,70,107,198,175,140,4,25,5,193,71,173,186,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,128,128,128,128,160,64,47,191,0,189,168,195,89,129,204,127,203,58,8,34,179,83,126,228,51,194,75,211,252,10,168,112,171,164,121,200,180,128,160,39,4,135,119,170,144,247,93,151,121,202,21,17,248,83,237,112,167,212,125,70,107,198,175,140,4,25,5,193,71,173,186,128,128],[248,81,128,128,128,128,128,128,128,128,128,128,128,128,160,64,47,191,0,189,168,195,89,129,204,127,203,58,8,34,179,83,126,228,51,194,75,211,252,10,168,112,171,164,121,200,180,128,160,37,17,13,129,200,178,72,108,252,80,129,125,105,199,107,145,1,235,148,55,189,95,170,24,143,191,86,39,171,58,50,138,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,172,239,18,160,24,140,50,179,108,87,149,120,38,223,78,36,232,177,156],"key":[240,122,52,158,98,115,194,37,21,136,10,199,128,184,179,154,98,246,29,99,101,194,196,151,203,221,118,74,72,36,144,3],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,32,98,115,194,37,21,136,10,199,128,184,179,154,98,246,29,99,101,194,196,151,203,221,118,74,72,36,144,3,0,0,0,0],[157,32,98,115,194,37,21,136,10,199,128,184,179,154,98,246,29,99,101,194,196,151,203,221,118,74,72,36,144,3,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,106,1,138,97,168,132,39,180,170,58,97,189,163,126,183,65,57,8,169,75,189,4,230,45,197,44,135,78,123,8,213,240,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,14,142,80,27,72,84,115,229,209,99,95,234,246,174,158,207,203,24,241,88,99,255,80,41,188,169,74,153,112,34,72,174,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,32,98,115,194,37,21,136,10,199,128,184,179,154,98,246,29,99,101,194,196,151,203,221,118,74,72,36,144,3,0,0,0,0]],"keccak_data":[[248,102,157,32,98,115,194,37,21,136,10,199,128,184,179,154,98,246,29,99,101,194,196,151,203,221,118,74,72,36,144,3,184,70,248,68,128,128,160,106,1,138,97,168,132,39,180,170,58,97,189,163,126,183,65,57,8,169,75,189,4,230,45,197,44,135,78,123,8,213,240,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,32,98,115,194,37,21,136,10,199,128,184,179,154,98,246,29,99,101,194,196,151,203,221,118,74,72,36,144,3,184,70,248,68,128,128,160,14,142,80,27,72,84,115,229,209,99,95,234,246,174,158,207,203,24,241,88,99,255,80,41,188,169,74,153,112,34,72,174,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,172,239,18,160,24,140,50,179,108,87,149,120,38,223,78,36,232,177,156]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,240,219,42,225,105,245,4,210,120,191,26,39,5,230,179,30,156,66,215,140,214,107,34,232,210,202,216,16,98,162,167,66,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,80,6,126,96,224,218,248,112,229,57,50,72,118,141,158,230,252,29,3,252,237,174,199,149,148,23,168,84,63,186,12,123,0],[160,6,75,228,10,237,244,216,114,10,229,121,161,143,75,5,17,221,222,73,91,55,146,244,67,143,162,5,205,143,149,103,240,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,207,120,231,18,233,241,179,169,36,177,184,125,220,24,128,228,70,55,206,103,127,185,9,240,129,49,142,26,209,86,245,156,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,177,130,114,79,177,83,38,50,136,69,53,231,131,160,24,248,188,178,121,147,17,50,194,42,83,203,172,177,39,207,144,216,0],[160,71,7,191,85,198,174,232,214,66,236,181,123,53,120,179,108,97,107,194,238,228,75,194,13,218,91,47,151,101,186,115,103,0],[160,228,234,174,76,130,145,42,8,229,241,27,246,28,214,65,84,3,30,248,131,65,204,65,114,75,151,179,144,182,154,174,115,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,98,154,166,35,68,167,154,137,228,133,121,210,6,153,119,68,221,161,177,99,217,202,103,110,123,36,66,30,109,33,236,95,0],[160,217,112,243,192,99,211,215,254,67,255,101,141,16,210,66,126,211,105,152,44,52,116,181,145,243,124,162,183,110,164,166,254,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,128,128,160,80,6,126,96,224,218,248,112,229,57,50,72,118,141,158,230,252,29,3,252,237,174,199,149,148,23,168,84,63,186,12,123,160,6,75,228,10,237,244,216,114,10,229,121,161,143,75,5,17,221,222,73,91,55,146,244,67,143,162,5,205,143,149,103,240,128,160,207,120,231,18,233,241,179,169,36,177,184,125,220,24,128,228,70,55,206,103,127,185,9,240,129,49,142,26,209,86,245,156,128,160,177,130,114,79,177,83,38,50,136,69,53,231,131,160,24,248,188,178,121,147,17,50,194,42,83,203,172,177,39,207,144,216,160,71,7,191,85,198,174,232,214,66,236,181,123,53,120,179,108,97,107,194,238,228,75,194,13,218,91,47,151,101,186,115,103,160,228,234,174,76,130,145,42,8,229,241,27,246,28,214,65,84,3,30,248,131,65,204,65,114,75,151,179,144,182,154,174,115,128,128,160,98,154,166,35,68,167,154,137,228,133,121,210,6,153,119,68,221,161,177,99,217,202,103,110,123,36,66,30,109,33,236,95,160,217,112,243,192,99,211,215,254,67,255,101,141,16,210,66,126,211,105,152,44,52,116,181,145,243,124,162,183,110,164,166,254,128,128,128],[249,1,17,128,128,160,80,6,126,96,224,218,248,112,229,57,50,72,118,141,158,230,252,29,3,252,237,174,199,149,148,23,168,84,63,186,12,123,160,6,75,228,10,237,244,216,114,10,229,121,161,143,75,5,17,221,222,73,91,55,146,244,67,143,162,5,205,143,149,103,240,128,160,207,120,231,18,233,241,179,169,36,177,184,125,220,24,128,228,70,55,206,103,127,185,9,240,129,49,142,26,209,86,245,156,128,160,177,130,114,79,177,83,38,50,136,69,53,231,131,160,24,248,188,178,121,147,17,50,194,42,83,203,172,177,39,207,144,216,160,71,7,191,85,198,174,232,214,66,236,181,123,53,120,179,108,97,107,194,238,228,75,194,13,218,91,47,151,101,186,115,103,160,228,234,174,76,130,145,42,8,229,241,27,246,28,214,65,84,3,30,248,131,65,204,65,114,75,151,179,144,182,154,174,115,128,128,160,240,219,42,225,105,245,4,210,120,191,26,39,5,230,179,30,156,66,215,140,214,107,34,232,210,202,216,16,98,162,167,66,160,217,112,243,192,99,211,215,254,67,255,101,141,16,210,66,126,211,105,152,44,52,116,181,145,243,124,162,183,110,164,166,254,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,true],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":3,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,77,167,211,34,100,13,11,17,140,105,45,163,30,81,93,255,79,56,255,86,166,178,237,78,11,42,10,191,175,234,141,158,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,235,226,146,11,204,214,45,98,2,160,99,165,108,220,53,17,220,56,55,192,43,172,22,16,30,247,169,11,191,15,113,179,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,77,167,211,34,100,13,11,17,140,105,45,163,30,81,93,255,79,56,255,86,166,178,237,78,11,42,10,191,175,234,141,158,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,160,235,226,146,11,204,214,45,98,2,160,99,165,108,220,53,17,220,56,55,192,43,172,22,16,30,247,169,11,191,15,113,179,128,128,128,128,128,128,128,160,77,167,211,34,100,13,11,17,140,105,45,163,30,81,93,255,79,56,255,86,166,178,237,78,11,42,10,191,175,234,141,158,128,128,128,128,128],[248,81,128,128,128,160,235,226,146,11,204,214,45,98,2,160,99,165,108,220,53,17,220,56,55,192,43,172,22,16,30,247,169,11,191,15,113,179,128,128,128,128,128,128,128,160,77,167,211,34,100,13,11,17,140,105,45,163,30,81,93,255,79,56,255,86,166,178,237,78,11,42,10,191,175,234,141,158,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,221,34,119,170],"key":[203,29,94,15,90,200,208,249,71,35,236,235,72,247,160,201,194,234,242,115,207,54,109,28,193,140,203,170,96,165,212,83],"list_rlp_bytes":[[248,67],[248,67]],"value_rlp_bytes":[[161],[161]],"drifted_rlp_bytes":[248,67],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,32,29,94,15,90,200,208,249,71,35,236,235,72,247,160,201,194,234,242,115,207,54,109,28,193,140,203,170,96,165,212,83,0],[160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170,0],[160,51,62,151,72,208,183,158,110,122,82,218,22,62,0,172,84,114,170,48,10,115,161,72,169,90,30,106,224,154,198,226,145,0],[160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170,0],[160,32,62,151,72,208,183,158,110,122,82,218,22,62,0,172,84,114,170,48,10,115,161,72,169,90,30,106,224,154,198,226,145,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,67,160,32,29,94,15,90,200,208,249,71,35,236,235,72,247,160,201,194,234,242,115,207,54,109,28,193,140,203,170,96,165,212,83,161,160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170],[248,67,160,51,62,151,72,208,183,158,110,122,82,218,22,62,0,172,84,114,170,48,10,115,161,72,169,90,30,106,224,154,198,226,145,161,160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,221,34,119,170],[248,67,160,32,62,151,72,208,183,158,110,122,82,218,22,62,0,172,84,114,170,48,10,115,161,72,169,90,30,106,224,154,198,226,145,161,160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/DeleteBranchTwoLevels.json b/zkevm-circuits/src/mpt_circuit/tests/DeleteBranchTwoLevels.json new file mode 100644 index 0000000000..9e77cb3ffb --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/DeleteBranchTwoLevels.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,135,6,177,186,137,208,61,209,115,19,73,12,217,117,3,208,64,43,205,174,179,42,208,180,65,228,49,209,141,151,234,99,0],[160,131,244,162,239,91,101,219,201,44,255,71,235,101,209,107,82,73,79,247,70,252,131,103,66,150,168,89,225,127,185,205,186,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,169,2,129,123,157,140,225,182,40,224,98,197,182,190,207,148,156,218,233,34,145,60,192,82,177,229,117,154,134,75,58,7,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,96,242,204,87,70,40,27,40,189,46,193,133,173,251,67,53,183,102,39,76,175,46,6,122,128,250,249,228,146,221,196,243,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,96,242,204,87,70,40,27,40,189,46,193,133,173,251,67,53,183,102,39,76,175,46,6,122,128,250,249,228,146,221,196,243,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,169,2,129,123,157,140,225,182,40,224,98,197,182,190,207,148,156,218,233,34,145,60,192,82,177,229,117,154,134,75,58,7,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,61,51,32,49,209,126,142,243,172,82,104,43,161,166,21,78,209,151,3,99,117,202,113,14,201,54,39,61,243,80,209,16,0],[160,138,127,33,146,228,217,81,168,148,54,25,221,110,14,147,44,205,207,240,252,85,10,74,6,90,215,37,163,85,197,209,147,0],[160,197,140,243,130,135,5,44,240,122,52,88,152,223,194,55,78,253,239,20,14,240,195,72,157,251,203,43,166,221,72,42,243,0],[160,75,39,144,178,195,157,130,92,242,146,126,25,212,148,140,173,8,127,165,43,106,75,70,197,89,209,124,226,17,57,179,182,0],[160,166,127,220,77,52,242,127,4,221,222,179,99,228,219,234,107,128,132,162,28,54,50,74,245,6,155,81,220,35,222,239,180,0],[160,201,23,97,51,242,210,154,98,237,199,3,86,200,246,170,218,161,196,95,239,33,17,224,134,53,97,167,143,127,52,237,135,0],[160,19,80,126,245,125,58,26,171,154,180,156,179,105,38,103,20,91,210,24,164,166,224,218,169,142,142,169,66,214,236,187,6,0],[160,165,82,147,29,195,97,238,45,114,242,138,56,34,241,197,209,102,77,31,87,107,168,63,130,23,5,76,252,18,13,236,167,0],[160,137,36,143,25,251,26,164,237,66,26,232,13,77,146,144,176,22,49,121,100,141,43,91,142,171,76,62,36,85,147,110,190,0],[160,11,115,235,188,72,84,161,207,127,77,34,28,249,39,93,96,107,210,35,230,154,186,144,28,119,73,153,188,24,77,109,240,0],[160,32,16,34,222,52,84,189,67,5,218,27,231,255,241,137,75,169,212,46,174,56,117,221,170,189,159,246,103,118,27,94,55,0],[160,196,152,69,59,144,47,23,238,69,44,248,41,68,85,141,160,133,102,55,49,102,245,19,140,135,71,233,138,80,112,134,106,0],[160,235,44,30,228,32,41,209,13,249,2,126,168,201,236,57,195,159,104,121,127,158,158,105,129,93,237,225,173,201,228,18,26,0],[160,73,123,173,142,67,153,155,66,154,32,234,242,62,142,135,231,90,130,33,64,124,47,23,76,160,193,31,112,13,86,158,163,0],[160,212,168,40,58,146,19,183,174,219,219,161,40,190,207,207,64,53,225,243,141,48,238,255,22,190,203,157,242,113,27,78,198,0],[160,230,64,192,124,51,112,56,150,2,235,12,184,74,44,180,235,29,218,102,116,42,9,138,165,90,10,72,105,142,17,120,130,0],[160,10,45,72,232,98,165,163,10,157,119,129,253,31,63,210,152,123,72,87,208,99,245,73,99,63,206,57,190,38,252,227,143,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,138,127,33,146,228,217,81,168,148,54,25,221,110,14,147,44,205,207,240,252,85,10,74,6,90,215,37,163,85,197,209,147,160,197,140,243,130,135,5,44,240,122,52,88,152,223,194,55,78,253,239,20,14,240,195,72,157,251,203,43,166,221,72,42,243,160,75,39,144,178,195,157,130,92,242,146,126,25,212,148,140,173,8,127,165,43,106,75,70,197,89,209,124,226,17,57,179,182,160,166,127,220,77,52,242,127,4,221,222,179,99,228,219,234,107,128,132,162,28,54,50,74,245,6,155,81,220,35,222,239,180,160,201,23,97,51,242,210,154,98,237,199,3,86,200,246,170,218,161,196,95,239,33,17,224,134,53,97,167,143,127,52,237,135,160,19,80,126,245,125,58,26,171,154,180,156,179,105,38,103,20,91,210,24,164,166,224,218,169,142,142,169,66,214,236,187,6,160,165,82,147,29,195,97,238,45,114,242,138,56,34,241,197,209,102,77,31,87,107,168,63,130,23,5,76,252,18,13,236,167,160,137,36,143,25,251,26,164,237,66,26,232,13,77,146,144,176,22,49,121,100,141,43,91,142,171,76,62,36,85,147,110,190,160,11,115,235,188,72,84,161,207,127,77,34,28,249,39,93,96,107,210,35,230,154,186,144,28,119,73,153,188,24,77,109,240,160,32,16,34,222,52,84,189,67,5,218,27,231,255,241,137,75,169,212,46,174,56,117,221,170,189,159,246,103,118,27,94,55,160,196,152,69,59,144,47,23,238,69,44,248,41,68,85,141,160,133,102,55,49,102,245,19,140,135,71,233,138,80,112,134,106,160,235,44,30,228,32,41,209,13,249,2,126,168,201,236,57,195,159,104,121,127,158,158,105,129,93,237,225,173,201,228,18,26,160,73,123,173,142,67,153,155,66,154,32,234,242,62,142,135,231,90,130,33,64,124,47,23,76,160,193,31,112,13,86,158,163,160,212,168,40,58,146,19,183,174,219,219,161,40,190,207,207,64,53,225,243,141,48,238,255,22,190,203,157,242,113,27,78,198,160,230,64,192,124,51,112,56,150,2,235,12,184,74,44,180,235,29,218,102,116,42,9,138,165,90,10,72,105,142,17,120,130,160,10,45,72,232,98,165,163,10,157,119,129,253,31,63,210,152,123,72,87,208,99,245,73,99,63,206,57,190,38,252,227,143,128],[249,2,17,160,138,127,33,146,228,217,81,168,148,54,25,221,110,14,147,44,205,207,240,252,85,10,74,6,90,215,37,163,85,197,209,147,160,197,140,243,130,135,5,44,240,122,52,88,152,223,194,55,78,253,239,20,14,240,195,72,157,251,203,43,166,221,72,42,243,160,75,39,144,178,195,157,130,92,242,146,126,25,212,148,140,173,8,127,165,43,106,75,70,197,89,209,124,226,17,57,179,182,160,166,127,220,77,52,242,127,4,221,222,179,99,228,219,234,107,128,132,162,28,54,50,74,245,6,155,81,220,35,222,239,180,160,61,51,32,49,209,126,142,243,172,82,104,43,161,166,21,78,209,151,3,99,117,202,113,14,201,54,39,61,243,80,209,16,160,19,80,126,245,125,58,26,171,154,180,156,179,105,38,103,20,91,210,24,164,166,224,218,169,142,142,169,66,214,236,187,6,160,165,82,147,29,195,97,238,45,114,242,138,56,34,241,197,209,102,77,31,87,107,168,63,130,23,5,76,252,18,13,236,167,160,137,36,143,25,251,26,164,237,66,26,232,13,77,146,144,176,22,49,121,100,141,43,91,142,171,76,62,36,85,147,110,190,160,11,115,235,188,72,84,161,207,127,77,34,28,249,39,93,96,107,210,35,230,154,186,144,28,119,73,153,188,24,77,109,240,160,32,16,34,222,52,84,189,67,5,218,27,231,255,241,137,75,169,212,46,174,56,117,221,170,189,159,246,103,118,27,94,55,160,196,152,69,59,144,47,23,238,69,44,248,41,68,85,141,160,133,102,55,49,102,245,19,140,135,71,233,138,80,112,134,106,160,235,44,30,228,32,41,209,13,249,2,126,168,201,236,57,195,159,104,121,127,158,158,105,129,93,237,225,173,201,228,18,26,160,73,123,173,142,67,153,155,66,154,32,234,242,62,142,135,231,90,130,33,64,124,47,23,76,160,193,31,112,13,86,158,163,160,212,168,40,58,146,19,183,174,219,219,161,40,190,207,207,64,53,225,243,141,48,238,255,22,190,203,157,242,113,27,78,198,160,230,64,192,124,51,112,56,150,2,235,12,184,74,44,180,235,29,218,102,116,42,9,138,165,90,10,72,105,142,17,120,130,160,10,45,72,232,98,165,163,10,157,119,129,253,31,63,210,152,123,72,87,208,99,245,73,99,63,206,57,190,38,252,227,143,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,215,117,245,209,17,187,169,82,19,201,249,81,91,144,79,212,135,246,187,176,59,5,75,114,171,0,233,250,53,138,25,50,0],[160,1,154,77,232,132,244,2,170,42,217,92,225,77,188,226,2,236,251,25,116,37,208,19,100,21,137,83,21,132,202,203,173,0],[160,56,175,97,189,163,133,240,131,253,244,192,209,138,101,39,36,122,211,243,226,31,207,213,84,248,238,198,117,21,82,144,176,0],[160,8,111,149,23,201,150,134,174,128,247,108,157,142,166,160,157,51,0,241,218,232,177,174,215,235,32,100,85,30,104,174,43,0],[160,247,221,127,201,69,111,139,156,108,34,170,55,220,38,46,98,35,30,127,46,50,62,194,236,159,165,194,110,97,50,206,190,0],[160,108,50,30,157,255,131,174,58,49,138,90,78,35,162,27,72,106,28,150,241,148,41,121,212,19,139,92,74,127,96,170,228,0],[160,23,209,102,7,14,169,48,137,46,148,41,134,148,39,101,60,57,242,164,165,192,70,239,231,175,103,151,122,199,10,193,239,0],[160,67,56,110,181,49,126,195,27,142,224,17,6,19,72,216,252,76,53,196,78,55,202,0,243,136,36,114,106,4,223,158,26,0],[160,245,8,11,11,26,8,224,235,61,135,144,250,88,220,254,136,61,124,232,220,164,67,161,7,31,83,50,178,141,253,95,79,0],[160,0,18,141,36,74,180,245,159,125,107,215,56,130,19,255,3,53,220,241,116,133,132,32,131,164,177,77,79,75,240,163,62,0],[160,166,45,8,51,13,193,209,169,95,146,241,6,134,246,174,87,207,113,132,222,30,55,212,15,248,62,169,167,178,197,12,149,0],[160,235,25,229,90,112,134,91,18,242,149,85,153,32,19,251,232,254,58,42,177,88,166,66,227,185,50,177,176,167,49,140,135,0],[160,241,108,249,13,244,147,39,162,139,175,181,56,42,123,35,118,84,214,40,203,45,61,111,254,115,9,64,111,207,201,50,173,0],[160,62,105,133,156,106,144,166,121,101,73,103,232,186,165,142,212,240,36,134,183,48,165,218,110,11,191,230,95,186,152,21,85,0],[160,220,68,179,229,92,253,253,144,1,126,207,226,134,25,184,157,14,201,214,35,184,200,1,207,29,178,49,143,92,212,29,24,0],[160,116,29,56,55,224,216,249,236,127,201,245,75,202,74,255,150,251,34,0,238,75,102,88,190,176,82,37,68,197,189,46,193,0],[160,228,237,144,244,15,170,173,194,147,232,237,253,81,230,188,48,231,255,79,237,60,39,49,114,117,222,197,199,78,246,197,106,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,1,154,77,232,132,244,2,170,42,217,92,225,77,188,226,2,236,251,25,116,37,208,19,100,21,137,83,21,132,202,203,173,160,56,175,97,189,163,133,240,131,253,244,192,209,138,101,39,36,122,211,243,226,31,207,213,84,248,238,198,117,21,82,144,176,160,8,111,149,23,201,150,134,174,128,247,108,157,142,166,160,157,51,0,241,218,232,177,174,215,235,32,100,85,30,104,174,43,160,247,221,127,201,69,111,139,156,108,34,170,55,220,38,46,98,35,30,127,46,50,62,194,236,159,165,194,110,97,50,206,190,160,108,50,30,157,255,131,174,58,49,138,90,78,35,162,27,72,106,28,150,241,148,41,121,212,19,139,92,74,127,96,170,228,160,23,209,102,7,14,169,48,137,46,148,41,134,148,39,101,60,57,242,164,165,192,70,239,231,175,103,151,122,199,10,193,239,160,67,56,110,181,49,126,195,27,142,224,17,6,19,72,216,252,76,53,196,78,55,202,0,243,136,36,114,106,4,223,158,26,160,245,8,11,11,26,8,224,235,61,135,144,250,88,220,254,136,61,124,232,220,164,67,161,7,31,83,50,178,141,253,95,79,160,0,18,141,36,74,180,245,159,125,107,215,56,130,19,255,3,53,220,241,116,133,132,32,131,164,177,77,79,75,240,163,62,160,166,45,8,51,13,193,209,169,95,146,241,6,134,246,174,87,207,113,132,222,30,55,212,15,248,62,169,167,178,197,12,149,160,235,25,229,90,112,134,91,18,242,149,85,153,32,19,251,232,254,58,42,177,88,166,66,227,185,50,177,176,167,49,140,135,160,241,108,249,13,244,147,39,162,139,175,181,56,42,123,35,118,84,214,40,203,45,61,111,254,115,9,64,111,207,201,50,173,160,62,105,133,156,106,144,166,121,101,73,103,232,186,165,142,212,240,36,134,183,48,165,218,110,11,191,230,95,186,152,21,85,160,220,68,179,229,92,253,253,144,1,126,207,226,134,25,184,157,14,201,214,35,184,200,1,207,29,178,49,143,92,212,29,24,160,116,29,56,55,224,216,249,236,127,201,245,75,202,74,255,150,251,34,0,238,75,102,88,190,176,82,37,68,197,189,46,193,160,228,237,144,244,15,170,173,194,147,232,237,253,81,230,188,48,231,255,79,237,60,39,49,114,117,222,197,199,78,246,197,106,128],[249,2,17,160,1,154,77,232,132,244,2,170,42,217,92,225,77,188,226,2,236,251,25,116,37,208,19,100,21,137,83,21,132,202,203,173,160,56,175,97,189,163,133,240,131,253,244,192,209,138,101,39,36,122,211,243,226,31,207,213,84,248,238,198,117,21,82,144,176,160,8,111,149,23,201,150,134,174,128,247,108,157,142,166,160,157,51,0,241,218,232,177,174,215,235,32,100,85,30,104,174,43,160,247,221,127,201,69,111,139,156,108,34,170,55,220,38,46,98,35,30,127,46,50,62,194,236,159,165,194,110,97,50,206,190,160,108,50,30,157,255,131,174,58,49,138,90,78,35,162,27,72,106,28,150,241,148,41,121,212,19,139,92,74,127,96,170,228,160,23,209,102,7,14,169,48,137,46,148,41,134,148,39,101,60,57,242,164,165,192,70,239,231,175,103,151,122,199,10,193,239,160,67,56,110,181,49,126,195,27,142,224,17,6,19,72,216,252,76,53,196,78,55,202,0,243,136,36,114,106,4,223,158,26,160,245,8,11,11,26,8,224,235,61,135,144,250,88,220,254,136,61,124,232,220,164,67,161,7,31,83,50,178,141,253,95,79,160,0,18,141,36,74,180,245,159,125,107,215,56,130,19,255,3,53,220,241,116,133,132,32,131,164,177,77,79,75,240,163,62,160,166,45,8,51,13,193,209,169,95,146,241,6,134,246,174,87,207,113,132,222,30,55,212,15,248,62,169,167,178,197,12,149,160,235,25,229,90,112,134,91,18,242,149,85,153,32,19,251,232,254,58,42,177,88,166,66,227,185,50,177,176,167,49,140,135,160,241,108,249,13,244,147,39,162,139,175,181,56,42,123,35,118,84,214,40,203,45,61,111,254,115,9,64,111,207,201,50,173,160,62,105,133,156,106,144,166,121,101,73,103,232,186,165,142,212,240,36,134,183,48,165,218,110,11,191,230,95,186,152,21,85,160,215,117,245,209,17,187,169,82,19,201,249,81,91,144,79,212,135,246,187,176,59,5,75,114,171,0,233,250,53,138,25,50,160,116,29,56,55,224,216,249,236,127,201,245,75,202,74,255,150,251,34,0,238,75,102,88,190,176,82,37,68,197,189,46,193,160,228,237,144,244,15,170,173,194,147,232,237,253,81,230,188,48,231,255,79,237,60,39,49,114,117,222,197,199,78,246,197,106,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":2,"drifted_index":2,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,28,62,251,6,5,106,99,38,234,137,204,4,36,150,83,1,40,21,67,54,169,62,193,187,238,82,36,84,10,133,176,3,0],[160,154,184,196,90,163,191,49,176,170,125,73,195,215,31,28,94,106,178,167,101,198,147,246,63,112,182,47,198,153,57,161,83,0],[160,51,151,14,131,183,133,31,146,9,57,82,223,106,93,22,224,211,105,11,194,17,54,71,20,123,222,239,131,109,169,217,207,0],[160,252,188,163,57,126,103,126,155,204,232,185,93,47,154,240,234,179,166,89,187,192,4,218,170,249,53,232,170,102,42,52,64,0],[160,218,27,115,216,212,204,68,74,148,204,233,112,235,163,10,70,153,130,12,250,231,157,115,105,240,184,33,5,61,15,110,166,0],[160,59,81,43,57,17,72,110,142,245,26,93,11,103,92,109,49,22,130,14,177,67,81,231,232,233,139,16,172,171,190,72,71,0],[160,241,6,25,174,167,104,189,16,43,66,18,17,187,155,25,86,98,25,213,87,97,15,49,111,169,235,141,233,229,5,130,185,0],[160,8,209,170,56,34,216,166,47,85,91,68,183,171,116,107,5,46,104,188,79,142,31,137,56,60,91,25,86,255,112,242,93,0],[160,227,156,133,22,169,46,83,254,171,117,125,106,201,254,225,71,79,204,76,66,33,88,63,219,151,12,73,174,135,12,254,216,0],[160,221,74,13,100,123,225,147,129,48,6,126,67,65,29,192,40,154,94,110,9,179,109,112,82,210,43,36,36,180,187,209,241,0],[160,107,155,10,160,49,8,223,130,102,68,205,10,168,199,132,219,45,155,92,112,1,85,67,125,128,58,204,243,150,88,168,208,0],[160,123,183,228,164,128,161,85,180,92,141,75,244,131,28,162,81,110,5,181,188,73,220,183,216,81,54,153,158,114,78,231,12,0],[160,229,246,33,116,249,158,161,199,83,219,252,200,185,206,2,29,45,233,224,204,106,210,108,136,181,166,229,176,33,8,83,240,0],[160,116,120,59,79,60,139,26,20,87,80,79,4,72,52,223,18,139,182,14,203,182,62,232,122,27,140,118,186,68,170,57,225,0],[160,94,168,116,46,149,152,225,232,247,220,6,178,108,173,45,135,251,53,237,61,72,46,168,99,177,122,79,188,242,28,81,240,0],[160,160,126,200,60,13,95,222,127,126,135,227,48,60,90,127,35,167,46,240,76,152,109,221,101,57,189,68,120,113,65,127,238,0],[160,62,249,125,148,198,50,194,7,35,39,201,233,53,205,72,58,173,52,224,218,144,77,237,112,197,88,65,118,90,138,34,121,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,154,184,196,90,163,191,49,176,170,125,73,195,215,31,28,94,106,178,167,101,198,147,246,63,112,182,47,198,153,57,161,83,160,51,151,14,131,183,133,31,146,9,57,82,223,106,93,22,224,211,105,11,194,17,54,71,20,123,222,239,131,109,169,217,207,160,252,188,163,57,126,103,126,155,204,232,185,93,47,154,240,234,179,166,89,187,192,4,218,170,249,53,232,170,102,42,52,64,160,218,27,115,216,212,204,68,74,148,204,233,112,235,163,10,70,153,130,12,250,231,157,115,105,240,184,33,5,61,15,110,166,160,59,81,43,57,17,72,110,142,245,26,93,11,103,92,109,49,22,130,14,177,67,81,231,232,233,139,16,172,171,190,72,71,160,241,6,25,174,167,104,189,16,43,66,18,17,187,155,25,86,98,25,213,87,97,15,49,111,169,235,141,233,229,5,130,185,160,8,209,170,56,34,216,166,47,85,91,68,183,171,116,107,5,46,104,188,79,142,31,137,56,60,91,25,86,255,112,242,93,160,227,156,133,22,169,46,83,254,171,117,125,106,201,254,225,71,79,204,76,66,33,88,63,219,151,12,73,174,135,12,254,216,160,221,74,13,100,123,225,147,129,48,6,126,67,65,29,192,40,154,94,110,9,179,109,112,82,210,43,36,36,180,187,209,241,160,107,155,10,160,49,8,223,130,102,68,205,10,168,199,132,219,45,155,92,112,1,85,67,125,128,58,204,243,150,88,168,208,160,123,183,228,164,128,161,85,180,92,141,75,244,131,28,162,81,110,5,181,188,73,220,183,216,81,54,153,158,114,78,231,12,160,229,246,33,116,249,158,161,199,83,219,252,200,185,206,2,29,45,233,224,204,106,210,108,136,181,166,229,176,33,8,83,240,160,116,120,59,79,60,139,26,20,87,80,79,4,72,52,223,18,139,182,14,203,182,62,232,122,27,140,118,186,68,170,57,225,160,94,168,116,46,149,152,225,232,247,220,6,178,108,173,45,135,251,53,237,61,72,46,168,99,177,122,79,188,242,28,81,240,160,160,126,200,60,13,95,222,127,126,135,227,48,60,90,127,35,167,46,240,76,152,109,221,101,57,189,68,120,113,65,127,238,160,62,249,125,148,198,50,194,7,35,39,201,233,53,205,72,58,173,52,224,218,144,77,237,112,197,88,65,118,90,138,34,121,128],[249,2,17,160,154,184,196,90,163,191,49,176,170,125,73,195,215,31,28,94,106,178,167,101,198,147,246,63,112,182,47,198,153,57,161,83,160,51,151,14,131,183,133,31,146,9,57,82,223,106,93,22,224,211,105,11,194,17,54,71,20,123,222,239,131,109,169,217,207,160,28,62,251,6,5,106,99,38,234,137,204,4,36,150,83,1,40,21,67,54,169,62,193,187,238,82,36,84,10,133,176,3,160,218,27,115,216,212,204,68,74,148,204,233,112,235,163,10,70,153,130,12,250,231,157,115,105,240,184,33,5,61,15,110,166,160,59,81,43,57,17,72,110,142,245,26,93,11,103,92,109,49,22,130,14,177,67,81,231,232,233,139,16,172,171,190,72,71,160,241,6,25,174,167,104,189,16,43,66,18,17,187,155,25,86,98,25,213,87,97,15,49,111,169,235,141,233,229,5,130,185,160,8,209,170,56,34,216,166,47,85,91,68,183,171,116,107,5,46,104,188,79,142,31,137,56,60,91,25,86,255,112,242,93,160,227,156,133,22,169,46,83,254,171,117,125,106,201,254,225,71,79,204,76,66,33,88,63,219,151,12,73,174,135,12,254,216,160,221,74,13,100,123,225,147,129,48,6,126,67,65,29,192,40,154,94,110,9,179,109,112,82,210,43,36,36,180,187,209,241,160,107,155,10,160,49,8,223,130,102,68,205,10,168,199,132,219,45,155,92,112,1,85,67,125,128,58,204,243,150,88,168,208,160,123,183,228,164,128,161,85,180,92,141,75,244,131,28,162,81,110,5,181,188,73,220,183,216,81,54,153,158,114,78,231,12,160,229,246,33,116,249,158,161,199,83,219,252,200,185,206,2,29,45,233,224,204,106,210,108,136,181,166,229,176,33,8,83,240,160,116,120,59,79,60,139,26,20,87,80,79,4,72,52,223,18,139,182,14,203,182,62,232,122,27,140,118,186,68,170,57,225,160,94,168,116,46,149,152,225,232,247,220,6,178,108,173,45,135,251,53,237,61,72,46,168,99,177,122,79,188,242,28,81,240,160,160,126,200,60,13,95,222,127,126,135,227,48,60,90,127,35,167,46,240,76,152,109,221,101,57,189,68,120,113,65,127,238,160,62,249,125,148,198,50,194,7,35,39,201,233,53,205,72,58,173,52,224,218,144,77,237,112,197,88,65,118,90,138,34,121,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,14,165,184,229,251,167,152,183,182,16,199,108,214,126,192,125,109,178,65,126,119,130,108,93,138,90,23,194,112,64,188,5,0],[160,22,97,243,5,145,238,237,184,49,90,119,163,98,243,45,23,173,223,22,117,89,225,31,118,108,130,253,116,17,128,58,75,0],[160,216,41,86,16,201,171,255,36,30,40,12,106,112,24,186,204,147,236,34,169,235,168,164,17,125,236,120,161,101,100,189,20,0],[160,173,169,14,80,23,136,81,53,78,124,37,158,255,149,239,162,72,40,216,24,58,208,33,175,245,211,106,89,128,113,184,123,0],[160,78,115,74,175,134,83,210,136,96,74,154,243,111,65,246,2,238,244,39,240,21,237,27,208,74,47,133,107,92,166,187,6,0],[160,128,20,241,149,125,196,73,163,39,238,44,119,54,173,171,116,245,235,35,253,147,243,122,108,245,1,203,71,164,69,110,38,0],[160,126,109,114,163,186,231,24,38,75,238,64,35,212,197,42,248,212,180,238,47,178,154,7,144,151,26,152,192,28,251,247,126,0],[160,95,232,103,139,95,70,87,130,162,29,219,72,195,139,84,126,100,147,160,32,6,107,37,17,1,75,187,41,124,194,144,87,0],[160,162,245,3,105,229,21,14,87,226,243,0,69,181,248,30,41,6,92,25,110,6,170,244,0,134,0,134,217,122,239,136,72,0],[160,93,180,173,231,161,53,73,235,207,194,108,91,228,210,221,50,181,20,123,180,154,145,38,145,104,141,157,172,100,93,27,64,0],[160,79,228,124,253,144,176,243,137,143,22,25,67,47,218,23,203,201,172,18,101,0,68,13,15,176,178,133,42,13,157,68,115,0],[160,31,44,172,9,6,123,73,151,79,75,238,64,59,235,61,51,101,149,122,128,84,57,121,141,171,145,142,134,113,116,4,82,0],[160,138,203,239,8,227,173,138,145,112,178,150,184,234,65,235,115,60,135,174,253,87,198,71,36,108,161,175,252,30,112,132,133,0],[160,118,139,130,233,57,68,235,170,74,128,96,139,140,50,222,13,50,100,37,111,113,111,165,215,70,111,166,68,151,98,204,18,0],[160,197,60,89,94,200,7,41,131,243,151,140,11,53,183,77,174,14,223,116,31,114,2,164,73,161,253,11,62,30,219,48,251,0],[160,136,187,232,49,248,80,66,226,17,174,51,78,29,210,210,10,14,207,151,68,221,132,144,103,42,28,169,143,61,96,244,120,0],[160,60,105,57,154,123,77,167,64,97,209,113,200,24,110,247,169,160,42,122,17,191,170,192,139,176,149,155,192,169,4,153,155,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,22,97,243,5,145,238,237,184,49,90,119,163,98,243,45,23,173,223,22,117,89,225,31,118,108,130,253,116,17,128,58,75,160,216,41,86,16,201,171,255,36,30,40,12,106,112,24,186,204,147,236,34,169,235,168,164,17,125,236,120,161,101,100,189,20,160,173,169,14,80,23,136,81,53,78,124,37,158,255,149,239,162,72,40,216,24,58,208,33,175,245,211,106,89,128,113,184,123,160,78,115,74,175,134,83,210,136,96,74,154,243,111,65,246,2,238,244,39,240,21,237,27,208,74,47,133,107,92,166,187,6,160,128,20,241,149,125,196,73,163,39,238,44,119,54,173,171,116,245,235,35,253,147,243,122,108,245,1,203,71,164,69,110,38,160,126,109,114,163,186,231,24,38,75,238,64,35,212,197,42,248,212,180,238,47,178,154,7,144,151,26,152,192,28,251,247,126,160,95,232,103,139,95,70,87,130,162,29,219,72,195,139,84,126,100,147,160,32,6,107,37,17,1,75,187,41,124,194,144,87,160,162,245,3,105,229,21,14,87,226,243,0,69,181,248,30,41,6,92,25,110,6,170,244,0,134,0,134,217,122,239,136,72,160,93,180,173,231,161,53,73,235,207,194,108,91,228,210,221,50,181,20,123,180,154,145,38,145,104,141,157,172,100,93,27,64,160,79,228,124,253,144,176,243,137,143,22,25,67,47,218,23,203,201,172,18,101,0,68,13,15,176,178,133,42,13,157,68,115,160,31,44,172,9,6,123,73,151,79,75,238,64,59,235,61,51,101,149,122,128,84,57,121,141,171,145,142,134,113,116,4,82,160,138,203,239,8,227,173,138,145,112,178,150,184,234,65,235,115,60,135,174,253,87,198,71,36,108,161,175,252,30,112,132,133,160,118,139,130,233,57,68,235,170,74,128,96,139,140,50,222,13,50,100,37,111,113,111,165,215,70,111,166,68,151,98,204,18,160,197,60,89,94,200,7,41,131,243,151,140,11,53,183,77,174,14,223,116,31,114,2,164,73,161,253,11,62,30,219,48,251,160,136,187,232,49,248,80,66,226,17,174,51,78,29,210,210,10,14,207,151,68,221,132,144,103,42,28,169,143,61,96,244,120,160,60,105,57,154,123,77,167,64,97,209,113,200,24,110,247,169,160,42,122,17,191,170,192,139,176,149,155,192,169,4,153,155,128],[249,2,17,160,22,97,243,5,145,238,237,184,49,90,119,163,98,243,45,23,173,223,22,117,89,225,31,118,108,130,253,116,17,128,58,75,160,216,41,86,16,201,171,255,36,30,40,12,106,112,24,186,204,147,236,34,169,235,168,164,17,125,236,120,161,101,100,189,20,160,173,169,14,80,23,136,81,53,78,124,37,158,255,149,239,162,72,40,216,24,58,208,33,175,245,211,106,89,128,113,184,123,160,78,115,74,175,134,83,210,136,96,74,154,243,111,65,246,2,238,244,39,240,21,237,27,208,74,47,133,107,92,166,187,6,160,128,20,241,149,125,196,73,163,39,238,44,119,54,173,171,116,245,235,35,253,147,243,122,108,245,1,203,71,164,69,110,38,160,126,109,114,163,186,231,24,38,75,238,64,35,212,197,42,248,212,180,238,47,178,154,7,144,151,26,152,192,28,251,247,126,160,95,232,103,139,95,70,87,130,162,29,219,72,195,139,84,126,100,147,160,32,6,107,37,17,1,75,187,41,124,194,144,87,160,162,245,3,105,229,21,14,87,226,243,0,69,181,248,30,41,6,92,25,110,6,170,244,0,134,0,134,217,122,239,136,72,160,93,180,173,231,161,53,73,235,207,194,108,91,228,210,221,50,181,20,123,180,154,145,38,145,104,141,157,172,100,93,27,64,160,79,228,124,253,144,176,243,137,143,22,25,67,47,218,23,203,201,172,18,101,0,68,13,15,176,178,133,42,13,157,68,115,160,31,44,172,9,6,123,73,151,79,75,238,64,59,235,61,51,101,149,122,128,84,57,121,141,171,145,142,134,113,116,4,82,160,138,203,239,8,227,173,138,145,112,178,150,184,234,65,235,115,60,135,174,253,87,198,71,36,108,161,175,252,30,112,132,133,160,118,139,130,233,57,68,235,170,74,128,96,139,140,50,222,13,50,100,37,111,113,111,165,215,70,111,166,68,151,98,204,18,160,14,165,184,229,251,167,152,183,182,16,199,108,214,126,192,125,109,178,65,126,119,130,108,93,138,90,23,194,112,64,188,5,160,136,187,232,49,248,80,66,226,17,174,51,78,29,210,210,10,14,207,151,68,221,132,144,103,42,28,169,143,61,96,244,120,160,60,105,57,154,123,77,167,64,97,209,113,200,24,110,247,169,160,42,122,17,191,170,192,139,176,149,155,192,169,4,153,155,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,117,56,121,183,61,216,117,135,24,169,19,28,127,231,140,107,165,54,133,115,77,138,250,129,177,204,239,35,192,1,247,118,0],[160,160,247,227,224,39,92,124,112,128,126,14,84,222,155,97,243,74,41,229,164,192,22,83,45,201,3,91,223,146,110,174,121,0],[160,159,220,232,242,19,139,178,87,147,122,144,120,150,216,164,159,50,16,5,35,183,71,172,154,4,119,253,171,79,41,106,26,0],[160,233,228,189,200,125,81,56,148,173,44,160,63,197,156,96,118,210,27,79,22,164,125,139,133,113,208,226,237,112,180,1,25,0],[160,106,93,107,120,26,195,145,193,217,45,189,79,222,26,247,206,104,36,224,94,171,31,237,172,223,201,1,144,226,183,19,16,0],[160,130,146,50,94,78,138,199,146,54,66,183,17,227,230,223,214,107,36,162,67,240,42,248,191,77,255,10,2,49,15,208,107,0],[160,240,46,174,128,182,251,116,219,171,217,55,85,225,26,24,61,61,254,181,150,180,85,57,237,160,128,84,147,181,166,33,190,0],[160,237,212,154,6,213,157,88,55,118,240,34,95,192,130,53,103,80,171,168,208,69,241,168,200,153,41,91,61,116,141,27,167,0],[160,17,125,188,232,194,157,45,161,12,205,188,127,220,4,149,218,114,92,46,5,65,168,241,169,167,17,70,129,136,74,172,253,0],[160,185,54,108,97,27,2,86,247,245,211,245,251,240,34,194,50,41,68,157,82,245,251,251,173,134,161,167,70,36,131,174,205,0],[160,178,249,63,105,17,126,64,115,204,255,7,74,203,68,152,95,49,119,253,152,95,158,53,204,177,57,72,74,107,164,105,112,0],[160,157,253,184,106,191,72,116,6,139,209,31,120,35,249,246,9,161,194,197,28,143,75,195,226,76,179,148,90,127,77,15,34,0],[160,83,121,41,51,189,117,16,170,17,179,126,148,242,200,180,222,150,221,61,40,240,152,183,63,65,85,174,70,170,141,202,27,0],[160,240,105,85,30,151,192,25,220,150,138,159,57,40,54,70,254,209,65,212,224,38,98,255,203,1,192,248,66,180,203,49,116,0],[160,220,97,92,221,236,7,250,219,156,22,177,217,109,65,77,16,42,92,190,248,73,41,192,5,6,22,70,119,80,59,87,57,0],[160,56,100,46,160,143,198,255,143,215,237,8,104,154,255,61,169,149,67,60,106,201,167,165,135,77,230,149,90,114,159,122,109,0],[160,188,11,120,160,221,75,172,126,98,163,230,230,144,219,94,69,48,66,29,72,131,50,221,105,123,74,13,254,159,122,244,204,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,160,247,227,224,39,92,124,112,128,126,14,84,222,155,97,243,74,41,229,164,192,22,83,45,201,3,91,223,146,110,174,121,160,159,220,232,242,19,139,178,87,147,122,144,120,150,216,164,159,50,16,5,35,183,71,172,154,4,119,253,171,79,41,106,26,160,233,228,189,200,125,81,56,148,173,44,160,63,197,156,96,118,210,27,79,22,164,125,139,133,113,208,226,237,112,180,1,25,160,106,93,107,120,26,195,145,193,217,45,189,79,222,26,247,206,104,36,224,94,171,31,237,172,223,201,1,144,226,183,19,16,160,130,146,50,94,78,138,199,146,54,66,183,17,227,230,223,214,107,36,162,67,240,42,248,191,77,255,10,2,49,15,208,107,160,240,46,174,128,182,251,116,219,171,217,55,85,225,26,24,61,61,254,181,150,180,85,57,237,160,128,84,147,181,166,33,190,160,237,212,154,6,213,157,88,55,118,240,34,95,192,130,53,103,80,171,168,208,69,241,168,200,153,41,91,61,116,141,27,167,160,17,125,188,232,194,157,45,161,12,205,188,127,220,4,149,218,114,92,46,5,65,168,241,169,167,17,70,129,136,74,172,253,160,185,54,108,97,27,2,86,247,245,211,245,251,240,34,194,50,41,68,157,82,245,251,251,173,134,161,167,70,36,131,174,205,160,178,249,63,105,17,126,64,115,204,255,7,74,203,68,152,95,49,119,253,152,95,158,53,204,177,57,72,74,107,164,105,112,160,157,253,184,106,191,72,116,6,139,209,31,120,35,249,246,9,161,194,197,28,143,75,195,226,76,179,148,90,127,77,15,34,160,83,121,41,51,189,117,16,170,17,179,126,148,242,200,180,222,150,221,61,40,240,152,183,63,65,85,174,70,170,141,202,27,160,240,105,85,30,151,192,25,220,150,138,159,57,40,54,70,254,209,65,212,224,38,98,255,203,1,192,248,66,180,203,49,116,160,220,97,92,221,236,7,250,219,156,22,177,217,109,65,77,16,42,92,190,248,73,41,192,5,6,22,70,119,80,59,87,57,160,56,100,46,160,143,198,255,143,215,237,8,104,154,255,61,169,149,67,60,106,201,167,165,135,77,230,149,90,114,159,122,109,160,188,11,120,160,221,75,172,126,98,163,230,230,144,219,94,69,48,66,29,72,131,50,221,105,123,74,13,254,159,122,244,204,128],[249,2,17,160,160,247,227,224,39,92,124,112,128,126,14,84,222,155,97,243,74,41,229,164,192,22,83,45,201,3,91,223,146,110,174,121,160,159,220,232,242,19,139,178,87,147,122,144,120,150,216,164,159,50,16,5,35,183,71,172,154,4,119,253,171,79,41,106,26,160,233,228,189,200,125,81,56,148,173,44,160,63,197,156,96,118,210,27,79,22,164,125,139,133,113,208,226,237,112,180,1,25,160,106,93,107,120,26,195,145,193,217,45,189,79,222,26,247,206,104,36,224,94,171,31,237,172,223,201,1,144,226,183,19,16,160,130,146,50,94,78,138,199,146,54,66,183,17,227,230,223,214,107,36,162,67,240,42,248,191,77,255,10,2,49,15,208,107,160,240,46,174,128,182,251,116,219,171,217,55,85,225,26,24,61,61,254,181,150,180,85,57,237,160,128,84,147,181,166,33,190,160,237,212,154,6,213,157,88,55,118,240,34,95,192,130,53,103,80,171,168,208,69,241,168,200,153,41,91,61,116,141,27,167,160,17,125,188,232,194,157,45,161,12,205,188,127,220,4,149,218,114,92,46,5,65,168,241,169,167,17,70,129,136,74,172,253,160,185,54,108,97,27,2,86,247,245,211,245,251,240,34,194,50,41,68,157,82,245,251,251,173,134,161,167,70,36,131,174,205,160,178,249,63,105,17,126,64,115,204,255,7,74,203,68,152,95,49,119,253,152,95,158,53,204,177,57,72,74,107,164,105,112,160,157,253,184,106,191,72,116,6,139,209,31,120,35,249,246,9,161,194,197,28,143,75,195,226,76,179,148,90,127,77,15,34,160,83,121,41,51,189,117,16,170,17,179,126,148,242,200,180,222,150,221,61,40,240,152,183,63,65,85,174,70,170,141,202,27,160,240,105,85,30,151,192,25,220,150,138,159,57,40,54,70,254,209,65,212,224,38,98,255,203,1,192,248,66,180,203,49,116,160,117,56,121,183,61,216,117,135,24,169,19,28,127,231,140,107,165,54,133,115,77,138,250,129,177,204,239,35,192,1,247,118,160,56,100,46,160,143,198,255,143,215,237,8,104,154,255,61,169,149,67,60,106,201,167,165,135,77,230,149,90,114,159,122,109,160,188,11,120,160,221,75,172,126,98,163,230,230,144,219,94,69,48,66,29,72,131,50,221,105,123,74,13,254,159,122,244,204,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[248,145],[248,145]]}},"account":null,"storage":null,"values":[[160,251,113,149,55,146,22,73,7,88,186,103,39,58,84,53,200,58,32,52,87,12,31,213,206,250,108,43,96,189,125,183,15,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,17,51,249,114,95,49,208,175,149,202,226,83,139,68,239,135,116,126,88,81,138,154,9,202,139,228,210,10,121,113,71,141,0],[160,156,87,56,64,229,42,108,111,42,118,74,18,42,98,12,67,88,188,65,60,124,60,16,176,240,138,217,195,69,161,217,176,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,133,148,210,158,3,101,26,158,67,176,137,25,177,211,217,89,20,61,91,72,185,182,165,66,208,182,148,35,141,225,178,64,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,3,171,102,217,252,178,131,226,230,59,47,128,240,186,199,26,84,206,140,237,53,179,235,230,64,146,55,58,37,250,213,23,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,145,128,128,160,17,51,249,114,95,49,208,175,149,202,226,83,139,68,239,135,116,126,88,81,138,154,9,202,139,228,210,10,121,113,71,141,160,156,87,56,64,229,42,108,111,42,118,74,18,42,98,12,67,88,188,65,60,124,60,16,176,240,138,217,195,69,161,217,176,128,128,128,160,133,148,210,158,3,101,26,158,67,176,137,25,177,211,217,89,20,61,91,72,185,182,165,66,208,182,148,35,141,225,178,64,128,128,128,128,160,3,171,102,217,252,178,131,226,230,59,47,128,240,186,199,26,84,206,140,237,53,179,235,230,64,146,55,58,37,250,213,23,128,128,128,128],[248,145,128,128,160,17,51,249,114,95,49,208,175,149,202,226,83,139,68,239,135,116,126,88,81,138,154,9,202,139,228,210,10,121,113,71,141,160,156,87,56,64,229,42,108,111,42,118,74,18,42,98,12,67,88,188,65,60,124,60,16,176,240,138,217,195,69,161,217,176,128,128,128,160,251,113,149,55,146,22,73,7,88,186,103,39,58,84,53,200,58,32,52,87,12,31,213,206,250,108,43,96,189,125,183,15,128,128,128,128,160,3,171,102,217,252,178,131,226,230,59,47,128,240,186,199,26,84,206,140,237,53,179,235,230,64,146,55,58,37,250,213,23,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,212,234,46,234,49,157,94,111,252,94,160,152,110,52,62,51,223,11,192,6,31,246,64,204,225,144,168,29,167,235,37,29,0],[160,63,148,232,219,42,84,6,74,167,188,120,97,204,103,138,210,137,130,67,17,152,34,46,144,46,16,172,158,105,78,28,72,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,3,163,105,247,64,37,97,81,47,255,202,110,63,213,223,93,198,16,61,47,126,5,80,62,173,156,10,172,144,111,148,78,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,160,63,148,232,219,42,84,6,74,167,188,120,97,204,103,138,210,137,130,67,17,152,34,46,144,46,16,172,158,105,78,28,72,128,128,128,128,128,128,128,128,128,128,128,128,128,128,160,3,163,105,247,64,37,97,81,47,255,202,110,63,213,223,93,198,16,61,47,126,5,80,62,173,156,10,172,144,111,148,78,128],[248,81,160,63,148,232,219,42,84,6,74,167,188,120,97,204,103,138,210,137,130,67,17,152,34,46,144,46,16,172,158,105,78,28,72,128,128,128,128,128,128,128,128,128,128,128,128,128,128,160,212,234,46,234,49,157,94,111,252,94,160,152,110,52,62,51,223,11,192,6,31,246,64,204,225,144,168,29,167,235,37,29,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,251,239,18,80,24,140,50,182,60,87,149,120,38,223,78,36,235,129,201],"key":[84,210,221,127,240,120,195,69,174,162,108,212,181,28,209,186,158,188,100,55,29,80,194,38,161,48,14,51,204,117,22,82],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,32,240,120,195,69,174,162,108,212,181,28,209,186,158,188,100,55,29,80,194,38,161,48,14,51,204,117,22,82,0,0,0,0],[157,32,240,120,195,69,174,162,108,212,181,28,209,186,158,188,100,55,29,80,194,38,161,48,14,51,204,117,22,82,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,124,128,125,129,12,178,135,200,135,125,218,8,161,94,64,101,143,223,56,28,115,70,177,97,26,92,57,163,63,119,33,30,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,179,231,255,201,85,223,248,63,153,82,31,138,167,188,67,102,255,20,223,44,178,216,181,244,233,162,72,203,26,16,151,85,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,32,240,120,195,69,174,162,108,212,181,28,209,186,158,188,100,55,29,80,194,38,161,48,14,51,204,117,22,82,0,0,0,0]],"keccak_data":[[248,102,157,32,240,120,195,69,174,162,108,212,181,28,209,186,158,188,100,55,29,80,194,38,161,48,14,51,204,117,22,82,184,70,248,68,128,128,160,124,128,125,129,12,178,135,200,135,125,218,8,161,94,64,101,143,223,56,28,115,70,177,97,26,92,57,163,63,119,33,30,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,32,240,120,195,69,174,162,108,212,181,28,209,186,158,188,100,55,29,80,194,38,161,48,14,51,204,117,22,82,184,70,248,68,128,128,160,179,231,255,201,85,223,248,63,153,82,31,138,167,188,67,102,255,20,223,44,178,216,181,244,233,162,72,203,26,16,151,85,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,251,239,18,80,24,140,50,182,60,87,149,120,38,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,1,241],[249,1,241]]}},"account":null,"storage":null,"values":[[160,60,52,243,109,33,30,29,84,84,61,219,205,104,1,55,204,17,150,5,47,241,220,239,39,0,76,70,12,124,251,33,35,0],[160,218,216,83,47,209,155,124,80,208,142,238,122,28,82,159,69,247,134,105,212,180,234,49,156,133,174,153,81,21,3,98,57,0],[160,173,94,191,87,15,191,225,172,149,8,244,106,60,107,78,250,62,180,144,156,204,98,38,232,113,9,83,37,214,108,112,214,0],[160,57,157,183,22,74,152,222,82,145,101,47,146,237,16,168,46,152,85,208,158,25,110,185,120,48,31,172,70,207,138,63,74,0],[160,230,92,50,203,126,226,14,233,31,126,150,114,69,88,227,160,126,64,76,110,2,132,207,253,12,75,163,194,1,41,251,172,0],[160,36,51,69,5,157,152,209,236,39,102,119,178,3,161,253,98,75,120,40,139,40,117,60,209,185,50,6,99,37,176,109,116,0],[160,6,155,237,54,156,189,128,242,179,136,135,213,123,138,90,125,170,206,138,100,176,1,243,84,27,137,141,144,154,48,56,236,0],[160,224,147,175,176,237,126,28,226,16,186,200,149,6,2,195,81,86,84,222,58,0,197,233,32,36,250,36,150,97,208,74,139,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,243,53,148,31,97,6,0,60,132,24,39,122,233,204,254,101,183,207,29,53,133,88,23,131,29,204,45,108,159,59,126,170,0],[160,198,203,95,142,67,182,79,163,52,215,78,136,65,176,242,21,5,230,227,120,211,180,123,219,32,180,166,135,197,187,67,186,0],[160,14,241,183,115,118,131,225,239,80,185,59,79,36,220,126,204,221,25,91,99,11,33,248,153,127,16,21,92,214,252,16,64,0],[160,156,187,226,115,159,234,112,209,175,68,244,11,123,1,155,27,19,80,41,211,109,171,7,240,102,164,235,199,16,246,82,34,0],[160,143,198,141,255,158,119,182,159,136,136,19,190,201,6,143,35,249,121,212,53,60,171,131,224,135,213,16,229,252,83,32,91,0],[160,254,187,102,162,44,213,106,165,20,102,217,78,92,131,161,109,250,126,102,124,219,43,79,26,134,226,208,242,129,254,5,35,0],[160,2,23,157,37,52,158,35,51,81,79,114,175,120,180,130,91,152,79,9,243,180,233,66,188,207,215,41,23,12,138,112,53,0],[160,223,173,1,33,2,138,179,20,182,191,11,86,224,72,41,157,33,241,222,191,250,1,11,22,70,185,33,194,132,134,102,136,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,241,160,218,216,83,47,209,155,124,80,208,142,238,122,28,82,159,69,247,134,105,212,180,234,49,156,133,174,153,81,21,3,98,57,160,173,94,191,87,15,191,225,172,149,8,244,106,60,107,78,250,62,180,144,156,204,98,38,232,113,9,83,37,214,108,112,214,160,57,157,183,22,74,152,222,82,145,101,47,146,237,16,168,46,152,85,208,158,25,110,185,120,48,31,172,70,207,138,63,74,160,230,92,50,203,126,226,14,233,31,126,150,114,69,88,227,160,126,64,76,110,2,132,207,253,12,75,163,194,1,41,251,172,160,36,51,69,5,157,152,209,236,39,102,119,178,3,161,253,98,75,120,40,139,40,117,60,209,185,50,6,99,37,176,109,116,160,6,155,237,54,156,189,128,242,179,136,135,213,123,138,90,125,170,206,138,100,176,1,243,84,27,137,141,144,154,48,56,236,160,224,147,175,176,237,126,28,226,16,186,200,149,6,2,195,81,86,84,222,58,0,197,233,32,36,250,36,150,97,208,74,139,128,160,243,53,148,31,97,6,0,60,132,24,39,122,233,204,254,101,183,207,29,53,133,88,23,131,29,204,45,108,159,59,126,170,160,198,203,95,142,67,182,79,163,52,215,78,136,65,176,242,21,5,230,227,120,211,180,123,219,32,180,166,135,197,187,67,186,160,14,241,183,115,118,131,225,239,80,185,59,79,36,220,126,204,221,25,91,99,11,33,248,153,127,16,21,92,214,252,16,64,160,156,187,226,115,159,234,112,209,175,68,244,11,123,1,155,27,19,80,41,211,109,171,7,240,102,164,235,199,16,246,82,34,160,143,198,141,255,158,119,182,159,136,136,19,190,201,6,143,35,249,121,212,53,60,171,131,224,135,213,16,229,252,83,32,91,160,254,187,102,162,44,213,106,165,20,102,217,78,92,131,161,109,250,126,102,124,219,43,79,26,134,226,208,242,129,254,5,35,160,2,23,157,37,52,158,35,51,81,79,114,175,120,180,130,91,152,79,9,243,180,233,66,188,207,215,41,23,12,138,112,53,160,223,173,1,33,2,138,179,20,182,191,11,86,224,72,41,157,33,241,222,191,250,1,11,22,70,185,33,194,132,134,102,136,128],[249,1,241,160,218,216,83,47,209,155,124,80,208,142,238,122,28,82,159,69,247,134,105,212,180,234,49,156,133,174,153,81,21,3,98,57,160,173,94,191,87,15,191,225,172,149,8,244,106,60,107,78,250,62,180,144,156,204,98,38,232,113,9,83,37,214,108,112,214,160,57,157,183,22,74,152,222,82,145,101,47,146,237,16,168,46,152,85,208,158,25,110,185,120,48,31,172,70,207,138,63,74,160,230,92,50,203,126,226,14,233,31,126,150,114,69,88,227,160,126,64,76,110,2,132,207,253,12,75,163,194,1,41,251,172,160,36,51,69,5,157,152,209,236,39,102,119,178,3,161,253,98,75,120,40,139,40,117,60,209,185,50,6,99,37,176,109,116,160,6,155,237,54,156,189,128,242,179,136,135,213,123,138,90,125,170,206,138,100,176,1,243,84,27,137,141,144,154,48,56,236,160,224,147,175,176,237,126,28,226,16,186,200,149,6,2,195,81,86,84,222,58,0,197,233,32,36,250,36,150,97,208,74,139,128,160,243,53,148,31,97,6,0,60,132,24,39,122,233,204,254,101,183,207,29,53,133,88,23,131,29,204,45,108,159,59,126,170,160,198,203,95,142,67,182,79,163,52,215,78,136,65,176,242,21,5,230,227,120,211,180,123,219,32,180,166,135,197,187,67,186,160,14,241,183,115,118,131,225,239,80,185,59,79,36,220,126,204,221,25,91,99,11,33,248,153,127,16,21,92,214,252,16,64,160,156,187,226,115,159,234,112,209,175,68,244,11,123,1,155,27,19,80,41,211,109,171,7,240,102,164,235,199,16,246,82,34,160,143,198,141,255,158,119,182,159,136,136,19,190,201,6,143,35,249,121,212,53,60,171,131,224,135,213,16,229,252,83,32,91,160,254,187,102,162,44,213,106,165,20,102,217,78,92,131,161,109,250,126,102,124,219,43,79,26,134,226,208,242,129,254,5,35,160,60,52,243,109,33,30,29,84,84,61,219,205,104,1,55,204,17,150,5,47,241,220,239,39,0,76,70,12,124,251,33,35,160,223,173,1,33,2,138,179,20,182,191,11,86,224,72,41,157,33,241,222,191,250,1,11,22,70,185,33,194,132,134,102,136,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[248,145],[248,145]]}},"account":null,"storage":null,"values":[[160,32,245,106,63,123,45,75,217,20,45,244,235,153,142,204,46,127,124,161,142,221,124,154,40,73,150,206,103,91,36,211,138,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,14,93,53,85,28,125,127,94,154,216,252,195,217,123,43,84,179,177,1,179,37,196,60,212,174,27,240,131,156,45,30,47,0],[160,18,65,61,178,211,76,61,191,9,12,154,103,80,172,64,93,21,37,239,94,15,189,189,157,217,95,16,21,11,132,223,7,0],[160,129,54,36,146,188,153,48,213,136,163,15,183,84,154,36,77,189,50,102,233,15,32,19,106,10,72,136,107,212,105,138,222,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,28,224,131,7,146,228,1,28,151,79,124,113,242,219,192,225,4,216,228,15,198,188,138,155,246,120,122,87,121,167,23,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,145,128,160,14,93,53,85,28,125,127,94,154,216,252,195,217,123,43,84,179,177,1,179,37,196,60,212,174,27,240,131,156,45,30,47,160,18,65,61,178,211,76,61,191,9,12,154,103,80,172,64,93,21,37,239,94,15,189,189,157,217,95,16,21,11,132,223,7,160,129,54,36,146,188,153,48,213,136,163,15,183,84,154,36,77,189,50,102,233,15,32,19,106,10,72,136,107,212,105,138,222,128,128,128,128,128,128,128,160,86,28,224,131,7,146,228,1,28,151,79,124,113,242,219,192,225,4,216,228,15,198,188,138,155,246,120,122,87,121,167,23,128,128,128,128,128],[248,145,128,160,14,93,53,85,28,125,127,94,154,216,252,195,217,123,43,84,179,177,1,179,37,196,60,212,174,27,240,131,156,45,30,47,160,18,65,61,178,211,76,61,191,9,12,154,103,80,172,64,93,21,37,239,94,15,189,189,157,217,95,16,21,11,132,223,7,160,129,54,36,146,188,153,48,213,136,163,15,183,84,154,36,77,189,50,102,233,15,32,19,106,10,72,136,107,212,105,138,222,128,128,128,128,128,128,128,160,32,245,106,63,123,45,75,217,20,45,244,235,153,142,204,46,127,124,161,142,221,124,154,40,73,150,206,103,91,36,211,138,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,true],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":14,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,129,18,71,29,229,170,165,97,100,73,130,198,177,178,109,169,46,35,12,45,210,12,239,195,191,114,203,156,5,24,243,98,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,129,18,71,29,229,170,165,97,100,73,130,198,177,178,109,169,46,35,12,45,210,12,239,195,191,114,203,156,5,24,243,98,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,129,189,255,115,156,181,150,239,58,136,143,183,221,99,119,199,106,102,179,94,18,165,137,20,105,231,226,145,194,25,82,17,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,128,128,128,128,160,129,18,71,29,229,170,165,97,100,73,130,198,177,178,109,169,46,35,12,45,210,12,239,195,191,114,203,156,5,24,243,98,128,160,129,189,255,115,156,181,150,239,58,136,143,183,221,99,119,199,106,102,179,94,18,165,137,20,105,231,226,145,194,25,82,17,128,128],[248,81,128,128,128,128,128,128,128,128,128,128,128,128,160,129,18,71,29,229,170,165,97,100,73,130,198,177,178,109,169,46,35,12,45,210,12,239,195,191,114,203,156,5,24,243,98,128,160,129,189,255,115,156,181,150,239,58,136,143,183,221,99,119,199,106,102,179,94,18,165,137,20,105,231,226,145,194,25,82,17,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,67],"key":[235,207,117,31,216,242,20,172,137,89,10,84,218,35,38,178,182,67,5,68,54,127,178,216,248,46,67,173,108,157,55,18],"list_rlp_bytes":[[225],[226]],"value_rlp_bytes":[[6],[28]],"drifted_rlp_bytes":[225],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[159,63,117,31,216,242,20,172,137,89,10,84,218,35,38,178,182,67,5,68,54,127,178,216,248,46,67,173,108,157,55,18,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,235,117,17,208,2,186,74,12,134,238,103,127,37,240,27,164,245,42,218,188,162,9,151,17,57,90,177,190,250,180,61,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,59,117,17,208,2,186,74,12,134,238,103,127,37,240,27,164,245,42,218,188,162,9,151,17,57,90,177,190,250,180,61,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[225,159,63,117,31,216,242,20,172,137,89,10,84,218,35,38,178,182,67,5,68,54,127,178,216,248,46,67,173,108,157,55,18,6],[226,160,32,235,117,17,208,2,186,74,12,134,238,103,127,37,240,27,164,245,42,218,188,162,9,151,17,57,90,177,190,250,180,61,28],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,67],[225,159,59,117,17,208,2,186,74,12,134,238,103,127,37,240,27,164,245,42,218,188,162,9,151,17,57,90,177,190,250,180,61,28]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/DeleteBranchTwoLevelsLong.json b/zkevm-circuits/src/mpt_circuit/tests/DeleteBranchTwoLevelsLong.json new file mode 100644 index 0000000000..cec5c2b0eb --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/DeleteBranchTwoLevelsLong.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,187,235,134,158,40,213,220,148,47,19,66,35,253,202,158,91,149,167,53,188,37,150,51,174,186,9,253,26,237,114,188,53,0],[160,54,176,23,157,123,237,1,17,53,255,85,197,4,201,16,203,30,19,89,105,66,10,244,20,148,210,3,230,200,63,31,66,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,200,91,42,75,144,77,11,44,157,101,55,52,187,34,96,233,145,72,189,101,139,80,186,87,37,205,127,171,106,176,111,113,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,76,227,200,247,89,250,22,177,62,176,170,191,111,221,67,222,238,129,150,6,185,115,238,200,156,34,189,8,248,197,191,122,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,76,227,200,247,89,250,22,177,62,176,170,191,111,221,67,222,238,129,150,6,185,115,238,200,156,34,189,8,248,197,191,122,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,200,91,42,75,144,77,11,44,157,101,55,52,187,34,96,233,145,72,189,101,139,80,186,87,37,205,127,171,106,176,111,113,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,93,238,26,217,253,23,123,222,75,150,139,194,213,43,127,166,211,7,43,40,226,169,136,88,59,91,25,251,197,176,177,88,0],[160,8,82,228,160,236,167,211,34,103,186,143,82,159,227,56,83,90,137,189,168,42,104,95,52,183,148,255,215,136,52,73,231,0],[160,108,126,234,172,207,120,157,6,164,75,78,211,4,115,68,61,12,133,78,49,57,114,13,106,181,197,11,118,125,225,154,45,0],[160,194,12,142,1,144,174,252,71,147,52,115,101,189,153,208,184,182,11,61,226,102,6,152,102,88,19,198,73,12,11,50,155,0],[160,59,143,74,53,247,240,239,138,121,223,75,218,127,28,117,171,91,193,129,250,204,248,51,157,35,23,2,179,196,54,170,46,0],[160,157,90,51,248,241,223,224,87,67,255,188,60,98,138,52,58,248,0,103,191,25,93,87,196,48,17,193,91,196,174,84,68,0],[160,37,36,38,176,196,202,58,86,76,239,236,180,113,34,151,66,223,175,221,244,2,135,167,81,134,210,144,189,210,100,169,46,0],[160,246,249,160,14,73,156,38,98,129,209,255,124,122,147,16,52,200,78,213,139,162,204,164,40,13,165,111,148,15,31,205,20,0],[160,196,63,137,26,203,165,150,154,136,200,90,27,244,146,124,13,112,147,170,137,82,86,194,212,83,213,250,77,122,235,81,108,0],[160,23,72,191,114,109,241,153,152,28,181,114,222,27,12,163,170,167,243,68,76,13,193,8,43,209,0,251,139,245,110,12,200,0],[160,162,242,12,159,239,231,230,109,155,112,235,20,28,190,163,94,48,238,186,27,192,248,95,119,246,213,205,3,106,83,34,57,0],[160,98,128,143,73,77,78,229,115,157,26,53,223,153,171,114,69,45,174,24,124,45,42,137,236,225,137,107,235,241,54,22,248,0],[160,28,67,53,54,154,2,91,141,228,22,200,27,178,90,210,209,195,121,126,22,72,172,98,207,112,253,149,202,240,32,170,32,0],[160,77,183,169,108,222,80,160,149,46,20,80,223,164,78,82,196,134,47,182,103,106,44,118,54,158,56,222,196,13,46,87,30,0],[160,105,251,188,224,72,188,242,142,5,202,96,164,238,163,221,166,92,66,41,9,240,19,219,203,186,100,64,23,163,241,100,34,0],[160,212,11,254,245,171,103,142,93,36,18,140,32,235,44,80,118,39,4,204,104,121,151,119,6,247,81,40,129,44,210,223,100,0],[160,70,28,143,53,189,11,148,71,98,61,108,214,101,187,1,240,58,157,104,142,179,155,185,249,28,6,177,21,81,199,24,148,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,8,82,228,160,236,167,211,34,103,186,143,82,159,227,56,83,90,137,189,168,42,104,95,52,183,148,255,215,136,52,73,231,160,108,126,234,172,207,120,157,6,164,75,78,211,4,115,68,61,12,133,78,49,57,114,13,106,181,197,11,118,125,225,154,45,160,194,12,142,1,144,174,252,71,147,52,115,101,189,153,208,184,182,11,61,226,102,6,152,102,88,19,198,73,12,11,50,155,160,59,143,74,53,247,240,239,138,121,223,75,218,127,28,117,171,91,193,129,250,204,248,51,157,35,23,2,179,196,54,170,46,160,157,90,51,248,241,223,224,87,67,255,188,60,98,138,52,58,248,0,103,191,25,93,87,196,48,17,193,91,196,174,84,68,160,37,36,38,176,196,202,58,86,76,239,236,180,113,34,151,66,223,175,221,244,2,135,167,81,134,210,144,189,210,100,169,46,160,246,249,160,14,73,156,38,98,129,209,255,124,122,147,16,52,200,78,213,139,162,204,164,40,13,165,111,148,15,31,205,20,160,196,63,137,26,203,165,150,154,136,200,90,27,244,146,124,13,112,147,170,137,82,86,194,212,83,213,250,77,122,235,81,108,160,23,72,191,114,109,241,153,152,28,181,114,222,27,12,163,170,167,243,68,76,13,193,8,43,209,0,251,139,245,110,12,200,160,162,242,12,159,239,231,230,109,155,112,235,20,28,190,163,94,48,238,186,27,192,248,95,119,246,213,205,3,106,83,34,57,160,98,128,143,73,77,78,229,115,157,26,53,223,153,171,114,69,45,174,24,124,45,42,137,236,225,137,107,235,241,54,22,248,160,28,67,53,54,154,2,91,141,228,22,200,27,178,90,210,209,195,121,126,22,72,172,98,207,112,253,149,202,240,32,170,32,160,77,183,169,108,222,80,160,149,46,20,80,223,164,78,82,196,134,47,182,103,106,44,118,54,158,56,222,196,13,46,87,30,160,105,251,188,224,72,188,242,142,5,202,96,164,238,163,221,166,92,66,41,9,240,19,219,203,186,100,64,23,163,241,100,34,160,212,11,254,245,171,103,142,93,36,18,140,32,235,44,80,118,39,4,204,104,121,151,119,6,247,81,40,129,44,210,223,100,160,70,28,143,53,189,11,148,71,98,61,108,214,101,187,1,240,58,157,104,142,179,155,185,249,28,6,177,21,81,199,24,148,128],[249,2,17,160,8,82,228,160,236,167,211,34,103,186,143,82,159,227,56,83,90,137,189,168,42,104,95,52,183,148,255,215,136,52,73,231,160,93,238,26,217,253,23,123,222,75,150,139,194,213,43,127,166,211,7,43,40,226,169,136,88,59,91,25,251,197,176,177,88,160,194,12,142,1,144,174,252,71,147,52,115,101,189,153,208,184,182,11,61,226,102,6,152,102,88,19,198,73,12,11,50,155,160,59,143,74,53,247,240,239,138,121,223,75,218,127,28,117,171,91,193,129,250,204,248,51,157,35,23,2,179,196,54,170,46,160,157,90,51,248,241,223,224,87,67,255,188,60,98,138,52,58,248,0,103,191,25,93,87,196,48,17,193,91,196,174,84,68,160,37,36,38,176,196,202,58,86,76,239,236,180,113,34,151,66,223,175,221,244,2,135,167,81,134,210,144,189,210,100,169,46,160,246,249,160,14,73,156,38,98,129,209,255,124,122,147,16,52,200,78,213,139,162,204,164,40,13,165,111,148,15,31,205,20,160,196,63,137,26,203,165,150,154,136,200,90,27,244,146,124,13,112,147,170,137,82,86,194,212,83,213,250,77,122,235,81,108,160,23,72,191,114,109,241,153,152,28,181,114,222,27,12,163,170,167,243,68,76,13,193,8,43,209,0,251,139,245,110,12,200,160,162,242,12,159,239,231,230,109,155,112,235,20,28,190,163,94,48,238,186,27,192,248,95,119,246,213,205,3,106,83,34,57,160,98,128,143,73,77,78,229,115,157,26,53,223,153,171,114,69,45,174,24,124,45,42,137,236,225,137,107,235,241,54,22,248,160,28,67,53,54,154,2,91,141,228,22,200,27,178,90,210,209,195,121,126,22,72,172,98,207,112,253,149,202,240,32,170,32,160,77,183,169,108,222,80,160,149,46,20,80,223,164,78,82,196,134,47,182,103,106,44,118,54,158,56,222,196,13,46,87,30,160,105,251,188,224,72,188,242,142,5,202,96,164,238,163,221,166,92,66,41,9,240,19,219,203,186,100,64,23,163,241,100,34,160,212,11,254,245,171,103,142,93,36,18,140,32,235,44,80,118,39,4,204,104,121,151,119,6,247,81,40,129,44,210,223,100,160,70,28,143,53,189,11,148,71,98,61,108,214,101,187,1,240,58,157,104,142,179,155,185,249,28,6,177,21,81,199,24,148,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,203,16,64,1,101,61,139,148,250,37,13,83,207,84,225,10,8,113,46,224,179,176,217,133,219,15,112,41,201,193,229,5,0],[160,16,10,199,196,82,70,114,207,241,137,252,115,72,235,241,12,200,184,38,70,167,12,215,12,241,91,65,28,139,175,130,201,0],[160,106,34,190,250,180,167,233,203,248,225,129,140,254,164,219,82,86,34,55,7,50,150,78,243,17,205,230,68,207,201,67,198,0],[160,23,33,31,199,21,178,232,124,248,20,157,167,56,141,168,113,28,89,227,97,22,107,23,55,202,65,66,106,60,113,96,176,0],[160,135,9,218,163,119,192,224,242,149,100,60,173,128,45,118,139,0,25,75,75,10,186,126,4,85,72,8,17,177,31,80,151,0],[160,2,84,11,251,123,198,133,201,87,132,179,219,84,116,137,7,190,165,200,5,24,42,221,26,67,55,22,25,111,102,221,245,0],[160,122,236,62,56,10,168,193,136,67,139,188,83,1,220,85,74,42,145,146,37,238,1,232,24,140,232,152,38,192,26,198,229,0],[160,242,211,107,131,169,189,78,220,241,34,165,3,57,83,116,161,238,28,119,72,128,235,18,192,204,227,73,30,143,42,254,41,0],[160,182,105,57,247,38,247,154,147,128,157,127,174,94,245,242,110,221,32,71,118,198,228,65,155,148,56,61,147,133,40,84,30,0],[160,204,106,126,7,172,44,143,150,161,28,110,112,160,48,254,171,61,179,114,93,240,165,152,22,10,246,152,24,44,30,151,69,0],[160,131,108,242,173,226,207,78,136,96,203,232,73,181,8,7,10,69,132,29,121,49,177,94,240,46,77,195,59,87,107,242,152,0],[160,66,157,127,194,67,4,232,98,188,21,27,40,171,201,115,88,204,111,103,165,228,135,56,214,30,3,169,83,42,208,153,90,0],[160,103,182,53,183,135,172,235,245,186,233,227,251,55,187,175,162,118,186,37,245,196,20,125,198,238,47,171,93,89,43,148,152,0],[160,86,66,178,63,185,104,242,223,205,118,73,136,8,212,168,171,196,23,136,209,147,15,20,247,183,70,79,56,230,201,165,166,0],[160,117,155,37,207,225,64,82,191,6,163,182,65,205,90,187,221,71,178,52,144,247,12,97,165,235,163,164,201,190,44,73,141,0],[160,234,151,242,155,147,37,67,255,150,25,66,248,115,241,56,206,192,13,80,46,6,157,235,198,60,91,197,73,252,160,192,183,0],[160,246,237,54,89,33,76,151,212,11,48,222,247,199,41,93,13,61,76,169,167,53,31,67,192,234,249,140,133,138,213,95,26,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,16,10,199,196,82,70,114,207,241,137,252,115,72,235,241,12,200,184,38,70,167,12,215,12,241,91,65,28,139,175,130,201,160,106,34,190,250,180,167,233,203,248,225,129,140,254,164,219,82,86,34,55,7,50,150,78,243,17,205,230,68,207,201,67,198,160,23,33,31,199,21,178,232,124,248,20,157,167,56,141,168,113,28,89,227,97,22,107,23,55,202,65,66,106,60,113,96,176,160,135,9,218,163,119,192,224,242,149,100,60,173,128,45,118,139,0,25,75,75,10,186,126,4,85,72,8,17,177,31,80,151,160,2,84,11,251,123,198,133,201,87,132,179,219,84,116,137,7,190,165,200,5,24,42,221,26,67,55,22,25,111,102,221,245,160,122,236,62,56,10,168,193,136,67,139,188,83,1,220,85,74,42,145,146,37,238,1,232,24,140,232,152,38,192,26,198,229,160,242,211,107,131,169,189,78,220,241,34,165,3,57,83,116,161,238,28,119,72,128,235,18,192,204,227,73,30,143,42,254,41,160,182,105,57,247,38,247,154,147,128,157,127,174,94,245,242,110,221,32,71,118,198,228,65,155,148,56,61,147,133,40,84,30,160,204,106,126,7,172,44,143,150,161,28,110,112,160,48,254,171,61,179,114,93,240,165,152,22,10,246,152,24,44,30,151,69,160,131,108,242,173,226,207,78,136,96,203,232,73,181,8,7,10,69,132,29,121,49,177,94,240,46,77,195,59,87,107,242,152,160,66,157,127,194,67,4,232,98,188,21,27,40,171,201,115,88,204,111,103,165,228,135,56,214,30,3,169,83,42,208,153,90,160,103,182,53,183,135,172,235,245,186,233,227,251,55,187,175,162,118,186,37,245,196,20,125,198,238,47,171,93,89,43,148,152,160,86,66,178,63,185,104,242,223,205,118,73,136,8,212,168,171,196,23,136,209,147,15,20,247,183,70,79,56,230,201,165,166,160,117,155,37,207,225,64,82,191,6,163,182,65,205,90,187,221,71,178,52,144,247,12,97,165,235,163,164,201,190,44,73,141,160,234,151,242,155,147,37,67,255,150,25,66,248,115,241,56,206,192,13,80,46,6,157,235,198,60,91,197,73,252,160,192,183,160,246,237,54,89,33,76,151,212,11,48,222,247,199,41,93,13,61,76,169,167,53,31,67,192,234,249,140,133,138,213,95,26,128],[249,2,17,160,16,10,199,196,82,70,114,207,241,137,252,115,72,235,241,12,200,184,38,70,167,12,215,12,241,91,65,28,139,175,130,201,160,106,34,190,250,180,167,233,203,248,225,129,140,254,164,219,82,86,34,55,7,50,150,78,243,17,205,230,68,207,201,67,198,160,23,33,31,199,21,178,232,124,248,20,157,167,56,141,168,113,28,89,227,97,22,107,23,55,202,65,66,106,60,113,96,176,160,203,16,64,1,101,61,139,148,250,37,13,83,207,84,225,10,8,113,46,224,179,176,217,133,219,15,112,41,201,193,229,5,160,2,84,11,251,123,198,133,201,87,132,179,219,84,116,137,7,190,165,200,5,24,42,221,26,67,55,22,25,111,102,221,245,160,122,236,62,56,10,168,193,136,67,139,188,83,1,220,85,74,42,145,146,37,238,1,232,24,140,232,152,38,192,26,198,229,160,242,211,107,131,169,189,78,220,241,34,165,3,57,83,116,161,238,28,119,72,128,235,18,192,204,227,73,30,143,42,254,41,160,182,105,57,247,38,247,154,147,128,157,127,174,94,245,242,110,221,32,71,118,198,228,65,155,148,56,61,147,133,40,84,30,160,204,106,126,7,172,44,143,150,161,28,110,112,160,48,254,171,61,179,114,93,240,165,152,22,10,246,152,24,44,30,151,69,160,131,108,242,173,226,207,78,136,96,203,232,73,181,8,7,10,69,132,29,121,49,177,94,240,46,77,195,59,87,107,242,152,160,66,157,127,194,67,4,232,98,188,21,27,40,171,201,115,88,204,111,103,165,228,135,56,214,30,3,169,83,42,208,153,90,160,103,182,53,183,135,172,235,245,186,233,227,251,55,187,175,162,118,186,37,245,196,20,125,198,238,47,171,93,89,43,148,152,160,86,66,178,63,185,104,242,223,205,118,73,136,8,212,168,171,196,23,136,209,147,15,20,247,183,70,79,56,230,201,165,166,160,117,155,37,207,225,64,82,191,6,163,182,65,205,90,187,221,71,178,52,144,247,12,97,165,235,163,164,201,190,44,73,141,160,234,151,242,155,147,37,67,255,150,25,66,248,115,241,56,206,192,13,80,46,6,157,235,198,60,91,197,73,252,160,192,183,160,246,237,54,89,33,76,151,212,11,48,222,247,199,41,93,13,61,76,169,167,53,31,67,192,234,249,140,133,138,213,95,26,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,124,199,186,25,138,20,88,218,28,238,84,82,187,142,32,165,180,213,241,202,39,75,197,192,176,136,16,33,30,65,119,252,0],[160,53,200,152,105,67,59,132,40,60,141,250,34,36,24,219,4,165,87,140,17,156,190,115,214,53,18,73,182,196,162,244,164,0],[160,71,172,186,250,78,185,53,216,13,54,238,4,245,98,2,79,111,27,56,22,187,45,212,12,217,229,171,89,116,162,97,179,0],[160,252,130,203,233,60,229,81,109,117,240,13,87,212,57,169,204,130,121,237,196,94,201,99,212,227,138,130,137,152,167,26,83,0],[160,37,133,29,230,27,182,51,17,195,237,207,229,5,42,138,46,42,84,27,152,3,240,15,12,14,90,120,239,149,177,195,212,0],[160,192,164,189,202,3,71,238,234,142,232,167,113,168,167,23,81,185,168,146,207,238,57,254,130,140,25,4,144,163,61,228,78,0],[160,28,208,218,100,212,48,98,49,17,45,69,237,119,3,114,122,57,152,83,143,78,72,236,48,14,83,84,201,217,246,238,118,0],[160,56,162,110,72,113,38,84,231,54,162,46,223,181,88,185,210,86,6,37,140,126,187,41,170,31,212,39,23,138,151,143,226,0],[160,21,65,231,179,182,208,63,30,227,98,41,136,75,111,20,168,85,6,38,245,153,46,24,22,157,94,84,173,92,143,236,18,0],[160,108,254,242,51,40,122,176,190,154,230,46,51,119,130,206,74,70,207,23,161,200,211,61,174,105,61,2,45,45,74,210,168,0],[160,180,124,136,219,213,85,224,196,84,251,213,154,29,129,84,133,117,97,93,75,169,111,175,252,253,181,236,29,31,235,212,136,0],[160,145,66,153,79,75,58,127,40,116,166,186,109,123,59,168,253,49,230,154,168,141,192,7,135,244,141,141,27,145,183,163,255,0],[160,244,206,34,126,138,154,199,69,158,195,50,253,216,223,136,217,252,88,41,252,142,59,172,195,190,184,76,69,34,57,154,225,0],[160,11,85,235,155,139,36,142,55,242,254,119,239,72,103,227,192,190,171,52,74,111,169,147,75,187,57,232,135,160,28,5,216,0],[160,221,255,17,232,105,231,25,97,193,106,39,48,221,205,190,98,88,140,92,154,178,52,10,226,240,136,99,160,254,102,99,20,0],[160,63,253,4,244,156,122,180,15,219,228,17,169,135,3,105,233,7,46,235,175,13,69,127,226,231,156,241,219,188,1,58,10,0],[160,39,79,238,23,126,99,249,27,158,53,68,164,13,36,66,206,153,74,47,45,73,32,193,36,181,245,221,153,0,110,176,84,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,53,200,152,105,67,59,132,40,60,141,250,34,36,24,219,4,165,87,140,17,156,190,115,214,53,18,73,182,196,162,244,164,160,71,172,186,250,78,185,53,216,13,54,238,4,245,98,2,79,111,27,56,22,187,45,212,12,217,229,171,89,116,162,97,179,160,252,130,203,233,60,229,81,109,117,240,13,87,212,57,169,204,130,121,237,196,94,201,99,212,227,138,130,137,152,167,26,83,160,37,133,29,230,27,182,51,17,195,237,207,229,5,42,138,46,42,84,27,152,3,240,15,12,14,90,120,239,149,177,195,212,160,192,164,189,202,3,71,238,234,142,232,167,113,168,167,23,81,185,168,146,207,238,57,254,130,140,25,4,144,163,61,228,78,160,28,208,218,100,212,48,98,49,17,45,69,237,119,3,114,122,57,152,83,143,78,72,236,48,14,83,84,201,217,246,238,118,160,56,162,110,72,113,38,84,231,54,162,46,223,181,88,185,210,86,6,37,140,126,187,41,170,31,212,39,23,138,151,143,226,160,21,65,231,179,182,208,63,30,227,98,41,136,75,111,20,168,85,6,38,245,153,46,24,22,157,94,84,173,92,143,236,18,160,108,254,242,51,40,122,176,190,154,230,46,51,119,130,206,74,70,207,23,161,200,211,61,174,105,61,2,45,45,74,210,168,160,180,124,136,219,213,85,224,196,84,251,213,154,29,129,84,133,117,97,93,75,169,111,175,252,253,181,236,29,31,235,212,136,160,145,66,153,79,75,58,127,40,116,166,186,109,123,59,168,253,49,230,154,168,141,192,7,135,244,141,141,27,145,183,163,255,160,244,206,34,126,138,154,199,69,158,195,50,253,216,223,136,217,252,88,41,252,142,59,172,195,190,184,76,69,34,57,154,225,160,11,85,235,155,139,36,142,55,242,254,119,239,72,103,227,192,190,171,52,74,111,169,147,75,187,57,232,135,160,28,5,216,160,221,255,17,232,105,231,25,97,193,106,39,48,221,205,190,98,88,140,92,154,178,52,10,226,240,136,99,160,254,102,99,20,160,63,253,4,244,156,122,180,15,219,228,17,169,135,3,105,233,7,46,235,175,13,69,127,226,231,156,241,219,188,1,58,10,160,39,79,238,23,126,99,249,27,158,53,68,164,13,36,66,206,153,74,47,45,73,32,193,36,181,245,221,153,0,110,176,84,128],[249,2,17,160,53,200,152,105,67,59,132,40,60,141,250,34,36,24,219,4,165,87,140,17,156,190,115,214,53,18,73,182,196,162,244,164,160,124,199,186,25,138,20,88,218,28,238,84,82,187,142,32,165,180,213,241,202,39,75,197,192,176,136,16,33,30,65,119,252,160,252,130,203,233,60,229,81,109,117,240,13,87,212,57,169,204,130,121,237,196,94,201,99,212,227,138,130,137,152,167,26,83,160,37,133,29,230,27,182,51,17,195,237,207,229,5,42,138,46,42,84,27,152,3,240,15,12,14,90,120,239,149,177,195,212,160,192,164,189,202,3,71,238,234,142,232,167,113,168,167,23,81,185,168,146,207,238,57,254,130,140,25,4,144,163,61,228,78,160,28,208,218,100,212,48,98,49,17,45,69,237,119,3,114,122,57,152,83,143,78,72,236,48,14,83,84,201,217,246,238,118,160,56,162,110,72,113,38,84,231,54,162,46,223,181,88,185,210,86,6,37,140,126,187,41,170,31,212,39,23,138,151,143,226,160,21,65,231,179,182,208,63,30,227,98,41,136,75,111,20,168,85,6,38,245,153,46,24,22,157,94,84,173,92,143,236,18,160,108,254,242,51,40,122,176,190,154,230,46,51,119,130,206,74,70,207,23,161,200,211,61,174,105,61,2,45,45,74,210,168,160,180,124,136,219,213,85,224,196,84,251,213,154,29,129,84,133,117,97,93,75,169,111,175,252,253,181,236,29,31,235,212,136,160,145,66,153,79,75,58,127,40,116,166,186,109,123,59,168,253,49,230,154,168,141,192,7,135,244,141,141,27,145,183,163,255,160,244,206,34,126,138,154,199,69,158,195,50,253,216,223,136,217,252,88,41,252,142,59,172,195,190,184,76,69,34,57,154,225,160,11,85,235,155,139,36,142,55,242,254,119,239,72,103,227,192,190,171,52,74,111,169,147,75,187,57,232,135,160,28,5,216,160,221,255,17,232,105,231,25,97,193,106,39,48,221,205,190,98,88,140,92,154,178,52,10,226,240,136,99,160,254,102,99,20,160,63,253,4,244,156,122,180,15,219,228,17,169,135,3,105,233,7,46,235,175,13,69,127,226,231,156,241,219,188,1,58,10,160,39,79,238,23,126,99,249,27,158,53,68,164,13,36,66,206,153,74,47,45,73,32,193,36,181,245,221,153,0,110,176,84,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,93,244,138,127,9,6,115,7,57,209,161,130,160,230,27,183,213,83,114,203,139,165,173,212,125,107,210,34,185,11,99,203,0],[160,99,81,57,145,22,32,16,237,159,176,240,132,218,186,105,131,186,101,223,64,134,114,229,246,73,116,223,254,169,20,93,13,0],[160,223,188,69,180,148,23,187,138,175,140,102,207,12,132,79,214,240,188,243,233,120,106,251,53,83,31,233,17,95,111,104,194,0],[160,43,80,165,214,162,253,48,191,9,185,217,207,232,243,171,148,21,113,82,72,154,186,65,12,88,77,227,219,6,155,32,51,0],[160,130,248,216,152,57,90,244,117,98,87,224,199,145,88,213,175,237,21,154,129,90,157,13,9,204,171,202,117,92,150,2,169,0],[160,131,200,164,254,147,247,248,75,195,238,110,199,248,141,242,213,227,220,24,30,61,117,173,78,81,140,238,241,15,175,164,90,0],[160,167,90,19,137,221,108,64,16,57,149,100,15,177,7,73,15,228,80,174,8,161,179,24,156,23,234,122,18,147,118,112,18,0],[160,150,176,37,98,14,239,113,45,194,247,75,223,71,126,22,116,181,34,174,226,104,75,207,148,44,253,51,116,141,48,92,157,0],[160,113,46,94,170,144,110,246,163,148,78,182,35,248,31,117,37,167,108,170,233,221,177,22,220,196,105,172,111,24,17,236,146,0],[160,134,131,144,150,208,162,121,150,125,105,254,241,225,227,20,77,66,207,111,185,140,111,37,171,155,150,109,251,126,254,215,183,0],[160,217,255,49,108,91,7,38,188,97,202,126,164,173,191,142,201,18,136,221,83,96,194,233,244,71,247,45,68,80,48,194,233,0],[160,241,114,88,178,103,177,76,16,188,135,224,61,205,170,47,181,238,50,30,49,32,59,101,88,83,31,34,63,237,11,122,229,0],[160,175,53,220,30,49,100,116,223,105,50,113,53,248,181,190,201,26,40,25,41,148,91,10,88,101,255,6,101,232,28,185,170,0],[160,241,128,204,224,68,205,5,46,175,253,220,145,201,14,104,224,225,194,155,85,20,233,63,173,171,238,87,250,27,87,231,38,0],[160,58,141,138,172,125,89,145,94,9,27,8,75,89,185,205,47,169,212,97,239,68,4,193,85,136,163,150,251,83,93,16,168,0],[160,91,82,249,62,4,4,125,6,55,113,254,159,124,184,212,130,95,203,20,139,0,67,11,153,149,79,60,16,112,253,24,210,0],[160,108,191,0,250,116,5,145,9,129,10,203,230,240,17,121,36,58,146,191,25,22,228,187,28,111,1,214,224,158,191,78,182,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,99,81,57,145,22,32,16,237,159,176,240,132,218,186,105,131,186,101,223,64,134,114,229,246,73,116,223,254,169,20,93,13,160,223,188,69,180,148,23,187,138,175,140,102,207,12,132,79,214,240,188,243,233,120,106,251,53,83,31,233,17,95,111,104,194,160,43,80,165,214,162,253,48,191,9,185,217,207,232,243,171,148,21,113,82,72,154,186,65,12,88,77,227,219,6,155,32,51,160,130,248,216,152,57,90,244,117,98,87,224,199,145,88,213,175,237,21,154,129,90,157,13,9,204,171,202,117,92,150,2,169,160,131,200,164,254,147,247,248,75,195,238,110,199,248,141,242,213,227,220,24,30,61,117,173,78,81,140,238,241,15,175,164,90,160,167,90,19,137,221,108,64,16,57,149,100,15,177,7,73,15,228,80,174,8,161,179,24,156,23,234,122,18,147,118,112,18,160,150,176,37,98,14,239,113,45,194,247,75,223,71,126,22,116,181,34,174,226,104,75,207,148,44,253,51,116,141,48,92,157,160,113,46,94,170,144,110,246,163,148,78,182,35,248,31,117,37,167,108,170,233,221,177,22,220,196,105,172,111,24,17,236,146,160,134,131,144,150,208,162,121,150,125,105,254,241,225,227,20,77,66,207,111,185,140,111,37,171,155,150,109,251,126,254,215,183,160,217,255,49,108,91,7,38,188,97,202,126,164,173,191,142,201,18,136,221,83,96,194,233,244,71,247,45,68,80,48,194,233,160,241,114,88,178,103,177,76,16,188,135,224,61,205,170,47,181,238,50,30,49,32,59,101,88,83,31,34,63,237,11,122,229,160,175,53,220,30,49,100,116,223,105,50,113,53,248,181,190,201,26,40,25,41,148,91,10,88,101,255,6,101,232,28,185,170,160,241,128,204,224,68,205,5,46,175,253,220,145,201,14,104,224,225,194,155,85,20,233,63,173,171,238,87,250,27,87,231,38,160,58,141,138,172,125,89,145,94,9,27,8,75,89,185,205,47,169,212,97,239,68,4,193,85,136,163,150,251,83,93,16,168,160,91,82,249,62,4,4,125,6,55,113,254,159,124,184,212,130,95,203,20,139,0,67,11,153,149,79,60,16,112,253,24,210,160,108,191,0,250,116,5,145,9,129,10,203,230,240,17,121,36,58,146,191,25,22,228,187,28,111,1,214,224,158,191,78,182,128],[249,2,17,160,99,81,57,145,22,32,16,237,159,176,240,132,218,186,105,131,186,101,223,64,134,114,229,246,73,116,223,254,169,20,93,13,160,223,188,69,180,148,23,187,138,175,140,102,207,12,132,79,214,240,188,243,233,120,106,251,53,83,31,233,17,95,111,104,194,160,43,80,165,214,162,253,48,191,9,185,217,207,232,243,171,148,21,113,82,72,154,186,65,12,88,77,227,219,6,155,32,51,160,130,248,216,152,57,90,244,117,98,87,224,199,145,88,213,175,237,21,154,129,90,157,13,9,204,171,202,117,92,150,2,169,160,131,200,164,254,147,247,248,75,195,238,110,199,248,141,242,213,227,220,24,30,61,117,173,78,81,140,238,241,15,175,164,90,160,167,90,19,137,221,108,64,16,57,149,100,15,177,7,73,15,228,80,174,8,161,179,24,156,23,234,122,18,147,118,112,18,160,150,176,37,98,14,239,113,45,194,247,75,223,71,126,22,116,181,34,174,226,104,75,207,148,44,253,51,116,141,48,92,157,160,93,244,138,127,9,6,115,7,57,209,161,130,160,230,27,183,213,83,114,203,139,165,173,212,125,107,210,34,185,11,99,203,160,134,131,144,150,208,162,121,150,125,105,254,241,225,227,20,77,66,207,111,185,140,111,37,171,155,150,109,251,126,254,215,183,160,217,255,49,108,91,7,38,188,97,202,126,164,173,191,142,201,18,136,221,83,96,194,233,244,71,247,45,68,80,48,194,233,160,241,114,88,178,103,177,76,16,188,135,224,61,205,170,47,181,238,50,30,49,32,59,101,88,83,31,34,63,237,11,122,229,160,175,53,220,30,49,100,116,223,105,50,113,53,248,181,190,201,26,40,25,41,148,91,10,88,101,255,6,101,232,28,185,170,160,241,128,204,224,68,205,5,46,175,253,220,145,201,14,104,224,225,194,155,85,20,233,63,173,171,238,87,250,27,87,231,38,160,58,141,138,172,125,89,145,94,9,27,8,75,89,185,205,47,169,212,97,239,68,4,193,85,136,163,150,251,83,93,16,168,160,91,82,249,62,4,4,125,6,55,113,254,159,124,184,212,130,95,203,20,139,0,67,11,153,149,79,60,16,112,253,24,210,160,108,191,0,250,116,5,145,9,129,10,203,230,240,17,121,36,58,146,191,25,22,228,187,28,111,1,214,224,158,191,78,182,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,60,6,135,100,74,198,216,117,73,5,115,188,69,42,244,75,140,20,222,1,21,125,114,68,118,179,193,219,165,10,78,239,0],[160,109,222,119,190,224,61,243,65,34,30,206,106,161,224,207,207,66,71,4,6,114,22,232,170,9,193,15,219,228,66,251,8,0],[160,198,235,191,55,99,224,254,190,103,167,104,188,167,111,165,98,164,214,56,147,166,171,128,59,62,5,221,135,195,67,225,198,0],[160,154,157,51,71,112,222,223,143,159,123,223,246,103,213,201,192,226,156,171,8,210,16,98,209,37,238,213,211,164,47,64,109,0],[160,90,233,245,123,230,165,63,187,199,211,181,9,242,188,120,48,161,155,130,157,116,36,1,49,205,102,150,184,25,155,49,77,0],[160,7,132,4,240,93,14,187,247,160,219,126,25,251,248,225,103,42,106,144,63,86,214,193,199,186,8,109,136,93,57,217,230,0],[160,207,152,116,48,9,8,91,103,17,15,206,27,176,2,85,57,161,181,66,20,14,49,90,48,206,22,237,210,25,161,74,136,0],[160,73,59,181,228,10,54,19,252,219,0,117,25,251,196,139,11,124,63,94,87,66,244,84,150,103,130,139,250,175,65,72,112,0],[160,241,198,154,252,95,13,146,68,236,132,187,148,172,4,41,86,219,173,196,24,184,72,37,84,163,82,60,14,159,87,79,75,0],[160,58,240,134,217,44,76,219,13,127,91,25,138,6,27,234,78,188,163,120,110,22,151,224,111,52,127,153,142,171,244,13,40,0],[160,153,39,52,108,5,150,212,210,156,59,248,20,53,26,39,211,186,49,96,41,155,240,204,176,112,16,92,193,56,115,32,211,0],[160,89,182,75,245,67,107,169,65,252,110,218,142,228,69,162,83,9,85,115,241,206,190,21,240,246,217,155,5,186,171,149,73,0],[160,9,154,116,13,26,181,155,42,180,250,126,216,144,142,181,98,96,135,29,247,33,35,235,95,118,45,153,161,219,95,149,68,0],[160,152,148,242,238,116,132,1,153,242,32,158,27,98,206,59,16,242,169,215,106,2,163,7,245,13,112,80,21,93,236,113,79,0],[160,195,253,144,24,121,81,221,161,142,214,102,61,187,181,233,197,137,61,120,90,11,2,72,3,80,180,180,239,28,175,219,182,0],[160,232,5,170,188,150,99,27,65,67,174,183,196,178,237,99,129,5,211,25,202,85,53,45,89,127,198,18,36,88,192,185,85,0],[160,51,119,173,104,178,48,110,29,10,245,165,140,76,66,163,16,75,40,116,214,156,126,235,39,20,141,52,141,150,154,168,67,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,109,222,119,190,224,61,243,65,34,30,206,106,161,224,207,207,66,71,4,6,114,22,232,170,9,193,15,219,228,66,251,8,160,198,235,191,55,99,224,254,190,103,167,104,188,167,111,165,98,164,214,56,147,166,171,128,59,62,5,221,135,195,67,225,198,160,154,157,51,71,112,222,223,143,159,123,223,246,103,213,201,192,226,156,171,8,210,16,98,209,37,238,213,211,164,47,64,109,160,90,233,245,123,230,165,63,187,199,211,181,9,242,188,120,48,161,155,130,157,116,36,1,49,205,102,150,184,25,155,49,77,160,7,132,4,240,93,14,187,247,160,219,126,25,251,248,225,103,42,106,144,63,86,214,193,199,186,8,109,136,93,57,217,230,160,207,152,116,48,9,8,91,103,17,15,206,27,176,2,85,57,161,181,66,20,14,49,90,48,206,22,237,210,25,161,74,136,160,73,59,181,228,10,54,19,252,219,0,117,25,251,196,139,11,124,63,94,87,66,244,84,150,103,130,139,250,175,65,72,112,160,241,198,154,252,95,13,146,68,236,132,187,148,172,4,41,86,219,173,196,24,184,72,37,84,163,82,60,14,159,87,79,75,160,58,240,134,217,44,76,219,13,127,91,25,138,6,27,234,78,188,163,120,110,22,151,224,111,52,127,153,142,171,244,13,40,160,153,39,52,108,5,150,212,210,156,59,248,20,53,26,39,211,186,49,96,41,155,240,204,176,112,16,92,193,56,115,32,211,160,89,182,75,245,67,107,169,65,252,110,218,142,228,69,162,83,9,85,115,241,206,190,21,240,246,217,155,5,186,171,149,73,160,9,154,116,13,26,181,155,42,180,250,126,216,144,142,181,98,96,135,29,247,33,35,235,95,118,45,153,161,219,95,149,68,160,152,148,242,238,116,132,1,153,242,32,158,27,98,206,59,16,242,169,215,106,2,163,7,245,13,112,80,21,93,236,113,79,160,195,253,144,24,121,81,221,161,142,214,102,61,187,181,233,197,137,61,120,90,11,2,72,3,80,180,180,239,28,175,219,182,160,232,5,170,188,150,99,27,65,67,174,183,196,178,237,99,129,5,211,25,202,85,53,45,89,127,198,18,36,88,192,185,85,160,51,119,173,104,178,48,110,29,10,245,165,140,76,66,163,16,75,40,116,214,156,126,235,39,20,141,52,141,150,154,168,67,128],[249,2,17,160,109,222,119,190,224,61,243,65,34,30,206,106,161,224,207,207,66,71,4,6,114,22,232,170,9,193,15,219,228,66,251,8,160,198,235,191,55,99,224,254,190,103,167,104,188,167,111,165,98,164,214,56,147,166,171,128,59,62,5,221,135,195,67,225,198,160,154,157,51,71,112,222,223,143,159,123,223,246,103,213,201,192,226,156,171,8,210,16,98,209,37,238,213,211,164,47,64,109,160,90,233,245,123,230,165,63,187,199,211,181,9,242,188,120,48,161,155,130,157,116,36,1,49,205,102,150,184,25,155,49,77,160,7,132,4,240,93,14,187,247,160,219,126,25,251,248,225,103,42,106,144,63,86,214,193,199,186,8,109,136,93,57,217,230,160,207,152,116,48,9,8,91,103,17,15,206,27,176,2,85,57,161,181,66,20,14,49,90,48,206,22,237,210,25,161,74,136,160,73,59,181,228,10,54,19,252,219,0,117,25,251,196,139,11,124,63,94,87,66,244,84,150,103,130,139,250,175,65,72,112,160,241,198,154,252,95,13,146,68,236,132,187,148,172,4,41,86,219,173,196,24,184,72,37,84,163,82,60,14,159,87,79,75,160,58,240,134,217,44,76,219,13,127,91,25,138,6,27,234,78,188,163,120,110,22,151,224,111,52,127,153,142,171,244,13,40,160,153,39,52,108,5,150,212,210,156,59,248,20,53,26,39,211,186,49,96,41,155,240,204,176,112,16,92,193,56,115,32,211,160,89,182,75,245,67,107,169,65,252,110,218,142,228,69,162,83,9,85,115,241,206,190,21,240,246,217,155,5,186,171,149,73,160,9,154,116,13,26,181,155,42,180,250,126,216,144,142,181,98,96,135,29,247,33,35,235,95,118,45,153,161,219,95,149,68,160,152,148,242,238,116,132,1,153,242,32,158,27,98,206,59,16,242,169,215,106,2,163,7,245,13,112,80,21,93,236,113,79,160,60,6,135,100,74,198,216,117,73,5,115,188,69,42,244,75,140,20,222,1,21,125,114,68,118,179,193,219,165,10,78,239,160,232,5,170,188,150,99,27,65,67,174,183,196,178,237,99,129,5,211,25,202,85,53,45,89,127,198,18,36,88,192,185,85,160,51,119,173,104,178,48,110,29,10,245,165,140,76,66,163,16,75,40,116,214,156,126,235,39,20,141,52,141,150,154,168,67,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[248,209],[248,209]]}},"account":null,"storage":null,"values":[[160,47,57,97,210,100,83,119,94,114,113,56,148,53,16,249,57,48,164,248,176,174,18,92,141,0,138,40,247,88,58,159,15,0],[160,249,106,58,189,76,35,27,92,144,238,228,49,229,35,245,122,52,236,45,191,198,211,47,226,193,68,21,87,136,171,68,113,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,210,4,215,96,67,88,156,141,228,215,51,148,114,240,225,138,222,198,174,112,247,79,118,197,80,143,142,116,115,157,224,55,0],[160,69,134,195,185,25,230,39,96,231,219,74,207,76,19,121,40,114,172,38,165,122,159,251,234,16,250,182,137,147,59,97,45,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,151,77,179,161,157,67,153,236,254,150,78,65,248,154,213,7,129,159,109,87,98,58,86,40,16,222,202,252,213,113,229,146,0],[160,110,226,218,188,169,146,193,99,73,154,48,126,4,221,69,243,169,81,13,206,205,212,83,67,41,228,104,221,219,55,246,164,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,153,39,180,158,24,35,3,114,153,226,127,153,192,119,29,73,173,131,131,176,223,32,234,177,41,202,201,225,30,83,239,1,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,209,160,249,106,58,189,76,35,27,92,144,238,228,49,229,35,245,122,52,236,45,191,198,211,47,226,193,68,21,87,136,171,68,113,128,128,128,160,210,4,215,96,67,88,156,141,228,215,51,148,114,240,225,138,222,198,174,112,247,79,118,197,80,143,142,116,115,157,224,55,160,69,134,195,185,25,230,39,96,231,219,74,207,76,19,121,40,114,172,38,165,122,159,251,234,16,250,182,137,147,59,97,45,128,128,160,151,77,179,161,157,67,153,236,254,150,78,65,248,154,213,7,129,159,109,87,98,58,86,40,16,222,202,252,213,113,229,146,160,110,226,218,188,169,146,193,99,73,154,48,126,4,221,69,243,169,81,13,206,205,212,83,67,41,228,104,221,219,55,246,164,128,128,160,153,39,180,158,24,35,3,114,153,226,127,153,192,119,29,73,173,131,131,176,223,32,234,177,41,202,201,225,30,83,239,1,128,128,128,128],[248,209,160,249,106,58,189,76,35,27,92,144,238,228,49,229,35,245,122,52,236,45,191,198,211,47,226,193,68,21,87,136,171,68,113,128,128,128,160,210,4,215,96,67,88,156,141,228,215,51,148,114,240,225,138,222,198,174,112,247,79,118,197,80,143,142,116,115,157,224,55,160,47,57,97,210,100,83,119,94,114,113,56,148,53,16,249,57,48,164,248,176,174,18,92,141,0,138,40,247,88,58,159,15,128,128,160,151,77,179,161,157,67,153,236,254,150,78,65,248,154,213,7,129,159,109,87,98,58,86,40,16,222,202,252,213,113,229,146,160,110,226,218,188,169,146,193,99,73,154,48,126,4,221,69,243,169,81,13,206,205,212,83,67,41,228,104,221,219,55,246,164,128,128,160,153,39,180,158,24,35,3,114,153,226,127,153,192,119,29,73,173,131,131,176,223,32,234,177,41,202,201,225,30,83,239,1,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,251,239,33,80,129,131,194,182,60,87,149,120,38,223,78,36,235,129,201],"key":[209,49,125,95,178,176,146,242,11,155,148,162,43,11,65,251,19,109,154,99,60,23,37,17,112,125,232,238,100,190,182,181],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,63,178,176,146,242,11,155,148,162,43,11,65,251,19,109,154,99,60,23,37,17,112,125,232,238,100,190,182,181,0,0,0,0],[157,63,178,176,146,242,11,155,148,162,43,11,65,251,19,109,154,99,60,23,37,17,112,125,232,238,100,190,182,181,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,228,145,178,10,50,66,110,222,91,99,52,4,4,235,9,89,163,86,239,235,158,11,107,154,93,179,215,203,199,66,219,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,59,238,154,25,144,60,31,105,66,242,209,32,124,51,34,42,196,132,191,76,48,11,22,222,1,157,152,83,246,178,125,233,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,63,178,176,146,242,11,155,148,162,43,11,65,251,19,109,154,99,60,23,37,17,112,125,232,238,100,190,182,181,0,0,0,0]],"keccak_data":[[248,102,157,63,178,176,146,242,11,155,148,162,43,11,65,251,19,109,154,99,60,23,37,17,112,125,232,238,100,190,182,181,184,70,248,68,128,128,160,0,228,145,178,10,50,66,110,222,91,99,52,4,4,235,9,89,163,86,239,235,158,11,107,154,93,179,215,203,199,66,219,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,63,178,176,146,242,11,155,148,162,43,11,65,251,19,109,154,99,60,23,37,17,112,125,232,238,100,190,182,181,184,70,248,68,128,128,160,59,238,154,25,144,60,31,105,66,242,209,32,124,51,34,42,196,132,191,76,48,11,22,222,1,157,152,83,246,178,125,233,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,251,239,33,80,129,131,194,182,60,87,149,120,38,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,1,241],[249,1,241]]}},"account":null,"storage":null,"values":[[160,157,197,131,4,128,188,75,87,93,202,109,247,146,82,145,233,192,9,140,188,190,68,177,254,198,174,127,240,178,104,50,107,0],[160,204,194,226,85,82,6,124,142,106,162,69,119,101,234,203,92,9,35,49,34,179,169,184,74,212,205,153,215,64,2,69,11,0],[160,146,211,7,181,80,184,128,210,140,226,253,105,47,69,67,194,200,138,20,165,255,169,169,177,25,201,201,218,0,157,18,18,0],[160,208,33,205,224,108,205,186,93,109,76,30,211,146,25,7,254,115,208,196,105,121,42,163,177,198,23,15,36,5,46,198,180,0],[160,73,94,192,117,195,212,98,139,44,6,155,129,48,36,255,127,152,95,198,222,76,2,154,61,50,137,70,110,202,184,142,66,0],[160,228,14,214,173,91,109,190,107,102,99,110,81,204,134,132,104,22,80,232,183,99,126,181,222,22,99,161,241,43,24,96,129,0],[160,247,75,55,167,2,177,37,200,253,126,27,245,213,100,203,161,93,185,208,5,24,49,76,211,44,236,111,152,112,224,98,125,0],[160,230,22,253,170,152,113,254,12,166,248,9,27,116,170,80,101,127,172,42,94,164,184,103,63,63,203,166,141,193,187,87,168,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,117,149,153,237,216,63,165,171,137,208,135,9,180,117,70,208,83,218,63,200,170,93,35,163,51,9,83,161,89,60,217,179,0],[160,29,247,15,47,1,177,100,251,199,209,91,76,181,252,99,47,138,97,193,14,106,168,117,20,243,247,67,82,27,42,139,189,0],[160,86,153,243,205,214,216,172,185,100,30,86,99,49,82,49,247,177,238,16,87,18,126,87,139,153,240,219,140,182,83,105,31,0],[160,211,238,130,107,102,107,144,178,164,143,83,102,241,65,167,48,252,225,115,95,14,108,173,28,208,28,77,44,83,123,173,16,0],[160,186,221,17,0,200,65,124,37,1,181,128,208,86,182,251,162,107,80,43,141,35,165,131,83,91,111,47,110,176,231,141,210,0],[160,129,81,211,100,87,22,11,136,240,210,84,144,242,161,94,74,105,72,124,192,39,242,239,55,104,6,51,148,145,31,11,209,0],[160,31,147,150,77,114,56,94,28,227,194,180,195,0,247,126,0,197,32,108,220,251,80,117,218,69,89,61,126,204,140,222,117,0],[160,46,136,255,61,158,62,132,88,135,23,229,136,200,227,233,116,253,28,81,123,166,242,240,108,197,163,101,134,113,194,55,164,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,241,160,204,194,226,85,82,6,124,142,106,162,69,119,101,234,203,92,9,35,49,34,179,169,184,74,212,205,153,215,64,2,69,11,160,146,211,7,181,80,184,128,210,140,226,253,105,47,69,67,194,200,138,20,165,255,169,169,177,25,201,201,218,0,157,18,18,160,208,33,205,224,108,205,186,93,109,76,30,211,146,25,7,254,115,208,196,105,121,42,163,177,198,23,15,36,5,46,198,180,160,73,94,192,117,195,212,98,139,44,6,155,129,48,36,255,127,152,95,198,222,76,2,154,61,50,137,70,110,202,184,142,66,160,228,14,214,173,91,109,190,107,102,99,110,81,204,134,132,104,22,80,232,183,99,126,181,222,22,99,161,241,43,24,96,129,160,247,75,55,167,2,177,37,200,253,126,27,245,213,100,203,161,93,185,208,5,24,49,76,211,44,236,111,152,112,224,98,125,160,230,22,253,170,152,113,254,12,166,248,9,27,116,170,80,101,127,172,42,94,164,184,103,63,63,203,166,141,193,187,87,168,128,160,117,149,153,237,216,63,165,171,137,208,135,9,180,117,70,208,83,218,63,200,170,93,35,163,51,9,83,161,89,60,217,179,160,29,247,15,47,1,177,100,251,199,209,91,76,181,252,99,47,138,97,193,14,106,168,117,20,243,247,67,82,27,42,139,189,160,86,153,243,205,214,216,172,185,100,30,86,99,49,82,49,247,177,238,16,87,18,126,87,139,153,240,219,140,182,83,105,31,160,211,238,130,107,102,107,144,178,164,143,83,102,241,65,167,48,252,225,115,95,14,108,173,28,208,28,77,44,83,123,173,16,160,186,221,17,0,200,65,124,37,1,181,128,208,86,182,251,162,107,80,43,141,35,165,131,83,91,111,47,110,176,231,141,210,160,129,81,211,100,87,22,11,136,240,210,84,144,242,161,94,74,105,72,124,192,39,242,239,55,104,6,51,148,145,31,11,209,160,31,147,150,77,114,56,94,28,227,194,180,195,0,247,126,0,197,32,108,220,251,80,117,218,69,89,61,126,204,140,222,117,160,46,136,255,61,158,62,132,88,135,23,229,136,200,227,233,116,253,28,81,123,166,242,240,108,197,163,101,134,113,194,55,164,128],[249,1,241,160,204,194,226,85,82,6,124,142,106,162,69,119,101,234,203,92,9,35,49,34,179,169,184,74,212,205,153,215,64,2,69,11,160,146,211,7,181,80,184,128,210,140,226,253,105,47,69,67,194,200,138,20,165,255,169,169,177,25,201,201,218,0,157,18,18,160,208,33,205,224,108,205,186,93,109,76,30,211,146,25,7,254,115,208,196,105,121,42,163,177,198,23,15,36,5,46,198,180,160,73,94,192,117,195,212,98,139,44,6,155,129,48,36,255,127,152,95,198,222,76,2,154,61,50,137,70,110,202,184,142,66,160,228,14,214,173,91,109,190,107,102,99,110,81,204,134,132,104,22,80,232,183,99,126,181,222,22,99,161,241,43,24,96,129,160,247,75,55,167,2,177,37,200,253,126,27,245,213,100,203,161,93,185,208,5,24,49,76,211,44,236,111,152,112,224,98,125,160,230,22,253,170,152,113,254,12,166,248,9,27,116,170,80,101,127,172,42,94,164,184,103,63,63,203,166,141,193,187,87,168,128,160,117,149,153,237,216,63,165,171,137,208,135,9,180,117,70,208,83,218,63,200,170,93,35,163,51,9,83,161,89,60,217,179,160,29,247,15,47,1,177,100,251,199,209,91,76,181,252,99,47,138,97,193,14,106,168,117,20,243,247,67,82,27,42,139,189,160,86,153,243,205,214,216,172,185,100,30,86,99,49,82,49,247,177,238,16,87,18,126,87,139,153,240,219,140,182,83,105,31,160,211,238,130,107,102,107,144,178,164,143,83,102,241,65,167,48,252,225,115,95,14,108,173,28,208,28,77,44,83,123,173,16,160,186,221,17,0,200,65,124,37,1,181,128,208,86,182,251,162,107,80,43,141,35,165,131,83,91,111,47,110,176,231,141,210,160,129,81,211,100,87,22,11,136,240,210,84,144,242,161,94,74,105,72,124,192,39,242,239,55,104,6,51,148,145,31,11,209,160,157,197,131,4,128,188,75,87,93,202,109,247,146,82,145,233,192,9,140,188,190,68,177,254,198,174,127,240,178,104,50,107,160,46,136,255,61,158,62,132,88,135,23,229,136,200,227,233,116,253,28,81,123,166,242,240,108,197,163,101,134,113,194,55,164,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[248,145],[248,145]]}},"account":null,"storage":null,"values":[[160,180,129,224,29,6,87,114,132,127,60,150,193,184,179,91,229,253,70,217,195,127,123,249,72,244,77,90,191,216,137,219,65,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,184,46,19,86,166,55,200,224,128,167,165,206,11,235,15,52,250,109,102,0,79,105,149,189,78,159,248,136,147,11,192,141,0],[160,212,70,110,79,254,88,48,73,77,223,130,47,69,249,218,213,70,209,64,202,174,136,63,157,17,218,210,78,140,16,119,17,0],[160,239,94,255,112,200,63,102,226,213,74,59,200,189,160,157,223,171,118,210,95,226,64,126,179,91,80,127,33,117,247,158,28,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,27,217,47,51,117,171,235,162,182,188,167,109,208,52,83,155,241,64,231,52,96,30,136,135,114,92,226,143,60,118,94,218,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,145,128,160,184,46,19,86,166,55,200,224,128,167,165,206,11,235,15,52,250,109,102,0,79,105,149,189,78,159,248,136,147,11,192,141,160,212,70,110,79,254,88,48,73,77,223,130,47,69,249,218,213,70,209,64,202,174,136,63,157,17,218,210,78,140,16,119,17,160,239,94,255,112,200,63,102,226,213,74,59,200,189,160,157,223,171,118,210,95,226,64,126,179,91,80,127,33,117,247,158,28,128,128,128,128,128,128,128,160,27,217,47,51,117,171,235,162,182,188,167,109,208,52,83,155,241,64,231,52,96,30,136,135,114,92,226,143,60,118,94,218,128,128,128,128,128],[248,145,128,160,184,46,19,86,166,55,200,224,128,167,165,206,11,235,15,52,250,109,102,0,79,105,149,189,78,159,248,136,147,11,192,141,160,212,70,110,79,254,88,48,73,77,223,130,47,69,249,218,213,70,209,64,202,174,136,63,157,17,218,210,78,140,16,119,17,160,239,94,255,112,200,63,102,226,213,74,59,200,189,160,157,223,171,118,210,95,226,64,126,179,91,80,127,33,117,247,158,28,128,128,128,128,128,128,128,160,180,129,224,29,6,87,114,132,127,60,150,193,184,179,91,229,253,70,217,195,127,123,249,72,244,77,90,191,216,137,219,65,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,true],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":14,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,225,86,193,196,213,164,3,208,69,150,199,29,171,37,193,9,43,146,11,181,144,117,22,220,158,95,219,255,115,202,181,64,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,225,86,193,196,213,164,3,208,69,150,199,29,171,37,193,9,43,146,11,181,144,117,22,220,158,95,219,255,115,202,181,64,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,221,112,242,174,195,165,16,106,96,22,29,8,136,52,239,171,161,199,208,72,236,151,100,101,23,82,233,154,28,167,148,73,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,128,128,128,128,160,225,86,193,196,213,164,3,208,69,150,199,29,171,37,193,9,43,146,11,181,144,117,22,220,158,95,219,255,115,202,181,64,128,160,221,112,242,174,195,165,16,106,96,22,29,8,136,52,239,171,161,199,208,72,236,151,100,101,23,82,233,154,28,167,148,73,128,128],[248,81,128,128,128,128,128,128,128,128,128,128,128,128,160,225,86,193,196,213,164,3,208,69,150,199,29,171,37,193,9,43,146,11,181,144,117,22,220,158,95,219,255,115,202,181,64,128,160,221,112,242,174,195,165,16,106,96,22,29,8,136,52,239,171,161,199,208,72,236,151,100,101,23,82,233,154,28,167,148,73,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,67],"key":[235,207,117,31,216,242,20,172,137,89,10,84,218,35,38,178,182,67,5,68,54,127,178,216,248,46,67,173,108,157,55,18],"list_rlp_bytes":[[248,66],[248,67]],"value_rlp_bytes":[[161],[161]],"drifted_rlp_bytes":[248,66],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[159,63,117,31,216,242,20,172,137,89,10,84,218,35,38,178,182,67,5,68,54,127,178,216,248,46,67,173,108,157,55,18,0,0],[160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170,0],[160,32,235,117,17,208,2,186,74,12,134,238,103,127,37,240,27,164,245,42,218,188,162,9,151,17,57,90,177,190,250,180,61,0],[160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170,0],[159,59,117,17,208,2,186,74,12,134,238,103,127,37,240,27,164,245,42,218,188,162,9,151,17,57,90,177,190,250,180,61,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,66,159,63,117,31,216,242,20,172,137,89,10,84,218,35,38,178,182,67,5,68,54,127,178,216,248,46,67,173,108,157,55,18,161,160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170],[248,67,160,32,235,117,17,208,2,186,74,12,134,238,103,127,37,240,27,164,245,42,218,188,162,9,151,17,57,90,177,190,250,180,61,161,160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,67],[248,66,159,59,117,17,208,2,186,74,12,134,238,103,127,37,240,27,164,245,42,218,188,162,9,151,17,57,90,177,190,250,180,61,161,160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/DeleteToEmptyTrie.json b/zkevm-circuits/src/mpt_circuit/tests/DeleteToEmptyTrie.json new file mode 100644 index 0000000000..8caa6ca6fa --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/DeleteToEmptyTrie.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,23,127,202,250,39,77,156,111,117,43,200,180,61,186,99,132,16,29,111,232,235,202,1,247,14,11,125,93,42,208,238,115,0],[160,138,125,255,139,71,244,198,102,166,157,231,101,147,176,222,81,96,177,137,61,174,88,143,113,75,32,91,188,251,255,98,139,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,191,88,230,146,208,186,4,182,204,214,205,98,81,177,48,211,80,96,80,103,109,12,86,75,201,219,146,137,248,154,63,39,0],[160,60,198,250,158,115,39,34,35,105,195,43,121,101,109,173,74,106,25,132,220,162,30,175,136,98,150,158,247,168,55,37,60,0],[160,81,34,74,212,150,170,41,121,103,15,146,119,212,94,49,14,76,4,77,215,246,168,131,155,169,136,242,162,27,212,162,170,0],[160,228,22,39,137,146,1,54,178,148,126,99,207,86,182,62,197,202,118,166,61,87,166,185,130,236,68,47,191,54,77,22,233,0],[160,121,80,214,152,190,234,180,180,171,118,80,255,215,197,12,59,73,13,191,230,150,10,27,94,63,2,178,4,166,214,1,215,0],[160,112,168,159,233,233,180,238,192,124,144,26,7,99,53,92,70,197,152,136,189,54,123,182,50,86,211,20,83,144,207,252,139,0],[160,83,223,208,215,143,101,122,196,185,68,163,82,143,9,137,91,224,243,203,75,63,188,239,206,87,108,190,215,37,243,76,242,0],[160,75,162,241,232,163,219,82,112,195,201,127,167,65,198,3,69,87,172,65,114,250,3,171,191,186,225,80,57,234,0,69,232,0],[160,127,109,135,5,91,14,52,158,3,58,197,241,234,122,209,246,80,189,236,71,170,202,179,225,117,89,145,217,161,88,47,221,0],[160,130,89,138,158,232,170,174,131,222,86,82,63,113,45,63,172,159,248,227,154,225,38,68,6,123,11,20,44,73,22,208,245,0],[160,228,141,31,209,214,192,178,116,232,111,183,225,107,177,191,236,239,12,234,76,35,3,4,185,246,219,146,41,177,16,235,82,0],[160,67,201,47,145,5,245,179,22,162,115,24,127,33,73,67,134,127,184,149,224,209,139,130,237,14,13,157,113,244,162,185,142,0],[160,35,24,83,139,246,120,41,145,224,109,131,133,74,121,110,213,183,151,106,227,38,206,153,182,140,195,245,147,183,166,255,106,0],[160,115,55,215,251,247,190,44,206,83,59,75,46,234,152,195,151,225,149,203,164,167,128,164,83,169,118,98,165,191,203,121,208,0],[160,207,52,88,28,243,113,89,151,204,35,148,247,86,45,105,50,41,10,127,16,234,231,222,250,213,233,192,209,40,230,82,102,0],[160,131,14,117,4,199,136,223,98,123,88,152,103,88,41,186,137,138,33,139,237,38,8,219,151,231,42,129,135,20,205,103,42,0],[160,178,27,227,169,202,248,237,160,156,114,67,166,251,197,166,44,240,127,48,176,214,213,138,242,210,37,98,41,242,28,114,195,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,60,198,250,158,115,39,34,35,105,195,43,121,101,109,173,74,106,25,132,220,162,30,175,136,98,150,158,247,168,55,37,60,160,81,34,74,212,150,170,41,121,103,15,146,119,212,94,49,14,76,4,77,215,246,168,131,155,169,136,242,162,27,212,162,170,160,228,22,39,137,146,1,54,178,148,126,99,207,86,182,62,197,202,118,166,61,87,166,185,130,236,68,47,191,54,77,22,233,160,121,80,214,152,190,234,180,180,171,118,80,255,215,197,12,59,73,13,191,230,150,10,27,94,63,2,178,4,166,214,1,215,160,112,168,159,233,233,180,238,192,124,144,26,7,99,53,92,70,197,152,136,189,54,123,182,50,86,211,20,83,144,207,252,139,160,83,223,208,215,143,101,122,196,185,68,163,82,143,9,137,91,224,243,203,75,63,188,239,206,87,108,190,215,37,243,76,242,160,75,162,241,232,163,219,82,112,195,201,127,167,65,198,3,69,87,172,65,114,250,3,171,191,186,225,80,57,234,0,69,232,160,127,109,135,5,91,14,52,158,3,58,197,241,234,122,209,246,80,189,236,71,170,202,179,225,117,89,145,217,161,88,47,221,160,130,89,138,158,232,170,174,131,222,86,82,63,113,45,63,172,159,248,227,154,225,38,68,6,123,11,20,44,73,22,208,245,160,228,141,31,209,214,192,178,116,232,111,183,225,107,177,191,236,239,12,234,76,35,3,4,185,246,219,146,41,177,16,235,82,160,67,201,47,145,5,245,179,22,162,115,24,127,33,73,67,134,127,184,149,224,209,139,130,237,14,13,157,113,244,162,185,142,160,35,24,83,139,246,120,41,145,224,109,131,133,74,121,110,213,183,151,106,227,38,206,153,182,140,195,245,147,183,166,255,106,160,115,55,215,251,247,190,44,206,83,59,75,46,234,152,195,151,225,149,203,164,167,128,164,83,169,118,98,165,191,203,121,208,160,207,52,88,28,243,113,89,151,204,35,148,247,86,45,105,50,41,10,127,16,234,231,222,250,213,233,192,209,40,230,82,102,160,131,14,117,4,199,136,223,98,123,88,152,103,88,41,186,137,138,33,139,237,38,8,219,151,231,42,129,135,20,205,103,42,160,178,27,227,169,202,248,237,160,156,114,67,166,251,197,166,44,240,127,48,176,214,213,138,242,210,37,98,41,242,28,114,195,128],[249,2,17,160,60,198,250,158,115,39,34,35,105,195,43,121,101,109,173,74,106,25,132,220,162,30,175,136,98,150,158,247,168,55,37,60,160,81,34,74,212,150,170,41,121,103,15,146,119,212,94,49,14,76,4,77,215,246,168,131,155,169,136,242,162,27,212,162,170,160,228,22,39,137,146,1,54,178,148,126,99,207,86,182,62,197,202,118,166,61,87,166,185,130,236,68,47,191,54,77,22,233,160,121,80,214,152,190,234,180,180,171,118,80,255,215,197,12,59,73,13,191,230,150,10,27,94,63,2,178,4,166,214,1,215,160,112,168,159,233,233,180,238,192,124,144,26,7,99,53,92,70,197,152,136,189,54,123,182,50,86,211,20,83,144,207,252,139,160,191,88,230,146,208,186,4,182,204,214,205,98,81,177,48,211,80,96,80,103,109,12,86,75,201,219,146,137,248,154,63,39,160,75,162,241,232,163,219,82,112,195,201,127,167,65,198,3,69,87,172,65,114,250,3,171,191,186,225,80,57,234,0,69,232,160,127,109,135,5,91,14,52,158,3,58,197,241,234,122,209,246,80,189,236,71,170,202,179,225,117,89,145,217,161,88,47,221,160,130,89,138,158,232,170,174,131,222,86,82,63,113,45,63,172,159,248,227,154,225,38,68,6,123,11,20,44,73,22,208,245,160,228,141,31,209,214,192,178,116,232,111,183,225,107,177,191,236,239,12,234,76,35,3,4,185,246,219,146,41,177,16,235,82,160,67,201,47,145,5,245,179,22,162,115,24,127,33,73,67,134,127,184,149,224,209,139,130,237,14,13,157,113,244,162,185,142,160,35,24,83,139,246,120,41,145,224,109,131,133,74,121,110,213,183,151,106,227,38,206,153,182,140,195,245,147,183,166,255,106,160,115,55,215,251,247,190,44,206,83,59,75,46,234,152,195,151,225,149,203,164,167,128,164,83,169,118,98,165,191,203,121,208,160,207,52,88,28,243,113,89,151,204,35,148,247,86,45,105,50,41,10,127,16,234,231,222,250,213,233,192,209,40,230,82,102,160,131,14,117,4,199,136,223,98,123,88,152,103,88,41,186,137,138,33,139,237,38,8,219,151,231,42,129,135,20,205,103,42,160,178,27,227,169,202,248,237,160,156,114,67,166,251,197,166,44,240,127,48,176,214,213,138,242,210,37,98,41,242,28,114,195,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,204,7,202,179,113,179,31,157,150,50,164,125,46,101,201,64,36,195,147,254,33,200,186,66,96,237,49,7,27,173,130,208,0],[160,224,160,204,190,106,167,16,212,235,11,226,108,59,160,52,125,3,125,243,15,78,7,190,253,109,248,53,214,201,201,135,57,0],[160,17,84,74,151,98,196,80,82,72,186,173,203,204,31,89,3,74,232,235,66,236,154,177,103,147,10,142,218,202,116,159,78,0],[160,219,8,183,90,235,109,52,204,204,61,58,195,223,208,61,23,236,15,60,255,59,137,37,215,155,122,155,101,129,65,230,109,0],[160,219,39,168,105,170,148,33,138,92,66,165,202,94,178,218,54,178,164,107,163,226,140,194,2,108,29,58,34,49,24,35,154,0],[160,20,201,48,125,106,95,70,245,43,40,78,34,127,24,131,45,249,87,197,126,200,97,136,55,1,32,185,140,1,37,42,165,0],[160,109,94,163,82,0,89,36,85,167,245,93,62,24,177,135,248,110,173,175,72,125,142,151,15,199,63,156,209,150,219,35,97,0],[160,159,64,83,229,94,17,127,129,72,92,132,106,33,193,203,131,245,97,158,94,150,215,130,236,16,152,23,172,122,252,183,237,0],[160,162,93,250,95,66,110,127,128,166,120,103,183,254,92,89,160,235,12,156,126,64,23,110,160,240,211,42,88,249,192,206,181,0],[160,225,194,238,28,10,40,3,144,106,215,95,222,218,42,78,159,229,128,214,238,113,135,141,231,197,94,58,45,211,63,237,94,0],[160,212,177,140,71,81,143,180,205,247,2,100,154,26,76,102,220,198,74,22,101,203,183,59,189,161,37,172,158,103,224,99,13,0],[160,185,0,22,228,174,41,147,232,48,15,8,119,0,27,195,169,145,96,179,189,107,136,134,190,91,235,9,118,208,32,43,65,0],[160,88,161,73,215,119,105,31,137,79,37,128,65,178,225,59,112,49,222,175,14,222,21,64,143,155,35,156,72,27,226,127,92,0],[160,127,196,19,9,69,235,2,36,176,187,18,133,248,13,13,39,229,137,100,92,244,157,137,157,69,165,1,59,158,103,29,190,0],[160,156,159,70,239,242,254,168,166,193,86,214,216,34,92,173,73,166,75,125,146,66,129,135,156,203,17,156,101,63,46,137,133,0],[160,79,220,223,102,181,54,179,73,46,230,56,51,45,188,217,114,228,245,173,26,242,236,71,226,43,121,6,7,201,6,202,147,0],[160,61,193,91,157,18,102,143,88,98,133,111,243,121,221,174,228,112,33,42,227,75,180,27,28,154,129,226,177,103,111,215,173,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,224,160,204,190,106,167,16,212,235,11,226,108,59,160,52,125,3,125,243,15,78,7,190,253,109,248,53,214,201,201,135,57,160,17,84,74,151,98,196,80,82,72,186,173,203,204,31,89,3,74,232,235,66,236,154,177,103,147,10,142,218,202,116,159,78,160,219,8,183,90,235,109,52,204,204,61,58,195,223,208,61,23,236,15,60,255,59,137,37,215,155,122,155,101,129,65,230,109,160,219,39,168,105,170,148,33,138,92,66,165,202,94,178,218,54,178,164,107,163,226,140,194,2,108,29,58,34,49,24,35,154,160,20,201,48,125,106,95,70,245,43,40,78,34,127,24,131,45,249,87,197,126,200,97,136,55,1,32,185,140,1,37,42,165,160,109,94,163,82,0,89,36,85,167,245,93,62,24,177,135,248,110,173,175,72,125,142,151,15,199,63,156,209,150,219,35,97,160,159,64,83,229,94,17,127,129,72,92,132,106,33,193,203,131,245,97,158,94,150,215,130,236,16,152,23,172,122,252,183,237,160,162,93,250,95,66,110,127,128,166,120,103,183,254,92,89,160,235,12,156,126,64,23,110,160,240,211,42,88,249,192,206,181,160,225,194,238,28,10,40,3,144,106,215,95,222,218,42,78,159,229,128,214,238,113,135,141,231,197,94,58,45,211,63,237,94,160,212,177,140,71,81,143,180,205,247,2,100,154,26,76,102,220,198,74,22,101,203,183,59,189,161,37,172,158,103,224,99,13,160,185,0,22,228,174,41,147,232,48,15,8,119,0,27,195,169,145,96,179,189,107,136,134,190,91,235,9,118,208,32,43,65,160,88,161,73,215,119,105,31,137,79,37,128,65,178,225,59,112,49,222,175,14,222,21,64,143,155,35,156,72,27,226,127,92,160,127,196,19,9,69,235,2,36,176,187,18,133,248,13,13,39,229,137,100,92,244,157,137,157,69,165,1,59,158,103,29,190,160,156,159,70,239,242,254,168,166,193,86,214,216,34,92,173,73,166,75,125,146,66,129,135,156,203,17,156,101,63,46,137,133,160,79,220,223,102,181,54,179,73,46,230,56,51,45,188,217,114,228,245,173,26,242,236,71,226,43,121,6,7,201,6,202,147,160,61,193,91,157,18,102,143,88,98,133,111,243,121,221,174,228,112,33,42,227,75,180,27,28,154,129,226,177,103,111,215,173,128],[249,2,17,160,224,160,204,190,106,167,16,212,235,11,226,108,59,160,52,125,3,125,243,15,78,7,190,253,109,248,53,214,201,201,135,57,160,17,84,74,151,98,196,80,82,72,186,173,203,204,31,89,3,74,232,235,66,236,154,177,103,147,10,142,218,202,116,159,78,160,219,8,183,90,235,109,52,204,204,61,58,195,223,208,61,23,236,15,60,255,59,137,37,215,155,122,155,101,129,65,230,109,160,204,7,202,179,113,179,31,157,150,50,164,125,46,101,201,64,36,195,147,254,33,200,186,66,96,237,49,7,27,173,130,208,160,20,201,48,125,106,95,70,245,43,40,78,34,127,24,131,45,249,87,197,126,200,97,136,55,1,32,185,140,1,37,42,165,160,109,94,163,82,0,89,36,85,167,245,93,62,24,177,135,248,110,173,175,72,125,142,151,15,199,63,156,209,150,219,35,97,160,159,64,83,229,94,17,127,129,72,92,132,106,33,193,203,131,245,97,158,94,150,215,130,236,16,152,23,172,122,252,183,237,160,162,93,250,95,66,110,127,128,166,120,103,183,254,92,89,160,235,12,156,126,64,23,110,160,240,211,42,88,249,192,206,181,160,225,194,238,28,10,40,3,144,106,215,95,222,218,42,78,159,229,128,214,238,113,135,141,231,197,94,58,45,211,63,237,94,160,212,177,140,71,81,143,180,205,247,2,100,154,26,76,102,220,198,74,22,101,203,183,59,189,161,37,172,158,103,224,99,13,160,185,0,22,228,174,41,147,232,48,15,8,119,0,27,195,169,145,96,179,189,107,136,134,190,91,235,9,118,208,32,43,65,160,88,161,73,215,119,105,31,137,79,37,128,65,178,225,59,112,49,222,175,14,222,21,64,143,155,35,156,72,27,226,127,92,160,127,196,19,9,69,235,2,36,176,187,18,133,248,13,13,39,229,137,100,92,244,157,137,157,69,165,1,59,158,103,29,190,160,156,159,70,239,242,254,168,166,193,86,214,216,34,92,173,73,166,75,125,146,66,129,135,156,203,17,156,101,63,46,137,133,160,79,220,223,102,181,54,179,73,46,230,56,51,45,188,217,114,228,245,173,26,242,236,71,226,43,121,6,7,201,6,202,147,160,61,193,91,157,18,102,143,88,98,133,111,243,121,221,174,228,112,33,42,227,75,180,27,28,154,129,226,177,103,111,215,173,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,43,69,86,113,95,61,239,193,207,239,9,241,236,158,131,102,79,38,164,186,2,250,13,162,192,151,222,229,29,99,244,50,0],[160,14,165,6,22,159,188,24,51,92,136,212,250,222,234,56,117,11,228,154,151,111,209,12,140,170,56,169,141,202,226,135,93,0],[160,58,215,220,199,105,41,206,80,134,211,251,156,150,93,2,1,51,119,121,250,120,153,68,114,166,58,169,187,227,10,57,39,0],[160,254,121,107,132,102,105,40,187,183,208,54,184,59,170,24,196,133,142,10,221,38,105,35,74,58,136,157,132,169,134,197,137,0],[160,156,244,77,9,97,153,114,240,195,225,161,224,205,77,130,121,225,42,224,17,155,244,44,223,217,225,237,215,170,53,91,122,0],[160,218,98,175,122,220,199,62,137,60,60,197,211,142,60,71,189,118,201,107,68,25,32,247,176,36,95,83,115,252,231,68,124,0],[160,76,185,199,60,210,76,64,221,170,191,1,8,21,21,232,251,198,18,19,75,44,125,231,141,122,159,42,245,13,222,134,206,0],[160,29,227,227,74,123,232,228,162,37,84,224,181,162,51,6,211,171,240,206,246,75,251,173,126,128,120,180,89,252,60,255,112,0],[160,110,12,187,41,44,116,38,125,98,174,44,153,47,236,251,12,14,124,122,7,202,17,194,152,177,238,87,113,180,170,66,183,0],[160,64,128,191,170,145,135,120,255,168,8,111,181,166,68,105,16,210,123,232,189,45,173,105,240,243,193,133,162,52,107,85,144,0],[160,243,229,3,215,98,10,225,162,158,154,0,155,9,118,106,50,10,187,88,35,19,135,15,158,232,252,37,162,81,149,205,170,0],[160,249,199,112,122,102,67,120,26,30,110,90,229,222,253,12,151,148,125,103,16,178,146,75,214,232,124,40,10,93,197,224,238,0],[160,187,149,161,188,140,232,33,123,135,65,167,159,176,86,6,108,140,83,67,222,75,115,112,131,235,102,79,178,78,37,2,224,0],[160,85,125,105,118,184,58,228,68,165,55,100,151,40,61,75,44,223,114,244,82,233,73,241,28,55,15,189,97,252,197,95,206,0],[160,93,235,84,57,207,137,206,63,27,246,129,212,131,57,16,108,30,127,10,61,175,185,212,53,83,217,16,74,68,18,243,132,0],[160,110,47,15,54,42,42,169,161,252,233,82,121,219,20,191,148,239,32,164,98,111,155,22,179,255,35,252,248,76,103,206,209,0],[160,130,74,220,188,50,216,130,35,199,98,203,47,119,79,38,6,106,137,130,81,35,226,191,113,96,219,218,33,190,77,71,33,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,14,165,6,22,159,188,24,51,92,136,212,250,222,234,56,117,11,228,154,151,111,209,12,140,170,56,169,141,202,226,135,93,160,58,215,220,199,105,41,206,80,134,211,251,156,150,93,2,1,51,119,121,250,120,153,68,114,166,58,169,187,227,10,57,39,160,254,121,107,132,102,105,40,187,183,208,54,184,59,170,24,196,133,142,10,221,38,105,35,74,58,136,157,132,169,134,197,137,160,156,244,77,9,97,153,114,240,195,225,161,224,205,77,130,121,225,42,224,17,155,244,44,223,217,225,237,215,170,53,91,122,160,218,98,175,122,220,199,62,137,60,60,197,211,142,60,71,189,118,201,107,68,25,32,247,176,36,95,83,115,252,231,68,124,160,76,185,199,60,210,76,64,221,170,191,1,8,21,21,232,251,198,18,19,75,44,125,231,141,122,159,42,245,13,222,134,206,160,29,227,227,74,123,232,228,162,37,84,224,181,162,51,6,211,171,240,206,246,75,251,173,126,128,120,180,89,252,60,255,112,160,110,12,187,41,44,116,38,125,98,174,44,153,47,236,251,12,14,124,122,7,202,17,194,152,177,238,87,113,180,170,66,183,160,64,128,191,170,145,135,120,255,168,8,111,181,166,68,105,16,210,123,232,189,45,173,105,240,243,193,133,162,52,107,85,144,160,243,229,3,215,98,10,225,162,158,154,0,155,9,118,106,50,10,187,88,35,19,135,15,158,232,252,37,162,81,149,205,170,160,249,199,112,122,102,67,120,26,30,110,90,229,222,253,12,151,148,125,103,16,178,146,75,214,232,124,40,10,93,197,224,238,160,187,149,161,188,140,232,33,123,135,65,167,159,176,86,6,108,140,83,67,222,75,115,112,131,235,102,79,178,78,37,2,224,160,85,125,105,118,184,58,228,68,165,55,100,151,40,61,75,44,223,114,244,82,233,73,241,28,55,15,189,97,252,197,95,206,160,93,235,84,57,207,137,206,63,27,246,129,212,131,57,16,108,30,127,10,61,175,185,212,53,83,217,16,74,68,18,243,132,160,110,47,15,54,42,42,169,161,252,233,82,121,219,20,191,148,239,32,164,98,111,155,22,179,255,35,252,248,76,103,206,209,160,130,74,220,188,50,216,130,35,199,98,203,47,119,79,38,6,106,137,130,81,35,226,191,113,96,219,218,33,190,77,71,33,128],[249,2,17,160,14,165,6,22,159,188,24,51,92,136,212,250,222,234,56,117,11,228,154,151,111,209,12,140,170,56,169,141,202,226,135,93,160,58,215,220,199,105,41,206,80,134,211,251,156,150,93,2,1,51,119,121,250,120,153,68,114,166,58,169,187,227,10,57,39,160,254,121,107,132,102,105,40,187,183,208,54,184,59,170,24,196,133,142,10,221,38,105,35,74,58,136,157,132,169,134,197,137,160,156,244,77,9,97,153,114,240,195,225,161,224,205,77,130,121,225,42,224,17,155,244,44,223,217,225,237,215,170,53,91,122,160,218,98,175,122,220,199,62,137,60,60,197,211,142,60,71,189,118,201,107,68,25,32,247,176,36,95,83,115,252,231,68,124,160,76,185,199,60,210,76,64,221,170,191,1,8,21,21,232,251,198,18,19,75,44,125,231,141,122,159,42,245,13,222,134,206,160,29,227,227,74,123,232,228,162,37,84,224,181,162,51,6,211,171,240,206,246,75,251,173,126,128,120,180,89,252,60,255,112,160,110,12,187,41,44,116,38,125,98,174,44,153,47,236,251,12,14,124,122,7,202,17,194,152,177,238,87,113,180,170,66,183,160,43,69,86,113,95,61,239,193,207,239,9,241,236,158,131,102,79,38,164,186,2,250,13,162,192,151,222,229,29,99,244,50,160,243,229,3,215,98,10,225,162,158,154,0,155,9,118,106,50,10,187,88,35,19,135,15,158,232,252,37,162,81,149,205,170,160,249,199,112,122,102,67,120,26,30,110,90,229,222,253,12,151,148,125,103,16,178,146,75,214,232,124,40,10,93,197,224,238,160,187,149,161,188,140,232,33,123,135,65,167,159,176,86,6,108,140,83,67,222,75,115,112,131,235,102,79,178,78,37,2,224,160,85,125,105,118,184,58,228,68,165,55,100,151,40,61,75,44,223,114,244,82,233,73,241,28,55,15,189,97,252,197,95,206,160,93,235,84,57,207,137,206,63,27,246,129,212,131,57,16,108,30,127,10,61,175,185,212,53,83,217,16,74,68,18,243,132,160,110,47,15,54,42,42,169,161,252,233,82,121,219,20,191,148,239,32,164,98,111,155,22,179,255,35,252,248,76,103,206,209,160,130,74,220,188,50,216,130,35,199,98,203,47,119,79,38,6,106,137,130,81,35,226,191,113,96,219,218,33,190,77,71,33,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,133,235,133,73,93,8,65,6,235,53,18,218,3,124,26,190,183,118,4,111,43,2,16,172,239,155,199,82,73,213,182,20,0],[160,114,169,150,67,126,160,37,45,196,35,158,193,130,105,156,136,104,12,57,32,0,91,59,199,69,164,98,111,63,37,167,195,0],[160,163,93,181,110,7,170,52,140,159,162,133,57,154,50,13,236,53,68,94,97,171,111,174,64,139,185,171,218,143,142,148,123,0],[160,89,101,138,104,124,167,204,129,19,206,81,255,89,12,40,119,16,139,90,128,79,182,53,236,183,158,143,16,70,231,149,193,0],[160,109,229,158,157,53,55,221,1,108,64,70,21,103,227,89,63,41,178,232,224,124,70,202,161,113,44,13,156,121,193,255,20,0],[160,221,153,17,178,250,69,42,155,168,117,5,76,116,59,219,17,215,137,246,93,173,42,132,179,89,3,221,81,200,226,242,76,0],[160,166,247,119,255,141,32,87,23,158,246,201,67,72,218,115,220,147,2,57,152,104,47,157,114,2,240,168,184,163,129,175,97,0],[160,240,13,118,223,196,63,180,101,73,134,26,211,112,201,84,141,74,12,182,182,183,182,139,187,228,136,120,209,169,140,102,112,0],[160,73,14,111,5,216,66,44,129,241,209,96,45,3,65,117,239,75,52,39,122,202,65,71,157,74,186,251,93,245,118,70,72,0],[160,5,159,121,86,8,244,0,141,254,173,202,208,32,106,157,32,7,160,225,59,222,193,67,59,241,30,30,10,171,20,204,195,0],[160,248,40,170,149,53,183,57,200,51,10,58,48,116,53,48,191,226,47,66,49,236,28,209,34,6,138,247,161,65,130,165,205,0],[160,223,23,143,249,54,69,146,158,94,52,41,214,25,130,31,11,46,206,6,136,242,64,92,139,128,254,62,52,184,68,165,87,0],[160,50,63,132,137,145,37,164,51,106,185,56,26,236,211,36,219,74,195,1,72,226,190,85,235,45,147,12,159,230,107,228,118,0],[160,156,207,33,90,28,218,205,59,181,230,91,85,79,1,145,132,45,149,71,130,102,184,118,55,4,236,198,199,39,34,133,44,0],[160,0,91,91,215,103,36,23,219,144,147,100,37,76,66,0,245,195,232,11,231,167,60,136,206,114,255,173,91,238,51,237,32,0],[160,245,145,188,199,173,92,69,232,8,24,232,8,41,76,255,161,12,251,50,198,114,108,9,42,173,119,30,20,38,57,241,233,0],[160,217,231,119,198,101,67,79,20,25,69,229,209,80,175,171,219,174,145,108,238,170,139,12,158,234,156,73,29,226,166,63,105,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,114,169,150,67,126,160,37,45,196,35,158,193,130,105,156,136,104,12,57,32,0,91,59,199,69,164,98,111,63,37,167,195,160,163,93,181,110,7,170,52,140,159,162,133,57,154,50,13,236,53,68,94,97,171,111,174,64,139,185,171,218,143,142,148,123,160,89,101,138,104,124,167,204,129,19,206,81,255,89,12,40,119,16,139,90,128,79,182,53,236,183,158,143,16,70,231,149,193,160,109,229,158,157,53,55,221,1,108,64,70,21,103,227,89,63,41,178,232,224,124,70,202,161,113,44,13,156,121,193,255,20,160,221,153,17,178,250,69,42,155,168,117,5,76,116,59,219,17,215,137,246,93,173,42,132,179,89,3,221,81,200,226,242,76,160,166,247,119,255,141,32,87,23,158,246,201,67,72,218,115,220,147,2,57,152,104,47,157,114,2,240,168,184,163,129,175,97,160,240,13,118,223,196,63,180,101,73,134,26,211,112,201,84,141,74,12,182,182,183,182,139,187,228,136,120,209,169,140,102,112,160,73,14,111,5,216,66,44,129,241,209,96,45,3,65,117,239,75,52,39,122,202,65,71,157,74,186,251,93,245,118,70,72,160,5,159,121,86,8,244,0,141,254,173,202,208,32,106,157,32,7,160,225,59,222,193,67,59,241,30,30,10,171,20,204,195,160,248,40,170,149,53,183,57,200,51,10,58,48,116,53,48,191,226,47,66,49,236,28,209,34,6,138,247,161,65,130,165,205,160,223,23,143,249,54,69,146,158,94,52,41,214,25,130,31,11,46,206,6,136,242,64,92,139,128,254,62,52,184,68,165,87,160,50,63,132,137,145,37,164,51,106,185,56,26,236,211,36,219,74,195,1,72,226,190,85,235,45,147,12,159,230,107,228,118,160,156,207,33,90,28,218,205,59,181,230,91,85,79,1,145,132,45,149,71,130,102,184,118,55,4,236,198,199,39,34,133,44,160,0,91,91,215,103,36,23,219,144,147,100,37,76,66,0,245,195,232,11,231,167,60,136,206,114,255,173,91,238,51,237,32,160,245,145,188,199,173,92,69,232,8,24,232,8,41,76,255,161,12,251,50,198,114,108,9,42,173,119,30,20,38,57,241,233,160,217,231,119,198,101,67,79,20,25,69,229,209,80,175,171,219,174,145,108,238,170,139,12,158,234,156,73,29,226,166,63,105,128],[249,2,17,160,133,235,133,73,93,8,65,6,235,53,18,218,3,124,26,190,183,118,4,111,43,2,16,172,239,155,199,82,73,213,182,20,160,163,93,181,110,7,170,52,140,159,162,133,57,154,50,13,236,53,68,94,97,171,111,174,64,139,185,171,218,143,142,148,123,160,89,101,138,104,124,167,204,129,19,206,81,255,89,12,40,119,16,139,90,128,79,182,53,236,183,158,143,16,70,231,149,193,160,109,229,158,157,53,55,221,1,108,64,70,21,103,227,89,63,41,178,232,224,124,70,202,161,113,44,13,156,121,193,255,20,160,221,153,17,178,250,69,42,155,168,117,5,76,116,59,219,17,215,137,246,93,173,42,132,179,89,3,221,81,200,226,242,76,160,166,247,119,255,141,32,87,23,158,246,201,67,72,218,115,220,147,2,57,152,104,47,157,114,2,240,168,184,163,129,175,97,160,240,13,118,223,196,63,180,101,73,134,26,211,112,201,84,141,74,12,182,182,183,182,139,187,228,136,120,209,169,140,102,112,160,73,14,111,5,216,66,44,129,241,209,96,45,3,65,117,239,75,52,39,122,202,65,71,157,74,186,251,93,245,118,70,72,160,5,159,121,86,8,244,0,141,254,173,202,208,32,106,157,32,7,160,225,59,222,193,67,59,241,30,30,10,171,20,204,195,160,248,40,170,149,53,183,57,200,51,10,58,48,116,53,48,191,226,47,66,49,236,28,209,34,6,138,247,161,65,130,165,205,160,223,23,143,249,54,69,146,158,94,52,41,214,25,130,31,11,46,206,6,136,242,64,92,139,128,254,62,52,184,68,165,87,160,50,63,132,137,145,37,164,51,106,185,56,26,236,211,36,219,74,195,1,72,226,190,85,235,45,147,12,159,230,107,228,118,160,156,207,33,90,28,218,205,59,181,230,91,85,79,1,145,132,45,149,71,130,102,184,118,55,4,236,198,199,39,34,133,44,160,0,91,91,215,103,36,23,219,144,147,100,37,76,66,0,245,195,232,11,231,167,60,136,206,114,255,173,91,238,51,237,32,160,245,145,188,199,173,92,69,232,8,24,232,8,41,76,255,161,12,251,50,198,114,108,9,42,173,119,30,20,38,57,241,233,160,217,231,119,198,101,67,79,20,25,69,229,209,80,175,171,219,174,145,108,238,170,139,12,158,234,156,73,29,226,166,63,105,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,5,29,50,52,201,211,18,126,217,230,1,123,105,188,75,35,235,219,41,54,37,131,120,204,76,232,183,226,193,72,92,155,0],[160,249,154,157,252,169,130,24,178,174,188,10,171,75,183,151,101,201,122,75,227,204,1,183,197,39,220,59,31,175,6,136,1,0],[160,184,142,212,113,246,55,253,76,1,96,48,47,4,6,31,60,81,16,37,23,98,74,116,239,128,102,34,186,6,209,163,252,0],[160,83,49,16,87,146,238,231,234,169,86,188,172,17,210,186,17,108,226,232,48,238,231,61,144,77,111,6,163,52,21,1,75,0],[160,85,105,46,246,56,202,27,171,173,252,32,70,26,164,200,4,132,8,191,26,18,6,71,136,185,84,78,116,7,105,173,129,0],[160,56,132,5,71,86,15,137,93,78,3,221,107,3,241,13,146,241,12,153,14,12,71,119,199,92,129,129,64,191,22,218,171,0],[160,74,152,77,40,170,9,167,165,62,21,195,214,232,149,243,171,254,129,253,48,247,58,144,37,151,98,228,162,171,212,118,94,0],[160,216,173,107,1,206,168,79,67,71,139,41,217,6,54,2,59,87,23,198,126,160,129,101,185,188,218,82,112,3,173,165,164,0],[160,10,108,143,193,28,22,98,217,170,73,112,161,147,45,94,6,170,154,118,245,159,193,129,134,168,141,165,46,135,253,62,233,0],[160,157,163,165,178,129,84,193,250,46,88,180,214,229,194,39,227,117,109,170,6,239,51,115,35,138,204,57,20,179,114,222,196,0],[160,84,63,203,152,213,1,33,249,178,42,184,49,101,22,19,190,104,212,252,175,25,222,119,46,136,149,187,198,6,220,244,65,0],[160,28,82,38,21,32,27,203,97,109,14,13,160,185,224,39,253,231,2,71,156,220,61,107,173,151,165,136,128,233,227,25,102,0],[160,216,163,73,96,11,93,139,116,117,170,134,116,167,172,140,76,88,172,241,80,233,174,88,236,216,40,105,148,196,72,55,110,0],[160,139,0,229,37,13,50,83,68,16,211,187,98,200,30,132,6,211,202,190,79,179,123,82,201,226,252,23,172,136,123,215,243,0],[160,171,186,147,212,217,108,150,242,229,123,37,215,92,93,99,231,42,158,24,113,106,176,203,138,144,205,0,49,141,149,241,220,0],[160,38,163,54,181,99,160,35,20,180,245,23,232,11,219,158,228,231,101,66,195,191,164,200,124,7,9,46,208,220,49,64,95,0],[160,33,177,178,122,210,148,189,146,118,70,198,203,190,0,165,116,103,95,242,102,64,148,40,228,179,1,21,209,86,177,4,176,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,249,154,157,252,169,130,24,178,174,188,10,171,75,183,151,101,201,122,75,227,204,1,183,197,39,220,59,31,175,6,136,1,160,184,142,212,113,246,55,253,76,1,96,48,47,4,6,31,60,81,16,37,23,98,74,116,239,128,102,34,186,6,209,163,252,160,83,49,16,87,146,238,231,234,169,86,188,172,17,210,186,17,108,226,232,48,238,231,61,144,77,111,6,163,52,21,1,75,160,85,105,46,246,56,202,27,171,173,252,32,70,26,164,200,4,132,8,191,26,18,6,71,136,185,84,78,116,7,105,173,129,160,56,132,5,71,86,15,137,93,78,3,221,107,3,241,13,146,241,12,153,14,12,71,119,199,92,129,129,64,191,22,218,171,160,74,152,77,40,170,9,167,165,62,21,195,214,232,149,243,171,254,129,253,48,247,58,144,37,151,98,228,162,171,212,118,94,160,216,173,107,1,206,168,79,67,71,139,41,217,6,54,2,59,87,23,198,126,160,129,101,185,188,218,82,112,3,173,165,164,160,10,108,143,193,28,22,98,217,170,73,112,161,147,45,94,6,170,154,118,245,159,193,129,134,168,141,165,46,135,253,62,233,160,157,163,165,178,129,84,193,250,46,88,180,214,229,194,39,227,117,109,170,6,239,51,115,35,138,204,57,20,179,114,222,196,160,84,63,203,152,213,1,33,249,178,42,184,49,101,22,19,190,104,212,252,175,25,222,119,46,136,149,187,198,6,220,244,65,160,28,82,38,21,32,27,203,97,109,14,13,160,185,224,39,253,231,2,71,156,220,61,107,173,151,165,136,128,233,227,25,102,160,216,163,73,96,11,93,139,116,117,170,134,116,167,172,140,76,88,172,241,80,233,174,88,236,216,40,105,148,196,72,55,110,160,139,0,229,37,13,50,83,68,16,211,187,98,200,30,132,6,211,202,190,79,179,123,82,201,226,252,23,172,136,123,215,243,160,171,186,147,212,217,108,150,242,229,123,37,215,92,93,99,231,42,158,24,113,106,176,203,138,144,205,0,49,141,149,241,220,160,38,163,54,181,99,160,35,20,180,245,23,232,11,219,158,228,231,101,66,195,191,164,200,124,7,9,46,208,220,49,64,95,160,33,177,178,122,210,148,189,146,118,70,198,203,190,0,165,116,103,95,242,102,64,148,40,228,179,1,21,209,86,177,4,176,128],[249,2,17,160,249,154,157,252,169,130,24,178,174,188,10,171,75,183,151,101,201,122,75,227,204,1,183,197,39,220,59,31,175,6,136,1,160,184,142,212,113,246,55,253,76,1,96,48,47,4,6,31,60,81,16,37,23,98,74,116,239,128,102,34,186,6,209,163,252,160,83,49,16,87,146,238,231,234,169,86,188,172,17,210,186,17,108,226,232,48,238,231,61,144,77,111,6,163,52,21,1,75,160,85,105,46,246,56,202,27,171,173,252,32,70,26,164,200,4,132,8,191,26,18,6,71,136,185,84,78,116,7,105,173,129,160,56,132,5,71,86,15,137,93,78,3,221,107,3,241,13,146,241,12,153,14,12,71,119,199,92,129,129,64,191,22,218,171,160,74,152,77,40,170,9,167,165,62,21,195,214,232,149,243,171,254,129,253,48,247,58,144,37,151,98,228,162,171,212,118,94,160,216,173,107,1,206,168,79,67,71,139,41,217,6,54,2,59,87,23,198,126,160,129,101,185,188,218,82,112,3,173,165,164,160,10,108,143,193,28,22,98,217,170,73,112,161,147,45,94,6,170,154,118,245,159,193,129,134,168,141,165,46,135,253,62,233,160,157,163,165,178,129,84,193,250,46,88,180,214,229,194,39,227,117,109,170,6,239,51,115,35,138,204,57,20,179,114,222,196,160,84,63,203,152,213,1,33,249,178,42,184,49,101,22,19,190,104,212,252,175,25,222,119,46,136,149,187,198,6,220,244,65,160,28,82,38,21,32,27,203,97,109,14,13,160,185,224,39,253,231,2,71,156,220,61,107,173,151,165,136,128,233,227,25,102,160,216,163,73,96,11,93,139,116,117,170,134,116,167,172,140,76,88,172,241,80,233,174,88,236,216,40,105,148,196,72,55,110,160,5,29,50,52,201,211,18,126,217,230,1,123,105,188,75,35,235,219,41,54,37,131,120,204,76,232,183,226,193,72,92,155,160,171,186,147,212,217,108,150,242,229,123,37,215,92,93,99,231,42,158,24,113,106,176,203,138,144,205,0,49,141,149,241,220,160,38,163,54,181,99,160,35,20,180,245,23,232,11,219,158,228,231,101,66,195,191,164,200,124,7,9,46,208,220,49,64,95,160,33,177,178,122,210,148,189,146,118,70,198,203,190,0,165,116,103,95,242,102,64,148,40,228,179,1,21,209,86,177,4,176,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,174,249,156,38,0,233,18,162,101,229,126,66,13,242,68,81,217,247,124,116,131,17,153,42,249,117,95,208,169,93,97,209,0],[160,106,16,111,21,123,135,16,90,41,91,246,76,214,12,169,46,0,6,39,164,82,189,246,42,69,8,101,99,152,204,132,100,0],[160,60,34,149,73,115,93,160,163,67,8,20,68,149,254,38,185,86,202,77,136,16,235,61,244,182,40,227,137,94,14,242,214,0],[160,238,127,9,174,221,194,94,32,49,180,73,73,92,78,98,80,138,78,97,4,142,231,113,17,18,114,230,254,191,151,134,171,0],[160,201,42,66,167,18,48,157,234,238,225,227,80,220,29,160,71,88,29,218,217,33,150,214,240,209,128,11,236,159,130,108,69,0],[160,2,92,117,139,0,110,75,150,33,162,159,244,223,76,12,104,29,96,36,207,182,225,171,255,178,16,146,250,3,99,230,197,0],[160,216,217,232,12,128,20,245,47,3,73,156,242,47,134,209,88,97,63,164,32,56,2,254,249,129,198,15,120,58,254,148,8,0],[160,245,175,212,144,210,121,74,226,116,11,145,233,6,146,77,105,66,135,253,195,249,248,244,117,97,69,128,138,168,72,29,141,0],[160,53,195,249,111,139,115,176,153,148,53,206,71,173,38,237,25,215,168,204,248,113,104,32,191,231,113,113,210,118,251,47,206,0],[160,235,75,20,132,9,45,56,217,6,169,194,35,234,249,44,149,165,145,171,86,205,142,208,114,153,57,123,190,191,63,121,18,0],[160,12,198,148,204,70,121,49,135,169,52,154,161,57,227,133,67,176,170,137,161,64,122,52,3,44,215,205,187,225,127,137,24,0],[160,67,138,196,199,169,8,184,226,56,85,11,150,122,188,206,85,202,62,46,186,238,95,9,157,3,69,71,72,126,228,248,148,0],[160,25,233,52,15,104,218,115,250,187,68,62,245,205,199,70,63,6,123,22,218,29,85,122,62,215,226,215,166,16,167,189,234,0],[160,98,194,154,151,239,160,156,131,232,74,193,222,232,242,255,120,231,207,47,165,244,253,125,74,3,178,193,181,42,106,252,211,0],[160,72,2,45,177,8,11,109,126,117,186,10,93,244,238,114,168,190,92,94,154,43,232,11,135,170,167,55,237,148,72,150,116,0],[160,154,222,66,92,165,73,98,221,115,238,103,253,112,232,74,60,48,132,0,178,72,97,37,254,172,227,79,219,137,95,92,60,0],[160,64,246,176,183,91,200,127,120,56,98,203,181,53,14,244,34,143,152,0,235,141,69,29,162,2,91,49,155,66,78,154,38,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,106,16,111,21,123,135,16,90,41,91,246,76,214,12,169,46,0,6,39,164,82,189,246,42,69,8,101,99,152,204,132,100,160,60,34,149,73,115,93,160,163,67,8,20,68,149,254,38,185,86,202,77,136,16,235,61,244,182,40,227,137,94,14,242,214,160,238,127,9,174,221,194,94,32,49,180,73,73,92,78,98,80,138,78,97,4,142,231,113,17,18,114,230,254,191,151,134,171,160,201,42,66,167,18,48,157,234,238,225,227,80,220,29,160,71,88,29,218,217,33,150,214,240,209,128,11,236,159,130,108,69,160,2,92,117,139,0,110,75,150,33,162,159,244,223,76,12,104,29,96,36,207,182,225,171,255,178,16,146,250,3,99,230,197,160,216,217,232,12,128,20,245,47,3,73,156,242,47,134,209,88,97,63,164,32,56,2,254,249,129,198,15,120,58,254,148,8,160,245,175,212,144,210,121,74,226,116,11,145,233,6,146,77,105,66,135,253,195,249,248,244,117,97,69,128,138,168,72,29,141,160,53,195,249,111,139,115,176,153,148,53,206,71,173,38,237,25,215,168,204,248,113,104,32,191,231,113,113,210,118,251,47,206,160,235,75,20,132,9,45,56,217,6,169,194,35,234,249,44,149,165,145,171,86,205,142,208,114,153,57,123,190,191,63,121,18,160,12,198,148,204,70,121,49,135,169,52,154,161,57,227,133,67,176,170,137,161,64,122,52,3,44,215,205,187,225,127,137,24,160,67,138,196,199,169,8,184,226,56,85,11,150,122,188,206,85,202,62,46,186,238,95,9,157,3,69,71,72,126,228,248,148,160,25,233,52,15,104,218,115,250,187,68,62,245,205,199,70,63,6,123,22,218,29,85,122,62,215,226,215,166,16,167,189,234,160,98,194,154,151,239,160,156,131,232,74,193,222,232,242,255,120,231,207,47,165,244,253,125,74,3,178,193,181,42,106,252,211,160,72,2,45,177,8,11,109,126,117,186,10,93,244,238,114,168,190,92,94,154,43,232,11,135,170,167,55,237,148,72,150,116,160,154,222,66,92,165,73,98,221,115,238,103,253,112,232,74,60,48,132,0,178,72,97,37,254,172,227,79,219,137,95,92,60,160,64,246,176,183,91,200,127,120,56,98,203,181,53,14,244,34,143,152,0,235,141,69,29,162,2,91,49,155,66,78,154,38,128],[249,2,17,160,106,16,111,21,123,135,16,90,41,91,246,76,214,12,169,46,0,6,39,164,82,189,246,42,69,8,101,99,152,204,132,100,160,60,34,149,73,115,93,160,163,67,8,20,68,149,254,38,185,86,202,77,136,16,235,61,244,182,40,227,137,94,14,242,214,160,238,127,9,174,221,194,94,32,49,180,73,73,92,78,98,80,138,78,97,4,142,231,113,17,18,114,230,254,191,151,134,171,160,201,42,66,167,18,48,157,234,238,225,227,80,220,29,160,71,88,29,218,217,33,150,214,240,209,128,11,236,159,130,108,69,160,2,92,117,139,0,110,75,150,33,162,159,244,223,76,12,104,29,96,36,207,182,225,171,255,178,16,146,250,3,99,230,197,160,216,217,232,12,128,20,245,47,3,73,156,242,47,134,209,88,97,63,164,32,56,2,254,249,129,198,15,120,58,254,148,8,160,245,175,212,144,210,121,74,226,116,11,145,233,6,146,77,105,66,135,253,195,249,248,244,117,97,69,128,138,168,72,29,141,160,174,249,156,38,0,233,18,162,101,229,126,66,13,242,68,81,217,247,124,116,131,17,153,42,249,117,95,208,169,93,97,209,160,235,75,20,132,9,45,56,217,6,169,194,35,234,249,44,149,165,145,171,86,205,142,208,114,153,57,123,190,191,63,121,18,160,12,198,148,204,70,121,49,135,169,52,154,161,57,227,133,67,176,170,137,161,64,122,52,3,44,215,205,187,225,127,137,24,160,67,138,196,199,169,8,184,226,56,85,11,150,122,188,206,85,202,62,46,186,238,95,9,157,3,69,71,72,126,228,248,148,160,25,233,52,15,104,218,115,250,187,68,62,245,205,199,70,63,6,123,22,218,29,85,122,62,215,226,215,166,16,167,189,234,160,98,194,154,151,239,160,156,131,232,74,193,222,232,242,255,120,231,207,47,165,244,253,125,74,3,178,193,181,42,106,252,211,160,72,2,45,177,8,11,109,126,117,186,10,93,244,238,114,168,190,92,94,154,43,232,11,135,170,167,55,237,148,72,150,116,160,154,222,66,92,165,73,98,221,115,238,103,253,112,232,74,60,48,132,0,178,72,97,37,254,172,227,79,219,137,95,92,60,160,64,246,176,183,91,200,127,120,56,98,203,181,53,14,244,34,143,152,0,235,141,69,29,162,2,91,49,155,66,78,154,38,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,138,136,154,103,174,251,222,75,48,46,223,40,146,253,91,223,151,115,205,148,36,99,132,167,153,144,81,16,219,86,92,48,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,31,184,239,216,162,218,209,131,153,182,120,30,89,226,253,232,35,255,80,54,206,227,105,86,62,74,174,87,22,169,129,252,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,172,35,60,231,231,1,133,65,209,84,163,171,248,138,45,61,86,71,119,177,22,201,79,236,153,76,227,109,10,225,88,43,0],[160,253,135,76,135,54,108,10,170,247,252,207,96,101,104,75,7,69,195,220,177,99,45,100,235,176,35,207,225,85,18,146,78,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,33,45,215,46,82,62,109,31,1,35,68,61,66,198,187,70,90,197,148,155,207,148,72,174,197,28,191,217,57,58,226,79,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,64,195,200,247,169,82,45,109,245,192,2,141,144,211,96,247,60,81,105,180,207,67,77,149,53,11,238,212,62,22,115,144,0],[160,154,130,205,14,154,185,115,206,223,23,163,197,188,133,66,136,220,180,13,107,185,5,191,34,148,36,24,172,216,191,197,24,0],[160,203,223,36,48,180,143,23,179,255,230,40,112,153,88,88,64,78,4,13,226,19,168,89,214,215,65,43,135,196,33,218,233,0],[160,89,143,142,15,108,110,165,43,98,224,76,101,93,229,229,73,69,151,194,144,32,120,185,128,145,134,29,208,191,35,120,115,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,128,160,31,184,239,216,162,218,209,131,153,182,120,30,89,226,253,232,35,255,80,54,206,227,105,86,62,74,174,87,22,169,129,252,128,160,172,35,60,231,231,1,133,65,209,84,163,171,248,138,45,61,86,71,119,177,22,201,79,236,153,76,227,109,10,225,88,43,160,253,135,76,135,54,108,10,170,247,252,207,96,101,104,75,7,69,195,220,177,99,45,100,235,176,35,207,225,85,18,146,78,128,128,128,160,33,45,215,46,82,62,109,31,1,35,68,61,66,198,187,70,90,197,148,155,207,148,72,174,197,28,191,217,57,58,226,79,128,160,64,195,200,247,169,82,45,109,245,192,2,141,144,211,96,247,60,81,105,180,207,67,77,149,53,11,238,212,62,22,115,144,160,154,130,205,14,154,185,115,206,223,23,163,197,188,133,66,136,220,180,13,107,185,5,191,34,148,36,24,172,216,191,197,24,160,203,223,36,48,180,143,23,179,255,230,40,112,153,88,88,64,78,4,13,226,19,168,89,214,215,65,43,135,196,33,218,233,160,89,143,142,15,108,110,165,43,98,224,76,101,93,229,229,73,69,151,194,144,32,120,185,128,145,134,29,208,191,35,120,115,128,128,128],[249,1,17,128,160,31,184,239,216,162,218,209,131,153,182,120,30,89,226,253,232,35,255,80,54,206,227,105,86,62,74,174,87,22,169,129,252,128,160,172,35,60,231,231,1,133,65,209,84,163,171,248,138,45,61,86,71,119,177,22,201,79,236,153,76,227,109,10,225,88,43,160,253,135,76,135,54,108,10,170,247,252,207,96,101,104,75,7,69,195,220,177,99,45,100,235,176,35,207,225,85,18,146,78,128,128,128,160,33,45,215,46,82,62,109,31,1,35,68,61,66,198,187,70,90,197,148,155,207,148,72,174,197,28,191,217,57,58,226,79,128,160,64,195,200,247,169,82,45,109,245,192,2,141,144,211,96,247,60,81,105,180,207,67,77,149,53,11,238,212,62,22,115,144,160,138,136,154,103,174,251,222,75,48,46,223,40,146,253,91,223,151,115,205,148,36,99,132,167,153,144,81,16,219,86,92,48,160,203,223,36,48,180,143,23,179,255,230,40,112,153,88,88,64,78,4,13,226,19,168,89,214,215,65,43,135,196,33,218,233,160,89,143,142,15,108,110,165,43,98,224,76,101,93,229,229,73,69,151,194,144,32,120,185,128,145,134,29,208,191,35,120,115,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,199,3,79,188,218,204,198,37,11,244,45,1,57,243,154,39,128,29,29,9,176,195,38,176,180,154,118,137,253,200,30,216,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,108,185,102,52,21,10,75,241,154,209,205,29,41,234,210,116,211,39,182,196,120,254,70,36,87,14,59,127,132,143,234,49,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,91,3,68,246,89,133,57,96,176,47,140,104,126,136,36,188,61,61,40,76,103,36,98,239,83,219,110,48,108,131,241,61,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,160,108,185,102,52,21,10,75,241,154,209,205,29,41,234,210,116,211,39,182,196,120,254,70,36,87,14,59,127,132,143,234,49,128,128,160,91,3,68,246,89,133,57,96,176,47,140,104,126,136,36,188,61,61,40,76,103,36,98,239,83,219,110,48,108,131,241,61,128,128,128,128,128,128,128,128,128],[248,81,128,128,128,128,160,108,185,102,52,21,10,75,241,154,209,205,29,41,234,210,116,211,39,182,196,120,254,70,36,87,14,59,127,132,143,234,49,128,128,160,199,3,79,188,218,204,198,37,11,244,45,1,57,243,154,39,128,29,29,9,176,195,38,176,180,154,118,137,253,200,30,216,128,128,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"key":[83,128,199,183,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42],"list_rlp_bytes":[[248,112],[248,112]],"value_rlp_bytes":[[184,80],[184,80]],"value_list_rlp_bytes":[[248,78],[248,78]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,112]},"storage":null,"values":[[157,32,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42,0,0,0,0],[157,32,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[138,2,103,194,68,2,43,237,82,90,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,41,205,35,145,80,135,90,57,152,209,180,157,66,10,44,204,121,135,7,177,166,47,176,165,210,231,13,22,1,214,151,184,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[138,2,103,194,68,2,43,237,82,90,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,32,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42,0,0,0,0]],"keccak_data":[[248,112,157,32,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42,184,80,248,78,128,138,2,103,194,68,2,43,237,82,90,203,160,41,205,35,145,80,135,90,57,152,209,180,157,66,10,44,204,121,135,7,177,166,47,176,165,210,231,13,22,1,214,151,184,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,112,157,32,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42,184,80,248,78,128,138,2,103,194,68,2,43,237,82,90,203,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,17,208],"key":[209,145,236,75,8,192,127,93,53,202,116,112,223,227,238,49,199,204,150,64,145,212,182,41,188,172,4,67,242,116,187,180],"list_rlp_bytes":[[227],[227]],"value_rlp_bytes":[[1],[0]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[161,32,209,145,236,75,8,192,127,93,53,202,116,112,223,227,238,49,199,204,150,64,145,212,182,41,188,172,4,67,242,116,187,180],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[161,32,209,145,236,75,8,192,127,93,53,202,116,112,223,227,238,49,199,204,150,64,145,212,182,41,188,172,4,67,242,116,187,180],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[227,161,32,209,145,236,75,8,192,127,93,53,202,116,112,223,227,238,49,199,204,150,64,145,212,182,41,188,172,4,67,242,116,187,180,1],[227,161,32,209,145,236,75,8,192,127,93,53,202,116,112,223,227,238,49,199,204,150,64,145,212,182,41,188,172,4,67,242,116,187,180,1],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,17,208]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ExtensionAddedInFirstStorageLevelOneKeyByte.json b/zkevm-circuits/src/mpt_circuit/tests/ExtensionAddedInFirstStorageLevelOneKeyByte.json new file mode 100644 index 0000000000..5daebc35a8 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ExtensionAddedInFirstStorageLevelOneKeyByte.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,220,143,4,93,60,93,242,62,224,221,187,136,15,32,210,22,238,152,245,194,205,214,168,192,202,35,51,216,91,164,166,248,0],[160,37,34,234,18,21,213,199,151,55,56,71,97,141,132,147,29,245,89,166,167,28,253,151,151,184,228,239,85,42,79,172,110,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,208,11,7,160,57,118,105,130,12,148,160,224,101,79,108,119,75,73,27,251,23,112,202,194,98,232,67,35,41,20,109,227,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,198,110,59,110,207,162,15,138,151,80,193,238,182,30,35,42,168,192,180,204,238,61,99,82,32,113,75,76,38,31,245,168,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,198,110,59,110,207,162,15,138,151,80,193,238,182,30,35,42,168,192,180,204,238,61,99,82,32,113,75,76,38,31,245,168,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,208,11,7,160,57,118,105,130,12,148,160,224,101,79,108,119,75,73,27,251,23,112,202,194,98,232,67,35,41,20,109,227,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,156,207,34,126,96,200,143,86,98,67,48,239,210,146,94,107,198,11,34,45,151,240,146,143,132,124,18,87,19,78,100,125,0],[160,8,82,228,160,236,167,211,34,103,186,143,82,159,227,56,83,90,137,189,168,42,104,95,52,183,148,255,215,136,52,73,231,0],[160,84,120,210,249,75,139,182,38,44,242,80,181,2,165,43,146,17,155,131,187,29,254,176,179,119,232,197,70,165,227,43,64,0],[160,194,12,142,1,144,174,252,71,147,52,115,101,189,153,208,184,182,11,61,226,102,6,152,102,88,19,198,73,12,11,50,155,0],[160,59,143,74,53,247,240,239,138,121,223,75,218,127,28,117,171,91,193,129,250,204,248,51,157,35,23,2,179,196,54,170,46,0],[160,157,90,51,248,241,223,224,87,67,255,188,60,98,138,52,58,248,0,103,191,25,93,87,196,48,17,193,91,196,174,84,68,0],[160,37,36,38,176,196,202,58,86,76,239,236,180,113,34,151,66,223,175,221,244,2,135,167,81,134,210,144,189,210,100,169,46,0],[160,246,249,160,14,73,156,38,98,129,209,255,124,122,147,16,52,200,78,213,139,162,204,164,40,13,165,111,148,15,31,205,20,0],[160,196,63,137,26,203,165,150,154,136,200,90,27,244,146,124,13,112,147,170,137,82,86,194,212,83,213,250,77,122,235,81,108,0],[160,23,72,191,114,109,241,153,152,28,181,114,222,27,12,163,170,167,243,68,76,13,193,8,43,209,0,251,139,245,110,12,200,0],[160,162,242,12,159,239,231,230,109,155,112,235,20,28,190,163,94,48,238,186,27,192,248,95,119,246,213,205,3,106,83,34,57,0],[160,98,128,143,73,77,78,229,115,157,26,53,223,153,171,114,69,45,174,24,124,45,42,137,236,225,137,107,235,241,54,22,248,0],[160,28,67,53,54,154,2,91,141,228,22,200,27,178,90,210,209,195,121,126,22,72,172,98,207,112,253,149,202,240,32,170,32,0],[160,77,183,169,108,222,80,160,149,46,20,80,223,164,78,82,196,134,47,182,103,106,44,118,54,158,56,222,196,13,46,87,30,0],[160,105,251,188,224,72,188,242,142,5,202,96,164,238,163,221,166,92,66,41,9,240,19,219,203,186,100,64,23,163,241,100,34,0],[160,66,160,223,51,184,103,51,48,79,182,55,124,160,55,136,72,34,106,234,196,136,142,67,163,253,247,97,56,227,113,81,112,0],[160,70,28,143,53,189,11,148,71,98,61,108,214,101,187,1,240,58,157,104,142,179,155,185,249,28,6,177,21,81,199,24,148,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,8,82,228,160,236,167,211,34,103,186,143,82,159,227,56,83,90,137,189,168,42,104,95,52,183,148,255,215,136,52,73,231,160,84,120,210,249,75,139,182,38,44,242,80,181,2,165,43,146,17,155,131,187,29,254,176,179,119,232,197,70,165,227,43,64,160,194,12,142,1,144,174,252,71,147,52,115,101,189,153,208,184,182,11,61,226,102,6,152,102,88,19,198,73,12,11,50,155,160,59,143,74,53,247,240,239,138,121,223,75,218,127,28,117,171,91,193,129,250,204,248,51,157,35,23,2,179,196,54,170,46,160,157,90,51,248,241,223,224,87,67,255,188,60,98,138,52,58,248,0,103,191,25,93,87,196,48,17,193,91,196,174,84,68,160,37,36,38,176,196,202,58,86,76,239,236,180,113,34,151,66,223,175,221,244,2,135,167,81,134,210,144,189,210,100,169,46,160,246,249,160,14,73,156,38,98,129,209,255,124,122,147,16,52,200,78,213,139,162,204,164,40,13,165,111,148,15,31,205,20,160,196,63,137,26,203,165,150,154,136,200,90,27,244,146,124,13,112,147,170,137,82,86,194,212,83,213,250,77,122,235,81,108,160,23,72,191,114,109,241,153,152,28,181,114,222,27,12,163,170,167,243,68,76,13,193,8,43,209,0,251,139,245,110,12,200,160,162,242,12,159,239,231,230,109,155,112,235,20,28,190,163,94,48,238,186,27,192,248,95,119,246,213,205,3,106,83,34,57,160,98,128,143,73,77,78,229,115,157,26,53,223,153,171,114,69,45,174,24,124,45,42,137,236,225,137,107,235,241,54,22,248,160,28,67,53,54,154,2,91,141,228,22,200,27,178,90,210,209,195,121,126,22,72,172,98,207,112,253,149,202,240,32,170,32,160,77,183,169,108,222,80,160,149,46,20,80,223,164,78,82,196,134,47,182,103,106,44,118,54,158,56,222,196,13,46,87,30,160,105,251,188,224,72,188,242,142,5,202,96,164,238,163,221,166,92,66,41,9,240,19,219,203,186,100,64,23,163,241,100,34,160,66,160,223,51,184,103,51,48,79,182,55,124,160,55,136,72,34,106,234,196,136,142,67,163,253,247,97,56,227,113,81,112,160,70,28,143,53,189,11,148,71,98,61,108,214,101,187,1,240,58,157,104,142,179,155,185,249,28,6,177,21,81,199,24,148,128],[249,2,17,160,8,82,228,160,236,167,211,34,103,186,143,82,159,227,56,83,90,137,189,168,42,104,95,52,183,148,255,215,136,52,73,231,160,84,120,210,249,75,139,182,38,44,242,80,181,2,165,43,146,17,155,131,187,29,254,176,179,119,232,197,70,165,227,43,64,160,194,12,142,1,144,174,252,71,147,52,115,101,189,153,208,184,182,11,61,226,102,6,152,102,88,19,198,73,12,11,50,155,160,59,143,74,53,247,240,239,138,121,223,75,218,127,28,117,171,91,193,129,250,204,248,51,157,35,23,2,179,196,54,170,46,160,157,90,51,248,241,223,224,87,67,255,188,60,98,138,52,58,248,0,103,191,25,93,87,196,48,17,193,91,196,174,84,68,160,37,36,38,176,196,202,58,86,76,239,236,180,113,34,151,66,223,175,221,244,2,135,167,81,134,210,144,189,210,100,169,46,160,246,249,160,14,73,156,38,98,129,209,255,124,122,147,16,52,200,78,213,139,162,204,164,40,13,165,111,148,15,31,205,20,160,196,63,137,26,203,165,150,154,136,200,90,27,244,146,124,13,112,147,170,137,82,86,194,212,83,213,250,77,122,235,81,108,160,23,72,191,114,109,241,153,152,28,181,114,222,27,12,163,170,167,243,68,76,13,193,8,43,209,0,251,139,245,110,12,200,160,162,242,12,159,239,231,230,109,155,112,235,20,28,190,163,94,48,238,186,27,192,248,95,119,246,213,205,3,106,83,34,57,160,98,128,143,73,77,78,229,115,157,26,53,223,153,171,114,69,45,174,24,124,45,42,137,236,225,137,107,235,241,54,22,248,160,28,67,53,54,154,2,91,141,228,22,200,27,178,90,210,209,195,121,126,22,72,172,98,207,112,253,149,202,240,32,170,32,160,77,183,169,108,222,80,160,149,46,20,80,223,164,78,82,196,134,47,182,103,106,44,118,54,158,56,222,196,13,46,87,30,160,105,251,188,224,72,188,242,142,5,202,96,164,238,163,221,166,92,66,41,9,240,19,219,203,186,100,64,23,163,241,100,34,160,156,207,34,126,96,200,143,86,98,67,48,239,210,146,94,107,198,11,34,45,151,240,146,143,132,124,18,87,19,78,100,125,160,70,28,143,53,189,11,148,71,98,61,108,214,101,187,1,240,58,157,104,142,179,155,185,249,28,6,177,21,81,199,24,148,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,139,236,208,88,153,113,82,137,105,145,232,206,194,251,94,134,60,159,209,170,140,223,189,13,150,246,4,251,15,48,51,104,0],[160,28,181,216,79,148,37,18,33,67,109,190,5,141,78,14,125,126,101,243,129,183,164,252,246,188,222,123,209,72,162,91,222,0],[160,127,197,158,74,119,72,230,12,125,176,108,3,178,158,78,4,13,240,18,19,137,90,52,126,5,105,198,181,219,43,179,65,0],[160,46,9,75,129,71,206,112,222,185,139,165,36,36,211,46,89,3,55,130,67,49,169,124,254,145,239,59,68,181,39,14,11,0],[160,195,204,36,121,188,76,85,107,153,228,243,120,219,164,214,149,84,154,93,6,211,138,212,126,99,0,69,93,78,143,107,125,0],[160,24,229,27,106,208,179,138,207,189,75,247,237,254,184,165,211,163,77,102,247,171,142,38,241,105,73,81,97,179,89,41,94,0],[160,69,128,196,179,31,166,62,236,4,126,133,123,72,78,7,98,91,97,202,41,213,219,83,161,250,44,62,218,202,202,95,85,0],[160,122,138,244,235,222,164,181,224,94,192,101,250,2,159,226,141,139,49,161,182,189,7,58,131,181,174,22,234,166,219,45,89,0],[160,68,171,218,249,64,4,214,12,108,176,191,110,229,129,30,147,162,111,141,248,90,65,72,139,199,122,223,7,22,19,86,170,0],[160,44,69,190,86,52,17,185,107,193,188,16,167,86,61,125,177,50,240,102,96,66,255,44,165,212,175,229,245,163,179,105,42,0],[160,236,64,240,32,156,40,69,140,109,160,30,103,177,225,161,137,199,148,118,155,53,110,110,30,88,113,102,249,146,51,146,64,0],[160,13,42,32,122,82,79,121,74,202,120,184,186,33,169,210,46,107,49,203,217,253,81,204,72,172,54,254,232,169,31,66,180,0],[160,249,124,106,89,244,190,54,102,66,217,238,184,69,54,42,49,217,172,209,72,171,109,172,162,227,248,91,39,84,60,12,50,0],[160,71,37,113,174,70,115,139,170,17,161,226,89,54,206,220,216,124,175,149,45,37,207,232,200,177,22,55,13,211,27,128,159,0],[160,230,15,33,183,4,214,67,103,40,12,190,159,2,136,107,119,218,240,254,147,196,64,54,80,160,212,123,210,158,221,177,79,0],[160,81,251,139,38,98,234,236,80,109,218,180,81,152,102,115,99,187,67,51,108,50,176,183,19,208,120,5,0,187,173,25,231,0],[160,91,147,3,93,139,16,136,76,22,19,70,240,73,156,182,34,44,29,125,2,237,83,117,238,18,211,207,207,135,137,154,42,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,28,181,216,79,148,37,18,33,67,109,190,5,141,78,14,125,126,101,243,129,183,164,252,246,188,222,123,209,72,162,91,222,160,127,197,158,74,119,72,230,12,125,176,108,3,178,158,78,4,13,240,18,19,137,90,52,126,5,105,198,181,219,43,179,65,160,46,9,75,129,71,206,112,222,185,139,165,36,36,211,46,89,3,55,130,67,49,169,124,254,145,239,59,68,181,39,14,11,160,195,204,36,121,188,76,85,107,153,228,243,120,219,164,214,149,84,154,93,6,211,138,212,126,99,0,69,93,78,143,107,125,160,24,229,27,106,208,179,138,207,189,75,247,237,254,184,165,211,163,77,102,247,171,142,38,241,105,73,81,97,179,89,41,94,160,69,128,196,179,31,166,62,236,4,126,133,123,72,78,7,98,91,97,202,41,213,219,83,161,250,44,62,218,202,202,95,85,160,122,138,244,235,222,164,181,224,94,192,101,250,2,159,226,141,139,49,161,182,189,7,58,131,181,174,22,234,166,219,45,89,160,68,171,218,249,64,4,214,12,108,176,191,110,229,129,30,147,162,111,141,248,90,65,72,139,199,122,223,7,22,19,86,170,160,44,69,190,86,52,17,185,107,193,188,16,167,86,61,125,177,50,240,102,96,66,255,44,165,212,175,229,245,163,179,105,42,160,236,64,240,32,156,40,69,140,109,160,30,103,177,225,161,137,199,148,118,155,53,110,110,30,88,113,102,249,146,51,146,64,160,13,42,32,122,82,79,121,74,202,120,184,186,33,169,210,46,107,49,203,217,253,81,204,72,172,54,254,232,169,31,66,180,160,249,124,106,89,244,190,54,102,66,217,238,184,69,54,42,49,217,172,209,72,171,109,172,162,227,248,91,39,84,60,12,50,160,71,37,113,174,70,115,139,170,17,161,226,89,54,206,220,216,124,175,149,45,37,207,232,200,177,22,55,13,211,27,128,159,160,230,15,33,183,4,214,67,103,40,12,190,159,2,136,107,119,218,240,254,147,196,64,54,80,160,212,123,210,158,221,177,79,160,81,251,139,38,98,234,236,80,109,218,180,81,152,102,115,99,187,67,51,108,50,176,183,19,208,120,5,0,187,173,25,231,160,91,147,3,93,139,16,136,76,22,19,70,240,73,156,182,34,44,29,125,2,237,83,117,238,18,211,207,207,135,137,154,42,128],[249,2,17,160,28,181,216,79,148,37,18,33,67,109,190,5,141,78,14,125,126,101,243,129,183,164,252,246,188,222,123,209,72,162,91,222,160,127,197,158,74,119,72,230,12,125,176,108,3,178,158,78,4,13,240,18,19,137,90,52,126,5,105,198,181,219,43,179,65,160,46,9,75,129,71,206,112,222,185,139,165,36,36,211,46,89,3,55,130,67,49,169,124,254,145,239,59,68,181,39,14,11,160,195,204,36,121,188,76,85,107,153,228,243,120,219,164,214,149,84,154,93,6,211,138,212,126,99,0,69,93,78,143,107,125,160,24,229,27,106,208,179,138,207,189,75,247,237,254,184,165,211,163,77,102,247,171,142,38,241,105,73,81,97,179,89,41,94,160,69,128,196,179,31,166,62,236,4,126,133,123,72,78,7,98,91,97,202,41,213,219,83,161,250,44,62,218,202,202,95,85,160,122,138,244,235,222,164,181,224,94,192,101,250,2,159,226,141,139,49,161,182,189,7,58,131,181,174,22,234,166,219,45,89,160,139,236,208,88,153,113,82,137,105,145,232,206,194,251,94,134,60,159,209,170,140,223,189,13,150,246,4,251,15,48,51,104,160,44,69,190,86,52,17,185,107,193,188,16,167,86,61,125,177,50,240,102,96,66,255,44,165,212,175,229,245,163,179,105,42,160,236,64,240,32,156,40,69,140,109,160,30,103,177,225,161,137,199,148,118,155,53,110,110,30,88,113,102,249,146,51,146,64,160,13,42,32,122,82,79,121,74,202,120,184,186,33,169,210,46,107,49,203,217,253,81,204,72,172,54,254,232,169,31,66,180,160,249,124,106,89,244,190,54,102,66,217,238,184,69,54,42,49,217,172,209,72,171,109,172,162,227,248,91,39,84,60,12,50,160,71,37,113,174,70,115,139,170,17,161,226,89,54,206,220,216,124,175,149,45,37,207,232,200,177,22,55,13,211,27,128,159,160,230,15,33,183,4,214,67,103,40,12,190,159,2,136,107,119,218,240,254,147,196,64,54,80,160,212,123,210,158,221,177,79,160,81,251,139,38,98,234,236,80,109,218,180,81,152,102,115,99,187,67,51,108,50,176,183,19,208,120,5,0,187,173,25,231,160,91,147,3,93,139,16,136,76,22,19,70,240,73,156,182,34,44,29,125,2,237,83,117,238,18,211,207,207,135,137,154,42,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,159,130,229,165,212,147,78,44,146,124,254,74,180,62,107,231,41,115,95,72,27,6,25,183,104,151,116,137,84,204,53,189,0],[160,69,240,19,94,201,88,43,0,240,10,245,154,168,230,212,225,91,127,174,54,14,224,25,37,243,187,212,166,69,13,214,210,0],[160,177,114,250,165,145,160,168,147,73,120,43,40,134,214,183,54,244,101,72,160,70,135,200,49,243,43,70,171,72,51,232,228,0],[160,90,126,11,244,198,223,145,243,175,101,108,33,157,37,38,154,185,230,186,210,117,24,108,72,19,80,181,127,12,80,114,155,0],[160,78,180,178,103,237,5,128,118,135,163,125,238,136,63,98,140,254,188,122,80,58,140,165,170,224,23,27,182,205,122,170,222,0],[160,147,155,221,36,17,65,128,167,31,175,127,179,216,23,237,245,34,236,18,107,89,51,94,106,56,12,20,74,110,149,105,207,0],[160,15,28,106,136,34,61,58,29,173,134,221,145,72,139,220,37,191,242,241,153,92,130,98,238,20,55,147,180,1,187,72,252,0],[160,101,28,170,8,68,246,158,179,253,114,81,91,184,162,73,227,249,57,19,194,215,111,218,79,13,14,253,173,39,152,43,12,0],[160,101,42,250,164,65,159,130,225,36,154,115,39,124,11,13,239,251,223,52,197,47,222,172,222,166,233,67,63,237,150,142,147,0],[160,154,52,165,162,92,151,34,100,231,147,116,21,226,254,143,170,231,209,154,231,199,183,20,105,49,183,6,201,128,11,16,232,0],[160,207,152,180,142,136,28,103,23,207,112,171,22,117,189,204,168,205,65,250,82,77,7,189,224,17,6,107,65,153,196,51,115,0],[160,236,88,60,30,32,14,250,185,46,86,72,75,128,6,144,52,126,176,244,75,144,130,37,202,71,232,43,210,154,98,86,223,0],[160,96,182,165,136,194,214,172,207,177,61,121,19,192,171,159,135,101,154,232,237,19,245,224,68,199,165,13,58,252,78,199,233,0],[160,12,4,159,3,157,220,175,164,62,180,206,33,25,128,18,219,176,112,152,50,85,173,6,36,29,160,252,251,57,179,108,55,0],[160,178,76,4,254,107,101,118,101,72,242,165,126,184,251,148,195,179,2,253,197,81,175,197,164,92,27,185,14,251,174,58,27,0],[160,22,172,44,183,17,252,57,28,189,212,135,200,167,233,149,136,217,169,139,57,170,76,181,203,160,31,77,109,109,107,10,90,0],[160,129,79,119,239,14,8,139,99,226,197,245,208,38,121,249,69,188,180,205,60,221,179,140,56,207,45,139,57,243,129,240,114,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,69,240,19,94,201,88,43,0,240,10,245,154,168,230,212,225,91,127,174,54,14,224,25,37,243,187,212,166,69,13,214,210,160,177,114,250,165,145,160,168,147,73,120,43,40,134,214,183,54,244,101,72,160,70,135,200,49,243,43,70,171,72,51,232,228,160,90,126,11,244,198,223,145,243,175,101,108,33,157,37,38,154,185,230,186,210,117,24,108,72,19,80,181,127,12,80,114,155,160,78,180,178,103,237,5,128,118,135,163,125,238,136,63,98,140,254,188,122,80,58,140,165,170,224,23,27,182,205,122,170,222,160,147,155,221,36,17,65,128,167,31,175,127,179,216,23,237,245,34,236,18,107,89,51,94,106,56,12,20,74,110,149,105,207,160,15,28,106,136,34,61,58,29,173,134,221,145,72,139,220,37,191,242,241,153,92,130,98,238,20,55,147,180,1,187,72,252,160,101,28,170,8,68,246,158,179,253,114,81,91,184,162,73,227,249,57,19,194,215,111,218,79,13,14,253,173,39,152,43,12,160,101,42,250,164,65,159,130,225,36,154,115,39,124,11,13,239,251,223,52,197,47,222,172,222,166,233,67,63,237,150,142,147,160,154,52,165,162,92,151,34,100,231,147,116,21,226,254,143,170,231,209,154,231,199,183,20,105,49,183,6,201,128,11,16,232,160,207,152,180,142,136,28,103,23,207,112,171,22,117,189,204,168,205,65,250,82,77,7,189,224,17,6,107,65,153,196,51,115,160,236,88,60,30,32,14,250,185,46,86,72,75,128,6,144,52,126,176,244,75,144,130,37,202,71,232,43,210,154,98,86,223,160,96,182,165,136,194,214,172,207,177,61,121,19,192,171,159,135,101,154,232,237,19,245,224,68,199,165,13,58,252,78,199,233,160,12,4,159,3,157,220,175,164,62,180,206,33,25,128,18,219,176,112,152,50,85,173,6,36,29,160,252,251,57,179,108,55,160,178,76,4,254,107,101,118,101,72,242,165,126,184,251,148,195,179,2,253,197,81,175,197,164,92,27,185,14,251,174,58,27,160,22,172,44,183,17,252,57,28,189,212,135,200,167,233,149,136,217,169,139,57,170,76,181,203,160,31,77,109,109,107,10,90,160,129,79,119,239,14,8,139,99,226,197,245,208,38,121,249,69,188,180,205,60,221,179,140,56,207,45,139,57,243,129,240,114,128],[249,2,17,160,69,240,19,94,201,88,43,0,240,10,245,154,168,230,212,225,91,127,174,54,14,224,25,37,243,187,212,166,69,13,214,210,160,177,114,250,165,145,160,168,147,73,120,43,40,134,214,183,54,244,101,72,160,70,135,200,49,243,43,70,171,72,51,232,228,160,90,126,11,244,198,223,145,243,175,101,108,33,157,37,38,154,185,230,186,210,117,24,108,72,19,80,181,127,12,80,114,155,160,78,180,178,103,237,5,128,118,135,163,125,238,136,63,98,140,254,188,122,80,58,140,165,170,224,23,27,182,205,122,170,222,160,147,155,221,36,17,65,128,167,31,175,127,179,216,23,237,245,34,236,18,107,89,51,94,106,56,12,20,74,110,149,105,207,160,15,28,106,136,34,61,58,29,173,134,221,145,72,139,220,37,191,242,241,153,92,130,98,238,20,55,147,180,1,187,72,252,160,101,28,170,8,68,246,158,179,253,114,81,91,184,162,73,227,249,57,19,194,215,111,218,79,13,14,253,173,39,152,43,12,160,101,42,250,164,65,159,130,225,36,154,115,39,124,11,13,239,251,223,52,197,47,222,172,222,166,233,67,63,237,150,142,147,160,159,130,229,165,212,147,78,44,146,124,254,74,180,62,107,231,41,115,95,72,27,6,25,183,104,151,116,137,84,204,53,189,160,207,152,180,142,136,28,103,23,207,112,171,22,117,189,204,168,205,65,250,82,77,7,189,224,17,6,107,65,153,196,51,115,160,236,88,60,30,32,14,250,185,46,86,72,75,128,6,144,52,126,176,244,75,144,130,37,202,71,232,43,210,154,98,86,223,160,96,182,165,136,194,214,172,207,177,61,121,19,192,171,159,135,101,154,232,237,19,245,224,68,199,165,13,58,252,78,199,233,160,12,4,159,3,157,220,175,164,62,180,206,33,25,128,18,219,176,112,152,50,85,173,6,36,29,160,252,251,57,179,108,55,160,178,76,4,254,107,101,118,101,72,242,165,126,184,251,148,195,179,2,253,197,81,175,197,164,92,27,185,14,251,174,58,27,160,22,172,44,183,17,252,57,28,189,212,135,200,167,233,149,136,217,169,139,57,170,76,181,203,160,31,77,109,109,107,10,90,160,129,79,119,239,14,8,139,99,226,197,245,208,38,121,249,69,188,180,205,60,221,179,140,56,207,45,139,57,243,129,240,114,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,225,182,145,67,235,152,171,67,1,124,207,170,15,83,123,246,240,168,176,148,142,233,231,8,186,38,93,151,133,95,66,9,0],[160,135,143,213,43,63,194,224,22,73,85,234,57,32,136,196,138,144,25,14,53,225,60,238,148,1,160,19,151,227,159,49,183,0],[160,2,29,173,25,96,174,9,182,182,173,122,125,236,76,251,176,5,245,88,46,126,30,246,22,125,175,153,67,210,235,64,8,0],[160,28,189,158,3,1,129,244,212,210,46,30,196,172,161,20,195,243,158,211,25,117,74,30,254,41,187,49,138,192,150,52,17,0],[160,239,95,253,44,136,34,194,144,153,28,242,248,222,215,110,46,230,231,27,170,229,101,3,204,99,204,208,118,114,93,83,110,0],[160,7,159,235,95,194,73,95,243,22,246,19,38,251,43,141,128,8,190,255,67,153,158,211,166,139,252,168,40,63,188,205,95,0],[160,238,34,57,54,115,74,242,131,214,151,182,44,143,250,245,22,211,176,245,204,227,75,151,108,89,28,167,182,144,17,21,92,0],[160,110,82,232,2,216,240,70,229,147,241,71,82,114,9,73,189,84,16,27,151,65,30,46,28,117,225,27,149,182,208,51,159,0],[160,155,189,91,3,70,25,27,41,10,49,193,196,22,63,42,36,133,91,199,238,35,240,242,161,252,0,183,96,230,193,68,235,0],[160,254,225,94,214,235,151,75,30,231,42,49,211,232,190,3,200,245,38,113,10,27,249,194,216,43,216,49,187,170,57,95,202,0],[160,46,121,163,72,94,105,150,192,89,117,100,231,44,8,94,84,224,173,10,128,89,76,114,29,254,213,243,87,146,33,249,173,0],[160,182,172,93,250,183,64,112,173,6,173,19,151,175,126,144,31,75,142,43,92,76,129,21,185,125,95,55,38,17,68,4,54,0],[160,101,105,235,77,175,160,222,72,81,15,175,2,24,88,227,4,106,202,82,46,144,46,234,120,227,124,28,91,186,48,175,127,0],[160,107,199,179,225,2,21,145,210,96,156,115,9,90,72,224,6,92,117,170,140,51,4,185,247,179,137,241,5,125,9,215,216,0],[160,174,1,41,24,170,64,96,231,200,121,39,32,55,169,45,50,38,91,148,155,128,81,65,213,115,175,165,99,88,151,50,116,0],[160,175,48,34,68,54,34,13,191,110,96,44,135,10,240,213,61,134,176,37,129,8,182,235,41,95,208,183,87,202,245,167,238,0],[160,22,113,109,16,155,122,184,254,94,185,37,39,88,26,221,148,248,80,144,115,38,194,220,122,155,21,126,51,253,15,25,20,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,135,143,213,43,63,194,224,22,73,85,234,57,32,136,196,138,144,25,14,53,225,60,238,148,1,160,19,151,227,159,49,183,160,2,29,173,25,96,174,9,182,182,173,122,125,236,76,251,176,5,245,88,46,126,30,246,22,125,175,153,67,210,235,64,8,160,28,189,158,3,1,129,244,212,210,46,30,196,172,161,20,195,243,158,211,25,117,74,30,254,41,187,49,138,192,150,52,17,160,239,95,253,44,136,34,194,144,153,28,242,248,222,215,110,46,230,231,27,170,229,101,3,204,99,204,208,118,114,93,83,110,160,7,159,235,95,194,73,95,243,22,246,19,38,251,43,141,128,8,190,255,67,153,158,211,166,139,252,168,40,63,188,205,95,160,238,34,57,54,115,74,242,131,214,151,182,44,143,250,245,22,211,176,245,204,227,75,151,108,89,28,167,182,144,17,21,92,160,110,82,232,2,216,240,70,229,147,241,71,82,114,9,73,189,84,16,27,151,65,30,46,28,117,225,27,149,182,208,51,159,160,155,189,91,3,70,25,27,41,10,49,193,196,22,63,42,36,133,91,199,238,35,240,242,161,252,0,183,96,230,193,68,235,160,254,225,94,214,235,151,75,30,231,42,49,211,232,190,3,200,245,38,113,10,27,249,194,216,43,216,49,187,170,57,95,202,160,46,121,163,72,94,105,150,192,89,117,100,231,44,8,94,84,224,173,10,128,89,76,114,29,254,213,243,87,146,33,249,173,160,182,172,93,250,183,64,112,173,6,173,19,151,175,126,144,31,75,142,43,92,76,129,21,185,125,95,55,38,17,68,4,54,160,101,105,235,77,175,160,222,72,81,15,175,2,24,88,227,4,106,202,82,46,144,46,234,120,227,124,28,91,186,48,175,127,160,107,199,179,225,2,21,145,210,96,156,115,9,90,72,224,6,92,117,170,140,51,4,185,247,179,137,241,5,125,9,215,216,160,174,1,41,24,170,64,96,231,200,121,39,32,55,169,45,50,38,91,148,155,128,81,65,213,115,175,165,99,88,151,50,116,160,175,48,34,68,54,34,13,191,110,96,44,135,10,240,213,61,134,176,37,129,8,182,235,41,95,208,183,87,202,245,167,238,160,22,113,109,16,155,122,184,254,94,185,37,39,88,26,221,148,248,80,144,115,38,194,220,122,155,21,126,51,253,15,25,20,128],[249,2,17,160,135,143,213,43,63,194,224,22,73,85,234,57,32,136,196,138,144,25,14,53,225,60,238,148,1,160,19,151,227,159,49,183,160,2,29,173,25,96,174,9,182,182,173,122,125,236,76,251,176,5,245,88,46,126,30,246,22,125,175,153,67,210,235,64,8,160,28,189,158,3,1,129,244,212,210,46,30,196,172,161,20,195,243,158,211,25,117,74,30,254,41,187,49,138,192,150,52,17,160,239,95,253,44,136,34,194,144,153,28,242,248,222,215,110,46,230,231,27,170,229,101,3,204,99,204,208,118,114,93,83,110,160,7,159,235,95,194,73,95,243,22,246,19,38,251,43,141,128,8,190,255,67,153,158,211,166,139,252,168,40,63,188,205,95,160,238,34,57,54,115,74,242,131,214,151,182,44,143,250,245,22,211,176,245,204,227,75,151,108,89,28,167,182,144,17,21,92,160,110,82,232,2,216,240,70,229,147,241,71,82,114,9,73,189,84,16,27,151,65,30,46,28,117,225,27,149,182,208,51,159,160,155,189,91,3,70,25,27,41,10,49,193,196,22,63,42,36,133,91,199,238,35,240,242,161,252,0,183,96,230,193,68,235,160,254,225,94,214,235,151,75,30,231,42,49,211,232,190,3,200,245,38,113,10,27,249,194,216,43,216,49,187,170,57,95,202,160,46,121,163,72,94,105,150,192,89,117,100,231,44,8,94,84,224,173,10,128,89,76,114,29,254,213,243,87,146,33,249,173,160,182,172,93,250,183,64,112,173,6,173,19,151,175,126,144,31,75,142,43,92,76,129,21,185,125,95,55,38,17,68,4,54,160,101,105,235,77,175,160,222,72,81,15,175,2,24,88,227,4,106,202,82,46,144,46,234,120,227,124,28,91,186,48,175,127,160,107,199,179,225,2,21,145,210,96,156,115,9,90,72,224,6,92,117,170,140,51,4,185,247,179,137,241,5,125,9,215,216,160,174,1,41,24,170,64,96,231,200,121,39,32,55,169,45,50,38,91,148,155,128,81,65,213,115,175,165,99,88,151,50,116,160,175,48,34,68,54,34,13,191,110,96,44,135,10,240,213,61,134,176,37,129,8,182,235,41,95,208,183,87,202,245,167,238,160,225,182,145,67,235,152,171,67,1,124,207,170,15,83,123,246,240,168,176,148,142,233,231,8,186,38,93,151,133,95,66,9,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":6,"drifted_index":6,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,238,209,87,174,135,247,247,71,46,224,121,112,26,122,57,36,89,211,219,49,155,106,201,99,199,252,111,215,11,255,165,213,0],[160,240,112,44,72,20,92,16,226,238,153,16,125,149,130,241,10,60,36,30,150,251,167,132,127,195,28,146,162,13,131,27,104,0],[160,138,1,235,206,4,16,156,100,75,197,42,86,62,127,48,60,191,73,198,101,215,247,43,217,243,100,129,241,204,220,255,148,0],[160,236,7,15,200,76,214,175,181,111,16,213,238,208,13,129,154,34,238,224,26,140,170,215,20,77,216,157,80,95,241,66,5,0],[160,111,209,247,4,184,241,13,91,12,184,243,229,45,164,245,146,134,164,11,3,131,241,44,248,165,88,52,99,193,196,218,253,0],[160,229,51,62,185,89,4,163,95,20,136,220,188,187,42,151,97,47,27,99,112,96,146,185,113,108,59,23,95,91,242,168,231,0],[160,225,30,140,67,250,53,232,133,42,214,15,162,35,11,145,22,0,220,112,181,254,56,69,155,136,93,110,187,205,140,249,25,0],[160,11,120,10,14,41,255,61,142,177,254,63,196,64,224,0,14,143,46,191,103,0,192,46,198,195,173,64,251,173,35,142,148,0],[160,70,32,6,139,201,80,250,209,245,47,57,130,174,10,207,204,234,130,173,235,16,22,234,52,196,221,80,211,111,246,11,181,0],[160,53,254,22,227,103,204,187,138,101,229,227,171,9,232,13,105,208,170,117,193,81,106,4,200,93,89,129,132,160,158,41,161,0],[160,186,224,186,141,73,213,194,212,99,82,80,83,63,102,245,177,171,65,255,49,96,123,226,247,84,252,59,154,66,254,96,67,0],[160,228,118,98,158,169,240,61,44,106,136,219,101,77,16,63,14,204,240,38,190,219,80,247,204,97,190,78,228,105,224,67,95,0],[160,191,245,233,165,127,57,224,124,150,65,148,214,187,48,38,122,66,30,227,50,65,101,40,51,58,89,7,228,45,27,112,166,0],[160,47,164,236,183,87,115,134,179,223,254,239,90,133,214,85,54,22,167,1,92,153,195,176,38,176,219,172,7,191,23,55,122,0],[160,215,6,239,231,6,41,80,135,222,236,3,134,0,18,22,209,211,166,221,135,184,73,179,164,230,223,10,101,145,99,150,96,0],[160,63,103,2,71,244,232,117,254,117,119,209,72,224,148,116,41,203,106,207,131,104,246,110,140,246,162,32,29,20,147,74,227,0],[160,235,217,213,36,97,57,33,70,140,131,115,203,161,172,152,58,3,51,31,34,188,42,244,174,85,218,174,183,39,13,100,120,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,240,112,44,72,20,92,16,226,238,153,16,125,149,130,241,10,60,36,30,150,251,167,132,127,195,28,146,162,13,131,27,104,160,138,1,235,206,4,16,156,100,75,197,42,86,62,127,48,60,191,73,198,101,215,247,43,217,243,100,129,241,204,220,255,148,160,236,7,15,200,76,214,175,181,111,16,213,238,208,13,129,154,34,238,224,26,140,170,215,20,77,216,157,80,95,241,66,5,160,111,209,247,4,184,241,13,91,12,184,243,229,45,164,245,146,134,164,11,3,131,241,44,248,165,88,52,99,193,196,218,253,160,229,51,62,185,89,4,163,95,20,136,220,188,187,42,151,97,47,27,99,112,96,146,185,113,108,59,23,95,91,242,168,231,160,225,30,140,67,250,53,232,133,42,214,15,162,35,11,145,22,0,220,112,181,254,56,69,155,136,93,110,187,205,140,249,25,160,11,120,10,14,41,255,61,142,177,254,63,196,64,224,0,14,143,46,191,103,0,192,46,198,195,173,64,251,173,35,142,148,160,70,32,6,139,201,80,250,209,245,47,57,130,174,10,207,204,234,130,173,235,16,22,234,52,196,221,80,211,111,246,11,181,160,53,254,22,227,103,204,187,138,101,229,227,171,9,232,13,105,208,170,117,193,81,106,4,200,93,89,129,132,160,158,41,161,160,186,224,186,141,73,213,194,212,99,82,80,83,63,102,245,177,171,65,255,49,96,123,226,247,84,252,59,154,66,254,96,67,160,228,118,98,158,169,240,61,44,106,136,219,101,77,16,63,14,204,240,38,190,219,80,247,204,97,190,78,228,105,224,67,95,160,191,245,233,165,127,57,224,124,150,65,148,214,187,48,38,122,66,30,227,50,65,101,40,51,58,89,7,228,45,27,112,166,160,47,164,236,183,87,115,134,179,223,254,239,90,133,214,85,54,22,167,1,92,153,195,176,38,176,219,172,7,191,23,55,122,160,215,6,239,231,6,41,80,135,222,236,3,134,0,18,22,209,211,166,221,135,184,73,179,164,230,223,10,101,145,99,150,96,160,63,103,2,71,244,232,117,254,117,119,209,72,224,148,116,41,203,106,207,131,104,246,110,140,246,162,32,29,20,147,74,227,160,235,217,213,36,97,57,33,70,140,131,115,203,161,172,152,58,3,51,31,34,188,42,244,174,85,218,174,183,39,13,100,120,128],[249,2,17,160,240,112,44,72,20,92,16,226,238,153,16,125,149,130,241,10,60,36,30,150,251,167,132,127,195,28,146,162,13,131,27,104,160,138,1,235,206,4,16,156,100,75,197,42,86,62,127,48,60,191,73,198,101,215,247,43,217,243,100,129,241,204,220,255,148,160,236,7,15,200,76,214,175,181,111,16,213,238,208,13,129,154,34,238,224,26,140,170,215,20,77,216,157,80,95,241,66,5,160,111,209,247,4,184,241,13,91,12,184,243,229,45,164,245,146,134,164,11,3,131,241,44,248,165,88,52,99,193,196,218,253,160,229,51,62,185,89,4,163,95,20,136,220,188,187,42,151,97,47,27,99,112,96,146,185,113,108,59,23,95,91,242,168,231,160,225,30,140,67,250,53,232,133,42,214,15,162,35,11,145,22,0,220,112,181,254,56,69,155,136,93,110,187,205,140,249,25,160,238,209,87,174,135,247,247,71,46,224,121,112,26,122,57,36,89,211,219,49,155,106,201,99,199,252,111,215,11,255,165,213,160,70,32,6,139,201,80,250,209,245,47,57,130,174,10,207,204,234,130,173,235,16,22,234,52,196,221,80,211,111,246,11,181,160,53,254,22,227,103,204,187,138,101,229,227,171,9,232,13,105,208,170,117,193,81,106,4,200,93,89,129,132,160,158,41,161,160,186,224,186,141,73,213,194,212,99,82,80,83,63,102,245,177,171,65,255,49,96,123,226,247,84,252,59,154,66,254,96,67,160,228,118,98,158,169,240,61,44,106,136,219,101,77,16,63,14,204,240,38,190,219,80,247,204,97,190,78,228,105,224,67,95,160,191,245,233,165,127,57,224,124,150,65,148,214,187,48,38,122,66,30,227,50,65,101,40,51,58,89,7,228,45,27,112,166,160,47,164,236,183,87,115,134,179,223,254,239,90,133,214,85,54,22,167,1,92,153,195,176,38,176,219,172,7,191,23,55,122,160,215,6,239,231,6,41,80,135,222,236,3,134,0,18,22,209,211,166,221,135,184,73,179,164,230,223,10,101,145,99,150,96,160,63,103,2,71,244,232,117,254,117,119,209,72,224,148,116,41,203,106,207,131,104,246,110,140,246,162,32,29,20,147,74,227,160,235,217,213,36,97,57,33,70,140,131,115,203,161,172,152,58,3,51,31,34,188,42,244,174,85,218,174,183,39,13,100,120,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[248,145],[248,145]]}},"account":null,"storage":null,"values":[[160,165,116,158,139,247,254,49,170,68,15,91,162,161,62,160,6,249,129,106,178,2,115,9,14,142,62,53,170,127,136,53,246,0],[160,73,208,126,64,185,124,226,254,200,156,38,73,116,28,98,39,159,197,2,205,192,137,219,133,250,225,251,164,26,205,18,81,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,4,223,126,85,68,106,50,147,247,249,222,159,87,179,121,227,15,254,85,49,250,43,16,96,127,220,135,236,178,131,92,58,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,179,70,158,11,10,104,224,123,16,42,214,158,131,156,64,4,235,80,104,2,138,182,25,228,205,151,223,171,105,234,236,173,0],[160,1,162,74,47,57,45,87,11,81,221,83,234,28,100,214,43,52,204,21,204,51,217,33,45,57,156,224,74,233,176,82,221,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,145,160,73,208,126,64,185,124,226,254,200,156,38,73,116,28,98,39,159,197,2,205,192,137,219,133,250,225,251,164,26,205,18,81,128,128,160,4,223,126,85,68,106,50,147,247,249,222,159,87,179,121,227,15,254,85,49,250,43,16,96,127,220,135,236,178,131,92,58,128,128,128,128,128,128,128,160,179,70,158,11,10,104,224,123,16,42,214,158,131,156,64,4,235,80,104,2,138,182,25,228,205,151,223,171,105,234,236,173,160,1,162,74,47,57,45,87,11,81,221,83,234,28,100,214,43,52,204,21,204,51,217,33,45,57,156,224,74,233,176,82,221,128,128,128,128],[248,145,160,73,208,126,64,185,124,226,254,200,156,38,73,116,28,98,39,159,197,2,205,192,137,219,133,250,225,251,164,26,205,18,81,128,128,160,4,223,126,85,68,106,50,147,247,249,222,159,87,179,121,227,15,254,85,49,250,43,16,96,127,220,135,236,178,131,92,58,128,128,128,128,128,128,128,160,165,116,158,139,247,254,49,170,68,15,91,162,161,62,160,6,249,129,106,178,2,115,9,14,142,62,53,170,127,136,53,246,160,1,162,74,47,57,45,87,11,81,221,83,234,28,100,214,43,52,204,21,204,51,217,33,45,57,156,224,74,233,176,82,221,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,74,22,132,110,223,6,51,194,83,209,210,85,189,59,23,107,148,190,32,50,163,100,142,104,242,185,109,43,71,122,110,67,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,222,170,68,108,117,176,212,174,211,39,185,133,117,19,156,115,206,166,217,135,198,124,199,163,157,194,82,167,202,167,62,219,0],[160,41,122,139,195,252,11,85,53,122,170,39,172,8,39,29,83,69,64,178,138,199,190,231,92,223,125,154,186,235,120,104,102,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,160,222,170,68,108,117,176,212,174,211,39,185,133,117,19,156,115,206,166,217,135,198,124,199,163,157,194,82,167,202,167,62,219,160,41,122,139,195,252,11,85,53,122,170,39,172,8,39,29,83,69,64,178,138,199,190,231,92,223,125,154,186,235,120,104,102,128,128,128,128,128,128,128,128],[248,81,128,128,128,128,128,128,128,160,222,170,68,108,117,176,212,174,211,39,185,133,117,19,156,115,206,166,217,135,198,124,199,163,157,194,82,167,202,167,62,219,160,74,22,132,110,223,6,51,194,83,209,210,85,189,59,23,107,148,190,32,50,163,100,142,104,242,185,109,43,71,122,110,67,128,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,141,100,78,113,237,145,113,89,70,14,78,206,48,14,80,218,70,221,199,79,174,60,220,107,96,144,43,18,51,135,218,126,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,160,9,113,129,125,176,108,165,204,52,73,31,120,48,145,70,180,84,104,164,114,187,197,135,250,222,46,181,93,217,99,207,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,119,112,103,117,121,255,157,192,83,91,44,31,253,43,105,59,219,129,193,146,21,133,101,43,236,205,229,86,87,91,66,252,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,160,160,9,113,129,125,176,108,165,204,52,73,31,120,48,145,70,180,84,104,164,114,187,197,135,250,222,46,181,93,217,99,207,128,128,128,160,119,112,103,117,121,255,157,192,83,91,44,31,253,43,105,59,219,129,193,146,21,133,101,43,236,205,229,86,87,91,66,252,128,128,128,128],[248,81,128,128,128,128,128,128,128,128,160,160,9,113,129,125,176,108,165,204,52,73,31,120,48,145,70,180,84,104,164,114,187,197,135,250,222,46,181,93,217,99,207,128,128,128,160,141,100,78,113,237,145,113,89,70,14,78,206,48,14,80,218,70,221,199,79,174,60,220,107,96,144,43,18,51,135,218,126,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[80,239,191,18,88,1,56,188,98,60,149,117,114,134,223,78,36,235,129,201],"key":[222,120,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184],"list_rlp_bytes":[[248,101],[248,101]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,101]},"storage":null,"values":[[156,54,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,0,0,0,0,0],[156,54,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,53,203,234,79,145,82,155,67,90,65,188,199,39,235,164,30,181,122,126,243,25,253,115,22,82,102,179,140,10,155,162,255,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,188,110,180,112,46,228,183,149,153,213,233,172,60,165,192,142,95,173,66,254,53,126,194,240,94,145,108,77,127,201,225,185,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[156,54,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,0,0,0,0,0]],"keccak_data":[[248,101,156,54,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,184,70,248,68,128,128,160,53,203,234,79,145,82,155,67,90,65,188,199,39,235,164,30,181,122,126,243,25,253,115,22,82,102,179,140,10,155,162,255,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,101,156,54,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,184,70,248,68,128,128,160,188,110,180,112,46,228,183,149,153,213,233,172,60,165,192,142,95,173,66,254,53,126,194,240,94,145,108,77,127,201,225,185,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[80,239,191,18,88,1,56,188,98,60,149,117,114,134,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[true,false],"extension":{"list_rlp_bytes":[226]},"branch":{"modified_index":1,"drifted_index":11,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,80,90,222,110,109,11,60,70,62,54,96,68,136,32,251,73,11,145,37,204,201,177,59,4,177,45,197,186,81,171,201,54,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,80,90,222,110,109,11,60,70,62,54,96,68,136,32,251,73,11,145,37,204,201,177,59,4,177,45,197,186,81,171,201,54,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,117,254,248,169,140,212,202,48,190,248,66,108,226,49,13,176,213,221,44,93,158,12,29,42,13,71,21,208,116,159,193,173,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,217,126,56,112,222,29,194,80,17,187,144,67,169,202,198,186,147,107,226,126,75,125,32,62,50,189,225,43,23,89,132,168,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,217,126,56,112,222,29,194,80,17,187,144,67,169,202,198,186,147,107,226,126,75,125,32,62,50,189,225,43,23,89,132,168,0]],"keccak_data":[[248,81,128,160,80,90,222,110,109,11,60,70,62,54,96,68,136,32,251,73,11,145,37,204,201,177,59,4,177,45,197,186,81,171,201,54,128,128,128,128,128,128,128,128,128,160,117,254,248,169,140,212,202,48,190,248,66,108,226,49,13,176,213,221,44,93,158,12,29,42,13,71,21,208,116,159,193,173,128,128,128,128,128],[248,81,128,160,80,90,222,110,109,11,60,70,62,54,96,68,136,32,251,73,11,145,37,204,201,177,59,4,177,45,197,186,81,171,201,54,128,128,128,128,128,128,128,128,128,160,117,254,248,169,140,212,202,48,190,248,66,108,226,49,13,176,213,221,44,93,158,12,29,42,13,71,21,208,116,159,193,173,128,128,128,128,128],[226,27,160,217,126,56,112,222,29,194,80,17,187,144,67,169,202,198,186,147,107,226,126,75,125,32,62,50,189,225,43,23,89,132,168],[226,27,160,217,126,56,112,222,29,194,80,17,187,144,67,169,202,198,186,147,107,226,126,75,125,32,62,50,189,225,43,23,89,132,168]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],"key":[177,14,45,82,118,18,7,59,38,238,205,253,113,126,106,50,12,244,75,74,250,194,176,115,45,159,203,226,183,250,12,246],"list_rlp_bytes":[[227],[226]],"value_rlp_bytes":[[1],[17]],"drifted_rlp_bytes":[226],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[161,32,187,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,14,45,82,118,18,7,59,38,238,205,253,113,126,106,50,12,244,75,74,250,194,176,115,45,159,203,226,183,250,12,246,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[227,161,32,187,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,1],[226,160,32,14,45,82,118,18,7,59,38,238,205,253,113,126,106,50,12,244,75,74,250,194,176,115,45,159,203,226,183,250,12,246,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],[226,160,32,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,1]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ExtensionAddedInFirstStorageLevelTwoKeyBytes.json b/zkevm-circuits/src/mpt_circuit/tests/ExtensionAddedInFirstStorageLevelTwoKeyBytes.json new file mode 100644 index 0000000000..51baedd059 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ExtensionAddedInFirstStorageLevelTwoKeyBytes.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,220,143,4,93,60,93,242,62,224,221,187,136,15,32,210,22,238,152,245,194,205,214,168,192,202,35,51,216,91,164,166,248,0],[160,89,7,180,75,136,8,120,157,122,186,173,74,195,46,132,19,92,54,117,231,243,122,67,108,249,209,165,114,55,76,189,184,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,145,125,74,244,114,233,77,220,247,135,137,35,148,135,244,230,102,212,61,254,221,136,54,253,190,239,213,40,188,185,152,221,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,198,110,59,110,207,162,15,138,151,80,193,238,182,30,35,42,168,192,180,204,238,61,99,82,32,113,75,76,38,31,245,168,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,198,110,59,110,207,162,15,138,151,80,193,238,182,30,35,42,168,192,180,204,238,61,99,82,32,113,75,76,38,31,245,168,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,145,125,74,244,114,233,77,220,247,135,137,35,148,135,244,230,102,212,61,254,221,136,54,253,190,239,213,40,188,185,152,221,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,221,163,6,21,15,108,170,33,138,75,86,31,112,86,89,173,237,222,205,163,168,23,11,28,200,82,240,55,6,218,97,187,0],[160,8,82,228,160,236,167,211,34,103,186,143,82,159,227,56,83,90,137,189,168,42,104,95,52,183,148,255,215,136,52,73,231,0],[160,84,120,210,249,75,139,182,38,44,242,80,181,2,165,43,146,17,155,131,187,29,254,176,179,119,232,197,70,165,227,43,64,0],[160,194,12,142,1,144,174,252,71,147,52,115,101,189,153,208,184,182,11,61,226,102,6,152,102,88,19,198,73,12,11,50,155,0],[160,59,143,74,53,247,240,239,138,121,223,75,218,127,28,117,171,91,193,129,250,204,248,51,157,35,23,2,179,196,54,170,46,0],[160,157,90,51,248,241,223,224,87,67,255,188,60,98,138,52,58,248,0,103,191,25,93,87,196,48,17,193,91,196,174,84,68,0],[160,37,36,38,176,196,202,58,86,76,239,236,180,113,34,151,66,223,175,221,244,2,135,167,81,134,210,144,189,210,100,169,46,0],[160,246,249,160,14,73,156,38,98,129,209,255,124,122,147,16,52,200,78,213,139,162,204,164,40,13,165,111,148,15,31,205,20,0],[160,196,63,137,26,203,165,150,154,136,200,90,27,244,146,124,13,112,147,170,137,82,86,194,212,83,213,250,77,122,235,81,108,0],[160,23,72,191,114,109,241,153,152,28,181,114,222,27,12,163,170,167,243,68,76,13,193,8,43,209,0,251,139,245,110,12,200,0],[160,162,242,12,159,239,231,230,109,155,112,235,20,28,190,163,94,48,238,186,27,192,248,95,119,246,213,205,3,106,83,34,57,0],[160,98,128,143,73,77,78,229,115,157,26,53,223,153,171,114,69,45,174,24,124,45,42,137,236,225,137,107,235,241,54,22,248,0],[160,28,67,53,54,154,2,91,141,228,22,200,27,178,90,210,209,195,121,126,22,72,172,98,207,112,253,149,202,240,32,170,32,0],[160,77,183,169,108,222,80,160,149,46,20,80,223,164,78,82,196,134,47,182,103,106,44,118,54,158,56,222,196,13,46,87,30,0],[160,105,251,188,224,72,188,242,142,5,202,96,164,238,163,221,166,92,66,41,9,240,19,219,203,186,100,64,23,163,241,100,34,0],[160,66,160,223,51,184,103,51,48,79,182,55,124,160,55,136,72,34,106,234,196,136,142,67,163,253,247,97,56,227,113,81,112,0],[160,70,28,143,53,189,11,148,71,98,61,108,214,101,187,1,240,58,157,104,142,179,155,185,249,28,6,177,21,81,199,24,148,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,8,82,228,160,236,167,211,34,103,186,143,82,159,227,56,83,90,137,189,168,42,104,95,52,183,148,255,215,136,52,73,231,160,84,120,210,249,75,139,182,38,44,242,80,181,2,165,43,146,17,155,131,187,29,254,176,179,119,232,197,70,165,227,43,64,160,194,12,142,1,144,174,252,71,147,52,115,101,189,153,208,184,182,11,61,226,102,6,152,102,88,19,198,73,12,11,50,155,160,59,143,74,53,247,240,239,138,121,223,75,218,127,28,117,171,91,193,129,250,204,248,51,157,35,23,2,179,196,54,170,46,160,157,90,51,248,241,223,224,87,67,255,188,60,98,138,52,58,248,0,103,191,25,93,87,196,48,17,193,91,196,174,84,68,160,37,36,38,176,196,202,58,86,76,239,236,180,113,34,151,66,223,175,221,244,2,135,167,81,134,210,144,189,210,100,169,46,160,246,249,160,14,73,156,38,98,129,209,255,124,122,147,16,52,200,78,213,139,162,204,164,40,13,165,111,148,15,31,205,20,160,196,63,137,26,203,165,150,154,136,200,90,27,244,146,124,13,112,147,170,137,82,86,194,212,83,213,250,77,122,235,81,108,160,23,72,191,114,109,241,153,152,28,181,114,222,27,12,163,170,167,243,68,76,13,193,8,43,209,0,251,139,245,110,12,200,160,162,242,12,159,239,231,230,109,155,112,235,20,28,190,163,94,48,238,186,27,192,248,95,119,246,213,205,3,106,83,34,57,160,98,128,143,73,77,78,229,115,157,26,53,223,153,171,114,69,45,174,24,124,45,42,137,236,225,137,107,235,241,54,22,248,160,28,67,53,54,154,2,91,141,228,22,200,27,178,90,210,209,195,121,126,22,72,172,98,207,112,253,149,202,240,32,170,32,160,77,183,169,108,222,80,160,149,46,20,80,223,164,78,82,196,134,47,182,103,106,44,118,54,158,56,222,196,13,46,87,30,160,105,251,188,224,72,188,242,142,5,202,96,164,238,163,221,166,92,66,41,9,240,19,219,203,186,100,64,23,163,241,100,34,160,66,160,223,51,184,103,51,48,79,182,55,124,160,55,136,72,34,106,234,196,136,142,67,163,253,247,97,56,227,113,81,112,160,70,28,143,53,189,11,148,71,98,61,108,214,101,187,1,240,58,157,104,142,179,155,185,249,28,6,177,21,81,199,24,148,128],[249,2,17,160,8,82,228,160,236,167,211,34,103,186,143,82,159,227,56,83,90,137,189,168,42,104,95,52,183,148,255,215,136,52,73,231,160,84,120,210,249,75,139,182,38,44,242,80,181,2,165,43,146,17,155,131,187,29,254,176,179,119,232,197,70,165,227,43,64,160,194,12,142,1,144,174,252,71,147,52,115,101,189,153,208,184,182,11,61,226,102,6,152,102,88,19,198,73,12,11,50,155,160,59,143,74,53,247,240,239,138,121,223,75,218,127,28,117,171,91,193,129,250,204,248,51,157,35,23,2,179,196,54,170,46,160,157,90,51,248,241,223,224,87,67,255,188,60,98,138,52,58,248,0,103,191,25,93,87,196,48,17,193,91,196,174,84,68,160,37,36,38,176,196,202,58,86,76,239,236,180,113,34,151,66,223,175,221,244,2,135,167,81,134,210,144,189,210,100,169,46,160,246,249,160,14,73,156,38,98,129,209,255,124,122,147,16,52,200,78,213,139,162,204,164,40,13,165,111,148,15,31,205,20,160,196,63,137,26,203,165,150,154,136,200,90,27,244,146,124,13,112,147,170,137,82,86,194,212,83,213,250,77,122,235,81,108,160,23,72,191,114,109,241,153,152,28,181,114,222,27,12,163,170,167,243,68,76,13,193,8,43,209,0,251,139,245,110,12,200,160,162,242,12,159,239,231,230,109,155,112,235,20,28,190,163,94,48,238,186,27,192,248,95,119,246,213,205,3,106,83,34,57,160,98,128,143,73,77,78,229,115,157,26,53,223,153,171,114,69,45,174,24,124,45,42,137,236,225,137,107,235,241,54,22,248,160,28,67,53,54,154,2,91,141,228,22,200,27,178,90,210,209,195,121,126,22,72,172,98,207,112,253,149,202,240,32,170,32,160,77,183,169,108,222,80,160,149,46,20,80,223,164,78,82,196,134,47,182,103,106,44,118,54,158,56,222,196,13,46,87,30,160,105,251,188,224,72,188,242,142,5,202,96,164,238,163,221,166,92,66,41,9,240,19,219,203,186,100,64,23,163,241,100,34,160,221,163,6,21,15,108,170,33,138,75,86,31,112,86,89,173,237,222,205,163,168,23,11,28,200,82,240,55,6,218,97,187,160,70,28,143,53,189,11,148,71,98,61,108,214,101,187,1,240,58,157,104,142,179,155,185,249,28,6,177,21,81,199,24,148,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,1,12,123,52,160,159,55,231,98,183,186,183,79,202,34,17,42,27,114,166,12,169,62,20,223,4,56,234,172,169,157,169,0],[160,28,181,216,79,148,37,18,33,67,109,190,5,141,78,14,125,126,101,243,129,183,164,252,246,188,222,123,209,72,162,91,222,0],[160,127,197,158,74,119,72,230,12,125,176,108,3,178,158,78,4,13,240,18,19,137,90,52,126,5,105,198,181,219,43,179,65,0],[160,46,9,75,129,71,206,112,222,185,139,165,36,36,211,46,89,3,55,130,67,49,169,124,254,145,239,59,68,181,39,14,11,0],[160,195,204,36,121,188,76,85,107,153,228,243,120,219,164,214,149,84,154,93,6,211,138,212,126,99,0,69,93,78,143,107,125,0],[160,24,229,27,106,208,179,138,207,189,75,247,237,254,184,165,211,163,77,102,247,171,142,38,241,105,73,81,97,179,89,41,94,0],[160,69,128,196,179,31,166,62,236,4,126,133,123,72,78,7,98,91,97,202,41,213,219,83,161,250,44,62,218,202,202,95,85,0],[160,122,138,244,235,222,164,181,224,94,192,101,250,2,159,226,141,139,49,161,182,189,7,58,131,181,174,22,234,166,219,45,89,0],[160,68,171,218,249,64,4,214,12,108,176,191,110,229,129,30,147,162,111,141,248,90,65,72,139,199,122,223,7,22,19,86,170,0],[160,44,69,190,86,52,17,185,107,193,188,16,167,86,61,125,177,50,240,102,96,66,255,44,165,212,175,229,245,163,179,105,42,0],[160,236,64,240,32,156,40,69,140,109,160,30,103,177,225,161,137,199,148,118,155,53,110,110,30,88,113,102,249,146,51,146,64,0],[160,13,42,32,122,82,79,121,74,202,120,184,186,33,169,210,46,107,49,203,217,253,81,204,72,172,54,254,232,169,31,66,180,0],[160,249,124,106,89,244,190,54,102,66,217,238,184,69,54,42,49,217,172,209,72,171,109,172,162,227,248,91,39,84,60,12,50,0],[160,71,37,113,174,70,115,139,170,17,161,226,89,54,206,220,216,124,175,149,45,37,207,232,200,177,22,55,13,211,27,128,159,0],[160,230,15,33,183,4,214,67,103,40,12,190,159,2,136,107,119,218,240,254,147,196,64,54,80,160,212,123,210,158,221,177,79,0],[160,81,251,139,38,98,234,236,80,109,218,180,81,152,102,115,99,187,67,51,108,50,176,183,19,208,120,5,0,187,173,25,231,0],[160,91,147,3,93,139,16,136,76,22,19,70,240,73,156,182,34,44,29,125,2,237,83,117,238,18,211,207,207,135,137,154,42,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,28,181,216,79,148,37,18,33,67,109,190,5,141,78,14,125,126,101,243,129,183,164,252,246,188,222,123,209,72,162,91,222,160,127,197,158,74,119,72,230,12,125,176,108,3,178,158,78,4,13,240,18,19,137,90,52,126,5,105,198,181,219,43,179,65,160,46,9,75,129,71,206,112,222,185,139,165,36,36,211,46,89,3,55,130,67,49,169,124,254,145,239,59,68,181,39,14,11,160,195,204,36,121,188,76,85,107,153,228,243,120,219,164,214,149,84,154,93,6,211,138,212,126,99,0,69,93,78,143,107,125,160,24,229,27,106,208,179,138,207,189,75,247,237,254,184,165,211,163,77,102,247,171,142,38,241,105,73,81,97,179,89,41,94,160,69,128,196,179,31,166,62,236,4,126,133,123,72,78,7,98,91,97,202,41,213,219,83,161,250,44,62,218,202,202,95,85,160,122,138,244,235,222,164,181,224,94,192,101,250,2,159,226,141,139,49,161,182,189,7,58,131,181,174,22,234,166,219,45,89,160,68,171,218,249,64,4,214,12,108,176,191,110,229,129,30,147,162,111,141,248,90,65,72,139,199,122,223,7,22,19,86,170,160,44,69,190,86,52,17,185,107,193,188,16,167,86,61,125,177,50,240,102,96,66,255,44,165,212,175,229,245,163,179,105,42,160,236,64,240,32,156,40,69,140,109,160,30,103,177,225,161,137,199,148,118,155,53,110,110,30,88,113,102,249,146,51,146,64,160,13,42,32,122,82,79,121,74,202,120,184,186,33,169,210,46,107,49,203,217,253,81,204,72,172,54,254,232,169,31,66,180,160,249,124,106,89,244,190,54,102,66,217,238,184,69,54,42,49,217,172,209,72,171,109,172,162,227,248,91,39,84,60,12,50,160,71,37,113,174,70,115,139,170,17,161,226,89,54,206,220,216,124,175,149,45,37,207,232,200,177,22,55,13,211,27,128,159,160,230,15,33,183,4,214,67,103,40,12,190,159,2,136,107,119,218,240,254,147,196,64,54,80,160,212,123,210,158,221,177,79,160,81,251,139,38,98,234,236,80,109,218,180,81,152,102,115,99,187,67,51,108,50,176,183,19,208,120,5,0,187,173,25,231,160,91,147,3,93,139,16,136,76,22,19,70,240,73,156,182,34,44,29,125,2,237,83,117,238,18,211,207,207,135,137,154,42,128],[249,2,17,160,28,181,216,79,148,37,18,33,67,109,190,5,141,78,14,125,126,101,243,129,183,164,252,246,188,222,123,209,72,162,91,222,160,127,197,158,74,119,72,230,12,125,176,108,3,178,158,78,4,13,240,18,19,137,90,52,126,5,105,198,181,219,43,179,65,160,46,9,75,129,71,206,112,222,185,139,165,36,36,211,46,89,3,55,130,67,49,169,124,254,145,239,59,68,181,39,14,11,160,195,204,36,121,188,76,85,107,153,228,243,120,219,164,214,149,84,154,93,6,211,138,212,126,99,0,69,93,78,143,107,125,160,24,229,27,106,208,179,138,207,189,75,247,237,254,184,165,211,163,77,102,247,171,142,38,241,105,73,81,97,179,89,41,94,160,69,128,196,179,31,166,62,236,4,126,133,123,72,78,7,98,91,97,202,41,213,219,83,161,250,44,62,218,202,202,95,85,160,122,138,244,235,222,164,181,224,94,192,101,250,2,159,226,141,139,49,161,182,189,7,58,131,181,174,22,234,166,219,45,89,160,1,12,123,52,160,159,55,231,98,183,186,183,79,202,34,17,42,27,114,166,12,169,62,20,223,4,56,234,172,169,157,169,160,44,69,190,86,52,17,185,107,193,188,16,167,86,61,125,177,50,240,102,96,66,255,44,165,212,175,229,245,163,179,105,42,160,236,64,240,32,156,40,69,140,109,160,30,103,177,225,161,137,199,148,118,155,53,110,110,30,88,113,102,249,146,51,146,64,160,13,42,32,122,82,79,121,74,202,120,184,186,33,169,210,46,107,49,203,217,253,81,204,72,172,54,254,232,169,31,66,180,160,249,124,106,89,244,190,54,102,66,217,238,184,69,54,42,49,217,172,209,72,171,109,172,162,227,248,91,39,84,60,12,50,160,71,37,113,174,70,115,139,170,17,161,226,89,54,206,220,216,124,175,149,45,37,207,232,200,177,22,55,13,211,27,128,159,160,230,15,33,183,4,214,67,103,40,12,190,159,2,136,107,119,218,240,254,147,196,64,54,80,160,212,123,210,158,221,177,79,160,81,251,139,38,98,234,236,80,109,218,180,81,152,102,115,99,187,67,51,108,50,176,183,19,208,120,5,0,187,173,25,231,160,91,147,3,93,139,16,136,76,22,19,70,240,73,156,182,34,44,29,125,2,237,83,117,238,18,211,207,207,135,137,154,42,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,236,63,211,221,226,199,170,147,207,30,5,241,158,151,170,140,16,104,103,99,205,4,84,150,203,180,81,25,82,255,220,105,0],[160,69,240,19,94,201,88,43,0,240,10,245,154,168,230,212,225,91,127,174,54,14,224,25,37,243,187,212,166,69,13,214,210,0],[160,177,114,250,165,145,160,168,147,73,120,43,40,134,214,183,54,244,101,72,160,70,135,200,49,243,43,70,171,72,51,232,228,0],[160,90,126,11,244,198,223,145,243,175,101,108,33,157,37,38,154,185,230,186,210,117,24,108,72,19,80,181,127,12,80,114,155,0],[160,78,180,178,103,237,5,128,118,135,163,125,238,136,63,98,140,254,188,122,80,58,140,165,170,224,23,27,182,205,122,170,222,0],[160,147,155,221,36,17,65,128,167,31,175,127,179,216,23,237,245,34,236,18,107,89,51,94,106,56,12,20,74,110,149,105,207,0],[160,15,28,106,136,34,61,58,29,173,134,221,145,72,139,220,37,191,242,241,153,92,130,98,238,20,55,147,180,1,187,72,252,0],[160,101,28,170,8,68,246,158,179,253,114,81,91,184,162,73,227,249,57,19,194,215,111,218,79,13,14,253,173,39,152,43,12,0],[160,101,42,250,164,65,159,130,225,36,154,115,39,124,11,13,239,251,223,52,197,47,222,172,222,166,233,67,63,237,150,142,147,0],[160,154,52,165,162,92,151,34,100,231,147,116,21,226,254,143,170,231,209,154,231,199,183,20,105,49,183,6,201,128,11,16,232,0],[160,207,152,180,142,136,28,103,23,207,112,171,22,117,189,204,168,205,65,250,82,77,7,189,224,17,6,107,65,153,196,51,115,0],[160,236,88,60,30,32,14,250,185,46,86,72,75,128,6,144,52,126,176,244,75,144,130,37,202,71,232,43,210,154,98,86,223,0],[160,96,182,165,136,194,214,172,207,177,61,121,19,192,171,159,135,101,154,232,237,19,245,224,68,199,165,13,58,252,78,199,233,0],[160,12,4,159,3,157,220,175,164,62,180,206,33,25,128,18,219,176,112,152,50,85,173,6,36,29,160,252,251,57,179,108,55,0],[160,178,76,4,254,107,101,118,101,72,242,165,126,184,251,148,195,179,2,253,197,81,175,197,164,92,27,185,14,251,174,58,27,0],[160,22,172,44,183,17,252,57,28,189,212,135,200,167,233,149,136,217,169,139,57,170,76,181,203,160,31,77,109,109,107,10,90,0],[160,129,79,119,239,14,8,139,99,226,197,245,208,38,121,249,69,188,180,205,60,221,179,140,56,207,45,139,57,243,129,240,114,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,69,240,19,94,201,88,43,0,240,10,245,154,168,230,212,225,91,127,174,54,14,224,25,37,243,187,212,166,69,13,214,210,160,177,114,250,165,145,160,168,147,73,120,43,40,134,214,183,54,244,101,72,160,70,135,200,49,243,43,70,171,72,51,232,228,160,90,126,11,244,198,223,145,243,175,101,108,33,157,37,38,154,185,230,186,210,117,24,108,72,19,80,181,127,12,80,114,155,160,78,180,178,103,237,5,128,118,135,163,125,238,136,63,98,140,254,188,122,80,58,140,165,170,224,23,27,182,205,122,170,222,160,147,155,221,36,17,65,128,167,31,175,127,179,216,23,237,245,34,236,18,107,89,51,94,106,56,12,20,74,110,149,105,207,160,15,28,106,136,34,61,58,29,173,134,221,145,72,139,220,37,191,242,241,153,92,130,98,238,20,55,147,180,1,187,72,252,160,101,28,170,8,68,246,158,179,253,114,81,91,184,162,73,227,249,57,19,194,215,111,218,79,13,14,253,173,39,152,43,12,160,101,42,250,164,65,159,130,225,36,154,115,39,124,11,13,239,251,223,52,197,47,222,172,222,166,233,67,63,237,150,142,147,160,154,52,165,162,92,151,34,100,231,147,116,21,226,254,143,170,231,209,154,231,199,183,20,105,49,183,6,201,128,11,16,232,160,207,152,180,142,136,28,103,23,207,112,171,22,117,189,204,168,205,65,250,82,77,7,189,224,17,6,107,65,153,196,51,115,160,236,88,60,30,32,14,250,185,46,86,72,75,128,6,144,52,126,176,244,75,144,130,37,202,71,232,43,210,154,98,86,223,160,96,182,165,136,194,214,172,207,177,61,121,19,192,171,159,135,101,154,232,237,19,245,224,68,199,165,13,58,252,78,199,233,160,12,4,159,3,157,220,175,164,62,180,206,33,25,128,18,219,176,112,152,50,85,173,6,36,29,160,252,251,57,179,108,55,160,178,76,4,254,107,101,118,101,72,242,165,126,184,251,148,195,179,2,253,197,81,175,197,164,92,27,185,14,251,174,58,27,160,22,172,44,183,17,252,57,28,189,212,135,200,167,233,149,136,217,169,139,57,170,76,181,203,160,31,77,109,109,107,10,90,160,129,79,119,239,14,8,139,99,226,197,245,208,38,121,249,69,188,180,205,60,221,179,140,56,207,45,139,57,243,129,240,114,128],[249,2,17,160,69,240,19,94,201,88,43,0,240,10,245,154,168,230,212,225,91,127,174,54,14,224,25,37,243,187,212,166,69,13,214,210,160,177,114,250,165,145,160,168,147,73,120,43,40,134,214,183,54,244,101,72,160,70,135,200,49,243,43,70,171,72,51,232,228,160,90,126,11,244,198,223,145,243,175,101,108,33,157,37,38,154,185,230,186,210,117,24,108,72,19,80,181,127,12,80,114,155,160,78,180,178,103,237,5,128,118,135,163,125,238,136,63,98,140,254,188,122,80,58,140,165,170,224,23,27,182,205,122,170,222,160,147,155,221,36,17,65,128,167,31,175,127,179,216,23,237,245,34,236,18,107,89,51,94,106,56,12,20,74,110,149,105,207,160,15,28,106,136,34,61,58,29,173,134,221,145,72,139,220,37,191,242,241,153,92,130,98,238,20,55,147,180,1,187,72,252,160,101,28,170,8,68,246,158,179,253,114,81,91,184,162,73,227,249,57,19,194,215,111,218,79,13,14,253,173,39,152,43,12,160,101,42,250,164,65,159,130,225,36,154,115,39,124,11,13,239,251,223,52,197,47,222,172,222,166,233,67,63,237,150,142,147,160,236,63,211,221,226,199,170,147,207,30,5,241,158,151,170,140,16,104,103,99,205,4,84,150,203,180,81,25,82,255,220,105,160,207,152,180,142,136,28,103,23,207,112,171,22,117,189,204,168,205,65,250,82,77,7,189,224,17,6,107,65,153,196,51,115,160,236,88,60,30,32,14,250,185,46,86,72,75,128,6,144,52,126,176,244,75,144,130,37,202,71,232,43,210,154,98,86,223,160,96,182,165,136,194,214,172,207,177,61,121,19,192,171,159,135,101,154,232,237,19,245,224,68,199,165,13,58,252,78,199,233,160,12,4,159,3,157,220,175,164,62,180,206,33,25,128,18,219,176,112,152,50,85,173,6,36,29,160,252,251,57,179,108,55,160,178,76,4,254,107,101,118,101,72,242,165,126,184,251,148,195,179,2,253,197,81,175,197,164,92,27,185,14,251,174,58,27,160,22,172,44,183,17,252,57,28,189,212,135,200,167,233,149,136,217,169,139,57,170,76,181,203,160,31,77,109,109,107,10,90,160,129,79,119,239,14,8,139,99,226,197,245,208,38,121,249,69,188,180,205,60,221,179,140,56,207,45,139,57,243,129,240,114,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,54,165,246,154,218,58,185,16,225,248,199,35,10,192,160,52,223,206,226,45,44,15,30,135,89,91,217,251,163,125,153,130,0],[160,135,143,213,43,63,194,224,22,73,85,234,57,32,136,196,138,144,25,14,53,225,60,238,148,1,160,19,151,227,159,49,183,0],[160,2,29,173,25,96,174,9,182,182,173,122,125,236,76,251,176,5,245,88,46,126,30,246,22,125,175,153,67,210,235,64,8,0],[160,28,189,158,3,1,129,244,212,210,46,30,196,172,161,20,195,243,158,211,25,117,74,30,254,41,187,49,138,192,150,52,17,0],[160,239,95,253,44,136,34,194,144,153,28,242,248,222,215,110,46,230,231,27,170,229,101,3,204,99,204,208,118,114,93,83,110,0],[160,7,159,235,95,194,73,95,243,22,246,19,38,251,43,141,128,8,190,255,67,153,158,211,166,139,252,168,40,63,188,205,95,0],[160,238,34,57,54,115,74,242,131,214,151,182,44,143,250,245,22,211,176,245,204,227,75,151,108,89,28,167,182,144,17,21,92,0],[160,110,82,232,2,216,240,70,229,147,241,71,82,114,9,73,189,84,16,27,151,65,30,46,28,117,225,27,149,182,208,51,159,0],[160,155,189,91,3,70,25,27,41,10,49,193,196,22,63,42,36,133,91,199,238,35,240,242,161,252,0,183,96,230,193,68,235,0],[160,254,225,94,214,235,151,75,30,231,42,49,211,232,190,3,200,245,38,113,10,27,249,194,216,43,216,49,187,170,57,95,202,0],[160,46,121,163,72,94,105,150,192,89,117,100,231,44,8,94,84,224,173,10,128,89,76,114,29,254,213,243,87,146,33,249,173,0],[160,182,172,93,250,183,64,112,173,6,173,19,151,175,126,144,31,75,142,43,92,76,129,21,185,125,95,55,38,17,68,4,54,0],[160,101,105,235,77,175,160,222,72,81,15,175,2,24,88,227,4,106,202,82,46,144,46,234,120,227,124,28,91,186,48,175,127,0],[160,107,199,179,225,2,21,145,210,96,156,115,9,90,72,224,6,92,117,170,140,51,4,185,247,179,137,241,5,125,9,215,216,0],[160,174,1,41,24,170,64,96,231,200,121,39,32,55,169,45,50,38,91,148,155,128,81,65,213,115,175,165,99,88,151,50,116,0],[160,175,48,34,68,54,34,13,191,110,96,44,135,10,240,213,61,134,176,37,129,8,182,235,41,95,208,183,87,202,245,167,238,0],[160,22,113,109,16,155,122,184,254,94,185,37,39,88,26,221,148,248,80,144,115,38,194,220,122,155,21,126,51,253,15,25,20,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,135,143,213,43,63,194,224,22,73,85,234,57,32,136,196,138,144,25,14,53,225,60,238,148,1,160,19,151,227,159,49,183,160,2,29,173,25,96,174,9,182,182,173,122,125,236,76,251,176,5,245,88,46,126,30,246,22,125,175,153,67,210,235,64,8,160,28,189,158,3,1,129,244,212,210,46,30,196,172,161,20,195,243,158,211,25,117,74,30,254,41,187,49,138,192,150,52,17,160,239,95,253,44,136,34,194,144,153,28,242,248,222,215,110,46,230,231,27,170,229,101,3,204,99,204,208,118,114,93,83,110,160,7,159,235,95,194,73,95,243,22,246,19,38,251,43,141,128,8,190,255,67,153,158,211,166,139,252,168,40,63,188,205,95,160,238,34,57,54,115,74,242,131,214,151,182,44,143,250,245,22,211,176,245,204,227,75,151,108,89,28,167,182,144,17,21,92,160,110,82,232,2,216,240,70,229,147,241,71,82,114,9,73,189,84,16,27,151,65,30,46,28,117,225,27,149,182,208,51,159,160,155,189,91,3,70,25,27,41,10,49,193,196,22,63,42,36,133,91,199,238,35,240,242,161,252,0,183,96,230,193,68,235,160,254,225,94,214,235,151,75,30,231,42,49,211,232,190,3,200,245,38,113,10,27,249,194,216,43,216,49,187,170,57,95,202,160,46,121,163,72,94,105,150,192,89,117,100,231,44,8,94,84,224,173,10,128,89,76,114,29,254,213,243,87,146,33,249,173,160,182,172,93,250,183,64,112,173,6,173,19,151,175,126,144,31,75,142,43,92,76,129,21,185,125,95,55,38,17,68,4,54,160,101,105,235,77,175,160,222,72,81,15,175,2,24,88,227,4,106,202,82,46,144,46,234,120,227,124,28,91,186,48,175,127,160,107,199,179,225,2,21,145,210,96,156,115,9,90,72,224,6,92,117,170,140,51,4,185,247,179,137,241,5,125,9,215,216,160,174,1,41,24,170,64,96,231,200,121,39,32,55,169,45,50,38,91,148,155,128,81,65,213,115,175,165,99,88,151,50,116,160,175,48,34,68,54,34,13,191,110,96,44,135,10,240,213,61,134,176,37,129,8,182,235,41,95,208,183,87,202,245,167,238,160,22,113,109,16,155,122,184,254,94,185,37,39,88,26,221,148,248,80,144,115,38,194,220,122,155,21,126,51,253,15,25,20,128],[249,2,17,160,135,143,213,43,63,194,224,22,73,85,234,57,32,136,196,138,144,25,14,53,225,60,238,148,1,160,19,151,227,159,49,183,160,2,29,173,25,96,174,9,182,182,173,122,125,236,76,251,176,5,245,88,46,126,30,246,22,125,175,153,67,210,235,64,8,160,28,189,158,3,1,129,244,212,210,46,30,196,172,161,20,195,243,158,211,25,117,74,30,254,41,187,49,138,192,150,52,17,160,239,95,253,44,136,34,194,144,153,28,242,248,222,215,110,46,230,231,27,170,229,101,3,204,99,204,208,118,114,93,83,110,160,7,159,235,95,194,73,95,243,22,246,19,38,251,43,141,128,8,190,255,67,153,158,211,166,139,252,168,40,63,188,205,95,160,238,34,57,54,115,74,242,131,214,151,182,44,143,250,245,22,211,176,245,204,227,75,151,108,89,28,167,182,144,17,21,92,160,110,82,232,2,216,240,70,229,147,241,71,82,114,9,73,189,84,16,27,151,65,30,46,28,117,225,27,149,182,208,51,159,160,155,189,91,3,70,25,27,41,10,49,193,196,22,63,42,36,133,91,199,238,35,240,242,161,252,0,183,96,230,193,68,235,160,254,225,94,214,235,151,75,30,231,42,49,211,232,190,3,200,245,38,113,10,27,249,194,216,43,216,49,187,170,57,95,202,160,46,121,163,72,94,105,150,192,89,117,100,231,44,8,94,84,224,173,10,128,89,76,114,29,254,213,243,87,146,33,249,173,160,182,172,93,250,183,64,112,173,6,173,19,151,175,126,144,31,75,142,43,92,76,129,21,185,125,95,55,38,17,68,4,54,160,101,105,235,77,175,160,222,72,81,15,175,2,24,88,227,4,106,202,82,46,144,46,234,120,227,124,28,91,186,48,175,127,160,107,199,179,225,2,21,145,210,96,156,115,9,90,72,224,6,92,117,170,140,51,4,185,247,179,137,241,5,125,9,215,216,160,174,1,41,24,170,64,96,231,200,121,39,32,55,169,45,50,38,91,148,155,128,81,65,213,115,175,165,99,88,151,50,116,160,175,48,34,68,54,34,13,191,110,96,44,135,10,240,213,61,134,176,37,129,8,182,235,41,95,208,183,87,202,245,167,238,160,54,165,246,154,218,58,185,16,225,248,199,35,10,192,160,52,223,206,226,45,44,15,30,135,89,91,217,251,163,125,153,130,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":6,"drifted_index":6,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,114,73,211,201,14,114,33,179,85,207,51,103,155,44,206,152,219,27,73,139,199,212,85,24,36,99,123,46,238,162,152,3,0],[160,240,112,44,72,20,92,16,226,238,153,16,125,149,130,241,10,60,36,30,150,251,167,132,127,195,28,146,162,13,131,27,104,0],[160,138,1,235,206,4,16,156,100,75,197,42,86,62,127,48,60,191,73,198,101,215,247,43,217,243,100,129,241,204,220,255,148,0],[160,236,7,15,200,76,214,175,181,111,16,213,238,208,13,129,154,34,238,224,26,140,170,215,20,77,216,157,80,95,241,66,5,0],[160,111,209,247,4,184,241,13,91,12,184,243,229,45,164,245,146,134,164,11,3,131,241,44,248,165,88,52,99,193,196,218,253,0],[160,229,51,62,185,89,4,163,95,20,136,220,188,187,42,151,97,47,27,99,112,96,146,185,113,108,59,23,95,91,242,168,231,0],[160,225,30,140,67,250,53,232,133,42,214,15,162,35,11,145,22,0,220,112,181,254,56,69,155,136,93,110,187,205,140,249,25,0],[160,11,120,10,14,41,255,61,142,177,254,63,196,64,224,0,14,143,46,191,103,0,192,46,198,195,173,64,251,173,35,142,148,0],[160,70,32,6,139,201,80,250,209,245,47,57,130,174,10,207,204,234,130,173,235,16,22,234,52,196,221,80,211,111,246,11,181,0],[160,53,254,22,227,103,204,187,138,101,229,227,171,9,232,13,105,208,170,117,193,81,106,4,200,93,89,129,132,160,158,41,161,0],[160,186,224,186,141,73,213,194,212,99,82,80,83,63,102,245,177,171,65,255,49,96,123,226,247,84,252,59,154,66,254,96,67,0],[160,228,118,98,158,169,240,61,44,106,136,219,101,77,16,63,14,204,240,38,190,219,80,247,204,97,190,78,228,105,224,67,95,0],[160,191,245,233,165,127,57,224,124,150,65,148,214,187,48,38,122,66,30,227,50,65,101,40,51,58,89,7,228,45,27,112,166,0],[160,47,164,236,183,87,115,134,179,223,254,239,90,133,214,85,54,22,167,1,92,153,195,176,38,176,219,172,7,191,23,55,122,0],[160,215,6,239,231,6,41,80,135,222,236,3,134,0,18,22,209,211,166,221,135,184,73,179,164,230,223,10,101,145,99,150,96,0],[160,63,103,2,71,244,232,117,254,117,119,209,72,224,148,116,41,203,106,207,131,104,246,110,140,246,162,32,29,20,147,74,227,0],[160,235,217,213,36,97,57,33,70,140,131,115,203,161,172,152,58,3,51,31,34,188,42,244,174,85,218,174,183,39,13,100,120,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,240,112,44,72,20,92,16,226,238,153,16,125,149,130,241,10,60,36,30,150,251,167,132,127,195,28,146,162,13,131,27,104,160,138,1,235,206,4,16,156,100,75,197,42,86,62,127,48,60,191,73,198,101,215,247,43,217,243,100,129,241,204,220,255,148,160,236,7,15,200,76,214,175,181,111,16,213,238,208,13,129,154,34,238,224,26,140,170,215,20,77,216,157,80,95,241,66,5,160,111,209,247,4,184,241,13,91,12,184,243,229,45,164,245,146,134,164,11,3,131,241,44,248,165,88,52,99,193,196,218,253,160,229,51,62,185,89,4,163,95,20,136,220,188,187,42,151,97,47,27,99,112,96,146,185,113,108,59,23,95,91,242,168,231,160,225,30,140,67,250,53,232,133,42,214,15,162,35,11,145,22,0,220,112,181,254,56,69,155,136,93,110,187,205,140,249,25,160,11,120,10,14,41,255,61,142,177,254,63,196,64,224,0,14,143,46,191,103,0,192,46,198,195,173,64,251,173,35,142,148,160,70,32,6,139,201,80,250,209,245,47,57,130,174,10,207,204,234,130,173,235,16,22,234,52,196,221,80,211,111,246,11,181,160,53,254,22,227,103,204,187,138,101,229,227,171,9,232,13,105,208,170,117,193,81,106,4,200,93,89,129,132,160,158,41,161,160,186,224,186,141,73,213,194,212,99,82,80,83,63,102,245,177,171,65,255,49,96,123,226,247,84,252,59,154,66,254,96,67,160,228,118,98,158,169,240,61,44,106,136,219,101,77,16,63,14,204,240,38,190,219,80,247,204,97,190,78,228,105,224,67,95,160,191,245,233,165,127,57,224,124,150,65,148,214,187,48,38,122,66,30,227,50,65,101,40,51,58,89,7,228,45,27,112,166,160,47,164,236,183,87,115,134,179,223,254,239,90,133,214,85,54,22,167,1,92,153,195,176,38,176,219,172,7,191,23,55,122,160,215,6,239,231,6,41,80,135,222,236,3,134,0,18,22,209,211,166,221,135,184,73,179,164,230,223,10,101,145,99,150,96,160,63,103,2,71,244,232,117,254,117,119,209,72,224,148,116,41,203,106,207,131,104,246,110,140,246,162,32,29,20,147,74,227,160,235,217,213,36,97,57,33,70,140,131,115,203,161,172,152,58,3,51,31,34,188,42,244,174,85,218,174,183,39,13,100,120,128],[249,2,17,160,240,112,44,72,20,92,16,226,238,153,16,125,149,130,241,10,60,36,30,150,251,167,132,127,195,28,146,162,13,131,27,104,160,138,1,235,206,4,16,156,100,75,197,42,86,62,127,48,60,191,73,198,101,215,247,43,217,243,100,129,241,204,220,255,148,160,236,7,15,200,76,214,175,181,111,16,213,238,208,13,129,154,34,238,224,26,140,170,215,20,77,216,157,80,95,241,66,5,160,111,209,247,4,184,241,13,91,12,184,243,229,45,164,245,146,134,164,11,3,131,241,44,248,165,88,52,99,193,196,218,253,160,229,51,62,185,89,4,163,95,20,136,220,188,187,42,151,97,47,27,99,112,96,146,185,113,108,59,23,95,91,242,168,231,160,225,30,140,67,250,53,232,133,42,214,15,162,35,11,145,22,0,220,112,181,254,56,69,155,136,93,110,187,205,140,249,25,160,114,73,211,201,14,114,33,179,85,207,51,103,155,44,206,152,219,27,73,139,199,212,85,24,36,99,123,46,238,162,152,3,160,70,32,6,139,201,80,250,209,245,47,57,130,174,10,207,204,234,130,173,235,16,22,234,52,196,221,80,211,111,246,11,181,160,53,254,22,227,103,204,187,138,101,229,227,171,9,232,13,105,208,170,117,193,81,106,4,200,93,89,129,132,160,158,41,161,160,186,224,186,141,73,213,194,212,99,82,80,83,63,102,245,177,171,65,255,49,96,123,226,247,84,252,59,154,66,254,96,67,160,228,118,98,158,169,240,61,44,106,136,219,101,77,16,63,14,204,240,38,190,219,80,247,204,97,190,78,228,105,224,67,95,160,191,245,233,165,127,57,224,124,150,65,148,214,187,48,38,122,66,30,227,50,65,101,40,51,58,89,7,228,45,27,112,166,160,47,164,236,183,87,115,134,179,223,254,239,90,133,214,85,54,22,167,1,92,153,195,176,38,176,219,172,7,191,23,55,122,160,215,6,239,231,6,41,80,135,222,236,3,134,0,18,22,209,211,166,221,135,184,73,179,164,230,223,10,101,145,99,150,96,160,63,103,2,71,244,232,117,254,117,119,209,72,224,148,116,41,203,106,207,131,104,246,110,140,246,162,32,29,20,147,74,227,160,235,217,213,36,97,57,33,70,140,131,115,203,161,172,152,58,3,51,31,34,188,42,244,174,85,218,174,183,39,13,100,120,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[248,145],[248,145]]}},"account":null,"storage":null,"values":[[160,222,142,59,34,234,176,247,14,92,67,83,246,96,242,111,166,241,147,73,210,94,29,222,21,95,2,38,153,128,81,200,235,0],[160,73,208,126,64,185,124,226,254,200,156,38,73,116,28,98,39,159,197,2,205,192,137,219,133,250,225,251,164,26,205,18,81,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,4,223,126,85,68,106,50,147,247,249,222,159,87,179,121,227,15,254,85,49,250,43,16,96,127,220,135,236,178,131,92,58,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,179,70,158,11,10,104,224,123,16,42,214,158,131,156,64,4,235,80,104,2,138,182,25,228,205,151,223,171,105,234,236,173,0],[160,1,162,74,47,57,45,87,11,81,221,83,234,28,100,214,43,52,204,21,204,51,217,33,45,57,156,224,74,233,176,82,221,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,145,160,73,208,126,64,185,124,226,254,200,156,38,73,116,28,98,39,159,197,2,205,192,137,219,133,250,225,251,164,26,205,18,81,128,128,160,4,223,126,85,68,106,50,147,247,249,222,159,87,179,121,227,15,254,85,49,250,43,16,96,127,220,135,236,178,131,92,58,128,128,128,128,128,128,128,160,179,70,158,11,10,104,224,123,16,42,214,158,131,156,64,4,235,80,104,2,138,182,25,228,205,151,223,171,105,234,236,173,160,1,162,74,47,57,45,87,11,81,221,83,234,28,100,214,43,52,204,21,204,51,217,33,45,57,156,224,74,233,176,82,221,128,128,128,128],[248,145,160,73,208,126,64,185,124,226,254,200,156,38,73,116,28,98,39,159,197,2,205,192,137,219,133,250,225,251,164,26,205,18,81,128,128,160,4,223,126,85,68,106,50,147,247,249,222,159,87,179,121,227,15,254,85,49,250,43,16,96,127,220,135,236,178,131,92,58,128,128,128,128,128,128,128,160,222,142,59,34,234,176,247,14,92,67,83,246,96,242,111,166,241,147,73,210,94,29,222,21,95,2,38,153,128,81,200,235,160,1,162,74,47,57,45,87,11,81,221,83,234,28,100,214,43,52,204,21,204,51,217,33,45,57,156,224,74,233,176,82,221,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,103,122,148,70,177,87,110,2,255,59,31,77,244,108,167,162,139,5,177,228,144,99,212,197,109,58,222,23,84,38,34,187,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,222,170,68,108,117,176,212,174,211,39,185,133,117,19,156,115,206,166,217,135,198,124,199,163,157,194,82,167,202,167,62,219,0],[160,41,122,139,195,252,11,85,53,122,170,39,172,8,39,29,83,69,64,178,138,199,190,231,92,223,125,154,186,235,120,104,102,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,160,222,170,68,108,117,176,212,174,211,39,185,133,117,19,156,115,206,166,217,135,198,124,199,163,157,194,82,167,202,167,62,219,160,41,122,139,195,252,11,85,53,122,170,39,172,8,39,29,83,69,64,178,138,199,190,231,92,223,125,154,186,235,120,104,102,128,128,128,128,128,128,128,128],[248,81,128,128,128,128,128,128,128,160,222,170,68,108,117,176,212,174,211,39,185,133,117,19,156,115,206,166,217,135,198,124,199,163,157,194,82,167,202,167,62,219,160,103,122,148,70,177,87,110,2,255,59,31,77,244,108,167,162,139,5,177,228,144,99,212,197,109,58,222,23,84,38,34,187,128,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,104,144,3,62,215,117,61,85,192,37,206,95,217,184,64,1,33,195,44,43,108,85,151,60,62,182,155,186,96,110,253,86,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,160,9,113,129,125,176,108,165,204,52,73,31,120,48,145,70,180,84,104,164,114,187,197,135,250,222,46,181,93,217,99,207,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,119,112,103,117,121,255,157,192,83,91,44,31,253,43,105,59,219,129,193,146,21,133,101,43,236,205,229,86,87,91,66,252,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,160,160,9,113,129,125,176,108,165,204,52,73,31,120,48,145,70,180,84,104,164,114,187,197,135,250,222,46,181,93,217,99,207,128,128,128,160,119,112,103,117,121,255,157,192,83,91,44,31,253,43,105,59,219,129,193,146,21,133,101,43,236,205,229,86,87,91,66,252,128,128,128,128],[248,81,128,128,128,128,128,128,128,128,160,160,9,113,129,125,176,108,165,204,52,73,31,120,48,145,70,180,84,104,164,114,187,197,135,250,222,46,181,93,217,99,207,128,128,128,160,104,144,3,62,215,117,61,85,192,37,206,95,217,184,64,1,33,195,44,43,108,85,151,60,62,182,155,186,96,110,253,86,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[80,239,191,18,88,1,56,188,98,60,149,117,114,134,223,78,36,235,129,201],"key":[222,120,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184],"list_rlp_bytes":[[248,101],[248,101]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,101]},"storage":null,"values":[[156,54,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,0,0,0,0,0],[156,54,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,53,203,234,79,145,82,155,67,90,65,188,199,39,235,164,30,181,122,126,243,25,253,115,22,82,102,179,140,10,155,162,255,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,219,94,222,16,150,29,26,206,217,173,230,43,6,17,160,176,223,206,181,7,25,106,59,84,10,68,170,155,41,216,82,32,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[156,54,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,0,0,0,0,0]],"keccak_data":[[248,101,156,54,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,184,70,248,68,128,128,160,53,203,234,79,145,82,155,67,90,65,188,199,39,235,164,30,181,122,126,243,25,253,115,22,82,102,179,140,10,155,162,255,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,101,156,54,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,184,70,248,68,128,128,160,219,94,222,16,150,29,26,206,217,173,230,43,6,17,160,176,223,206,181,7,25,106,59,84,10,68,170,155,41,216,82,32,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[80,239,191,18,88,1,56,188,98,60,149,117,114,134,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[true,false],"extension":{"list_rlp_bytes":[228]},"branch":{"modified_index":13,"drifted_index":8,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,45,44,178,216,107,168,176,16,200,242,96,217,111,104,159,205,242,134,146,134,148,209,20,211,178,13,147,148,102,1,216,53,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,55,247,200,94,165,79,147,170,238,142,124,219,14,65,176,63,15,70,30,112,65,159,247,49,254,91,192,179,176,84,191,145,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,45,44,178,216,107,168,176,16,200,242,96,217,111,104,159,205,242,134,146,134,148,209,20,211,178,13,147,148,102,1,216,53,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[130,0,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,179,70,42,74,68,248,70,154,159,254,198,16,84,28,168,129,18,102,199,16,62,160,232,168,84,32,88,134,119,86,119,223,0],[0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,179,70,42,74,68,248,70,154,159,254,198,16,84,28,168,129,18,102,199,16,62,160,232,168,84,32,88,134,119,86,119,223,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,160,55,247,200,94,165,79,147,170,238,142,124,219,14,65,176,63,15,70,30,112,65,159,247,49,254,91,192,179,176,84,191,145,128,128,128,128,160,45,44,178,216,107,168,176,16,200,242,96,217,111,104,159,205,242,134,146,134,148,209,20,211,178,13,147,148,102,1,216,53,128,128,128],[248,81,128,128,128,128,128,128,128,128,160,55,247,200,94,165,79,147,170,238,142,124,219,14,65,176,63,15,70,30,112,65,159,247,49,254,91,192,179,176,84,191,145,128,128,128,128,160,45,44,178,216,107,168,176,16,200,242,96,217,111,104,159,205,242,134,146,134,148,209,20,211,178,13,147,148,102,1,216,53,128,128,128],[228,130,0,187,160,179,70,42,74,68,248,70,154,159,254,198,16,84,28,168,129,18,102,199,16,62,160,232,168,84,32,88,134,119,86,119,223],[228,130,0,187,160,179,70,42,74,68,248,70,154,159,254,198,16,84,28,168,129,18,102,199,16,62,160,232,168,84,32,88,134,119,86,119,223]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,23],"key":[187,217,202,166,137,33,122,83,73,216,229,46,7,115,79,144,111,158,157,172,49,186,14,102,85,114,140,190,31,237,244,152],"list_rlp_bytes":[[227],[225]],"value_rlp_bytes":[[1],[17]],"drifted_rlp_bytes":[225],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[161,32,187,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,57,202,166,137,33,122,83,73,216,229,46,7,115,79,144,111,158,157,172,49,186,14,102,85,114,140,190,31,237,244,152,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,58,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[227,161,32,187,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,1],[225,159,57,202,166,137,33,122,83,73,216,229,46,7,115,79,144,111,158,157,172,49,186,14,102,85,114,140,190,31,237,244,152,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,23],[225,159,58,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,1]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ExtensionAddedOneKeyByteSel1.json b/zkevm-circuits/src/mpt_circuit/tests/ExtensionAddedOneKeyByteSel1.json new file mode 100644 index 0000000000..3e63382252 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ExtensionAddedOneKeyByteSel1.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,107,58,47,21,149,140,94,24,227,55,136,61,133,147,244,53,80,105,234,75,147,246,141,153,7,142,60,185,17,201,250,0],[160,86,65,133,214,236,124,244,207,170,171,2,19,81,111,33,120,207,71,72,74,212,102,177,120,58,151,135,200,109,78,98,65,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,253,33,226,218,25,39,145,0,164,81,47,69,178,157,225,196,113,144,144,113,226,166,234,246,113,103,16,63,113,80,88,95,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,11,122,24,184,141,150,58,53,220,58,188,17,167,30,82,128,148,213,14,40,24,159,21,74,144,94,36,177,35,75,83,174,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,11,122,24,184,141,150,58,53,220,58,188,17,167,30,82,128,148,213,14,40,24,159,21,74,144,94,36,177,35,75,83,174,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,253,33,226,218,25,39,145,0,164,81,47,69,178,157,225,196,113,144,144,113,226,166,234,246,113,103,16,63,113,80,88,95,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,103,204,104,158,235,198,119,209,180,215,181,189,136,203,184,250,163,30,140,126,79,243,14,159,109,170,58,208,8,74,26,70,0],[160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,0],[160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,0],[160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,0],[160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,0],[160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,0],[160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,0],[160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,0],[160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,0],[160,146,182,235,84,94,114,8,227,240,42,193,1,138,219,154,123,24,248,232,13,53,253,122,191,191,215,130,128,234,226,86,123,0],[160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,0],[160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,0],[160,39,39,45,175,58,167,117,176,247,129,45,9,94,210,44,4,5,223,158,62,209,10,3,144,51,105,232,62,134,188,145,188,0],[160,237,113,19,48,172,139,234,51,70,37,236,44,37,118,182,177,114,98,221,189,39,248,50,83,47,77,215,60,136,159,224,77,0],[160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,0],[160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,0],[160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,160,146,182,235,84,94,114,8,227,240,42,193,1,138,219,154,123,24,248,232,13,53,253,122,191,191,215,130,128,234,226,86,123,160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,160,39,39,45,175,58,167,117,176,247,129,45,9,94,210,44,4,5,223,158,62,209,10,3,144,51,105,232,62,134,188,145,188,160,237,113,19,48,172,139,234,51,70,37,236,44,37,118,182,177,114,98,221,189,39,248,50,83,47,77,215,60,136,159,224,77,160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,128],[249,2,17,160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,160,146,182,235,84,94,114,8,227,240,42,193,1,138,219,154,123,24,248,232,13,53,253,122,191,191,215,130,128,234,226,86,123,160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,160,103,204,104,158,235,198,119,209,180,215,181,189,136,203,184,250,163,30,140,126,79,243,14,159,109,170,58,208,8,74,26,70,160,237,113,19,48,172,139,234,51,70,37,236,44,37,118,182,177,114,98,221,189,39,248,50,83,47,77,215,60,136,159,224,77,160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,218,41,159,210,100,253,33,88,234,56,175,174,178,159,11,204,161,146,42,180,208,96,184,116,23,70,93,94,145,107,89,33,0],[160,17,14,152,228,161,27,201,217,36,240,10,175,206,177,124,38,135,28,190,122,91,109,224,56,126,139,153,149,123,137,108,103,0],[160,18,13,111,197,83,111,187,99,87,247,167,17,128,97,141,1,62,136,8,123,124,243,65,227,23,101,121,34,154,68,118,245,0],[160,176,73,194,83,219,26,39,202,203,250,128,222,2,177,177,68,119,93,193,32,146,124,90,108,159,120,167,196,183,104,110,220,0],[160,2,103,24,154,157,19,247,166,154,39,227,112,215,233,73,232,49,102,31,37,24,128,106,37,49,207,18,180,85,217,181,86,0],[160,243,129,214,205,142,5,250,58,99,129,145,177,53,137,7,205,21,205,113,246,52,66,180,235,229,84,190,12,2,142,255,153,0],[160,88,72,38,73,92,103,15,103,83,111,122,242,225,201,211,199,143,217,2,53,164,164,90,115,27,64,178,170,122,127,229,220,0],[160,113,108,247,26,59,67,31,95,124,173,73,67,237,250,140,15,99,74,90,62,158,128,77,2,244,88,163,175,63,114,221,50,0],[160,193,70,173,55,41,231,69,65,112,9,158,41,97,73,77,3,108,222,33,61,121,168,60,39,134,48,129,8,134,170,184,112,0],[160,220,67,96,141,155,253,66,228,10,14,151,7,221,195,199,37,52,154,39,206,103,247,124,126,95,11,24,126,253,196,147,234,0],[160,4,251,178,215,177,99,63,65,108,73,209,148,181,62,151,132,211,2,62,45,174,250,205,180,18,104,82,173,232,87,65,25,0],[160,127,188,123,217,18,146,253,108,75,236,17,218,226,163,173,108,114,232,4,85,250,30,215,35,248,232,237,143,231,149,4,100,0],[160,251,60,128,176,16,190,42,167,32,137,202,218,86,170,232,220,155,186,71,101,44,31,115,102,205,77,5,66,172,253,178,197,0],[160,191,206,160,180,210,66,180,165,142,193,114,59,208,212,163,71,192,68,161,246,68,173,99,14,63,196,189,212,183,26,248,166,0],[160,120,111,196,145,168,96,1,64,243,97,255,71,183,26,182,112,90,106,209,172,36,63,178,27,112,28,8,224,237,43,8,55,0],[160,255,180,41,152,120,18,117,140,48,239,106,19,151,226,224,119,56,150,40,117,133,9,82,75,94,255,0,36,42,211,190,0,0],[160,63,111,21,204,37,243,152,155,55,14,233,122,16,231,133,74,39,8,120,115,231,98,225,151,4,251,118,215,74,51,97,254,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,17,14,152,228,161,27,201,217,36,240,10,175,206,177,124,38,135,28,190,122,91,109,224,56,126,139,153,149,123,137,108,103,160,18,13,111,197,83,111,187,99,87,247,167,17,128,97,141,1,62,136,8,123,124,243,65,227,23,101,121,34,154,68,118,245,160,176,73,194,83,219,26,39,202,203,250,128,222,2,177,177,68,119,93,193,32,146,124,90,108,159,120,167,196,183,104,110,220,160,2,103,24,154,157,19,247,166,154,39,227,112,215,233,73,232,49,102,31,37,24,128,106,37,49,207,18,180,85,217,181,86,160,243,129,214,205,142,5,250,58,99,129,145,177,53,137,7,205,21,205,113,246,52,66,180,235,229,84,190,12,2,142,255,153,160,88,72,38,73,92,103,15,103,83,111,122,242,225,201,211,199,143,217,2,53,164,164,90,115,27,64,178,170,122,127,229,220,160,113,108,247,26,59,67,31,95,124,173,73,67,237,250,140,15,99,74,90,62,158,128,77,2,244,88,163,175,63,114,221,50,160,193,70,173,55,41,231,69,65,112,9,158,41,97,73,77,3,108,222,33,61,121,168,60,39,134,48,129,8,134,170,184,112,160,220,67,96,141,155,253,66,228,10,14,151,7,221,195,199,37,52,154,39,206,103,247,124,126,95,11,24,126,253,196,147,234,160,4,251,178,215,177,99,63,65,108,73,209,148,181,62,151,132,211,2,62,45,174,250,205,180,18,104,82,173,232,87,65,25,160,127,188,123,217,18,146,253,108,75,236,17,218,226,163,173,108,114,232,4,85,250,30,215,35,248,232,237,143,231,149,4,100,160,251,60,128,176,16,190,42,167,32,137,202,218,86,170,232,220,155,186,71,101,44,31,115,102,205,77,5,66,172,253,178,197,160,191,206,160,180,210,66,180,165,142,193,114,59,208,212,163,71,192,68,161,246,68,173,99,14,63,196,189,212,183,26,248,166,160,120,111,196,145,168,96,1,64,243,97,255,71,183,26,182,112,90,106,209,172,36,63,178,27,112,28,8,224,237,43,8,55,160,255,180,41,152,120,18,117,140,48,239,106,19,151,226,224,119,56,150,40,117,133,9,82,75,94,255,0,36,42,211,190,0,160,63,111,21,204,37,243,152,155,55,14,233,122,16,231,133,74,39,8,120,115,231,98,225,151,4,251,118,215,74,51,97,254,128],[249,2,17,160,17,14,152,228,161,27,201,217,36,240,10,175,206,177,124,38,135,28,190,122,91,109,224,56,126,139,153,149,123,137,108,103,160,18,13,111,197,83,111,187,99,87,247,167,17,128,97,141,1,62,136,8,123,124,243,65,227,23,101,121,34,154,68,118,245,160,176,73,194,83,219,26,39,202,203,250,128,222,2,177,177,68,119,93,193,32,146,124,90,108,159,120,167,196,183,104,110,220,160,218,41,159,210,100,253,33,88,234,56,175,174,178,159,11,204,161,146,42,180,208,96,184,116,23,70,93,94,145,107,89,33,160,243,129,214,205,142,5,250,58,99,129,145,177,53,137,7,205,21,205,113,246,52,66,180,235,229,84,190,12,2,142,255,153,160,88,72,38,73,92,103,15,103,83,111,122,242,225,201,211,199,143,217,2,53,164,164,90,115,27,64,178,170,122,127,229,220,160,113,108,247,26,59,67,31,95,124,173,73,67,237,250,140,15,99,74,90,62,158,128,77,2,244,88,163,175,63,114,221,50,160,193,70,173,55,41,231,69,65,112,9,158,41,97,73,77,3,108,222,33,61,121,168,60,39,134,48,129,8,134,170,184,112,160,220,67,96,141,155,253,66,228,10,14,151,7,221,195,199,37,52,154,39,206,103,247,124,126,95,11,24,126,253,196,147,234,160,4,251,178,215,177,99,63,65,108,73,209,148,181,62,151,132,211,2,62,45,174,250,205,180,18,104,82,173,232,87,65,25,160,127,188,123,217,18,146,253,108,75,236,17,218,226,163,173,108,114,232,4,85,250,30,215,35,248,232,237,143,231,149,4,100,160,251,60,128,176,16,190,42,167,32,137,202,218,86,170,232,220,155,186,71,101,44,31,115,102,205,77,5,66,172,253,178,197,160,191,206,160,180,210,66,180,165,142,193,114,59,208,212,163,71,192,68,161,246,68,173,99,14,63,196,189,212,183,26,248,166,160,120,111,196,145,168,96,1,64,243,97,255,71,183,26,182,112,90,106,209,172,36,63,178,27,112,28,8,224,237,43,8,55,160,255,180,41,152,120,18,117,140,48,239,106,19,151,226,224,119,56,150,40,117,133,9,82,75,94,255,0,36,42,211,190,0,160,63,111,21,204,37,243,152,155,55,14,233,122,16,231,133,74,39,8,120,115,231,98,225,151,4,251,118,215,74,51,97,254,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,79,77,138,162,213,175,43,135,147,0,39,146,132,139,164,75,29,80,80,240,46,196,229,46,240,181,12,101,209,196,168,135,0],[160,45,176,192,131,103,46,125,69,137,220,205,162,24,186,11,196,15,145,109,234,234,157,28,139,241,205,25,120,185,161,244,32,0],[160,243,215,148,180,148,117,204,92,219,123,146,157,35,53,129,153,255,157,198,201,221,69,187,166,25,135,103,148,130,77,56,72,0],[160,231,29,60,93,136,60,186,17,157,224,26,19,111,236,167,5,120,217,245,241,110,184,114,120,203,13,187,192,108,59,177,235,0],[160,250,124,203,235,134,33,153,5,105,81,141,236,77,232,208,204,144,199,143,198,130,220,236,240,144,108,56,249,225,50,125,156,0],[160,140,46,14,113,70,89,95,192,44,205,219,174,70,242,9,252,64,41,136,127,14,91,59,230,82,177,58,167,119,35,131,214,0],[160,172,218,202,236,83,210,237,163,218,121,212,228,200,106,63,190,70,236,143,208,141,8,140,248,160,92,20,247,148,224,37,76,0],[160,63,128,79,244,80,116,153,47,52,45,122,92,97,33,187,18,188,187,126,39,233,88,11,155,35,193,71,124,180,197,133,17,0],[160,25,85,178,234,135,114,1,182,168,156,119,106,168,232,60,178,120,152,77,31,103,183,68,176,20,22,219,189,134,32,165,50,0],[160,98,187,195,190,112,171,213,255,55,156,163,103,212,232,13,95,179,177,190,108,75,124,138,99,108,169,141,34,181,89,132,40,0],[160,236,141,9,44,231,10,145,189,76,194,47,252,201,3,54,168,71,76,58,187,234,204,92,170,16,129,19,201,9,252,167,111,0],[160,94,134,224,129,48,238,42,144,131,125,108,164,40,191,102,9,72,67,171,69,72,214,186,84,235,136,56,254,174,36,102,85,0],[160,12,29,112,110,8,140,75,10,232,209,170,13,137,90,39,141,237,210,207,28,171,97,74,185,109,184,168,73,214,2,132,97,0],[160,120,215,77,127,165,83,158,102,146,107,230,56,68,11,198,176,36,228,75,144,14,147,129,94,157,66,102,203,94,235,152,50,0],[160,231,241,125,247,52,253,228,200,117,85,103,199,195,44,52,233,159,230,145,17,116,183,22,84,70,44,7,13,4,73,185,12,0],[160,252,241,80,73,8,232,87,254,104,121,82,210,107,199,38,5,32,69,99,110,107,145,34,236,192,88,192,231,77,42,82,254,0],[160,148,164,243,224,114,211,36,66,233,174,116,37,91,62,4,42,33,29,237,253,20,170,147,143,98,251,213,226,251,141,47,35,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,45,176,192,131,103,46,125,69,137,220,205,162,24,186,11,196,15,145,109,234,234,157,28,139,241,205,25,120,185,161,244,32,160,243,215,148,180,148,117,204,92,219,123,146,157,35,53,129,153,255,157,198,201,221,69,187,166,25,135,103,148,130,77,56,72,160,231,29,60,93,136,60,186,17,157,224,26,19,111,236,167,5,120,217,245,241,110,184,114,120,203,13,187,192,108,59,177,235,160,250,124,203,235,134,33,153,5,105,81,141,236,77,232,208,204,144,199,143,198,130,220,236,240,144,108,56,249,225,50,125,156,160,140,46,14,113,70,89,95,192,44,205,219,174,70,242,9,252,64,41,136,127,14,91,59,230,82,177,58,167,119,35,131,214,160,172,218,202,236,83,210,237,163,218,121,212,228,200,106,63,190,70,236,143,208,141,8,140,248,160,92,20,247,148,224,37,76,160,63,128,79,244,80,116,153,47,52,45,122,92,97,33,187,18,188,187,126,39,233,88,11,155,35,193,71,124,180,197,133,17,160,25,85,178,234,135,114,1,182,168,156,119,106,168,232,60,178,120,152,77,31,103,183,68,176,20,22,219,189,134,32,165,50,160,98,187,195,190,112,171,213,255,55,156,163,103,212,232,13,95,179,177,190,108,75,124,138,99,108,169,141,34,181,89,132,40,160,236,141,9,44,231,10,145,189,76,194,47,252,201,3,54,168,71,76,58,187,234,204,92,170,16,129,19,201,9,252,167,111,160,94,134,224,129,48,238,42,144,131,125,108,164,40,191,102,9,72,67,171,69,72,214,186,84,235,136,56,254,174,36,102,85,160,12,29,112,110,8,140,75,10,232,209,170,13,137,90,39,141,237,210,207,28,171,97,74,185,109,184,168,73,214,2,132,97,160,120,215,77,127,165,83,158,102,146,107,230,56,68,11,198,176,36,228,75,144,14,147,129,94,157,66,102,203,94,235,152,50,160,231,241,125,247,52,253,228,200,117,85,103,199,195,44,52,233,159,230,145,17,116,183,22,84,70,44,7,13,4,73,185,12,160,252,241,80,73,8,232,87,254,104,121,82,210,107,199,38,5,32,69,99,110,107,145,34,236,192,88,192,231,77,42,82,254,160,148,164,243,224,114,211,36,66,233,174,116,37,91,62,4,42,33,29,237,253,20,170,147,143,98,251,213,226,251,141,47,35,128],[249,2,17,160,45,176,192,131,103,46,125,69,137,220,205,162,24,186,11,196,15,145,109,234,234,157,28,139,241,205,25,120,185,161,244,32,160,243,215,148,180,148,117,204,92,219,123,146,157,35,53,129,153,255,157,198,201,221,69,187,166,25,135,103,148,130,77,56,72,160,231,29,60,93,136,60,186,17,157,224,26,19,111,236,167,5,120,217,245,241,110,184,114,120,203,13,187,192,108,59,177,235,160,250,124,203,235,134,33,153,5,105,81,141,236,77,232,208,204,144,199,143,198,130,220,236,240,144,108,56,249,225,50,125,156,160,140,46,14,113,70,89,95,192,44,205,219,174,70,242,9,252,64,41,136,127,14,91,59,230,82,177,58,167,119,35,131,214,160,79,77,138,162,213,175,43,135,147,0,39,146,132,139,164,75,29,80,80,240,46,196,229,46,240,181,12,101,209,196,168,135,160,63,128,79,244,80,116,153,47,52,45,122,92,97,33,187,18,188,187,126,39,233,88,11,155,35,193,71,124,180,197,133,17,160,25,85,178,234,135,114,1,182,168,156,119,106,168,232,60,178,120,152,77,31,103,183,68,176,20,22,219,189,134,32,165,50,160,98,187,195,190,112,171,213,255,55,156,163,103,212,232,13,95,179,177,190,108,75,124,138,99,108,169,141,34,181,89,132,40,160,236,141,9,44,231,10,145,189,76,194,47,252,201,3,54,168,71,76,58,187,234,204,92,170,16,129,19,201,9,252,167,111,160,94,134,224,129,48,238,42,144,131,125,108,164,40,191,102,9,72,67,171,69,72,214,186,84,235,136,56,254,174,36,102,85,160,12,29,112,110,8,140,75,10,232,209,170,13,137,90,39,141,237,210,207,28,171,97,74,185,109,184,168,73,214,2,132,97,160,120,215,77,127,165,83,158,102,146,107,230,56,68,11,198,176,36,228,75,144,14,147,129,94,157,66,102,203,94,235,152,50,160,231,241,125,247,52,253,228,200,117,85,103,199,195,44,52,233,159,230,145,17,116,183,22,84,70,44,7,13,4,73,185,12,160,252,241,80,73,8,232,87,254,104,121,82,210,107,199,38,5,32,69,99,110,107,145,34,236,192,88,192,231,77,42,82,254,160,148,164,243,224,114,211,36,66,233,174,116,37,91,62,4,42,33,29,237,253,20,170,147,143,98,251,213,226,251,141,47,35,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,15,183,243,178,204,51,243,226,156,83,118,186,53,111,244,184,86,162,50,160,80,51,31,37,45,131,20,4,81,101,184,59,0],[160,119,105,145,26,28,255,104,172,29,56,196,147,18,74,237,221,155,205,28,232,224,103,181,33,197,208,155,85,111,134,7,239,0],[160,92,225,136,53,94,242,130,121,66,180,129,73,62,137,113,39,157,47,250,247,96,6,149,239,75,188,143,101,196,195,187,78,0],[160,85,151,137,123,118,91,216,41,57,24,165,44,206,224,10,128,251,15,164,118,92,242,175,26,146,23,47,248,53,141,243,45,0],[160,113,178,7,198,112,61,173,230,218,153,92,129,115,65,200,18,75,42,113,113,0,135,13,126,36,157,143,191,165,12,184,57,0],[160,150,97,150,145,107,244,44,250,141,13,144,1,251,63,128,74,55,250,54,16,92,128,197,200,49,209,49,16,252,145,189,127,0],[160,180,3,118,75,67,176,172,252,139,202,126,110,34,239,7,208,162,177,131,167,98,103,155,144,44,128,108,157,145,176,204,224,0],[160,124,211,78,76,216,218,242,206,136,237,80,11,208,226,98,129,107,28,16,185,162,195,212,205,11,125,211,165,163,239,231,175,0],[160,130,29,215,22,236,4,11,156,108,115,106,136,51,53,121,214,184,160,196,54,128,75,193,128,154,161,119,20,149,5,21,232,0],[160,146,45,45,22,45,52,140,71,140,247,250,96,51,235,26,223,42,83,220,255,239,12,53,110,80,170,60,222,229,28,97,52,0],[160,203,2,160,252,206,121,237,249,186,209,194,213,35,133,12,39,33,3,246,253,123,180,95,157,81,174,186,226,200,242,200,110,0],[160,144,153,120,51,204,79,203,155,153,155,50,237,6,232,237,62,16,81,226,62,65,150,5,97,185,204,247,105,78,108,30,73,0],[160,104,166,196,84,52,148,177,156,68,148,3,44,152,9,224,132,106,118,130,255,40,142,135,42,44,243,114,125,205,231,149,25,0],[160,248,154,231,202,39,177,133,174,115,235,47,202,138,161,14,214,26,62,87,126,182,63,129,113,207,220,87,195,226,246,142,141,0],[160,228,242,79,113,47,86,57,210,166,108,232,171,242,46,202,5,30,18,243,107,205,250,197,255,34,43,147,69,187,83,93,32,0],[160,172,157,30,140,199,116,163,203,168,186,234,151,25,227,173,114,244,127,84,156,132,152,244,53,138,95,111,218,204,40,168,229,0],[160,143,112,54,254,186,200,164,169,150,135,158,148,96,94,180,28,227,132,131,11,43,26,103,142,67,132,127,76,51,177,105,76,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,119,105,145,26,28,255,104,172,29,56,196,147,18,74,237,221,155,205,28,232,224,103,181,33,197,208,155,85,111,134,7,239,160,92,225,136,53,94,242,130,121,66,180,129,73,62,137,113,39,157,47,250,247,96,6,149,239,75,188,143,101,196,195,187,78,160,85,151,137,123,118,91,216,41,57,24,165,44,206,224,10,128,251,15,164,118,92,242,175,26,146,23,47,248,53,141,243,45,160,113,178,7,198,112,61,173,230,218,153,92,129,115,65,200,18,75,42,113,113,0,135,13,126,36,157,143,191,165,12,184,57,160,150,97,150,145,107,244,44,250,141,13,144,1,251,63,128,74,55,250,54,16,92,128,197,200,49,209,49,16,252,145,189,127,160,180,3,118,75,67,176,172,252,139,202,126,110,34,239,7,208,162,177,131,167,98,103,155,144,44,128,108,157,145,176,204,224,160,124,211,78,76,216,218,242,206,136,237,80,11,208,226,98,129,107,28,16,185,162,195,212,205,11,125,211,165,163,239,231,175,160,130,29,215,22,236,4,11,156,108,115,106,136,51,53,121,214,184,160,196,54,128,75,193,128,154,161,119,20,149,5,21,232,160,146,45,45,22,45,52,140,71,140,247,250,96,51,235,26,223,42,83,220,255,239,12,53,110,80,170,60,222,229,28,97,52,160,203,2,160,252,206,121,237,249,186,209,194,213,35,133,12,39,33,3,246,253,123,180,95,157,81,174,186,226,200,242,200,110,160,144,153,120,51,204,79,203,155,153,155,50,237,6,232,237,62,16,81,226,62,65,150,5,97,185,204,247,105,78,108,30,73,160,104,166,196,84,52,148,177,156,68,148,3,44,152,9,224,132,106,118,130,255,40,142,135,42,44,243,114,125,205,231,149,25,160,248,154,231,202,39,177,133,174,115,235,47,202,138,161,14,214,26,62,87,126,182,63,129,113,207,220,87,195,226,246,142,141,160,228,242,79,113,47,86,57,210,166,108,232,171,242,46,202,5,30,18,243,107,205,250,197,255,34,43,147,69,187,83,93,32,160,172,157,30,140,199,116,163,203,168,186,234,151,25,227,173,114,244,127,84,156,132,152,244,53,138,95,111,218,204,40,168,229,160,143,112,54,254,186,200,164,169,150,135,158,148,96,94,180,28,227,132,131,11,43,26,103,142,67,132,127,76,51,177,105,76,128],[249,2,17,160,119,105,145,26,28,255,104,172,29,56,196,147,18,74,237,221,155,205,28,232,224,103,181,33,197,208,155,85,111,134,7,239,160,92,225,136,53,94,242,130,121,66,180,129,73,62,137,113,39,157,47,250,247,96,6,149,239,75,188,143,101,196,195,187,78,160,85,151,137,123,118,91,216,41,57,24,165,44,206,224,10,128,251,15,164,118,92,242,175,26,146,23,47,248,53,141,243,45,160,113,178,7,198,112,61,173,230,218,153,92,129,115,65,200,18,75,42,113,113,0,135,13,126,36,157,143,191,165,12,184,57,160,150,97,150,145,107,244,44,250,141,13,144,1,251,63,128,74,55,250,54,16,92,128,197,200,49,209,49,16,252,145,189,127,160,180,3,118,75,67,176,172,252,139,202,126,110,34,239,7,208,162,177,131,167,98,103,155,144,44,128,108,157,145,176,204,224,160,124,211,78,76,216,218,242,206,136,237,80,11,208,226,98,129,107,28,16,185,162,195,212,205,11,125,211,165,163,239,231,175,160,130,29,215,22,236,4,11,156,108,115,106,136,51,53,121,214,184,160,196,54,128,75,193,128,154,161,119,20,149,5,21,232,160,146,45,45,22,45,52,140,71,140,247,250,96,51,235,26,223,42,83,220,255,239,12,53,110,80,170,60,222,229,28,97,52,160,203,2,160,252,206,121,237,249,186,209,194,213,35,133,12,39,33,3,246,253,123,180,95,157,81,174,186,226,200,242,200,110,160,144,153,120,51,204,79,203,155,153,155,50,237,6,232,237,62,16,81,226,62,65,150,5,97,185,204,247,105,78,108,30,73,160,104,166,196,84,52,148,177,156,68,148,3,44,152,9,224,132,106,118,130,255,40,142,135,42,44,243,114,125,205,231,149,25,160,248,154,231,202,39,177,133,174,115,235,47,202,138,161,14,214,26,62,87,126,182,63,129,113,207,220,87,195,226,246,142,141,160,228,242,79,113,47,86,57,210,166,108,232,171,242,46,202,5,30,18,243,107,205,250,197,255,34,43,147,69,187,83,93,32,160,172,157,30,140,199,116,163,203,168,186,234,151,25,227,173,114,244,127,84,156,132,152,244,53,138,95,111,218,204,40,168,229,160,15,183,243,178,204,51,243,226,156,83,118,186,53,111,244,184,86,162,50,160,80,51,31,37,45,131,20,4,81,101,184,59,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,40,165,19,116,182,113,29,220,144,115,163,0,178,148,5,239,54,101,153,171,133,217,71,224,180,119,0,129,230,213,248,171,0],[160,193,116,164,149,186,139,97,111,83,15,2,222,56,241,51,234,100,150,157,173,193,182,121,92,234,8,95,213,12,157,17,192,0],[160,216,166,15,171,3,39,222,226,151,7,37,162,160,144,133,85,178,191,100,200,115,78,200,44,121,98,26,36,102,16,63,13,0],[160,211,166,189,180,127,185,152,149,196,69,174,17,106,89,82,206,38,7,121,157,189,138,225,44,244,97,11,67,203,222,95,28,0],[160,8,132,151,143,212,144,55,128,240,33,254,84,188,235,190,202,228,136,21,56,199,56,48,117,146,1,142,149,157,133,5,83,0],[160,18,255,109,243,160,40,236,105,6,205,142,224,96,195,215,117,111,114,130,172,165,161,177,16,77,50,87,191,130,63,166,5,0],[160,255,167,69,108,76,23,221,108,179,56,235,118,27,211,35,161,111,140,1,65,73,52,229,44,150,245,89,151,82,249,13,233,0],[160,176,161,10,73,10,179,102,6,110,102,236,31,50,75,166,185,71,237,244,63,62,215,206,146,88,150,36,85,233,98,84,159,0],[160,44,20,10,64,108,235,119,158,27,72,55,238,236,23,39,243,202,142,236,246,223,215,132,39,236,40,137,220,171,10,12,90,0],[160,118,152,151,239,78,48,94,96,179,196,178,68,169,208,186,255,116,53,99,1,38,74,9,249,245,50,93,83,246,159,187,30,0],[160,6,182,43,29,10,39,36,32,151,111,196,35,45,156,11,119,52,176,126,121,213,195,197,168,25,34,222,162,134,34,147,50,0],[160,144,144,27,145,141,178,127,228,173,79,255,136,206,15,175,150,172,231,184,25,170,28,173,3,136,198,64,255,126,237,174,114,0],[160,245,49,214,101,12,165,166,2,18,138,0,253,65,99,79,84,226,162,107,54,98,115,91,95,146,210,29,232,226,245,54,213,0],[160,221,205,179,159,233,237,236,114,183,219,53,51,166,185,9,228,140,101,58,99,139,26,176,195,76,203,247,163,63,208,137,225,0],[160,232,235,145,5,44,141,250,3,118,7,163,104,71,36,93,160,208,128,111,37,201,73,245,144,25,94,139,202,56,181,10,230,0],[160,198,134,207,135,75,85,16,155,86,254,148,114,254,136,73,45,40,192,26,172,199,51,34,110,157,145,114,195,109,224,200,147,0],[160,106,119,204,239,39,9,55,56,19,152,147,66,136,112,164,162,58,183,50,194,100,25,61,248,48,195,101,179,96,160,123,97,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,193,116,164,149,186,139,97,111,83,15,2,222,56,241,51,234,100,150,157,173,193,182,121,92,234,8,95,213,12,157,17,192,160,216,166,15,171,3,39,222,226,151,7,37,162,160,144,133,85,178,191,100,200,115,78,200,44,121,98,26,36,102,16,63,13,160,211,166,189,180,127,185,152,149,196,69,174,17,106,89,82,206,38,7,121,157,189,138,225,44,244,97,11,67,203,222,95,28,160,8,132,151,143,212,144,55,128,240,33,254,84,188,235,190,202,228,136,21,56,199,56,48,117,146,1,142,149,157,133,5,83,160,18,255,109,243,160,40,236,105,6,205,142,224,96,195,215,117,111,114,130,172,165,161,177,16,77,50,87,191,130,63,166,5,160,255,167,69,108,76,23,221,108,179,56,235,118,27,211,35,161,111,140,1,65,73,52,229,44,150,245,89,151,82,249,13,233,160,176,161,10,73,10,179,102,6,110,102,236,31,50,75,166,185,71,237,244,63,62,215,206,146,88,150,36,85,233,98,84,159,160,44,20,10,64,108,235,119,158,27,72,55,238,236,23,39,243,202,142,236,246,223,215,132,39,236,40,137,220,171,10,12,90,160,118,152,151,239,78,48,94,96,179,196,178,68,169,208,186,255,116,53,99,1,38,74,9,249,245,50,93,83,246,159,187,30,160,6,182,43,29,10,39,36,32,151,111,196,35,45,156,11,119,52,176,126,121,213,195,197,168,25,34,222,162,134,34,147,50,160,144,144,27,145,141,178,127,228,173,79,255,136,206,15,175,150,172,231,184,25,170,28,173,3,136,198,64,255,126,237,174,114,160,245,49,214,101,12,165,166,2,18,138,0,253,65,99,79,84,226,162,107,54,98,115,91,95,146,210,29,232,226,245,54,213,160,221,205,179,159,233,237,236,114,183,219,53,51,166,185,9,228,140,101,58,99,139,26,176,195,76,203,247,163,63,208,137,225,160,232,235,145,5,44,141,250,3,118,7,163,104,71,36,93,160,208,128,111,37,201,73,245,144,25,94,139,202,56,181,10,230,160,198,134,207,135,75,85,16,155,86,254,148,114,254,136,73,45,40,192,26,172,199,51,34,110,157,145,114,195,109,224,200,147,160,106,119,204,239,39,9,55,56,19,152,147,66,136,112,164,162,58,183,50,194,100,25,61,248,48,195,101,179,96,160,123,97,128],[249,2,17,160,40,165,19,116,182,113,29,220,144,115,163,0,178,148,5,239,54,101,153,171,133,217,71,224,180,119,0,129,230,213,248,171,160,216,166,15,171,3,39,222,226,151,7,37,162,160,144,133,85,178,191,100,200,115,78,200,44,121,98,26,36,102,16,63,13,160,211,166,189,180,127,185,152,149,196,69,174,17,106,89,82,206,38,7,121,157,189,138,225,44,244,97,11,67,203,222,95,28,160,8,132,151,143,212,144,55,128,240,33,254,84,188,235,190,202,228,136,21,56,199,56,48,117,146,1,142,149,157,133,5,83,160,18,255,109,243,160,40,236,105,6,205,142,224,96,195,215,117,111,114,130,172,165,161,177,16,77,50,87,191,130,63,166,5,160,255,167,69,108,76,23,221,108,179,56,235,118,27,211,35,161,111,140,1,65,73,52,229,44,150,245,89,151,82,249,13,233,160,176,161,10,73,10,179,102,6,110,102,236,31,50,75,166,185,71,237,244,63,62,215,206,146,88,150,36,85,233,98,84,159,160,44,20,10,64,108,235,119,158,27,72,55,238,236,23,39,243,202,142,236,246,223,215,132,39,236,40,137,220,171,10,12,90,160,118,152,151,239,78,48,94,96,179,196,178,68,169,208,186,255,116,53,99,1,38,74,9,249,245,50,93,83,246,159,187,30,160,6,182,43,29,10,39,36,32,151,111,196,35,45,156,11,119,52,176,126,121,213,195,197,168,25,34,222,162,134,34,147,50,160,144,144,27,145,141,178,127,228,173,79,255,136,206,15,175,150,172,231,184,25,170,28,173,3,136,198,64,255,126,237,174,114,160,245,49,214,101,12,165,166,2,18,138,0,253,65,99,79,84,226,162,107,54,98,115,91,95,146,210,29,232,226,245,54,213,160,221,205,179,159,233,237,236,114,183,219,53,51,166,185,9,228,140,101,58,99,139,26,176,195,76,203,247,163,63,208,137,225,160,232,235,145,5,44,141,250,3,118,7,163,104,71,36,93,160,208,128,111,37,201,73,245,144,25,94,139,202,56,181,10,230,160,198,134,207,135,75,85,16,155,86,254,148,114,254,136,73,45,40,192,26,172,199,51,34,110,157,145,114,195,109,224,200,147,160,106,119,204,239,39,9,55,56,19,152,147,66,136,112,164,162,58,183,50,194,100,25,61,248,48,195,101,179,96,160,123,97,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,31,164,200,215,180,134,129,90,179,248,97,169,48,155,46,223,238,60,139,97,244,183,76,136,241,80,17,154,233,241,64,40,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,37,112,16,199,69,26,213,141,117,15,88,58,234,140,35,212,221,46,9,159,183,156,34,187,200,130,0,49,2,231,49,202,0],[160,252,39,146,218,98,43,100,189,62,16,59,1,123,187,135,8,151,254,116,14,199,80,25,6,25,54,70,113,209,199,72,39,0],[160,205,9,41,43,203,158,199,235,255,74,41,22,216,191,72,3,87,91,58,221,106,67,112,93,211,209,113,221,36,169,105,237,0],[160,222,151,189,27,111,65,240,142,200,49,241,226,166,1,15,178,183,26,35,61,118,249,22,24,122,105,243,84,145,67,123,122,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,132,233,79,11,166,48,68,162,163,147,55,129,108,76,188,16,90,126,123,177,237,78,56,227,61,63,90,64,39,45,33,114,0],[160,25,255,191,193,140,206,89,20,157,212,240,1,70,228,43,244,155,44,106,161,31,169,1,16,80,174,138,52,189,246,172,160,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,248,28,212,113,157,219,28,196,226,90,62,51,115,196,123,226,135,9,162,67,108,99,106,138,39,38,178,178,50,64,89,146,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,70,28,90,76,241,7,217,141,50,238,173,174,99,70,154,199,136,103,233,188,38,197,227,152,134,125,52,249,245,108,147,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,128,128,128,128,160,37,112,16,199,69,26,213,141,117,15,88,58,234,140,35,212,221,46,9,159,183,156,34,187,200,130,0,49,2,231,49,202,160,252,39,146,218,98,43,100,189,62,16,59,1,123,187,135,8,151,254,116,14,199,80,25,6,25,54,70,113,209,199,72,39,160,205,9,41,43,203,158,199,235,255,74,41,22,216,191,72,3,87,91,58,221,106,67,112,93,211,209,113,221,36,169,105,237,160,222,151,189,27,111,65,240,142,200,49,241,226,166,1,15,178,183,26,35,61,118,249,22,24,122,105,243,84,145,67,123,122,128,128,160,132,233,79,11,166,48,68,162,163,147,55,129,108,76,188,16,90,126,123,177,237,78,56,227,61,63,90,64,39,45,33,114,160,25,255,191,193,140,206,89,20,157,212,240,1,70,228,43,244,155,44,106,161,31,169,1,16,80,174,138,52,189,246,172,160,128,160,248,28,212,113,157,219,28,196,226,90,62,51,115,196,123,226,135,9,162,67,108,99,106,138,39,38,178,178,50,64,89,146,128,160,0,70,28,90,76,241,7,217,141,50,238,173,174,99,70,154,199,136,103,233,188,38,197,227,152,134,125,52,249,245,108,147,128],[249,1,17,128,128,128,128,160,37,112,16,199,69,26,213,141,117,15,88,58,234,140,35,212,221,46,9,159,183,156,34,187,200,130,0,49,2,231,49,202,160,31,164,200,215,180,134,129,90,179,248,97,169,48,155,46,223,238,60,139,97,244,183,76,136,241,80,17,154,233,241,64,40,160,205,9,41,43,203,158,199,235,255,74,41,22,216,191,72,3,87,91,58,221,106,67,112,93,211,209,113,221,36,169,105,237,160,222,151,189,27,111,65,240,142,200,49,241,226,166,1,15,178,183,26,35,61,118,249,22,24,122,105,243,84,145,67,123,122,128,128,160,132,233,79,11,166,48,68,162,163,147,55,129,108,76,188,16,90,126,123,177,237,78,56,227,61,63,90,64,39,45,33,114,160,25,255,191,193,140,206,89,20,157,212,240,1,70,228,43,244,155,44,106,161,31,169,1,16,80,174,138,52,189,246,172,160,128,160,248,28,212,113,157,219,28,196,226,90,62,51,115,196,123,226,135,9,162,67,108,99,106,138,39,38,178,178,50,64,89,146,128,160,0,70,28,90,76,241,7,217,141,50,238,173,174,99,70,154,199,136,103,233,188,38,197,227,152,134,125,52,249,245,108,147,128]]},{"start":null,"extension_branch":null,"account":{"address":[80,239,191,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201],"key":[123,53,240,91,158,160,175,159,65,212,107,23,98,208,38,205,150,63,244,2,185,236,246,95,240,224,191,229,27,102,202,231],"list_rlp_bytes":[[248,112],[248,112]],"value_rlp_bytes":[[184,80],[184,80]],"value_list_rlp_bytes":[[248,78],[248,78]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,112]},"storage":null,"values":[[157,59,158,160,175,159,65,212,107,23,98,208,38,205,150,63,244,2,185,236,246,95,240,224,191,229,27,102,202,231,0,0,0,0],[157,59,158,160,175,159,65,212,107,23,98,208,38,205,150,63,244,2,185,236,246,95,240,224,191,229,27,102,202,231,0,0,0,0],[130,18,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[136,33,40,142,198,128,211,61,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,4,183,252,174,26,221,230,182,75,80,209,197,80,56,152,45,108,235,152,89,143,154,237,243,102,137,61,241,164,47,183,180,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[130,18,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[136,33,40,142,198,128,211,61,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,67,218,192,221,242,223,68,248,229,138,64,229,84,61,185,140,89,161,17,69,232,170,101,14,94,173,126,22,21,248,77,204,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,59,158,160,175,159,65,212,107,23,98,208,38,205,150,63,244,2,185,236,246,95,240,224,191,229,27,102,202,231,0,0,0,0]],"keccak_data":[[248,112,157,59,158,160,175,159,65,212,107,23,98,208,38,205,150,63,244,2,185,236,246,95,240,224,191,229,27,102,202,231,184,80,248,78,130,18,138,136,33,40,142,198,128,211,61,32,160,4,183,252,174,26,221,230,182,75,80,209,197,80,56,152,45,108,235,152,89,143,154,237,243,102,137,61,241,164,47,183,180,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,112,157,59,158,160,175,159,65,212,107,23,98,208,38,205,150,63,244,2,185,236,246,95,240,224,191,229,27,102,202,231,184,80,248,78,130,18,138,136,33,40,142,198,128,211,61,32,160,67,218,192,221,242,223,68,248,229,138,64,229,84,61,185,140,89,161,17,69,232,170,101,14,94,173,126,22,21,248,77,204,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[80,239,191,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,1,241],[249,1,241]]}},"account":null,"storage":null,"values":[[160,151,233,154,255,181,3,235,250,138,235,129,254,89,222,12,198,233,148,4,208,215,207,126,186,208,132,108,78,153,204,58,24,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,95,19,17,62,195,21,112,178,91,225,14,194,21,168,35,49,39,107,10,56,101,128,36,217,195,210,193,21,53,154,138,171,0],[160,175,207,89,245,47,173,60,160,122,96,157,127,3,152,102,158,148,184,85,198,206,7,30,222,109,154,230,46,232,107,164,66,0],[160,77,222,225,16,91,179,178,38,17,28,35,5,71,173,167,61,12,115,134,59,229,155,67,40,67,14,182,83,176,172,144,129,0],[160,212,230,233,210,20,158,212,187,111,154,133,199,191,96,226,165,238,48,208,133,144,218,33,187,135,57,230,252,104,125,237,69,0],[160,2,156,243,74,20,163,95,64,180,165,4,61,14,87,32,233,49,232,0,56,137,122,103,112,32,178,181,87,163,181,64,89,0],[160,132,148,140,158,238,164,33,240,153,75,89,38,215,5,210,140,107,228,245,91,112,92,26,86,64,61,88,169,51,116,115,102,0],[160,159,216,124,34,123,240,35,11,182,243,49,236,27,87,228,162,65,65,230,22,206,191,39,137,154,236,246,210,109,101,109,248,0],[160,101,224,124,233,33,17,81,30,51,151,106,92,117,28,16,2,141,82,5,254,162,225,170,235,187,113,144,168,51,14,230,236,0],[160,240,254,112,35,220,39,209,90,66,250,47,216,130,3,191,26,218,215,64,181,193,29,63,232,232,145,115,172,109,200,247,115,0],[160,39,236,191,154,77,8,251,32,175,137,226,76,15,67,143,171,176,132,223,207,254,183,128,232,211,196,249,0,154,160,240,137,0],[160,35,230,98,247,182,254,82,31,143,244,71,131,238,197,72,113,131,137,220,131,129,198,215,222,32,149,235,141,228,116,144,11,0],[160,197,191,41,97,166,131,183,149,180,152,128,185,71,164,0,54,158,86,246,170,86,32,181,124,148,190,125,76,221,201,208,141,0],[160,159,23,20,94,88,209,213,39,109,180,74,34,185,138,194,148,69,95,119,50,93,35,119,35,70,144,55,113,186,190,10,50,0],[160,240,158,127,254,140,2,233,125,227,85,228,153,234,107,39,120,86,114,141,165,236,70,55,34,51,80,214,82,216,72,194,167,0],[160,241,115,8,250,103,6,172,201,8,94,235,232,251,105,76,35,24,123,51,123,228,59,251,178,106,222,112,183,73,64,160,131,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,241,128,160,95,19,17,62,195,21,112,178,91,225,14,194,21,168,35,49,39,107,10,56,101,128,36,217,195,210,193,21,53,154,138,171,160,175,207,89,245,47,173,60,160,122,96,157,127,3,152,102,158,148,184,85,198,206,7,30,222,109,154,230,46,232,107,164,66,160,77,222,225,16,91,179,178,38,17,28,35,5,71,173,167,61,12,115,134,59,229,155,67,40,67,14,182,83,176,172,144,129,160,212,230,233,210,20,158,212,187,111,154,133,199,191,96,226,165,238,48,208,133,144,218,33,187,135,57,230,252,104,125,237,69,160,2,156,243,74,20,163,95,64,180,165,4,61,14,87,32,233,49,232,0,56,137,122,103,112,32,178,181,87,163,181,64,89,160,132,148,140,158,238,164,33,240,153,75,89,38,215,5,210,140,107,228,245,91,112,92,26,86,64,61,88,169,51,116,115,102,160,159,216,124,34,123,240,35,11,182,243,49,236,27,87,228,162,65,65,230,22,206,191,39,137,154,236,246,210,109,101,109,248,160,101,224,124,233,33,17,81,30,51,151,106,92,117,28,16,2,141,82,5,254,162,225,170,235,187,113,144,168,51,14,230,236,160,240,254,112,35,220,39,209,90,66,250,47,216,130,3,191,26,218,215,64,181,193,29,63,232,232,145,115,172,109,200,247,115,160,39,236,191,154,77,8,251,32,175,137,226,76,15,67,143,171,176,132,223,207,254,183,128,232,211,196,249,0,154,160,240,137,160,35,230,98,247,182,254,82,31,143,244,71,131,238,197,72,113,131,137,220,131,129,198,215,222,32,149,235,141,228,116,144,11,160,197,191,41,97,166,131,183,149,180,152,128,185,71,164,0,54,158,86,246,170,86,32,181,124,148,190,125,76,221,201,208,141,160,159,23,20,94,88,209,213,39,109,180,74,34,185,138,194,148,69,95,119,50,93,35,119,35,70,144,55,113,186,190,10,50,160,240,158,127,254,140,2,233,125,227,85,228,153,234,107,39,120,86,114,141,165,236,70,55,34,51,80,214,82,216,72,194,167,160,241,115,8,250,103,6,172,201,8,94,235,232,251,105,76,35,24,123,51,123,228,59,251,178,106,222,112,183,73,64,160,131,128],[249,1,241,128,160,95,19,17,62,195,21,112,178,91,225,14,194,21,168,35,49,39,107,10,56,101,128,36,217,195,210,193,21,53,154,138,171,160,175,207,89,245,47,173,60,160,122,96,157,127,3,152,102,158,148,184,85,198,206,7,30,222,109,154,230,46,232,107,164,66,160,77,222,225,16,91,179,178,38,17,28,35,5,71,173,167,61,12,115,134,59,229,155,67,40,67,14,182,83,176,172,144,129,160,212,230,233,210,20,158,212,187,111,154,133,199,191,96,226,165,238,48,208,133,144,218,33,187,135,57,230,252,104,125,237,69,160,151,233,154,255,181,3,235,250,138,235,129,254,89,222,12,198,233,148,4,208,215,207,126,186,208,132,108,78,153,204,58,24,160,132,148,140,158,238,164,33,240,153,75,89,38,215,5,210,140,107,228,245,91,112,92,26,86,64,61,88,169,51,116,115,102,160,159,216,124,34,123,240,35,11,182,243,49,236,27,87,228,162,65,65,230,22,206,191,39,137,154,236,246,210,109,101,109,248,160,101,224,124,233,33,17,81,30,51,151,106,92,117,28,16,2,141,82,5,254,162,225,170,235,187,113,144,168,51,14,230,236,160,240,254,112,35,220,39,209,90,66,250,47,216,130,3,191,26,218,215,64,181,193,29,63,232,232,145,115,172,109,200,247,115,160,39,236,191,154,77,8,251,32,175,137,226,76,15,67,143,171,176,132,223,207,254,183,128,232,211,196,249,0,154,160,240,137,160,35,230,98,247,182,254,82,31,143,244,71,131,238,197,72,113,131,137,220,131,129,198,215,222,32,149,235,141,228,116,144,11,160,197,191,41,97,166,131,183,149,180,152,128,185,71,164,0,54,158,86,246,170,86,32,181,124,148,190,125,76,221,201,208,141,160,159,23,20,94,88,209,213,39,109,180,74,34,185,138,194,148,69,95,119,50,93,35,119,35,70,144,55,113,186,190,10,50,160,240,158,127,254,140,2,233,125,227,85,228,153,234,107,39,120,86,114,141,165,236,70,55,34,51,80,214,82,216,72,194,167,160,241,115,8,250,103,6,172,201,8,94,235,232,251,105,76,35,24,123,51,123,228,59,251,178,106,222,112,183,73,64,160,131,128]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[true,false],"extension":{"list_rlp_bytes":[226]},"branch":{"modified_index":14,"drifted_index":6,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,135,117,154,48,1,221,143,224,133,179,90,254,130,41,47,5,101,84,204,111,220,62,215,253,155,107,212,69,138,221,91,174,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,29,143,36,49,6,106,55,88,195,10,34,208,147,134,155,181,100,142,66,21,255,171,228,168,85,11,239,170,233,241,171,242,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,135,117,154,48,1,221,143,224,133,179,90,254,130,41,47,5,101,84,204,111,220,62,215,253,155,107,212,69,138,221,91,174,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,30,252,7,160,150,158,68,221,229,48,73,181,91,223,120,156,43,93,5,199,95,184,42,20,87,178,65,243,228,156,123,174,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,30,252,7,160,150,158,68,221,229,48,73,181,91,223,120,156,43,93,5,199,95,184,42,20,87,178,65,243,228,156,123,174,0]],"keccak_data":[[248,81,128,128,128,128,128,128,160,29,143,36,49,6,106,55,88,195,10,34,208,147,134,155,181,100,142,66,21,255,171,228,168,85,11,239,170,233,241,171,242,128,128,128,128,128,128,128,160,135,117,154,48,1,221,143,224,133,179,90,254,130,41,47,5,101,84,204,111,220,62,215,253,155,107,212,69,138,221,91,174,128,128],[248,81,128,128,128,128,128,128,160,29,143,36,49,6,106,55,88,195,10,34,208,147,134,155,181,100,142,66,21,255,171,228,168,85,11,239,170,233,241,171,242,128,128,128,128,128,128,128,160,135,117,154,48,1,221,143,224,133,179,90,254,130,41,47,5,101,84,204,111,220,62,215,253,155,107,212,69,138,221,91,174,128,128],[226,30,160,30,252,7,160,150,158,68,221,229,48,73,181,91,223,120,156,43,93,5,199,95,184,42,20,87,178,65,243,228,156,123,174],[226,30,160,30,252,7,160,150,158,68,221,229,48,73,181,91,223,120,156,43,93,5,199,95,184,42,20,87,178,65,243,228,156,123,174]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24],"key":[94,234,134,125,75,134,189,115,81,70,174,143,11,63,23,72,49,75,47,165,136,244,176,0,109,24,198,250,226,255,32,16],"list_rlp_bytes":[[226],[225]],"value_rlp_bytes":[[30],[17]],"drifted_rlp_bytes":[225],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,62,102,91,73,41,246,40,51,138,212,183,115,140,93,166,226,13,233,58,214,43,57,192,130,99,177,83,39,171,163,18,65,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,58,134,125,75,134,189,115,81,70,174,143,11,63,23,72,49,75,47,165,136,244,176,0,109,24,198,250,226,255,32,16,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,54,91,73,41,246,40,51,138,212,183,115,140,93,166,226,13,233,58,214,43,57,192,130,99,177,83,39,171,163,18,65,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[226,160,62,102,91,73,41,246,40,51,138,212,183,115,140,93,166,226,13,233,58,214,43,57,192,130,99,177,83,39,171,163,18,65,30],[225,159,58,134,125,75,134,189,115,81,70,174,143,11,63,23,72,49,75,47,165,136,244,176,0,109,24,198,250,226,255,32,16,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24],[225,159,54,91,73,41,246,40,51,138,212,183,115,140,93,166,226,13,233,58,214,43,57,192,130,99,177,83,39,171,163,18,65,30]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ExtensionAddedOneKeyByteSel2.json b/zkevm-circuits/src/mpt_circuit/tests/ExtensionAddedOneKeyByteSel2.json new file mode 100644 index 0000000000..324a72a6d6 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ExtensionAddedOneKeyByteSel2.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,174,132,26,69,177,212,101,77,55,204,9,139,152,191,154,11,142,254,244,67,215,169,205,76,212,164,77,167,201,199,8,205,0],[160,237,181,17,249,133,184,134,43,204,9,6,91,182,53,163,99,76,92,114,152,165,50,46,53,145,22,58,193,26,63,137,14,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,150,125,57,200,112,153,61,96,166,233,218,212,94,122,185,113,158,218,209,213,193,143,194,175,41,215,148,69,33,146,220,196,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,3,243,139,62,247,35,75,68,90,25,55,26,32,63,139,71,20,82,64,180,226,164,111,22,4,227,228,207,100,121,73,107,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,3,243,139,62,247,35,75,68,90,25,55,26,32,63,139,71,20,82,64,180,226,164,111,22,4,227,228,207,100,121,73,107,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,150,125,57,200,112,153,61,96,166,233,218,212,94,122,185,113,158,218,209,213,193,143,194,175,41,215,148,69,33,146,220,196,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,106,242,5,38,31,253,141,35,224,196,187,144,99,149,71,19,17,54,217,33,29,212,144,59,122,247,203,136,229,226,235,116,0],[160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,0],[160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,0],[160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,0],[160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,0],[160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,0],[160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,0],[160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,0],[160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,0],[160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,0],[160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,0],[160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,0],[160,128,173,60,145,248,253,133,144,179,124,61,33,232,140,5,252,151,234,86,121,34,249,8,121,154,121,230,147,181,238,80,169,0],[160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,0],[160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,0],[160,229,116,166,232,36,68,117,127,11,27,223,144,116,50,204,138,246,36,42,29,34,25,183,229,244,117,233,248,136,137,23,69,0],[160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,160,128,173,60,145,248,253,133,144,179,124,61,33,232,140,5,252,151,234,86,121,34,249,8,121,154,121,230,147,181,238,80,169,160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,160,229,116,166,232,36,68,117,127,11,27,223,144,116,50,204,138,246,36,42,29,34,25,183,229,244,117,233,248,136,137,23,69,160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,128],[249,2,17,160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,160,128,173,60,145,248,253,133,144,179,124,61,33,232,140,5,252,151,234,86,121,34,249,8,121,154,121,230,147,181,238,80,169,160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,160,106,242,5,38,31,253,141,35,224,196,187,144,99,149,71,19,17,54,217,33,29,212,144,59,122,247,203,136,229,226,235,116,160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,156,25,225,169,107,189,160,233,13,142,255,213,71,75,138,172,51,226,207,172,72,224,213,74,8,44,92,255,131,133,242,39,0],[160,80,75,215,208,193,159,84,57,71,243,7,14,204,100,148,205,208,55,165,27,88,145,87,12,99,158,158,182,197,55,33,95,0],[160,76,180,250,234,22,207,36,13,201,139,0,120,72,139,180,238,156,185,62,97,200,44,188,159,187,99,106,94,147,15,25,20,0],[160,189,17,169,103,34,213,240,167,18,182,246,233,129,88,212,80,113,250,13,189,211,144,206,169,179,25,180,70,188,155,55,32,0],[160,32,220,255,83,236,6,9,125,247,185,224,139,47,190,49,98,219,131,56,50,131,152,150,81,107,126,7,163,202,127,91,164,0],[160,185,211,148,32,33,143,139,118,55,225,47,134,141,134,35,28,209,179,72,57,247,141,152,65,38,141,179,61,214,174,204,14,0],[160,107,106,58,227,233,173,248,116,152,133,228,250,245,205,196,226,135,107,65,132,233,139,78,59,136,248,255,241,150,83,160,5,0],[160,0,164,180,172,120,195,134,123,28,39,200,127,136,82,33,245,97,141,28,111,0,184,5,98,102,230,66,116,77,224,101,219,0],[160,248,105,172,225,53,1,157,135,194,244,188,254,17,122,124,197,196,99,49,56,111,8,165,230,145,108,189,38,207,45,75,50,0],[160,35,73,222,234,130,172,207,150,15,218,253,15,36,223,217,31,215,79,14,171,224,221,215,51,242,239,84,255,134,147,216,166,0],[160,240,32,244,239,11,87,72,174,41,33,118,196,147,56,102,122,208,41,160,96,186,168,111,141,93,215,31,104,139,17,215,242,0],[160,82,199,196,167,58,157,107,196,36,170,39,205,176,246,208,56,210,163,200,208,226,179,109,60,35,248,244,49,8,254,178,170,0],[160,195,207,48,79,172,39,95,167,81,154,34,163,202,180,5,49,137,67,208,50,119,42,111,96,24,20,184,190,103,70,86,156,0],[160,255,250,210,54,157,254,43,240,80,48,249,200,142,240,27,109,12,250,107,172,243,192,36,2,224,146,228,178,151,220,187,84,0],[160,231,83,108,124,37,12,66,134,242,2,97,130,128,110,222,91,65,238,211,219,127,83,155,247,57,160,84,71,36,68,143,249,0],[160,49,132,199,94,225,34,198,225,84,182,131,124,126,81,66,197,238,228,144,216,66,221,170,150,141,52,23,177,9,14,164,218,0],[160,119,192,211,22,95,58,240,144,240,37,172,65,97,91,255,225,107,12,151,189,7,88,0,51,192,124,155,194,253,5,143,142,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,80,75,215,208,193,159,84,57,71,243,7,14,204,100,148,205,208,55,165,27,88,145,87,12,99,158,158,182,197,55,33,95,160,76,180,250,234,22,207,36,13,201,139,0,120,72,139,180,238,156,185,62,97,200,44,188,159,187,99,106,94,147,15,25,20,160,189,17,169,103,34,213,240,167,18,182,246,233,129,88,212,80,113,250,13,189,211,144,206,169,179,25,180,70,188,155,55,32,160,32,220,255,83,236,6,9,125,247,185,224,139,47,190,49,98,219,131,56,50,131,152,150,81,107,126,7,163,202,127,91,164,160,185,211,148,32,33,143,139,118,55,225,47,134,141,134,35,28,209,179,72,57,247,141,152,65,38,141,179,61,214,174,204,14,160,107,106,58,227,233,173,248,116,152,133,228,250,245,205,196,226,135,107,65,132,233,139,78,59,136,248,255,241,150,83,160,5,160,0,164,180,172,120,195,134,123,28,39,200,127,136,82,33,245,97,141,28,111,0,184,5,98,102,230,66,116,77,224,101,219,160,248,105,172,225,53,1,157,135,194,244,188,254,17,122,124,197,196,99,49,56,111,8,165,230,145,108,189,38,207,45,75,50,160,35,73,222,234,130,172,207,150,15,218,253,15,36,223,217,31,215,79,14,171,224,221,215,51,242,239,84,255,134,147,216,166,160,240,32,244,239,11,87,72,174,41,33,118,196,147,56,102,122,208,41,160,96,186,168,111,141,93,215,31,104,139,17,215,242,160,82,199,196,167,58,157,107,196,36,170,39,205,176,246,208,56,210,163,200,208,226,179,109,60,35,248,244,49,8,254,178,170,160,195,207,48,79,172,39,95,167,81,154,34,163,202,180,5,49,137,67,208,50,119,42,111,96,24,20,184,190,103,70,86,156,160,255,250,210,54,157,254,43,240,80,48,249,200,142,240,27,109,12,250,107,172,243,192,36,2,224,146,228,178,151,220,187,84,160,231,83,108,124,37,12,66,134,242,2,97,130,128,110,222,91,65,238,211,219,127,83,155,247,57,160,84,71,36,68,143,249,160,49,132,199,94,225,34,198,225,84,182,131,124,126,81,66,197,238,228,144,216,66,221,170,150,141,52,23,177,9,14,164,218,160,119,192,211,22,95,58,240,144,240,37,172,65,97,91,255,225,107,12,151,189,7,88,0,51,192,124,155,194,253,5,143,142,128],[249,2,17,160,80,75,215,208,193,159,84,57,71,243,7,14,204,100,148,205,208,55,165,27,88,145,87,12,99,158,158,182,197,55,33,95,160,76,180,250,234,22,207,36,13,201,139,0,120,72,139,180,238,156,185,62,97,200,44,188,159,187,99,106,94,147,15,25,20,160,189,17,169,103,34,213,240,167,18,182,246,233,129,88,212,80,113,250,13,189,211,144,206,169,179,25,180,70,188,155,55,32,160,32,220,255,83,236,6,9,125,247,185,224,139,47,190,49,98,219,131,56,50,131,152,150,81,107,126,7,163,202,127,91,164,160,185,211,148,32,33,143,139,118,55,225,47,134,141,134,35,28,209,179,72,57,247,141,152,65,38,141,179,61,214,174,204,14,160,107,106,58,227,233,173,248,116,152,133,228,250,245,205,196,226,135,107,65,132,233,139,78,59,136,248,255,241,150,83,160,5,160,0,164,180,172,120,195,134,123,28,39,200,127,136,82,33,245,97,141,28,111,0,184,5,98,102,230,66,116,77,224,101,219,160,248,105,172,225,53,1,157,135,194,244,188,254,17,122,124,197,196,99,49,56,111,8,165,230,145,108,189,38,207,45,75,50,160,35,73,222,234,130,172,207,150,15,218,253,15,36,223,217,31,215,79,14,171,224,221,215,51,242,239,84,255,134,147,216,166,160,240,32,244,239,11,87,72,174,41,33,118,196,147,56,102,122,208,41,160,96,186,168,111,141,93,215,31,104,139,17,215,242,160,82,199,196,167,58,157,107,196,36,170,39,205,176,246,208,56,210,163,200,208,226,179,109,60,35,248,244,49,8,254,178,170,160,156,25,225,169,107,189,160,233,13,142,255,213,71,75,138,172,51,226,207,172,72,224,213,74,8,44,92,255,131,133,242,39,160,255,250,210,54,157,254,43,240,80,48,249,200,142,240,27,109,12,250,107,172,243,192,36,2,224,146,228,178,151,220,187,84,160,231,83,108,124,37,12,66,134,242,2,97,130,128,110,222,91,65,238,211,219,127,83,155,247,57,160,84,71,36,68,143,249,160,49,132,199,94,225,34,198,225,84,182,131,124,126,81,66,197,238,228,144,216,66,221,170,150,141,52,23,177,9,14,164,218,160,119,192,211,22,95,58,240,144,240,37,172,65,97,91,255,225,107,12,151,189,7,88,0,51,192,124,155,194,253,5,143,142,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,115,34,99,214,216,197,172,119,196,186,187,4,78,22,169,165,197,33,160,9,104,47,157,10,94,180,120,135,225,67,3,170,0],[160,135,19,64,207,217,223,201,245,3,114,121,32,66,43,57,133,252,55,82,116,223,71,100,149,122,243,45,28,63,150,204,110,0],[160,210,120,212,210,151,79,221,51,232,80,80,186,46,159,194,233,203,46,201,120,35,213,101,124,0,8,177,219,68,14,121,240,0],[160,7,114,2,237,174,156,12,217,41,80,207,22,255,39,79,29,172,209,87,195,37,188,55,186,206,78,97,11,87,224,72,236,0],[160,22,29,249,121,177,221,199,134,231,204,178,150,90,71,228,195,117,255,255,223,21,95,194,251,151,149,22,131,234,12,148,141,0],[160,154,130,254,249,64,180,76,29,52,23,185,183,92,39,79,57,58,81,220,159,7,224,15,179,212,252,51,109,150,166,138,123,0],[160,191,184,181,142,36,247,244,175,48,46,160,172,131,40,126,16,142,50,208,215,51,119,231,93,236,238,227,222,169,47,110,125,0],[160,63,16,188,230,177,90,174,250,172,232,195,227,33,146,180,160,216,2,248,221,210,179,93,60,27,200,22,229,211,119,190,115,0],[160,80,169,72,7,111,38,252,152,196,226,100,158,203,171,120,48,167,72,182,102,81,148,30,28,27,89,56,29,218,198,224,85,0],[160,178,157,0,28,65,106,227,88,84,22,69,42,75,101,149,62,86,45,11,59,216,93,0,97,209,124,70,114,145,152,73,213,0],[160,80,176,142,247,234,92,148,168,17,76,79,72,211,136,9,251,173,156,52,47,222,75,47,99,175,39,37,242,43,103,246,104,0],[160,220,42,251,8,22,8,115,225,127,17,184,13,248,242,7,12,82,192,44,74,62,147,117,10,57,158,59,179,221,195,212,185,0],[160,73,210,235,92,4,27,119,189,211,244,21,130,213,183,166,10,118,148,51,106,35,39,41,16,212,32,33,30,232,202,253,127,0],[160,45,234,125,167,138,171,111,217,200,71,109,44,151,79,202,136,227,21,63,196,251,135,189,172,157,97,199,5,92,103,113,208,0],[160,32,136,102,148,196,136,37,163,51,96,178,15,175,37,129,190,72,46,102,165,57,108,199,41,1,153,217,87,99,246,185,134,0],[160,195,142,65,38,53,73,58,93,254,20,214,13,99,184,121,102,237,111,202,60,113,233,229,157,72,243,233,231,38,188,161,198,0],[160,29,13,42,118,4,81,208,108,222,61,121,232,127,152,172,231,68,36,11,214,122,155,128,182,146,21,101,238,226,237,167,149,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,135,19,64,207,217,223,201,245,3,114,121,32,66,43,57,133,252,55,82,116,223,71,100,149,122,243,45,28,63,150,204,110,160,210,120,212,210,151,79,221,51,232,80,80,186,46,159,194,233,203,46,201,120,35,213,101,124,0,8,177,219,68,14,121,240,160,7,114,2,237,174,156,12,217,41,80,207,22,255,39,79,29,172,209,87,195,37,188,55,186,206,78,97,11,87,224,72,236,160,22,29,249,121,177,221,199,134,231,204,178,150,90,71,228,195,117,255,255,223,21,95,194,251,151,149,22,131,234,12,148,141,160,154,130,254,249,64,180,76,29,52,23,185,183,92,39,79,57,58,81,220,159,7,224,15,179,212,252,51,109,150,166,138,123,160,191,184,181,142,36,247,244,175,48,46,160,172,131,40,126,16,142,50,208,215,51,119,231,93,236,238,227,222,169,47,110,125,160,63,16,188,230,177,90,174,250,172,232,195,227,33,146,180,160,216,2,248,221,210,179,93,60,27,200,22,229,211,119,190,115,160,80,169,72,7,111,38,252,152,196,226,100,158,203,171,120,48,167,72,182,102,81,148,30,28,27,89,56,29,218,198,224,85,160,178,157,0,28,65,106,227,88,84,22,69,42,75,101,149,62,86,45,11,59,216,93,0,97,209,124,70,114,145,152,73,213,160,80,176,142,247,234,92,148,168,17,76,79,72,211,136,9,251,173,156,52,47,222,75,47,99,175,39,37,242,43,103,246,104,160,220,42,251,8,22,8,115,225,127,17,184,13,248,242,7,12,82,192,44,74,62,147,117,10,57,158,59,179,221,195,212,185,160,73,210,235,92,4,27,119,189,211,244,21,130,213,183,166,10,118,148,51,106,35,39,41,16,212,32,33,30,232,202,253,127,160,45,234,125,167,138,171,111,217,200,71,109,44,151,79,202,136,227,21,63,196,251,135,189,172,157,97,199,5,92,103,113,208,160,32,136,102,148,196,136,37,163,51,96,178,15,175,37,129,190,72,46,102,165,57,108,199,41,1,153,217,87,99,246,185,134,160,195,142,65,38,53,73,58,93,254,20,214,13,99,184,121,102,237,111,202,60,113,233,229,157,72,243,233,231,38,188,161,198,160,29,13,42,118,4,81,208,108,222,61,121,232,127,152,172,231,68,36,11,214,122,155,128,182,146,21,101,238,226,237,167,149,128],[249,2,17,160,135,19,64,207,217,223,201,245,3,114,121,32,66,43,57,133,252,55,82,116,223,71,100,149,122,243,45,28,63,150,204,110,160,210,120,212,210,151,79,221,51,232,80,80,186,46,159,194,233,203,46,201,120,35,213,101,124,0,8,177,219,68,14,121,240,160,7,114,2,237,174,156,12,217,41,80,207,22,255,39,79,29,172,209,87,195,37,188,55,186,206,78,97,11,87,224,72,236,160,22,29,249,121,177,221,199,134,231,204,178,150,90,71,228,195,117,255,255,223,21,95,194,251,151,149,22,131,234,12,148,141,160,154,130,254,249,64,180,76,29,52,23,185,183,92,39,79,57,58,81,220,159,7,224,15,179,212,252,51,109,150,166,138,123,160,191,184,181,142,36,247,244,175,48,46,160,172,131,40,126,16,142,50,208,215,51,119,231,93,236,238,227,222,169,47,110,125,160,63,16,188,230,177,90,174,250,172,232,195,227,33,146,180,160,216,2,248,221,210,179,93,60,27,200,22,229,211,119,190,115,160,115,34,99,214,216,197,172,119,196,186,187,4,78,22,169,165,197,33,160,9,104,47,157,10,94,180,120,135,225,67,3,170,160,178,157,0,28,65,106,227,88,84,22,69,42,75,101,149,62,86,45,11,59,216,93,0,97,209,124,70,114,145,152,73,213,160,80,176,142,247,234,92,148,168,17,76,79,72,211,136,9,251,173,156,52,47,222,75,47,99,175,39,37,242,43,103,246,104,160,220,42,251,8,22,8,115,225,127,17,184,13,248,242,7,12,82,192,44,74,62,147,117,10,57,158,59,179,221,195,212,185,160,73,210,235,92,4,27,119,189,211,244,21,130,213,183,166,10,118,148,51,106,35,39,41,16,212,32,33,30,232,202,253,127,160,45,234,125,167,138,171,111,217,200,71,109,44,151,79,202,136,227,21,63,196,251,135,189,172,157,97,199,5,92,103,113,208,160,32,136,102,148,196,136,37,163,51,96,178,15,175,37,129,190,72,46,102,165,57,108,199,41,1,153,217,87,99,246,185,134,160,195,142,65,38,53,73,58,93,254,20,214,13,99,184,121,102,237,111,202,60,113,233,229,157,72,243,233,231,38,188,161,198,160,29,13,42,118,4,81,208,108,222,61,121,232,127,152,172,231,68,36,11,214,122,155,128,182,146,21,101,238,226,237,167,149,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,62,75,235,52,149,255,237,64,105,193,43,180,174,211,248,234,232,83,18,225,170,130,85,253,29,86,161,152,233,223,104,129,0],[160,133,167,189,133,123,193,191,222,89,216,35,78,93,7,66,131,149,42,249,152,66,106,244,232,140,225,53,159,56,146,232,23,0],[160,252,122,28,104,215,195,210,194,90,68,41,241,5,233,121,31,111,39,40,44,8,54,98,144,203,206,196,168,223,212,246,221,0],[160,108,140,134,51,36,35,162,155,179,219,212,248,1,165,39,162,65,235,79,21,5,180,1,119,15,51,58,169,249,106,94,169,0],[160,254,76,95,71,155,26,54,113,106,54,108,164,206,63,247,247,91,164,234,52,148,14,43,211,132,137,64,194,118,82,194,177,0],[160,14,185,41,78,52,126,90,218,79,124,126,55,116,181,121,241,185,238,44,135,0,49,233,24,87,231,76,225,31,130,200,18,0],[160,184,203,50,205,70,164,135,3,71,89,95,190,248,113,62,67,78,182,14,228,178,180,2,161,165,175,67,60,73,23,173,123,0],[160,144,195,48,89,145,149,182,147,85,15,69,184,79,146,224,36,71,69,131,22,233,191,131,250,24,98,82,185,178,33,37,178,0],[160,103,13,127,211,234,63,148,126,213,126,127,233,179,188,239,177,163,141,165,207,149,48,253,223,158,89,76,162,21,6,208,123,0],[160,60,30,137,167,221,156,12,2,111,77,132,147,40,151,60,202,47,85,195,64,141,50,215,66,51,129,199,36,184,203,150,136,0],[160,47,92,105,177,160,255,212,105,132,109,28,120,118,228,101,197,3,61,151,81,126,86,140,26,92,137,116,150,66,142,148,133,0],[160,188,123,142,119,144,241,30,96,104,247,77,149,203,234,218,50,166,117,17,238,216,103,24,146,142,202,126,58,34,229,213,98,0],[160,182,101,141,10,149,160,6,206,69,66,191,165,2,250,230,114,147,124,159,211,25,221,164,99,91,6,8,253,40,42,53,136,0],[160,10,81,148,85,182,179,4,213,104,8,18,186,104,176,241,146,55,220,243,205,207,90,175,2,120,133,99,27,67,103,37,137,0],[160,92,135,250,214,119,219,245,233,65,207,198,41,62,154,6,183,119,86,175,138,217,145,8,75,217,202,166,21,201,199,183,160,0],[160,178,118,164,136,184,196,235,68,1,208,226,214,129,93,154,28,118,79,39,37,41,21,31,157,175,140,26,16,206,117,245,161,0],[160,166,122,17,151,156,67,20,33,110,157,14,75,253,205,253,90,57,76,61,99,70,105,124,243,136,52,164,181,121,236,236,70,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,133,167,189,133,123,193,191,222,89,216,35,78,93,7,66,131,149,42,249,152,66,106,244,232,140,225,53,159,56,146,232,23,160,252,122,28,104,215,195,210,194,90,68,41,241,5,233,121,31,111,39,40,44,8,54,98,144,203,206,196,168,223,212,246,221,160,108,140,134,51,36,35,162,155,179,219,212,248,1,165,39,162,65,235,79,21,5,180,1,119,15,51,58,169,249,106,94,169,160,254,76,95,71,155,26,54,113,106,54,108,164,206,63,247,247,91,164,234,52,148,14,43,211,132,137,64,194,118,82,194,177,160,14,185,41,78,52,126,90,218,79,124,126,55,116,181,121,241,185,238,44,135,0,49,233,24,87,231,76,225,31,130,200,18,160,184,203,50,205,70,164,135,3,71,89,95,190,248,113,62,67,78,182,14,228,178,180,2,161,165,175,67,60,73,23,173,123,160,144,195,48,89,145,149,182,147,85,15,69,184,79,146,224,36,71,69,131,22,233,191,131,250,24,98,82,185,178,33,37,178,160,103,13,127,211,234,63,148,126,213,126,127,233,179,188,239,177,163,141,165,207,149,48,253,223,158,89,76,162,21,6,208,123,160,60,30,137,167,221,156,12,2,111,77,132,147,40,151,60,202,47,85,195,64,141,50,215,66,51,129,199,36,184,203,150,136,160,47,92,105,177,160,255,212,105,132,109,28,120,118,228,101,197,3,61,151,81,126,86,140,26,92,137,116,150,66,142,148,133,160,188,123,142,119,144,241,30,96,104,247,77,149,203,234,218,50,166,117,17,238,216,103,24,146,142,202,126,58,34,229,213,98,160,182,101,141,10,149,160,6,206,69,66,191,165,2,250,230,114,147,124,159,211,25,221,164,99,91,6,8,253,40,42,53,136,160,10,81,148,85,182,179,4,213,104,8,18,186,104,176,241,146,55,220,243,205,207,90,175,2,120,133,99,27,67,103,37,137,160,92,135,250,214,119,219,245,233,65,207,198,41,62,154,6,183,119,86,175,138,217,145,8,75,217,202,166,21,201,199,183,160,160,178,118,164,136,184,196,235,68,1,208,226,214,129,93,154,28,118,79,39,37,41,21,31,157,175,140,26,16,206,117,245,161,160,166,122,17,151,156,67,20,33,110,157,14,75,253,205,253,90,57,76,61,99,70,105,124,243,136,52,164,181,121,236,236,70,128],[249,2,17,160,133,167,189,133,123,193,191,222,89,216,35,78,93,7,66,131,149,42,249,152,66,106,244,232,140,225,53,159,56,146,232,23,160,252,122,28,104,215,195,210,194,90,68,41,241,5,233,121,31,111,39,40,44,8,54,98,144,203,206,196,168,223,212,246,221,160,108,140,134,51,36,35,162,155,179,219,212,248,1,165,39,162,65,235,79,21,5,180,1,119,15,51,58,169,249,106,94,169,160,254,76,95,71,155,26,54,113,106,54,108,164,206,63,247,247,91,164,234,52,148,14,43,211,132,137,64,194,118,82,194,177,160,14,185,41,78,52,126,90,218,79,124,126,55,116,181,121,241,185,238,44,135,0,49,233,24,87,231,76,225,31,130,200,18,160,184,203,50,205,70,164,135,3,71,89,95,190,248,113,62,67,78,182,14,228,178,180,2,161,165,175,67,60,73,23,173,123,160,144,195,48,89,145,149,182,147,85,15,69,184,79,146,224,36,71,69,131,22,233,191,131,250,24,98,82,185,178,33,37,178,160,103,13,127,211,234,63,148,126,213,126,127,233,179,188,239,177,163,141,165,207,149,48,253,223,158,89,76,162,21,6,208,123,160,60,30,137,167,221,156,12,2,111,77,132,147,40,151,60,202,47,85,195,64,141,50,215,66,51,129,199,36,184,203,150,136,160,47,92,105,177,160,255,212,105,132,109,28,120,118,228,101,197,3,61,151,81,126,86,140,26,92,137,116,150,66,142,148,133,160,188,123,142,119,144,241,30,96,104,247,77,149,203,234,218,50,166,117,17,238,216,103,24,146,142,202,126,58,34,229,213,98,160,62,75,235,52,149,255,237,64,105,193,43,180,174,211,248,234,232,83,18,225,170,130,85,253,29,86,161,152,233,223,104,129,160,10,81,148,85,182,179,4,213,104,8,18,186,104,176,241,146,55,220,243,205,207,90,175,2,120,133,99,27,67,103,37,137,160,92,135,250,214,119,219,245,233,65,207,198,41,62,154,6,183,119,86,175,138,217,145,8,75,217,202,166,21,201,199,183,160,160,178,118,164,136,184,196,235,68,1,208,226,214,129,93,154,28,118,79,39,37,41,21,31,157,175,140,26,16,206,117,245,161,160,166,122,17,151,156,67,20,33,110,157,14,75,253,205,253,90,57,76,61,99,70,105,124,243,136,52,164,181,121,236,236,70,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,167,239,49,141,255,145,86,21,48,4,58,80,80,197,28,19,39,58,75,123,74,70,205,189,154,55,116,21,10,179,111,223,0],[160,148,96,233,169,14,90,134,113,124,248,170,233,105,200,185,209,37,170,23,12,53,121,255,207,171,140,58,155,240,245,176,148,0],[160,44,47,217,201,92,122,132,137,66,226,149,169,177,49,235,62,79,6,38,116,120,55,195,24,55,197,51,169,64,4,70,173,0],[160,239,47,98,216,238,2,166,46,89,15,56,7,5,196,196,62,67,249,253,235,20,235,102,134,142,200,26,17,214,152,1,145,0],[160,197,17,178,32,200,66,202,234,188,218,127,181,8,17,4,30,61,47,57,234,58,255,120,204,181,237,168,202,28,76,105,234,0],[160,63,229,58,247,19,93,67,185,34,164,106,81,163,92,222,25,161,27,40,212,121,191,185,203,236,130,187,73,151,69,189,185,0],[160,254,144,109,156,81,221,79,66,253,183,145,54,58,41,16,116,249,56,61,32,1,181,98,101,217,110,246,137,185,35,129,215,0],[160,42,32,250,190,187,193,176,158,238,99,10,152,135,244,177,201,170,90,140,94,31,244,155,240,210,136,149,233,93,37,48,191,0],[160,165,41,21,128,48,15,0,199,234,237,92,114,105,217,59,44,6,66,33,201,179,86,145,135,218,235,130,85,158,29,191,225,0],[160,81,76,82,36,53,180,76,100,114,1,16,17,231,143,16,128,224,130,54,29,129,30,175,141,192,31,129,54,103,40,235,30,0],[160,91,241,99,220,108,63,125,225,150,80,223,253,107,254,87,177,201,91,21,251,24,233,244,246,13,134,68,64,146,212,100,133,0],[160,236,116,61,181,70,202,25,127,58,207,72,50,66,207,22,152,197,203,167,193,92,102,153,213,59,137,65,153,49,136,57,215,0],[160,216,2,120,95,255,84,108,99,100,122,21,213,206,229,80,63,183,191,6,12,87,234,21,174,229,146,63,113,77,198,240,39,0],[160,190,218,104,114,65,143,16,76,171,187,221,133,224,217,179,164,222,126,10,33,35,71,63,53,163,111,199,211,228,164,124,223,0],[160,213,170,112,202,127,64,210,139,189,213,55,20,144,252,240,46,126,109,109,74,135,136,15,128,192,99,16,67,173,97,168,61,0],[160,147,75,172,163,178,143,148,112,133,47,43,229,251,14,130,192,253,59,110,111,147,43,65,57,213,172,199,179,154,184,206,56,0],[160,164,223,28,174,107,173,96,167,56,249,242,213,153,166,239,188,30,37,226,19,250,193,152,99,72,192,45,227,39,220,80,199,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,148,96,233,169,14,90,134,113,124,248,170,233,105,200,185,209,37,170,23,12,53,121,255,207,171,140,58,155,240,245,176,148,160,44,47,217,201,92,122,132,137,66,226,149,169,177,49,235,62,79,6,38,116,120,55,195,24,55,197,51,169,64,4,70,173,160,239,47,98,216,238,2,166,46,89,15,56,7,5,196,196,62,67,249,253,235,20,235,102,134,142,200,26,17,214,152,1,145,160,197,17,178,32,200,66,202,234,188,218,127,181,8,17,4,30,61,47,57,234,58,255,120,204,181,237,168,202,28,76,105,234,160,63,229,58,247,19,93,67,185,34,164,106,81,163,92,222,25,161,27,40,212,121,191,185,203,236,130,187,73,151,69,189,185,160,254,144,109,156,81,221,79,66,253,183,145,54,58,41,16,116,249,56,61,32,1,181,98,101,217,110,246,137,185,35,129,215,160,42,32,250,190,187,193,176,158,238,99,10,152,135,244,177,201,170,90,140,94,31,244,155,240,210,136,149,233,93,37,48,191,160,165,41,21,128,48,15,0,199,234,237,92,114,105,217,59,44,6,66,33,201,179,86,145,135,218,235,130,85,158,29,191,225,160,81,76,82,36,53,180,76,100,114,1,16,17,231,143,16,128,224,130,54,29,129,30,175,141,192,31,129,54,103,40,235,30,160,91,241,99,220,108,63,125,225,150,80,223,253,107,254,87,177,201,91,21,251,24,233,244,246,13,134,68,64,146,212,100,133,160,236,116,61,181,70,202,25,127,58,207,72,50,66,207,22,152,197,203,167,193,92,102,153,213,59,137,65,153,49,136,57,215,160,216,2,120,95,255,84,108,99,100,122,21,213,206,229,80,63,183,191,6,12,87,234,21,174,229,146,63,113,77,198,240,39,160,190,218,104,114,65,143,16,76,171,187,221,133,224,217,179,164,222,126,10,33,35,71,63,53,163,111,199,211,228,164,124,223,160,213,170,112,202,127,64,210,139,189,213,55,20,144,252,240,46,126,109,109,74,135,136,15,128,192,99,16,67,173,97,168,61,160,147,75,172,163,178,143,148,112,133,47,43,229,251,14,130,192,253,59,110,111,147,43,65,57,213,172,199,179,154,184,206,56,160,164,223,28,174,107,173,96,167,56,249,242,213,153,166,239,188,30,37,226,19,250,193,152,99,72,192,45,227,39,220,80,199,128],[249,2,17,160,148,96,233,169,14,90,134,113,124,248,170,233,105,200,185,209,37,170,23,12,53,121,255,207,171,140,58,155,240,245,176,148,160,44,47,217,201,92,122,132,137,66,226,149,169,177,49,235,62,79,6,38,116,120,55,195,24,55,197,51,169,64,4,70,173,160,239,47,98,216,238,2,166,46,89,15,56,7,5,196,196,62,67,249,253,235,20,235,102,134,142,200,26,17,214,152,1,145,160,197,17,178,32,200,66,202,234,188,218,127,181,8,17,4,30,61,47,57,234,58,255,120,204,181,237,168,202,28,76,105,234,160,63,229,58,247,19,93,67,185,34,164,106,81,163,92,222,25,161,27,40,212,121,191,185,203,236,130,187,73,151,69,189,185,160,254,144,109,156,81,221,79,66,253,183,145,54,58,41,16,116,249,56,61,32,1,181,98,101,217,110,246,137,185,35,129,215,160,42,32,250,190,187,193,176,158,238,99,10,152,135,244,177,201,170,90,140,94,31,244,155,240,210,136,149,233,93,37,48,191,160,167,239,49,141,255,145,86,21,48,4,58,80,80,197,28,19,39,58,75,123,74,70,205,189,154,55,116,21,10,179,111,223,160,81,76,82,36,53,180,76,100,114,1,16,17,231,143,16,128,224,130,54,29,129,30,175,141,192,31,129,54,103,40,235,30,160,91,241,99,220,108,63,125,225,150,80,223,253,107,254,87,177,201,91,21,251,24,233,244,246,13,134,68,64,146,212,100,133,160,236,116,61,181,70,202,25,127,58,207,72,50,66,207,22,152,197,203,167,193,92,102,153,213,59,137,65,153,49,136,57,215,160,216,2,120,95,255,84,108,99,100,122,21,213,206,229,80,63,183,191,6,12,87,234,21,174,229,146,63,113,77,198,240,39,160,190,218,104,114,65,143,16,76,171,187,221,133,224,217,179,164,222,126,10,33,35,71,63,53,163,111,199,211,228,164,124,223,160,213,170,112,202,127,64,210,139,189,213,55,20,144,252,240,46,126,109,109,74,135,136,15,128,192,99,16,67,173,97,168,61,160,147,75,172,163,178,143,148,112,133,47,43,229,251,14,130,192,253,59,110,111,147,43,65,57,213,172,199,179,154,184,206,56,160,164,223,28,174,107,173,96,167,56,249,242,213,153,166,239,188,30,37,226,19,250,193,152,99,72,192,45,227,39,220,80,199,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,18,99,202,155,216,233,16,196,69,51,129,60,38,169,238,151,117,204,137,232,255,106,120,134,220,186,37,210,123,240,57,205,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,30,165,12,148,60,73,75,129,99,22,189,179,165,212,97,30,70,252,178,141,82,212,205,86,33,189,64,225,155,151,44,228,0],[160,143,165,150,220,29,213,132,61,84,146,177,121,240,70,49,108,193,141,238,104,187,31,65,67,198,42,160,132,145,244,195,47,0],[160,249,206,148,243,175,9,54,64,123,62,84,79,56,2,167,180,229,57,141,60,57,230,39,198,161,165,104,120,15,27,210,19,0],[160,35,2,113,27,174,138,111,47,143,63,131,219,176,187,151,237,202,89,0,243,6,15,2,56,30,196,6,32,30,28,90,37,0],[160,58,236,215,25,102,10,91,61,145,178,196,158,128,97,75,40,167,190,55,63,190,206,1,214,162,90,94,106,14,98,57,150,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,192,147,56,216,166,204,38,22,236,116,212,187,163,46,244,70,243,70,187,207,2,165,214,141,45,103,210,194,66,11,69,179,0],[160,3,57,253,28,249,2,72,52,62,44,68,39,228,216,85,197,131,68,86,135,19,85,66,139,165,136,156,30,228,98,75,28,0],[160,241,188,52,165,71,42,145,44,6,13,51,116,50,101,11,21,41,174,213,101,6,12,243,195,47,91,175,49,28,99,33,190,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,128,160,30,165,12,148,60,73,75,129,99,22,189,179,165,212,97,30,70,252,178,141,82,212,205,86,33,189,64,225,155,151,44,228,160,143,165,150,220,29,213,132,61,84,146,177,121,240,70,49,108,193,141,238,104,187,31,65,67,198,42,160,132,145,244,195,47,160,249,206,148,243,175,9,54,64,123,62,84,79,56,2,167,180,229,57,141,60,57,230,39,198,161,165,104,120,15,27,210,19,160,35,2,113,27,174,138,111,47,143,63,131,219,176,187,151,237,202,89,0,243,6,15,2,56,30,196,6,32,30,28,90,37,160,58,236,215,25,102,10,91,61,145,178,196,158,128,97,75,40,167,190,55,63,190,206,1,214,162,90,94,106,14,98,57,150,128,128,128,128,160,192,147,56,216,166,204,38,22,236,116,212,187,163,46,244,70,243,70,187,207,2,165,214,141,45,103,210,194,66,11,69,179,160,3,57,253,28,249,2,72,52,62,44,68,39,228,216,85,197,131,68,86,135,19,85,66,139,165,136,156,30,228,98,75,28,160,241,188,52,165,71,42,145,44,6,13,51,116,50,101,11,21,41,174,213,101,6,12,243,195,47,91,175,49,28,99,33,190,128,128,128,128],[249,1,17,128,160,30,165,12,148,60,73,75,129,99,22,189,179,165,212,97,30,70,252,178,141,82,212,205,86,33,189,64,225,155,151,44,228,160,143,165,150,220,29,213,132,61,84,146,177,121,240,70,49,108,193,141,238,104,187,31,65,67,198,42,160,132,145,244,195,47,160,249,206,148,243,175,9,54,64,123,62,84,79,56,2,167,180,229,57,141,60,57,230,39,198,161,165,104,120,15,27,210,19,160,35,2,113,27,174,138,111,47,143,63,131,219,176,187,151,237,202,89,0,243,6,15,2,56,30,196,6,32,30,28,90,37,160,58,236,215,25,102,10,91,61,145,178,196,158,128,97,75,40,167,190,55,63,190,206,1,214,162,90,94,106,14,98,57,150,128,128,128,128,160,192,147,56,216,166,204,38,22,236,116,212,187,163,46,244,70,243,70,187,207,2,165,214,141,45,103,210,194,66,11,69,179,160,18,99,202,155,216,233,16,196,69,51,129,60,38,169,238,151,117,204,137,232,255,106,120,134,220,186,37,210,123,240,57,205,160,241,188,52,165,71,42,145,44,6,13,51,116,50,101,11,21,41,174,213,101,6,12,243,195,47,91,175,49,28,99,33,190,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,251,239,33,80,129,140,50,179,108,87,149,114,38,223,78,36,235,129,201],"key":[190,183,183,180,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,0,0,0,0],[157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,5,92,128,229,5,22,81,143,223,116,9,134,77,116,190,203,6,232,62,193,91,234,237,65,121,239,64,27,35,122,83,31,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,235,49,84,228,123,221,75,118,66,200,145,190,115,2,219,213,148,83,239,81,151,15,14,64,235,172,237,119,86,10,80,240,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,0,0,0,0]],"keccak_data":[[248,102,157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,184,70,248,68,128,128,160,5,92,128,229,5,22,81,143,223,116,9,134,77,116,190,203,6,232,62,193,91,234,237,65,121,239,64,27,35,122,83,31,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,184,70,248,68,128,128,160,235,49,84,228,123,221,75,118,66,200,145,190,115,2,219,213,148,83,239,81,151,15,14,64,235,172,237,119,86,10,80,240,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,251,239,33,80,129,140,50,179,108,87,149,114,38,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,241,148,196,82,35,215,177,195,227,92,222,25,173,41,254,96,57,75,4,131,52,223,235,110,36,7,200,197,251,47,241,28,0],[160,101,187,79,238,94,52,252,87,119,243,197,111,67,199,185,118,54,202,189,0,174,168,234,18,59,155,22,1,202,15,190,169,0],[160,153,187,87,32,156,110,142,88,31,91,23,90,236,221,13,33,109,185,193,101,248,159,87,73,55,57,191,1,114,240,193,78,0],[160,56,64,156,29,212,146,26,131,71,170,233,239,220,185,33,39,163,188,150,50,21,75,72,0,103,230,192,190,100,131,217,40,0],[160,74,229,167,14,185,119,218,105,69,32,24,84,10,13,225,208,52,24,128,150,236,191,241,130,212,199,167,111,54,122,189,44,0],[160,139,6,231,133,106,60,14,156,63,106,67,103,196,199,115,200,228,80,41,70,158,34,102,171,159,229,226,230,157,163,187,113,0],[160,89,230,56,61,34,34,214,132,131,248,45,235,138,243,182,202,41,90,3,205,119,166,121,157,46,108,216,44,20,162,110,209,0],[160,173,206,65,223,250,197,254,157,12,161,191,153,148,64,114,120,150,90,26,83,223,141,8,168,91,40,176,217,164,82,56,203,0],[160,132,133,31,155,104,199,69,61,39,241,148,94,213,130,129,141,93,232,244,167,141,171,189,91,103,53,51,159,181,57,41,146,0],[160,226,200,235,253,27,224,238,80,204,142,61,184,212,49,15,103,28,211,141,128,245,212,87,186,250,138,0,135,248,247,177,223,0],[160,227,2,214,19,138,45,143,101,8,53,131,140,33,190,14,121,111,61,97,202,11,71,98,234,66,80,99,177,185,190,19,111,0],[160,245,12,5,122,145,76,159,173,27,152,124,64,231,159,174,162,245,216,108,209,208,93,222,231,79,57,98,134,87,187,20,55,0],[160,22,168,111,94,132,232,64,85,8,252,49,17,224,148,29,30,208,226,229,129,86,227,158,139,217,50,226,218,25,220,252,14,0],[160,192,253,80,6,206,81,164,225,211,90,11,15,29,102,80,201,130,43,115,57,92,19,52,114,113,183,154,216,189,228,23,66,0],[160,123,154,146,114,106,120,46,191,239,6,24,246,130,14,145,28,209,45,13,28,52,146,44,151,91,53,111,251,75,26,8,176,0],[160,194,210,224,172,104,182,135,50,65,192,57,75,251,50,38,168,39,137,120,167,73,139,78,166,241,158,200,66,188,120,196,250,0],[160,115,230,140,5,14,5,2,64,122,67,232,105,226,75,113,177,161,215,202,74,116,43,0,0,57,139,22,186,169,140,31,70,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,101,187,79,238,94,52,252,87,119,243,197,111,67,199,185,118,54,202,189,0,174,168,234,18,59,155,22,1,202,15,190,169,160,153,187,87,32,156,110,142,88,31,91,23,90,236,221,13,33,109,185,193,101,248,159,87,73,55,57,191,1,114,240,193,78,160,56,64,156,29,212,146,26,131,71,170,233,239,220,185,33,39,163,188,150,50,21,75,72,0,103,230,192,190,100,131,217,40,160,74,229,167,14,185,119,218,105,69,32,24,84,10,13,225,208,52,24,128,150,236,191,241,130,212,199,167,111,54,122,189,44,160,139,6,231,133,106,60,14,156,63,106,67,103,196,199,115,200,228,80,41,70,158,34,102,171,159,229,226,230,157,163,187,113,160,89,230,56,61,34,34,214,132,131,248,45,235,138,243,182,202,41,90,3,205,119,166,121,157,46,108,216,44,20,162,110,209,160,173,206,65,223,250,197,254,157,12,161,191,153,148,64,114,120,150,90,26,83,223,141,8,168,91,40,176,217,164,82,56,203,160,132,133,31,155,104,199,69,61,39,241,148,94,213,130,129,141,93,232,244,167,141,171,189,91,103,53,51,159,181,57,41,146,160,226,200,235,253,27,224,238,80,204,142,61,184,212,49,15,103,28,211,141,128,245,212,87,186,250,138,0,135,248,247,177,223,160,227,2,214,19,138,45,143,101,8,53,131,140,33,190,14,121,111,61,97,202,11,71,98,234,66,80,99,177,185,190,19,111,160,245,12,5,122,145,76,159,173,27,152,124,64,231,159,174,162,245,216,108,209,208,93,222,231,79,57,98,134,87,187,20,55,160,22,168,111,94,132,232,64,85,8,252,49,17,224,148,29,30,208,226,229,129,86,227,158,139,217,50,226,218,25,220,252,14,160,192,253,80,6,206,81,164,225,211,90,11,15,29,102,80,201,130,43,115,57,92,19,52,114,113,183,154,216,189,228,23,66,160,123,154,146,114,106,120,46,191,239,6,24,246,130,14,145,28,209,45,13,28,52,146,44,151,91,53,111,251,75,26,8,176,160,194,210,224,172,104,182,135,50,65,192,57,75,251,50,38,168,39,137,120,167,73,139,78,166,241,158,200,66,188,120,196,250,160,115,230,140,5,14,5,2,64,122,67,232,105,226,75,113,177,161,215,202,74,116,43,0,0,57,139,22,186,169,140,31,70,128],[249,2,17,160,101,187,79,238,94,52,252,87,119,243,197,111,67,199,185,118,54,202,189,0,174,168,234,18,59,155,22,1,202,15,190,169,160,153,187,87,32,156,110,142,88,31,91,23,90,236,221,13,33,109,185,193,101,248,159,87,73,55,57,191,1,114,240,193,78,160,56,64,156,29,212,146,26,131,71,170,233,239,220,185,33,39,163,188,150,50,21,75,72,0,103,230,192,190,100,131,217,40,160,74,229,167,14,185,119,218,105,69,32,24,84,10,13,225,208,52,24,128,150,236,191,241,130,212,199,167,111,54,122,189,44,160,139,6,231,133,106,60,14,156,63,106,67,103,196,199,115,200,228,80,41,70,158,34,102,171,159,229,226,230,157,163,187,113,160,89,230,56,61,34,34,214,132,131,248,45,235,138,243,182,202,41,90,3,205,119,166,121,157,46,108,216,44,20,162,110,209,160,173,206,65,223,250,197,254,157,12,161,191,153,148,64,114,120,150,90,26,83,223,141,8,168,91,40,176,217,164,82,56,203,160,132,133,31,155,104,199,69,61,39,241,148,94,213,130,129,141,93,232,244,167,141,171,189,91,103,53,51,159,181,57,41,146,160,226,200,235,253,27,224,238,80,204,142,61,184,212,49,15,103,28,211,141,128,245,212,87,186,250,138,0,135,248,247,177,223,160,227,2,214,19,138,45,143,101,8,53,131,140,33,190,14,121,111,61,97,202,11,71,98,234,66,80,99,177,185,190,19,111,160,241,148,196,82,35,215,177,195,227,92,222,25,173,41,254,96,57,75,4,131,52,223,235,110,36,7,200,197,251,47,241,28,160,22,168,111,94,132,232,64,85,8,252,49,17,224,148,29,30,208,226,229,129,86,227,158,139,217,50,226,218,25,220,252,14,160,192,253,80,6,206,81,164,225,211,90,11,15,29,102,80,201,130,43,115,57,92,19,52,114,113,183,154,216,189,228,23,66,160,123,154,146,114,106,120,46,191,239,6,24,246,130,14,145,28,209,45,13,28,52,146,44,151,91,53,111,251,75,26,8,176,160,194,210,224,172,104,182,135,50,65,192,57,75,251,50,38,168,39,137,120,167,73,139,78,166,241,158,200,66,188,120,196,250,160,115,230,140,5,14,5,2,64,122,67,232,105,226,75,113,177,161,215,202,74,116,43,0,0,57,139,22,186,169,140,31,70,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,193,111,224,159,114,48,237,104,246,55,135,104,148,127,4,128,102,203,172,150,141,157,234,138,33,36,124,34,213,238,35,134,0],[160,10,11,149,12,142,202,194,193,83,24,24,104,171,96,161,219,119,65,137,93,44,91,87,80,60,110,159,30,86,188,100,10,0],[160,39,121,230,39,167,161,129,53,122,169,245,140,52,23,2,36,165,188,119,4,45,196,106,160,65,112,91,107,79,132,116,69,0],[160,82,36,138,82,97,191,83,166,128,20,152,19,220,0,132,163,44,40,167,150,37,25,52,80,30,58,81,180,95,194,109,253,0],[160,232,83,162,35,57,11,100,52,225,113,183,45,19,222,137,157,68,132,122,239,70,152,182,136,146,5,248,168,38,119,202,189,0],[160,108,117,120,253,249,240,52,157,105,229,114,94,55,120,64,211,29,129,13,133,204,83,185,172,59,155,39,146,252,223,227,147,0],[160,201,122,133,107,231,72,116,35,25,99,12,164,48,114,64,245,167,84,164,45,115,146,165,202,133,239,107,149,81,13,134,245,0],[160,58,114,17,41,234,110,140,60,253,208,73,117,185,122,235,1,15,12,78,42,38,43,51,57,190,49,212,102,10,149,185,69,0],[160,166,32,30,7,57,227,117,143,123,252,126,139,162,83,233,9,244,31,101,60,140,116,90,216,231,11,180,90,7,219,55,197,0],[160,154,7,28,59,219,138,240,13,116,245,19,62,193,183,80,141,59,142,71,8,159,225,139,241,102,204,162,22,53,83,177,27,0],[160,124,223,172,84,215,103,89,82,218,24,210,50,10,20,72,9,222,188,29,253,201,250,126,111,177,171,71,106,138,130,32,38,0],[160,189,109,204,118,60,183,213,130,243,213,244,177,200,6,208,183,250,103,85,108,253,44,119,226,37,78,5,61,255,98,56,43,0],[160,115,55,141,69,159,203,20,115,7,55,97,143,216,150,187,108,12,76,113,253,242,224,88,136,220,133,99,64,241,148,71,198,0],[160,243,229,117,47,254,167,212,223,124,214,240,61,196,191,24,107,116,63,145,21,41,31,125,187,170,30,64,196,62,168,31,107,0],[160,99,164,201,254,179,232,146,165,14,111,12,151,187,26,221,238,161,195,142,236,208,231,138,58,194,34,117,87,171,110,165,143,0],[160,80,196,130,226,110,59,147,107,181,45,5,32,36,0,237,119,119,241,111,26,118,253,135,226,12,157,195,107,246,156,102,70,0],[160,101,139,32,102,12,103,79,95,243,208,168,14,231,230,147,10,52,191,107,30,167,218,228,90,15,144,245,238,97,18,35,135,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,10,11,149,12,142,202,194,193,83,24,24,104,171,96,161,219,119,65,137,93,44,91,87,80,60,110,159,30,86,188,100,10,160,39,121,230,39,167,161,129,53,122,169,245,140,52,23,2,36,165,188,119,4,45,196,106,160,65,112,91,107,79,132,116,69,160,82,36,138,82,97,191,83,166,128,20,152,19,220,0,132,163,44,40,167,150,37,25,52,80,30,58,81,180,95,194,109,253,160,232,83,162,35,57,11,100,52,225,113,183,45,19,222,137,157,68,132,122,239,70,152,182,136,146,5,248,168,38,119,202,189,160,108,117,120,253,249,240,52,157,105,229,114,94,55,120,64,211,29,129,13,133,204,83,185,172,59,155,39,146,252,223,227,147,160,201,122,133,107,231,72,116,35,25,99,12,164,48,114,64,245,167,84,164,45,115,146,165,202,133,239,107,149,81,13,134,245,160,58,114,17,41,234,110,140,60,253,208,73,117,185,122,235,1,15,12,78,42,38,43,51,57,190,49,212,102,10,149,185,69,160,166,32,30,7,57,227,117,143,123,252,126,139,162,83,233,9,244,31,101,60,140,116,90,216,231,11,180,90,7,219,55,197,160,154,7,28,59,219,138,240,13,116,245,19,62,193,183,80,141,59,142,71,8,159,225,139,241,102,204,162,22,53,83,177,27,160,124,223,172,84,215,103,89,82,218,24,210,50,10,20,72,9,222,188,29,253,201,250,126,111,177,171,71,106,138,130,32,38,160,189,109,204,118,60,183,213,130,243,213,244,177,200,6,208,183,250,103,85,108,253,44,119,226,37,78,5,61,255,98,56,43,160,115,55,141,69,159,203,20,115,7,55,97,143,216,150,187,108,12,76,113,253,242,224,88,136,220,133,99,64,241,148,71,198,160,243,229,117,47,254,167,212,223,124,214,240,61,196,191,24,107,116,63,145,21,41,31,125,187,170,30,64,196,62,168,31,107,160,99,164,201,254,179,232,146,165,14,111,12,151,187,26,221,238,161,195,142,236,208,231,138,58,194,34,117,87,171,110,165,143,160,80,196,130,226,110,59,147,107,181,45,5,32,36,0,237,119,119,241,111,26,118,253,135,226,12,157,195,107,246,156,102,70,160,101,139,32,102,12,103,79,95,243,208,168,14,231,230,147,10,52,191,107,30,167,218,228,90,15,144,245,238,97,18,35,135,128],[249,2,17,160,10,11,149,12,142,202,194,193,83,24,24,104,171,96,161,219,119,65,137,93,44,91,87,80,60,110,159,30,86,188,100,10,160,39,121,230,39,167,161,129,53,122,169,245,140,52,23,2,36,165,188,119,4,45,196,106,160,65,112,91,107,79,132,116,69,160,82,36,138,82,97,191,83,166,128,20,152,19,220,0,132,163,44,40,167,150,37,25,52,80,30,58,81,180,95,194,109,253,160,232,83,162,35,57,11,100,52,225,113,183,45,19,222,137,157,68,132,122,239,70,152,182,136,146,5,248,168,38,119,202,189,160,108,117,120,253,249,240,52,157,105,229,114,94,55,120,64,211,29,129,13,133,204,83,185,172,59,155,39,146,252,223,227,147,160,201,122,133,107,231,72,116,35,25,99,12,164,48,114,64,245,167,84,164,45,115,146,165,202,133,239,107,149,81,13,134,245,160,58,114,17,41,234,110,140,60,253,208,73,117,185,122,235,1,15,12,78,42,38,43,51,57,190,49,212,102,10,149,185,69,160,166,32,30,7,57,227,117,143,123,252,126,139,162,83,233,9,244,31,101,60,140,116,90,216,231,11,180,90,7,219,55,197,160,154,7,28,59,219,138,240,13,116,245,19,62,193,183,80,141,59,142,71,8,159,225,139,241,102,204,162,22,53,83,177,27,160,124,223,172,84,215,103,89,82,218,24,210,50,10,20,72,9,222,188,29,253,201,250,126,111,177,171,71,106,138,130,32,38,160,189,109,204,118,60,183,213,130,243,213,244,177,200,6,208,183,250,103,85,108,253,44,119,226,37,78,5,61,255,98,56,43,160,193,111,224,159,114,48,237,104,246,55,135,104,148,127,4,128,102,203,172,150,141,157,234,138,33,36,124,34,213,238,35,134,160,243,229,117,47,254,167,212,223,124,214,240,61,196,191,24,107,116,63,145,21,41,31,125,187,170,30,64,196,62,168,31,107,160,99,164,201,254,179,232,146,165,14,111,12,151,187,26,221,238,161,195,142,236,208,231,138,58,194,34,117,87,171,110,165,143,160,80,196,130,226,110,59,147,107,181,45,5,32,36,0,237,119,119,241,111,26,118,253,135,226,12,157,195,107,246,156,102,70,160,101,139,32,102,12,103,79,95,243,208,168,14,231,230,147,10,52,191,107,30,167,218,228,90,15,144,245,238,97,18,35,135,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[248,113],[248,113]]}},"account":null,"storage":null,"values":[[160,180,130,126,62,26,173,190,181,8,17,195,126,57,181,69,133,144,44,135,138,60,250,72,19,224,26,89,204,56,240,133,60,0],[160,60,80,140,101,244,4,77,149,17,207,109,243,185,27,241,96,205,177,239,22,0,195,169,22,184,150,243,12,212,246,2,222,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,236,62,60,72,140,147,95,169,10,202,61,72,49,211,244,189,9,14,175,160,228,207,44,40,170,2,166,137,206,3,246,174,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,220,140,241,97,187,253,82,71,190,34,104,223,11,71,228,215,173,255,35,63,52,227,118,225,107,108,32,102,63,26,47,215,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,113,160,60,80,140,101,244,4,77,149,17,207,109,243,185,27,241,96,205,177,239,22,0,195,169,22,184,150,243,12,212,246,2,222,128,128,128,160,236,62,60,72,140,147,95,169,10,202,61,72,49,211,244,189,9,14,175,160,228,207,44,40,170,2,166,137,206,3,246,174,128,128,128,160,220,140,241,97,187,253,82,71,190,34,104,223,11,71,228,215,173,255,35,63,52,227,118,225,107,108,32,102,63,26,47,215,128,128,128,128,128,128,128,128],[248,113,160,60,80,140,101,244,4,77,149,17,207,109,243,185,27,241,96,205,177,239,22,0,195,169,22,184,150,243,12,212,246,2,222,128,128,128,160,180,130,126,62,26,173,190,181,8,17,195,126,57,181,69,133,144,44,135,138,60,250,72,19,224,26,89,204,56,240,133,60,128,128,128,160,220,140,241,97,187,253,82,71,190,34,104,223,11,71,228,215,173,255,35,63,52,227,118,225,107,108,32,102,63,26,47,215,128,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[true,false],"extension":{"list_rlp_bytes":[226]},"branch":{"modified_index":7,"drifted_index":12,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,133,134,90,223,35,73,209,110,1,223,227,204,245,218,138,192,201,42,56,120,124,233,147,37,210,59,140,211,26,157,153,76,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,133,134,90,223,35,73,209,110,1,223,227,204,245,218,138,192,201,42,56,120,124,233,147,37,210,59,140,211,26,157,153,76,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,148,232,26,15,84,71,7,19,158,75,248,201,176,18,112,155,149,5,208,222,250,164,201,54,119,0,132,101,14,128,238,102,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,78,6,16,179,27,9,78,95,187,70,112,128,98,188,224,191,44,50,143,170,217,227,76,154,222,217,90,38,165,45,174,222,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,78,6,16,179,27,9,78,95,187,70,112,128,98,188,224,191,44,50,143,170,217,227,76,154,222,217,90,38,165,45,174,222,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,160,133,134,90,223,35,73,209,110,1,223,227,204,245,218,138,192,201,42,56,120,124,233,147,37,210,59,140,211,26,157,153,76,128,128,128,128,160,148,232,26,15,84,71,7,19,158,75,248,201,176,18,112,155,149,5,208,222,250,164,201,54,119,0,132,101,14,128,238,102,128,128,128,128],[248,81,128,128,128,128,128,128,128,160,133,134,90,223,35,73,209,110,1,223,227,204,245,218,138,192,201,42,56,120,124,233,147,37,210,59,140,211,26,157,153,76,128,128,128,128,160,148,232,26,15,84,71,7,19,158,75,248,201,176,18,112,155,149,5,208,222,250,164,201,54,119,0,132,101,14,128,238,102,128,128,128,128],[226,23,160,78,6,16,179,27,9,78,95,187,70,112,128,98,188,224,191,44,50,143,170,217,227,76,154,222,217,90,38,165,45,174,222],[226,23,160,78,6,16,179,27,9,78,95,187,70,112,128,98,188,224,191,44,50,143,170,217,227,76,154,222,217,90,38,165,45,174,222]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,166,68],"key":[171,71,114,101,111,62,204,197,79,253,187,249,55,237,203,119,129,118,111,30,207,108,4,216,19,202,228,181,220,226,52,159],"list_rlp_bytes":[[228],[224]],"value_rlp_bytes":[[131],[17]],"drifted_rlp_bytes":[227],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[159,55,204,40,235,251,240,6,226,51,219,92,249,162,56,187,150,223,67,221,241,124,79,245,19,78,189,186,224,236,172,230,0,0],[130,2,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[158,50,101,111,62,204,197,79,253,187,249,55,237,203,119,129,118,111,30,207,108,4,216,19,202,228,181,220,226,52,159,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[158,60,40,235,251,240,6,226,51,219,92,249,162,56,187,150,223,67,221,241,124,79,245,19,78,189,186,224,236,172,230,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[228,159,55,204,40,235,251,240,6,226,51,219,92,249,162,56,187,150,223,67,221,241,124,79,245,19,78,189,186,224,236,172,230,131,130,2,156],[224,158,50,101,111,62,204,197,79,253,187,249,55,237,203,119,129,118,111,30,207,108,4,216,19,202,228,181,220,226,52,159,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,166,68],[227,158,60,40,235,251,240,6,226,51,219,92,249,162,56,187,150,223,67,221,241,124,79,245,19,78,189,186,224,236,172,230,131,130,2,156]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ExtensionAddedThreeKeyBytesSel2.json b/zkevm-circuits/src/mpt_circuit/tests/ExtensionAddedThreeKeyBytesSel2.json new file mode 100644 index 0000000000..b0637c0f5c --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ExtensionAddedThreeKeyBytesSel2.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,5,78,184,84,123,84,61,94,128,74,150,68,241,58,46,78,76,101,61,80,141,139,85,21,43,108,228,46,142,21,241,63,0],[160,104,1,209,52,44,171,85,216,38,82,214,170,70,31,178,225,151,65,5,116,232,229,207,232,117,108,105,16,17,234,57,192,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,65,70,98,147,197,159,21,0,119,137,194,198,115,71,147,249,40,199,184,154,16,126,252,173,173,104,131,165,24,63,62,14,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,227,161,228,90,39,187,200,217,133,90,147,54,224,50,111,226,138,250,245,21,37,154,178,43,11,151,240,31,133,85,195,140,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,227,161,228,90,39,187,200,217,133,90,147,54,224,50,111,226,138,250,245,21,37,154,178,43,11,151,240,31,133,85,195,140,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,65,70,98,147,197,159,21,0,119,137,194,198,115,71,147,249,40,199,184,154,16,126,252,173,173,104,131,165,24,63,62,14,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,38,180,40,52,192,186,187,64,105,123,105,72,131,31,56,72,124,77,107,44,183,203,139,146,10,154,131,246,3,253,128,88,0],[160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,0],[160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,0],[160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,0],[160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,0],[160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,0],[160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,0],[160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,0],[160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,0],[160,224,221,251,197,81,183,75,7,235,52,92,142,162,39,77,89,38,153,56,223,129,3,64,104,165,113,77,61,238,249,176,24,0],[160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,0],[160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,0],[160,227,33,91,131,11,140,204,127,36,52,192,187,51,9,224,190,228,17,100,163,82,196,205,244,33,26,240,245,139,112,116,56,0],[160,237,113,19,48,172,139,234,51,70,37,236,44,37,118,182,177,114,98,221,189,39,248,50,83,47,77,215,60,136,159,224,77,0],[160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,0],[160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,0],[160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,160,224,221,251,197,81,183,75,7,235,52,92,142,162,39,77,89,38,153,56,223,129,3,64,104,165,113,77,61,238,249,176,24,160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,160,227,33,91,131,11,140,204,127,36,52,192,187,51,9,224,190,228,17,100,163,82,196,205,244,33,26,240,245,139,112,116,56,160,237,113,19,48,172,139,234,51,70,37,236,44,37,118,182,177,114,98,221,189,39,248,50,83,47,77,215,60,136,159,224,77,160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,128],[249,2,17,160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,160,38,180,40,52,192,186,187,64,105,123,105,72,131,31,56,72,124,77,107,44,183,203,139,146,10,154,131,246,3,253,128,88,160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,160,227,33,91,131,11,140,204,127,36,52,192,187,51,9,224,190,228,17,100,163,82,196,205,244,33,26,240,245,139,112,116,56,160,237,113,19,48,172,139,234,51,70,37,236,44,37,118,182,177,114,98,221,189,39,248,50,83,47,77,215,60,136,159,224,77,160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,167,104,82,176,156,77,152,205,207,142,19,88,14,2,9,174,93,218,253,122,106,167,97,66,136,231,195,105,217,145,69,255,0],[160,92,168,67,167,114,22,27,217,14,103,239,246,29,105,8,65,48,222,155,27,169,254,122,26,44,121,201,21,98,92,78,169,0],[160,147,231,72,90,70,231,94,113,177,149,152,167,211,65,105,196,79,22,2,190,3,201,166,236,17,203,211,123,206,200,57,69,0],[160,79,214,34,60,184,209,156,75,4,50,151,6,46,63,82,233,116,124,161,43,81,210,175,30,190,47,93,162,235,27,42,212,0],[160,174,116,61,4,55,96,101,233,1,220,167,155,177,227,120,63,131,16,165,161,58,111,69,19,89,183,237,166,191,136,153,214,0],[160,234,103,229,226,180,118,226,42,119,106,8,68,122,148,115,208,43,247,208,33,184,113,34,130,253,94,171,190,224,175,178,149,0],[160,125,158,219,111,118,86,76,165,6,232,77,48,127,157,22,4,156,187,55,141,60,75,46,90,201,150,83,154,97,233,111,147,0],[160,159,153,110,67,208,55,108,119,133,186,244,219,97,123,42,57,77,198,67,101,143,21,81,203,232,95,55,175,57,10,141,17,0],[160,253,78,175,142,245,133,131,90,234,72,28,46,246,35,209,189,100,220,208,55,41,17,116,209,235,173,123,93,196,123,147,45,0],[160,195,10,46,26,18,125,216,183,190,226,83,167,164,207,114,95,133,139,59,89,75,157,79,98,113,29,97,225,117,127,190,66,0],[160,55,233,50,240,115,106,200,149,91,112,170,81,113,132,55,5,199,194,255,66,187,210,3,197,119,33,146,102,217,129,115,38,0],[160,112,154,58,83,111,210,116,192,71,120,152,185,215,113,63,78,224,149,162,179,187,158,41,175,40,73,231,24,66,243,78,152,0],[160,225,226,232,116,233,52,143,62,86,128,184,236,176,34,105,29,104,168,91,90,89,17,9,237,227,14,98,153,206,207,86,176,0],[160,148,120,183,48,28,252,97,156,9,151,71,9,58,158,163,211,10,158,80,13,200,188,124,124,135,250,19,35,0,49,94,241,0],[160,219,185,81,58,189,178,31,226,43,92,85,50,149,112,246,78,245,2,232,234,198,28,75,98,40,204,225,220,228,247,251,247,0],[160,44,15,94,183,58,251,85,52,218,221,167,27,84,128,112,235,31,234,65,19,117,17,83,124,42,165,186,33,116,183,63,90,0],[160,136,4,90,22,214,62,100,89,115,0,96,138,213,52,252,154,225,43,23,85,174,103,221,27,128,84,55,63,146,81,247,217,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,92,168,67,167,114,22,27,217,14,103,239,246,29,105,8,65,48,222,155,27,169,254,122,26,44,121,201,21,98,92,78,169,160,147,231,72,90,70,231,94,113,177,149,152,167,211,65,105,196,79,22,2,190,3,201,166,236,17,203,211,123,206,200,57,69,160,79,214,34,60,184,209,156,75,4,50,151,6,46,63,82,233,116,124,161,43,81,210,175,30,190,47,93,162,235,27,42,212,160,174,116,61,4,55,96,101,233,1,220,167,155,177,227,120,63,131,16,165,161,58,111,69,19,89,183,237,166,191,136,153,214,160,234,103,229,226,180,118,226,42,119,106,8,68,122,148,115,208,43,247,208,33,184,113,34,130,253,94,171,190,224,175,178,149,160,125,158,219,111,118,86,76,165,6,232,77,48,127,157,22,4,156,187,55,141,60,75,46,90,201,150,83,154,97,233,111,147,160,159,153,110,67,208,55,108,119,133,186,244,219,97,123,42,57,77,198,67,101,143,21,81,203,232,95,55,175,57,10,141,17,160,253,78,175,142,245,133,131,90,234,72,28,46,246,35,209,189,100,220,208,55,41,17,116,209,235,173,123,93,196,123,147,45,160,195,10,46,26,18,125,216,183,190,226,83,167,164,207,114,95,133,139,59,89,75,157,79,98,113,29,97,225,117,127,190,66,160,55,233,50,240,115,106,200,149,91,112,170,81,113,132,55,5,199,194,255,66,187,210,3,197,119,33,146,102,217,129,115,38,160,112,154,58,83,111,210,116,192,71,120,152,185,215,113,63,78,224,149,162,179,187,158,41,175,40,73,231,24,66,243,78,152,160,225,226,232,116,233,52,143,62,86,128,184,236,176,34,105,29,104,168,91,90,89,17,9,237,227,14,98,153,206,207,86,176,160,148,120,183,48,28,252,97,156,9,151,71,9,58,158,163,211,10,158,80,13,200,188,124,124,135,250,19,35,0,49,94,241,160,219,185,81,58,189,178,31,226,43,92,85,50,149,112,246,78,245,2,232,234,198,28,75,98,40,204,225,220,228,247,251,247,160,44,15,94,183,58,251,85,52,218,221,167,27,84,128,112,235,31,234,65,19,117,17,83,124,42,165,186,33,116,183,63,90,160,136,4,90,22,214,62,100,89,115,0,96,138,213,52,252,154,225,43,23,85,174,103,221,27,128,84,55,63,146,81,247,217,128],[249,2,17,160,92,168,67,167,114,22,27,217,14,103,239,246,29,105,8,65,48,222,155,27,169,254,122,26,44,121,201,21,98,92,78,169,160,147,231,72,90,70,231,94,113,177,149,152,167,211,65,105,196,79,22,2,190,3,201,166,236,17,203,211,123,206,200,57,69,160,79,214,34,60,184,209,156,75,4,50,151,6,46,63,82,233,116,124,161,43,81,210,175,30,190,47,93,162,235,27,42,212,160,174,116,61,4,55,96,101,233,1,220,167,155,177,227,120,63,131,16,165,161,58,111,69,19,89,183,237,166,191,136,153,214,160,234,103,229,226,180,118,226,42,119,106,8,68,122,148,115,208,43,247,208,33,184,113,34,130,253,94,171,190,224,175,178,149,160,125,158,219,111,118,86,76,165,6,232,77,48,127,157,22,4,156,187,55,141,60,75,46,90,201,150,83,154,97,233,111,147,160,159,153,110,67,208,55,108,119,133,186,244,219,97,123,42,57,77,198,67,101,143,21,81,203,232,95,55,175,57,10,141,17,160,253,78,175,142,245,133,131,90,234,72,28,46,246,35,209,189,100,220,208,55,41,17,116,209,235,173,123,93,196,123,147,45,160,167,104,82,176,156,77,152,205,207,142,19,88,14,2,9,174,93,218,253,122,106,167,97,66,136,231,195,105,217,145,69,255,160,55,233,50,240,115,106,200,149,91,112,170,81,113,132,55,5,199,194,255,66,187,210,3,197,119,33,146,102,217,129,115,38,160,112,154,58,83,111,210,116,192,71,120,152,185,215,113,63,78,224,149,162,179,187,158,41,175,40,73,231,24,66,243,78,152,160,225,226,232,116,233,52,143,62,86,128,184,236,176,34,105,29,104,168,91,90,89,17,9,237,227,14,98,153,206,207,86,176,160,148,120,183,48,28,252,97,156,9,151,71,9,58,158,163,211,10,158,80,13,200,188,124,124,135,250,19,35,0,49,94,241,160,219,185,81,58,189,178,31,226,43,92,85,50,149,112,246,78,245,2,232,234,198,28,75,98,40,204,225,220,228,247,251,247,160,44,15,94,183,58,251,85,52,218,221,167,27,84,128,112,235,31,234,65,19,117,17,83,124,42,165,186,33,116,183,63,90,160,136,4,90,22,214,62,100,89,115,0,96,138,213,52,252,154,225,43,23,85,174,103,221,27,128,84,55,63,146,81,247,217,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,9,185,94,242,158,18,37,143,15,131,23,73,103,63,182,170,191,126,217,186,20,18,91,229,64,156,203,111,22,213,159,143,0],[160,134,18,75,116,191,180,170,7,164,2,130,19,108,230,123,215,225,22,145,97,207,34,177,168,140,222,37,221,11,72,129,242,0],[160,78,47,202,223,147,142,0,183,20,7,218,89,25,105,43,56,236,60,188,219,128,33,39,149,112,185,247,50,217,133,87,225,0],[160,144,55,233,72,198,175,219,121,126,1,64,144,160,178,123,207,8,24,185,147,149,205,178,0,141,77,45,53,217,39,52,154,0],[160,145,133,86,119,88,110,78,222,182,116,93,169,20,223,243,251,8,128,182,102,75,187,164,93,133,132,8,21,142,238,33,127,0],[160,223,175,93,224,150,84,41,208,56,116,40,195,81,34,83,42,162,137,128,92,31,28,197,139,154,150,233,139,210,69,225,105,0],[160,164,223,222,68,23,136,197,25,123,9,133,30,52,39,239,219,116,181,199,208,139,79,113,33,132,23,102,145,93,122,66,138,0],[160,95,121,253,137,77,36,143,232,237,31,135,134,252,15,197,77,83,132,152,22,183,176,210,122,91,126,225,127,210,102,79,185,0],[160,106,29,87,118,248,25,198,229,240,5,186,130,27,32,24,169,15,213,67,215,45,200,195,221,119,145,154,223,127,129,121,148,0],[160,6,135,18,174,154,122,193,139,163,88,240,34,21,5,64,192,174,237,105,74,188,159,65,179,108,54,113,115,221,8,69,110,0],[160,116,84,145,214,88,243,186,151,248,41,219,115,26,39,173,51,147,147,233,241,158,106,143,170,92,92,216,23,2,103,69,80,0],[160,214,41,19,173,84,136,238,36,215,12,44,155,79,110,74,177,92,88,235,254,95,26,43,186,164,206,67,222,147,105,52,182,0],[160,179,200,169,0,94,240,4,87,147,61,52,36,179,172,16,166,200,148,253,73,182,201,201,248,223,10,198,198,247,184,123,131,0],[160,120,168,240,51,183,53,255,178,143,61,122,43,226,191,51,213,220,34,214,172,62,177,47,70,54,41,36,178,50,78,142,76,0],[160,219,168,214,111,42,214,74,148,23,52,48,82,236,216,67,250,16,95,149,205,130,130,231,122,98,17,117,83,173,251,163,56,0],[160,124,156,154,170,36,23,227,152,201,50,24,110,233,199,142,162,242,124,224,249,59,58,68,123,16,24,28,227,103,103,146,174,0],[160,85,145,77,253,172,65,75,215,211,182,248,58,185,136,179,45,249,152,108,78,226,157,231,42,111,122,36,151,73,41,117,58,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,134,18,75,116,191,180,170,7,164,2,130,19,108,230,123,215,225,22,145,97,207,34,177,168,140,222,37,221,11,72,129,242,160,78,47,202,223,147,142,0,183,20,7,218,89,25,105,43,56,236,60,188,219,128,33,39,149,112,185,247,50,217,133,87,225,160,144,55,233,72,198,175,219,121,126,1,64,144,160,178,123,207,8,24,185,147,149,205,178,0,141,77,45,53,217,39,52,154,160,145,133,86,119,88,110,78,222,182,116,93,169,20,223,243,251,8,128,182,102,75,187,164,93,133,132,8,21,142,238,33,127,160,223,175,93,224,150,84,41,208,56,116,40,195,81,34,83,42,162,137,128,92,31,28,197,139,154,150,233,139,210,69,225,105,160,164,223,222,68,23,136,197,25,123,9,133,30,52,39,239,219,116,181,199,208,139,79,113,33,132,23,102,145,93,122,66,138,160,95,121,253,137,77,36,143,232,237,31,135,134,252,15,197,77,83,132,152,22,183,176,210,122,91,126,225,127,210,102,79,185,160,106,29,87,118,248,25,198,229,240,5,186,130,27,32,24,169,15,213,67,215,45,200,195,221,119,145,154,223,127,129,121,148,160,6,135,18,174,154,122,193,139,163,88,240,34,21,5,64,192,174,237,105,74,188,159,65,179,108,54,113,115,221,8,69,110,160,116,84,145,214,88,243,186,151,248,41,219,115,26,39,173,51,147,147,233,241,158,106,143,170,92,92,216,23,2,103,69,80,160,214,41,19,173,84,136,238,36,215,12,44,155,79,110,74,177,92,88,235,254,95,26,43,186,164,206,67,222,147,105,52,182,160,179,200,169,0,94,240,4,87,147,61,52,36,179,172,16,166,200,148,253,73,182,201,201,248,223,10,198,198,247,184,123,131,160,120,168,240,51,183,53,255,178,143,61,122,43,226,191,51,213,220,34,214,172,62,177,47,70,54,41,36,178,50,78,142,76,160,219,168,214,111,42,214,74,148,23,52,48,82,236,216,67,250,16,95,149,205,130,130,231,122,98,17,117,83,173,251,163,56,160,124,156,154,170,36,23,227,152,201,50,24,110,233,199,142,162,242,124,224,249,59,58,68,123,16,24,28,227,103,103,146,174,160,85,145,77,253,172,65,75,215,211,182,248,58,185,136,179,45,249,152,108,78,226,157,231,42,111,122,36,151,73,41,117,58,128],[249,2,17,160,134,18,75,116,191,180,170,7,164,2,130,19,108,230,123,215,225,22,145,97,207,34,177,168,140,222,37,221,11,72,129,242,160,78,47,202,223,147,142,0,183,20,7,218,89,25,105,43,56,236,60,188,219,128,33,39,149,112,185,247,50,217,133,87,225,160,144,55,233,72,198,175,219,121,126,1,64,144,160,178,123,207,8,24,185,147,149,205,178,0,141,77,45,53,217,39,52,154,160,145,133,86,119,88,110,78,222,182,116,93,169,20,223,243,251,8,128,182,102,75,187,164,93,133,132,8,21,142,238,33,127,160,223,175,93,224,150,84,41,208,56,116,40,195,81,34,83,42,162,137,128,92,31,28,197,139,154,150,233,139,210,69,225,105,160,164,223,222,68,23,136,197,25,123,9,133,30,52,39,239,219,116,181,199,208,139,79,113,33,132,23,102,145,93,122,66,138,160,95,121,253,137,77,36,143,232,237,31,135,134,252,15,197,77,83,132,152,22,183,176,210,122,91,126,225,127,210,102,79,185,160,106,29,87,118,248,25,198,229,240,5,186,130,27,32,24,169,15,213,67,215,45,200,195,221,119,145,154,223,127,129,121,148,160,6,135,18,174,154,122,193,139,163,88,240,34,21,5,64,192,174,237,105,74,188,159,65,179,108,54,113,115,221,8,69,110,160,116,84,145,214,88,243,186,151,248,41,219,115,26,39,173,51,147,147,233,241,158,106,143,170,92,92,216,23,2,103,69,80,160,9,185,94,242,158,18,37,143,15,131,23,73,103,63,182,170,191,126,217,186,20,18,91,229,64,156,203,111,22,213,159,143,160,179,200,169,0,94,240,4,87,147,61,52,36,179,172,16,166,200,148,253,73,182,201,201,248,223,10,198,198,247,184,123,131,160,120,168,240,51,183,53,255,178,143,61,122,43,226,191,51,213,220,34,214,172,62,177,47,70,54,41,36,178,50,78,142,76,160,219,168,214,111,42,214,74,148,23,52,48,82,236,216,67,250,16,95,149,205,130,130,231,122,98,17,117,83,173,251,163,56,160,124,156,154,170,36,23,227,152,201,50,24,110,233,199,142,162,242,124,224,249,59,58,68,123,16,24,28,227,103,103,146,174,160,85,145,77,253,172,65,75,215,211,182,248,58,185,136,179,45,249,152,108,78,226,157,231,42,111,122,36,151,73,41,117,58,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,228,225,32,39,192,75,12,156,8,213,116,187,180,53,211,55,153,120,6,99,33,169,229,16,138,187,126,28,220,224,188,141,0],[160,175,84,201,168,228,0,184,154,71,8,92,173,125,235,98,158,248,249,163,199,53,84,89,122,190,11,45,14,4,56,139,43,0],[160,142,201,232,22,116,220,124,158,250,130,181,222,224,24,63,147,141,188,222,77,0,220,29,141,150,62,8,171,138,29,252,209,0],[160,43,82,36,255,85,80,32,35,237,40,104,243,105,18,187,137,194,177,232,54,21,103,44,30,254,80,168,66,245,158,83,79,0],[160,199,248,224,68,250,84,45,149,144,216,217,183,28,234,166,202,133,78,73,59,66,136,131,44,223,246,37,34,104,150,52,96,0],[160,91,187,179,34,48,181,196,195,52,190,54,219,19,198,69,14,89,197,103,201,37,195,102,211,18,23,168,229,43,138,126,166,0],[160,156,22,131,145,232,27,156,162,219,37,159,68,129,123,105,144,118,55,156,115,111,145,57,173,206,144,92,72,84,204,229,34,0],[160,7,107,81,25,26,255,62,129,126,244,23,74,88,155,42,10,129,255,100,189,27,175,76,182,57,79,189,228,23,14,59,224,0],[160,160,222,138,204,126,5,9,221,201,239,253,194,190,50,207,247,235,193,205,95,239,232,189,74,23,32,181,39,64,160,254,172,0],[160,147,72,42,4,64,23,97,208,74,152,53,61,196,94,145,148,169,105,181,67,15,227,173,113,85,253,202,91,50,209,199,244,0],[160,188,173,251,149,23,183,233,144,48,43,230,24,50,84,224,115,129,1,68,119,2,218,141,68,15,233,86,139,89,93,74,203,0],[160,102,151,157,26,53,173,210,98,115,132,145,119,244,39,245,252,104,216,31,69,131,231,223,7,112,239,55,221,191,85,160,112,0],[160,224,46,12,209,28,18,176,43,179,57,8,56,32,133,216,171,79,2,182,9,212,33,72,218,152,134,174,108,239,0,246,100,0],[160,188,166,110,94,36,173,44,240,98,88,79,171,31,58,32,75,171,14,6,154,13,149,86,185,160,13,217,30,139,79,41,249,0],[160,99,219,116,210,28,45,78,210,100,149,253,18,232,9,108,184,255,219,26,65,8,198,216,44,78,230,45,205,141,83,166,231,0],[160,94,64,184,42,252,142,104,65,135,123,135,124,196,247,70,240,76,105,118,243,14,129,178,240,171,19,145,163,66,174,32,119,0],[160,12,58,31,198,128,244,206,15,81,55,193,6,40,179,252,156,66,188,220,145,173,229,251,52,144,251,255,113,57,53,211,128,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,175,84,201,168,228,0,184,154,71,8,92,173,125,235,98,158,248,249,163,199,53,84,89,122,190,11,45,14,4,56,139,43,160,142,201,232,22,116,220,124,158,250,130,181,222,224,24,63,147,141,188,222,77,0,220,29,141,150,62,8,171,138,29,252,209,160,43,82,36,255,85,80,32,35,237,40,104,243,105,18,187,137,194,177,232,54,21,103,44,30,254,80,168,66,245,158,83,79,160,199,248,224,68,250,84,45,149,144,216,217,183,28,234,166,202,133,78,73,59,66,136,131,44,223,246,37,34,104,150,52,96,160,91,187,179,34,48,181,196,195,52,190,54,219,19,198,69,14,89,197,103,201,37,195,102,211,18,23,168,229,43,138,126,166,160,156,22,131,145,232,27,156,162,219,37,159,68,129,123,105,144,118,55,156,115,111,145,57,173,206,144,92,72,84,204,229,34,160,7,107,81,25,26,255,62,129,126,244,23,74,88,155,42,10,129,255,100,189,27,175,76,182,57,79,189,228,23,14,59,224,160,160,222,138,204,126,5,9,221,201,239,253,194,190,50,207,247,235,193,205,95,239,232,189,74,23,32,181,39,64,160,254,172,160,147,72,42,4,64,23,97,208,74,152,53,61,196,94,145,148,169,105,181,67,15,227,173,113,85,253,202,91,50,209,199,244,160,188,173,251,149,23,183,233,144,48,43,230,24,50,84,224,115,129,1,68,119,2,218,141,68,15,233,86,139,89,93,74,203,160,102,151,157,26,53,173,210,98,115,132,145,119,244,39,245,252,104,216,31,69,131,231,223,7,112,239,55,221,191,85,160,112,160,224,46,12,209,28,18,176,43,179,57,8,56,32,133,216,171,79,2,182,9,212,33,72,218,152,134,174,108,239,0,246,100,160,188,166,110,94,36,173,44,240,98,88,79,171,31,58,32,75,171,14,6,154,13,149,86,185,160,13,217,30,139,79,41,249,160,99,219,116,210,28,45,78,210,100,149,253,18,232,9,108,184,255,219,26,65,8,198,216,44,78,230,45,205,141,83,166,231,160,94,64,184,42,252,142,104,65,135,123,135,124,196,247,70,240,76,105,118,243,14,129,178,240,171,19,145,163,66,174,32,119,160,12,58,31,198,128,244,206,15,81,55,193,6,40,179,252,156,66,188,220,145,173,229,251,52,144,251,255,113,57,53,211,128,128],[249,2,17,160,175,84,201,168,228,0,184,154,71,8,92,173,125,235,98,158,248,249,163,199,53,84,89,122,190,11,45,14,4,56,139,43,160,142,201,232,22,116,220,124,158,250,130,181,222,224,24,63,147,141,188,222,77,0,220,29,141,150,62,8,171,138,29,252,209,160,43,82,36,255,85,80,32,35,237,40,104,243,105,18,187,137,194,177,232,54,21,103,44,30,254,80,168,66,245,158,83,79,160,199,248,224,68,250,84,45,149,144,216,217,183,28,234,166,202,133,78,73,59,66,136,131,44,223,246,37,34,104,150,52,96,160,91,187,179,34,48,181,196,195,52,190,54,219,19,198,69,14,89,197,103,201,37,195,102,211,18,23,168,229,43,138,126,166,160,156,22,131,145,232,27,156,162,219,37,159,68,129,123,105,144,118,55,156,115,111,145,57,173,206,144,92,72,84,204,229,34,160,7,107,81,25,26,255,62,129,126,244,23,74,88,155,42,10,129,255,100,189,27,175,76,182,57,79,189,228,23,14,59,224,160,160,222,138,204,126,5,9,221,201,239,253,194,190,50,207,247,235,193,205,95,239,232,189,74,23,32,181,39,64,160,254,172,160,147,72,42,4,64,23,97,208,74,152,53,61,196,94,145,148,169,105,181,67,15,227,173,113,85,253,202,91,50,209,199,244,160,188,173,251,149,23,183,233,144,48,43,230,24,50,84,224,115,129,1,68,119,2,218,141,68,15,233,86,139,89,93,74,203,160,102,151,157,26,53,173,210,98,115,132,145,119,244,39,245,252,104,216,31,69,131,231,223,7,112,239,55,221,191,85,160,112,160,224,46,12,209,28,18,176,43,179,57,8,56,32,133,216,171,79,2,182,9,212,33,72,218,152,134,174,108,239,0,246,100,160,188,166,110,94,36,173,44,240,98,88,79,171,31,58,32,75,171,14,6,154,13,149,86,185,160,13,217,30,139,79,41,249,160,99,219,116,210,28,45,78,210,100,149,253,18,232,9,108,184,255,219,26,65,8,198,216,44,78,230,45,205,141,83,166,231,160,228,225,32,39,192,75,12,156,8,213,116,187,180,53,211,55,153,120,6,99,33,169,229,16,138,187,126,28,220,224,188,141,160,12,58,31,198,128,244,206,15,81,55,193,6,40,179,252,156,66,188,220,145,173,229,251,52,144,251,255,113,57,53,211,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,203,85,116,82,146,104,195,251,188,181,160,83,15,61,19,33,161,240,233,114,63,225,161,56,132,205,208,215,85,120,25,146,0],[160,157,49,72,9,168,199,212,244,19,227,138,187,221,172,227,129,144,156,118,150,91,227,148,137,72,70,215,182,58,214,44,115,0],[160,142,225,153,94,68,106,155,61,66,178,80,180,215,142,156,253,243,134,191,242,5,207,71,100,16,212,112,37,12,25,238,188,0],[160,140,141,162,205,54,205,240,101,110,0,228,214,15,40,73,117,219,138,201,103,43,172,6,65,57,60,55,76,28,96,30,9,0],[160,209,132,91,50,7,206,222,2,220,61,71,168,112,0,240,136,185,234,200,4,119,133,78,71,104,8,88,33,42,230,199,221,0],[160,115,130,29,45,240,44,28,74,54,186,2,67,237,211,183,192,241,136,110,218,65,164,123,13,6,99,21,224,84,47,151,153,0],[160,96,25,108,200,147,183,13,58,23,166,31,99,65,35,93,152,35,118,188,36,67,64,224,89,167,217,194,253,37,55,183,18,0],[160,184,235,63,13,150,149,63,0,117,245,64,101,234,142,239,154,85,223,14,32,62,9,252,8,66,98,194,151,9,62,194,139,0],[160,63,47,136,104,4,254,131,213,54,7,151,77,47,137,73,115,236,252,190,88,202,63,181,125,59,155,172,181,54,202,17,247,0],[160,3,113,57,152,230,40,254,195,180,164,231,57,17,131,232,25,46,172,92,94,145,124,198,160,229,175,124,227,247,19,159,40,0],[160,103,163,129,235,75,3,208,75,23,179,108,227,78,160,223,91,208,98,91,233,160,198,86,8,132,8,224,237,48,254,138,118,0],[160,95,220,47,9,122,22,99,24,49,39,245,220,13,228,123,192,147,13,125,168,58,88,177,21,196,62,74,159,229,39,41,79,0],[160,88,166,30,78,145,240,20,49,216,127,251,238,250,252,128,216,101,94,197,137,252,132,68,61,207,8,190,224,63,213,234,112,0],[160,116,89,226,121,210,213,34,98,150,193,117,200,198,226,209,171,51,221,129,162,168,233,129,169,195,196,96,49,192,36,139,71,0],[160,117,186,44,188,138,184,207,119,18,231,39,75,241,26,152,158,180,92,44,216,195,156,39,233,176,208,14,8,191,59,189,141,0],[160,72,83,39,121,92,221,181,157,125,58,78,202,133,71,192,52,39,95,40,36,240,218,84,67,66,217,87,122,179,51,152,18,0],[160,138,88,60,199,109,25,5,160,200,80,209,157,157,200,33,124,103,16,1,26,155,5,124,88,251,171,29,219,176,76,185,159,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,157,49,72,9,168,199,212,244,19,227,138,187,221,172,227,129,144,156,118,150,91,227,148,137,72,70,215,182,58,214,44,115,160,142,225,153,94,68,106,155,61,66,178,80,180,215,142,156,253,243,134,191,242,5,207,71,100,16,212,112,37,12,25,238,188,160,140,141,162,205,54,205,240,101,110,0,228,214,15,40,73,117,219,138,201,103,43,172,6,65,57,60,55,76,28,96,30,9,160,209,132,91,50,7,206,222,2,220,61,71,168,112,0,240,136,185,234,200,4,119,133,78,71,104,8,88,33,42,230,199,221,160,115,130,29,45,240,44,28,74,54,186,2,67,237,211,183,192,241,136,110,218,65,164,123,13,6,99,21,224,84,47,151,153,160,96,25,108,200,147,183,13,58,23,166,31,99,65,35,93,152,35,118,188,36,67,64,224,89,167,217,194,253,37,55,183,18,160,184,235,63,13,150,149,63,0,117,245,64,101,234,142,239,154,85,223,14,32,62,9,252,8,66,98,194,151,9,62,194,139,160,63,47,136,104,4,254,131,213,54,7,151,77,47,137,73,115,236,252,190,88,202,63,181,125,59,155,172,181,54,202,17,247,160,3,113,57,152,230,40,254,195,180,164,231,57,17,131,232,25,46,172,92,94,145,124,198,160,229,175,124,227,247,19,159,40,160,103,163,129,235,75,3,208,75,23,179,108,227,78,160,223,91,208,98,91,233,160,198,86,8,132,8,224,237,48,254,138,118,160,95,220,47,9,122,22,99,24,49,39,245,220,13,228,123,192,147,13,125,168,58,88,177,21,196,62,74,159,229,39,41,79,160,88,166,30,78,145,240,20,49,216,127,251,238,250,252,128,216,101,94,197,137,252,132,68,61,207,8,190,224,63,213,234,112,160,116,89,226,121,210,213,34,98,150,193,117,200,198,226,209,171,51,221,129,162,168,233,129,169,195,196,96,49,192,36,139,71,160,117,186,44,188,138,184,207,119,18,231,39,75,241,26,152,158,180,92,44,216,195,156,39,233,176,208,14,8,191,59,189,141,160,72,83,39,121,92,221,181,157,125,58,78,202,133,71,192,52,39,95,40,36,240,218,84,67,66,217,87,122,179,51,152,18,160,138,88,60,199,109,25,5,160,200,80,209,157,157,200,33,124,103,16,1,26,155,5,124,88,251,171,29,219,176,76,185,159,128],[249,2,17,160,157,49,72,9,168,199,212,244,19,227,138,187,221,172,227,129,144,156,118,150,91,227,148,137,72,70,215,182,58,214,44,115,160,142,225,153,94,68,106,155,61,66,178,80,180,215,142,156,253,243,134,191,242,5,207,71,100,16,212,112,37,12,25,238,188,160,140,141,162,205,54,205,240,101,110,0,228,214,15,40,73,117,219,138,201,103,43,172,6,65,57,60,55,76,28,96,30,9,160,209,132,91,50,7,206,222,2,220,61,71,168,112,0,240,136,185,234,200,4,119,133,78,71,104,8,88,33,42,230,199,221,160,115,130,29,45,240,44,28,74,54,186,2,67,237,211,183,192,241,136,110,218,65,164,123,13,6,99,21,224,84,47,151,153,160,203,85,116,82,146,104,195,251,188,181,160,83,15,61,19,33,161,240,233,114,63,225,161,56,132,205,208,215,85,120,25,146,160,184,235,63,13,150,149,63,0,117,245,64,101,234,142,239,154,85,223,14,32,62,9,252,8,66,98,194,151,9,62,194,139,160,63,47,136,104,4,254,131,213,54,7,151,77,47,137,73,115,236,252,190,88,202,63,181,125,59,155,172,181,54,202,17,247,160,3,113,57,152,230,40,254,195,180,164,231,57,17,131,232,25,46,172,92,94,145,124,198,160,229,175,124,227,247,19,159,40,160,103,163,129,235,75,3,208,75,23,179,108,227,78,160,223,91,208,98,91,233,160,198,86,8,132,8,224,237,48,254,138,118,160,95,220,47,9,122,22,99,24,49,39,245,220,13,228,123,192,147,13,125,168,58,88,177,21,196,62,74,159,229,39,41,79,160,88,166,30,78,145,240,20,49,216,127,251,238,250,252,128,216,101,94,197,137,252,132,68,61,207,8,190,224,63,213,234,112,160,116,89,226,121,210,213,34,98,150,193,117,200,198,226,209,171,51,221,129,162,168,233,129,169,195,196,96,49,192,36,139,71,160,117,186,44,188,138,184,207,119,18,231,39,75,241,26,152,158,180,92,44,216,195,156,39,233,176,208,14,8,191,59,189,141,160,72,83,39,121,92,221,181,157,125,58,78,202,133,71,192,52,39,95,40,36,240,218,84,67,66,217,87,122,179,51,152,18,160,138,88,60,199,109,25,5,160,200,80,209,157,157,200,33,124,103,16,1,26,155,5,124,88,251,171,29,219,176,76,185,159,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":2,"drifted_index":2,"list_rlp_bytes":[[248,209],[248,209]]}},"account":null,"storage":null,"values":[[160,20,250,25,247,41,65,210,193,97,11,76,144,240,120,188,39,235,168,98,89,68,7,86,7,28,47,91,32,214,89,49,31,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,181,173,145,212,74,109,222,119,141,188,57,114,44,179,205,108,136,241,21,94,155,155,126,1,65,123,183,164,53,142,172,80,0],[160,123,166,194,78,125,205,19,63,5,32,43,62,169,68,246,134,207,242,37,109,113,124,127,180,151,9,24,84,185,14,173,180,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,66,41,209,222,96,221,184,36,89,21,89,184,152,254,60,16,37,150,250,120,144,139,38,111,41,15,226,116,202,158,77,229,0],[160,185,34,227,141,15,168,232,207,212,205,209,74,135,114,253,204,159,18,66,221,135,209,192,183,202,131,245,18,3,189,115,206,0],[160,166,124,191,187,48,24,150,201,144,143,192,67,72,140,4,103,76,234,200,194,253,200,155,94,100,190,160,105,156,60,0,48,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,199,102,157,141,43,148,65,199,159,101,169,108,5,65,181,10,178,211,96,182,191,241,121,145,102,43,2,57,85,7,171,208,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,209,128,160,181,173,145,212,74,109,222,119,141,188,57,114,44,179,205,108,136,241,21,94,155,155,126,1,65,123,183,164,53,142,172,80,160,123,166,194,78,125,205,19,63,5,32,43,62,169,68,246,134,207,242,37,109,113,124,127,180,151,9,24,84,185,14,173,180,128,128,128,128,160,66,41,209,222,96,221,184,36,89,21,89,184,152,254,60,16,37,150,250,120,144,139,38,111,41,15,226,116,202,158,77,229,160,185,34,227,141,15,168,232,207,212,205,209,74,135,114,253,204,159,18,66,221,135,209,192,183,202,131,245,18,3,189,115,206,160,166,124,191,187,48,24,150,201,144,143,192,67,72,140,4,103,76,234,200,194,253,200,155,94,100,190,160,105,156,60,0,48,128,128,128,128,160,199,102,157,141,43,148,65,199,159,101,169,108,5,65,181,10,178,211,96,182,191,241,121,145,102,43,2,57,85,7,171,208,128,128],[248,209,128,160,181,173,145,212,74,109,222,119,141,188,57,114,44,179,205,108,136,241,21,94,155,155,126,1,65,123,183,164,53,142,172,80,160,20,250,25,247,41,65,210,193,97,11,76,144,240,120,188,39,235,168,98,89,68,7,86,7,28,47,91,32,214,89,49,31,128,128,128,128,160,66,41,209,222,96,221,184,36,89,21,89,184,152,254,60,16,37,150,250,120,144,139,38,111,41,15,226,116,202,158,77,229,160,185,34,227,141,15,168,232,207,212,205,209,74,135,114,253,204,159,18,66,221,135,209,192,183,202,131,245,18,3,189,115,206,160,166,124,191,187,48,24,150,201,144,143,192,67,72,140,4,103,76,234,200,194,253,200,155,94,100,190,160,105,156,60,0,48,128,128,128,128,160,199,102,157,141,43,148,65,199,159,101,169,108,5,65,181,10,178,211,96,182,191,241,121,145,102,43,2,57,85,7,171,208,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[80,254,177,242,88,1,56,188,98,60,151,85,114,134,223,78,36,235,129,201],"key":[120,138,229,47,218,28,43,235,133,51,194,3,179,148,41,2,143,246,126,9,123,153,217,195,30,24,246,59,96,2,243,226],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,63,218,28,43,235,133,51,194,3,179,148,41,2,143,246,126,9,123,153,217,195,30,24,246,59,96,2,243,226,0,0,0,0],[157,63,218,28,43,235,133,51,194,3,179,148,41,2,143,246,126,9,123,153,217,195,30,24,246,59,96,2,243,226,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,213,62,161,8,35,98,145,66,78,44,110,92,163,203,160,13,207,98,201,83,136,68,35,199,120,126,199,65,143,183,49,133,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,139,130,164,93,112,201,126,157,50,210,212,214,217,71,43,105,8,91,80,30,55,7,186,162,184,98,51,194,180,10,224,101,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,63,218,28,43,235,133,51,194,3,179,148,41,2,143,246,126,9,123,153,217,195,30,24,246,59,96,2,243,226,0,0,0,0]],"keccak_data":[[248,102,157,63,218,28,43,235,133,51,194,3,179,148,41,2,143,246,126,9,123,153,217,195,30,24,246,59,96,2,243,226,184,70,248,68,128,128,160,213,62,161,8,35,98,145,66,78,44,110,92,163,203,160,13,207,98,201,83,136,68,35,199,120,126,199,65,143,183,49,133,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,63,218,28,43,235,133,51,194,3,179,148,41,2,143,246,126,9,123,153,217,195,30,24,246,59,96,2,243,226,184,70,248,68,128,128,160,139,130,164,93,112,201,126,157,50,210,212,214,217,71,43,105,8,91,80,30,55,7,186,162,184,98,51,194,180,10,224,101,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[80,254,177,242,88,1,56,188,98,60,151,85,114,134,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,1,113],[249,1,113]]}},"account":null,"storage":null,"values":[[160,165,241,158,176,215,149,218,230,216,158,220,156,5,39,56,237,134,233,251,135,191,3,212,3,168,234,235,195,137,42,188,115,0],[160,136,87,99,158,57,68,238,251,83,252,146,127,216,42,55,27,214,253,106,218,143,159,233,203,194,182,56,28,26,235,95,236,0],[160,183,61,21,88,192,16,29,107,46,186,196,241,234,252,196,232,56,231,43,220,244,49,201,108,250,122,6,130,156,122,119,10,0],[160,79,197,241,58,178,249,186,12,45,168,139,1,81,171,14,124,244,216,93,8,204,164,92,205,146,60,106,183,99,35,235,40,0],[160,147,31,200,131,19,49,103,136,46,1,167,47,128,146,235,40,179,181,1,99,210,43,90,113,42,63,194,216,20,174,42,218,0],[160,21,80,62,145,249,37,6,84,207,114,144,110,56,167,203,20,195,241,204,6,101,131,121,211,127,12,91,92,50,72,40,128,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,169,18,162,145,57,53,65,63,240,75,85,206,217,60,29,201,24,232,211,108,49,208,137,37,40,163,39,144,96,35,83,209,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,7,27,1,31,219,212,173,125,30,111,151,98,190,77,26,136,223,253,230,20,166,189,57,155,243,181,186,216,244,18,73,181,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,197,213,75,145,91,86,168,136,238,228,230,238,179,20,30,119,143,155,103,77,29,50,41,98,238,217,0,240,44,41,153,10,0],[160,221,201,203,168,157,78,183,36,187,128,74,31,157,245,231,146,14,85,81,158,154,225,119,239,34,214,95,87,78,245,32,116,0],[160,27,86,204,10,91,155,28,227,78,154,20,232,150,234,0,12,131,11,214,67,135,87,61,35,140,190,63,162,77,223,162,195,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,51,64,187,174,175,205,163,168,103,46,184,48,153,35,29,187,250,184,218,224,42,30,142,194,247,24,5,56,250,194,7,224,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,113,160,136,87,99,158,57,68,238,251,83,252,146,127,216,42,55,27,214,253,106,218,143,159,233,203,194,182,56,28,26,235,95,236,160,183,61,21,88,192,16,29,107,46,186,196,241,234,252,196,232,56,231,43,220,244,49,201,108,250,122,6,130,156,122,119,10,160,79,197,241,58,178,249,186,12,45,168,139,1,81,171,14,124,244,216,93,8,204,164,92,205,146,60,106,183,99,35,235,40,160,147,31,200,131,19,49,103,136,46,1,167,47,128,146,235,40,179,181,1,99,210,43,90,113,42,63,194,216,20,174,42,218,160,21,80,62,145,249,37,6,84,207,114,144,110,56,167,203,20,195,241,204,6,101,131,121,211,127,12,91,92,50,72,40,128,128,160,169,18,162,145,57,53,65,63,240,75,85,206,217,60,29,201,24,232,211,108,49,208,137,37,40,163,39,144,96,35,83,209,128,160,7,27,1,31,219,212,173,125,30,111,151,98,190,77,26,136,223,253,230,20,166,189,57,155,243,181,186,216,244,18,73,181,128,160,197,213,75,145,91,86,168,136,238,228,230,238,179,20,30,119,143,155,103,77,29,50,41,98,238,217,0,240,44,41,153,10,160,221,201,203,168,157,78,183,36,187,128,74,31,157,245,231,146,14,85,81,158,154,225,119,239,34,214,95,87,78,245,32,116,160,27,86,204,10,91,155,28,227,78,154,20,232,150,234,0,12,131,11,214,67,135,87,61,35,140,190,63,162,77,223,162,195,128,128,160,51,64,187,174,175,205,163,168,103,46,184,48,153,35,29,187,250,184,218,224,42,30,142,194,247,24,5,56,250,194,7,224,128],[249,1,113,160,136,87,99,158,57,68,238,251,83,252,146,127,216,42,55,27,214,253,106,218,143,159,233,203,194,182,56,28,26,235,95,236,160,183,61,21,88,192,16,29,107,46,186,196,241,234,252,196,232,56,231,43,220,244,49,201,108,250,122,6,130,156,122,119,10,160,79,197,241,58,178,249,186,12,45,168,139,1,81,171,14,124,244,216,93,8,204,164,92,205,146,60,106,183,99,35,235,40,160,147,31,200,131,19,49,103,136,46,1,167,47,128,146,235,40,179,181,1,99,210,43,90,113,42,63,194,216,20,174,42,218,160,21,80,62,145,249,37,6,84,207,114,144,110,56,167,203,20,195,241,204,6,101,131,121,211,127,12,91,92,50,72,40,128,128,160,169,18,162,145,57,53,65,63,240,75,85,206,217,60,29,201,24,232,211,108,49,208,137,37,40,163,39,144,96,35,83,209,128,160,7,27,1,31,219,212,173,125,30,111,151,98,190,77,26,136,223,253,230,20,166,189,57,155,243,181,186,216,244,18,73,181,128,160,197,213,75,145,91,86,168,136,238,228,230,238,179,20,30,119,143,155,103,77,29,50,41,98,238,217,0,240,44,41,153,10,160,165,241,158,176,215,149,218,230,216,158,220,156,5,39,56,237,134,233,251,135,191,3,212,3,168,234,235,195,137,42,188,115,160,27,86,204,10,91,155,28,227,78,154,20,232,150,234,0,12,131,11,214,67,135,87,61,35,140,190,63,162,77,223,162,195,128,128,160,51,64,187,174,175,205,163,168,103,46,184,48,153,35,29,187,250,184,218,224,42,30,142,194,247,24,5,56,250,194,7,224,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,25,127,67,53,5,23,184,21,12,18,224,101,234,96,185,53,191,13,78,203,91,170,9,93,254,42,226,71,74,41,22,253,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,150,69,94,225,216,87,199,7,148,97,118,250,90,6,55,217,74,2,146,116,204,17,76,170,51,133,23,237,110,94,224,94,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,117,254,248,169,140,212,202,48,190,248,66,108,226,49,13,176,213,221,44,93,158,12,29,42,13,71,21,208,116,159,193,173,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,160,150,69,94,225,216,87,199,7,148,97,118,250,90,6,55,217,74,2,146,116,204,17,76,170,51,133,23,237,110,94,224,94,128,128,128,128,128,128,128,128,128,160,117,254,248,169,140,212,202,48,190,248,66,108,226,49,13,176,213,221,44,93,158,12,29,42,13,71,21,208,116,159,193,173,128,128,128,128,128],[248,81,128,160,25,127,67,53,5,23,184,21,12,18,224,101,234,96,185,53,191,13,78,203,91,170,9,93,254,42,226,71,74,41,22,253,128,128,128,128,128,128,128,128,128,160,117,254,248,169,140,212,202,48,190,248,66,108,226,49,13,176,213,221,44,93,158,12,29,42,13,71,21,208,116,159,193,173,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[true,false],"extension":{"list_rlp_bytes":[228]},"branch":{"modified_index":5,"drifted_index":13,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,188,178,199,199,209,239,146,86,121,34,1,99,27,94,194,60,129,152,207,91,40,154,205,214,123,53,11,189,147,203,27,182,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,188,178,199,199,209,239,146,86,121,34,1,99,27,94,194,60,129,152,207,91,40,154,205,214,123,53,11,189,147,203,27,182,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,191,71,239,74,19,210,48,95,245,219,155,214,119,15,115,38,110,156,238,68,43,0,186,153,83,138,157,91,125,116,238,156,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[130,16,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,197,20,48,16,135,80,11,248,224,202,109,185,241,250,124,9,109,47,58,230,32,170,155,98,102,30,150,234,247,180,212,209,0],[0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,197,20,48,16,135,80,11,248,224,202,109,185,241,250,124,9,109,47,58,230,32,170,155,98,102,30,150,234,247,180,212,209,0]],"keccak_data":[[248,81,128,128,128,128,128,160,188,178,199,199,209,239,146,86,121,34,1,99,27,94,194,60,129,152,207,91,40,154,205,214,123,53,11,189,147,203,27,182,128,128,128,128,128,128,128,160,191,71,239,74,19,210,48,95,245,219,155,214,119,15,115,38,110,156,238,68,43,0,186,153,83,138,157,91,125,116,238,156,128,128,128],[248,81,128,128,128,128,128,160,188,178,199,199,209,239,146,86,121,34,1,99,27,94,194,60,129,152,207,91,40,154,205,214,123,53,11,189,147,203,27,182,128,128,128,128,128,128,128,160,191,71,239,74,19,210,48,95,245,219,155,214,119,15,115,38,110,156,238,68,43,0,186,153,83,138,157,91,125,116,238,156,128,128,128],[228,130,16,226,160,197,20,48,16,135,80,11,248,224,202,109,185,241,250,124,9,109,47,58,230,32,170,155,98,102,30,150,234,247,180,212,209],[228,130,16,226,160,197,20,48,16,135,80,11,248,224,202,109,185,241,250,124,9,109,47,58,230,32,170,155,98,102,30,150,234,247,180,212,209]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,50,52],"key":[177,14,37,119,247,121,182,85,98,237,248,234,41,197,17,202,86,71,159,217,0,117,14,166,144,244,96,114,36,239,104,53],"list_rlp_bytes":[[226],[224]],"value_rlp_bytes":[[1],[17]],"drifted_rlp_bytes":[224],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,32,14,45,82,118,18,7,59,38,238,205,253,113,126,106,50,12,244,75,74,250,194,176,115,45,159,203,226,183,250,12,246,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[158,32,119,247,121,182,85,98,237,248,234,41,197,17,202,86,71,159,217,0,117,14,166,144,244,96,114,36,239,104,53,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[158,32,82,118,18,7,59,38,238,205,253,113,126,106,50,12,244,75,74,250,194,176,115,45,159,203,226,183,250,12,246,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[226,160,32,14,45,82,118,18,7,59,38,238,205,253,113,126,106,50,12,244,75,74,250,194,176,115,45,159,203,226,183,250,12,246,1],[224,158,32,119,247,121,182,85,98,237,248,234,41,197,17,202,86,71,159,217,0,117,14,166,144,244,96,114,36,239,104,53,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,50,52],[224,158,32,82,118,18,7,59,38,238,205,253,113,126,106,50,12,244,75,74,250,194,176,115,45,159,203,226,183,250,12,246,1]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ExtensionAddedTwoKeyBytesSel1.json b/zkevm-circuits/src/mpt_circuit/tests/ExtensionAddedTwoKeyBytesSel1.json new file mode 100644 index 0000000000..bcccd27421 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ExtensionAddedTwoKeyBytesSel1.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,86,26,48,161,98,103,183,20,138,29,241,150,119,155,87,67,207,58,109,105,100,56,186,228,18,200,81,29,64,123,181,113,0],[160,177,96,250,227,113,87,201,33,23,229,141,228,112,73,55,249,63,156,216,131,7,83,214,227,115,64,239,175,220,112,86,178,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,231,126,135,6,247,251,2,162,247,172,95,6,61,182,123,232,97,183,71,212,244,47,254,64,148,31,13,249,0,55,160,80,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,55,113,81,185,233,127,111,216,94,136,134,118,115,255,153,126,34,252,63,26,6,30,226,246,176,164,87,95,91,159,249,143,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,55,113,81,185,233,127,111,216,94,136,134,118,115,255,153,126,34,252,63,26,6,30,226,246,176,164,87,95,91,159,249,143,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,231,126,135,6,247,251,2,162,247,172,95,6,61,182,123,232,97,183,71,212,244,47,254,64,148,31,13,249,0,55,160,80,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,34,64,138,125,179,162,146,88,173,94,62,118,168,59,117,28,67,188,72,35,28,61,166,161,26,53,200,107,35,98,232,78,0],[160,0,206,33,240,101,251,90,188,73,10,150,144,56,188,30,27,85,139,94,5,74,204,46,227,225,161,245,164,212,123,119,17,0],[160,158,197,146,195,133,234,84,43,152,85,76,221,237,86,132,255,115,79,61,107,23,194,92,56,75,113,216,10,200,183,87,26,0],[160,194,152,14,169,119,137,64,54,162,181,197,145,208,235,167,184,70,163,196,232,144,255,116,16,132,177,77,174,101,172,104,104,0],[160,49,47,172,152,7,7,6,11,232,103,121,231,161,101,145,71,211,123,164,44,71,10,103,248,185,164,232,204,165,45,250,102,0],[160,68,19,96,150,137,200,112,23,100,65,2,179,154,130,167,209,205,114,87,189,201,71,56,52,59,176,142,55,246,33,222,198,0],[160,251,159,160,83,211,116,229,131,128,121,6,167,79,65,130,133,235,11,46,40,143,56,170,93,126,89,134,255,94,27,253,200,0],[160,153,56,68,205,140,247,250,231,180,188,89,107,54,149,145,83,147,173,184,162,137,156,161,58,69,102,85,11,26,243,192,247,0],[160,84,11,169,54,36,169,241,17,118,20,121,192,66,53,145,167,106,20,34,93,81,153,161,151,166,111,186,196,207,79,205,102,0],[160,21,204,109,8,193,125,112,192,47,37,182,82,90,109,229,234,172,243,83,193,102,230,190,180,211,203,242,20,246,16,116,37,0],[160,2,110,30,248,38,115,226,23,53,13,149,185,153,44,145,216,62,245,29,160,176,11,217,110,165,94,251,184,155,55,249,242,0],[160,167,46,230,43,234,32,209,151,178,230,220,223,167,95,226,105,101,123,1,163,65,37,73,49,185,130,26,88,87,252,241,42,0],[160,137,62,202,192,116,223,58,179,189,121,20,106,116,93,190,135,19,188,37,163,59,107,40,241,88,142,206,9,234,163,219,69,0],[160,74,166,255,37,80,208,11,236,208,85,44,196,213,203,218,41,43,59,35,132,56,206,202,50,27,77,241,165,33,96,71,223,0],[160,145,245,133,65,255,26,96,140,173,209,133,207,36,36,151,166,254,245,244,101,139,185,231,35,159,31,57,31,33,18,45,78,0],[160,60,217,92,4,104,103,148,169,116,98,182,50,210,45,100,120,94,64,85,175,168,151,183,14,126,152,234,94,158,106,32,112,0],[160,79,71,88,62,75,54,226,220,72,114,42,84,193,10,153,112,156,49,56,210,107,120,3,176,215,31,85,113,94,10,176,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,0,206,33,240,101,251,90,188,73,10,150,144,56,188,30,27,85,139,94,5,74,204,46,227,225,161,245,164,212,123,119,17,160,158,197,146,195,133,234,84,43,152,85,76,221,237,86,132,255,115,79,61,107,23,194,92,56,75,113,216,10,200,183,87,26,160,194,152,14,169,119,137,64,54,162,181,197,145,208,235,167,184,70,163,196,232,144,255,116,16,132,177,77,174,101,172,104,104,160,49,47,172,152,7,7,6,11,232,103,121,231,161,101,145,71,211,123,164,44,71,10,103,248,185,164,232,204,165,45,250,102,160,68,19,96,150,137,200,112,23,100,65,2,179,154,130,167,209,205,114,87,189,201,71,56,52,59,176,142,55,246,33,222,198,160,251,159,160,83,211,116,229,131,128,121,6,167,79,65,130,133,235,11,46,40,143,56,170,93,126,89,134,255,94,27,253,200,160,153,56,68,205,140,247,250,231,180,188,89,107,54,149,145,83,147,173,184,162,137,156,161,58,69,102,85,11,26,243,192,247,160,84,11,169,54,36,169,241,17,118,20,121,192,66,53,145,167,106,20,34,93,81,153,161,151,166,111,186,196,207,79,205,102,160,21,204,109,8,193,125,112,192,47,37,182,82,90,109,229,234,172,243,83,193,102,230,190,180,211,203,242,20,246,16,116,37,160,2,110,30,248,38,115,226,23,53,13,149,185,153,44,145,216,62,245,29,160,176,11,217,110,165,94,251,184,155,55,249,242,160,167,46,230,43,234,32,209,151,178,230,220,223,167,95,226,105,101,123,1,163,65,37,73,49,185,130,26,88,87,252,241,42,160,137,62,202,192,116,223,58,179,189,121,20,106,116,93,190,135,19,188,37,163,59,107,40,241,88,142,206,9,234,163,219,69,160,74,166,255,37,80,208,11,236,208,85,44,196,213,203,218,41,43,59,35,132,56,206,202,50,27,77,241,165,33,96,71,223,160,145,245,133,65,255,26,96,140,173,209,133,207,36,36,151,166,254,245,244,101,139,185,231,35,159,31,57,31,33,18,45,78,160,60,217,92,4,104,103,148,169,116,98,182,50,210,45,100,120,94,64,85,175,168,151,183,14,126,152,234,94,158,106,32,112,160,79,71,88,62,75,54,226,220,72,114,42,84,193,10,153,112,156,49,56,210,107,120,3,176,215,31,85,113,94,10,176,0,128],[249,2,17,160,0,206,33,240,101,251,90,188,73,10,150,144,56,188,30,27,85,139,94,5,74,204,46,227,225,161,245,164,212,123,119,17,160,158,197,146,195,133,234,84,43,152,85,76,221,237,86,132,255,115,79,61,107,23,194,92,56,75,113,216,10,200,183,87,26,160,194,152,14,169,119,137,64,54,162,181,197,145,208,235,167,184,70,163,196,232,144,255,116,16,132,177,77,174,101,172,104,104,160,49,47,172,152,7,7,6,11,232,103,121,231,161,101,145,71,211,123,164,44,71,10,103,248,185,164,232,204,165,45,250,102,160,68,19,96,150,137,200,112,23,100,65,2,179,154,130,167,209,205,114,87,189,201,71,56,52,59,176,142,55,246,33,222,198,160,34,64,138,125,179,162,146,88,173,94,62,118,168,59,117,28,67,188,72,35,28,61,166,161,26,53,200,107,35,98,232,78,160,153,56,68,205,140,247,250,231,180,188,89,107,54,149,145,83,147,173,184,162,137,156,161,58,69,102,85,11,26,243,192,247,160,84,11,169,54,36,169,241,17,118,20,121,192,66,53,145,167,106,20,34,93,81,153,161,151,166,111,186,196,207,79,205,102,160,21,204,109,8,193,125,112,192,47,37,182,82,90,109,229,234,172,243,83,193,102,230,190,180,211,203,242,20,246,16,116,37,160,2,110,30,248,38,115,226,23,53,13,149,185,153,44,145,216,62,245,29,160,176,11,217,110,165,94,251,184,155,55,249,242,160,167,46,230,43,234,32,209,151,178,230,220,223,167,95,226,105,101,123,1,163,65,37,73,49,185,130,26,88,87,252,241,42,160,137,62,202,192,116,223,58,179,189,121,20,106,116,93,190,135,19,188,37,163,59,107,40,241,88,142,206,9,234,163,219,69,160,74,166,255,37,80,208,11,236,208,85,44,196,213,203,218,41,43,59,35,132,56,206,202,50,27,77,241,165,33,96,71,223,160,145,245,133,65,255,26,96,140,173,209,133,207,36,36,151,166,254,245,244,101,139,185,231,35,159,31,57,31,33,18,45,78,160,60,217,92,4,104,103,148,169,116,98,182,50,210,45,100,120,94,64,85,175,168,151,183,14,126,152,234,94,158,106,32,112,160,79,71,88,62,75,54,226,220,72,114,42,84,193,10,153,112,156,49,56,210,107,120,3,176,215,31,85,113,94,10,176,0,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,27,140,43,219,38,74,228,17,70,96,145,40,220,163,189,47,186,165,71,0,255,207,232,131,166,208,234,178,210,20,55,252,0],[160,203,87,180,45,19,172,24,151,176,8,27,47,192,189,32,113,228,245,158,104,157,237,63,19,196,74,37,208,213,20,1,213,0],[160,132,48,250,11,195,102,49,193,238,164,205,16,173,44,2,29,58,172,221,235,127,251,229,66,91,191,112,91,236,207,104,120,0],[160,131,213,136,238,187,58,77,165,180,116,229,218,162,253,156,209,171,144,175,8,191,107,28,11,209,43,36,29,189,28,84,211,0],[160,69,204,182,150,212,83,114,124,133,157,80,247,44,120,54,203,254,245,86,190,51,208,132,224,93,251,231,167,209,73,103,67,0],[160,132,176,57,248,168,242,46,234,206,37,24,51,181,185,91,122,16,61,171,182,237,94,83,95,74,121,149,154,126,96,71,47,0],[160,1,8,149,21,233,104,85,4,158,168,223,169,31,36,59,203,201,67,39,188,53,208,204,206,225,123,200,204,69,80,227,17,0],[160,125,116,23,208,88,146,41,122,93,143,44,12,1,72,164,128,28,109,197,44,22,213,208,92,249,228,104,148,1,126,215,126,0],[160,48,220,143,189,40,125,41,221,219,161,44,173,255,212,230,189,162,18,91,234,7,206,235,164,51,174,41,34,91,222,36,223,0],[160,197,159,133,129,224,237,45,64,249,182,173,101,245,118,244,56,8,223,218,171,147,173,20,252,237,239,214,134,138,2,244,3,0],[160,169,198,159,86,160,240,203,102,247,34,149,195,177,66,175,8,30,213,88,17,100,22,220,219,80,147,187,177,9,151,33,224,0],[160,180,99,60,107,34,255,249,17,167,167,19,194,147,218,132,227,171,42,105,175,75,118,243,161,158,184,143,130,30,0,146,111,0],[160,173,218,74,214,33,206,79,127,44,161,168,119,133,239,13,130,239,92,194,134,224,239,124,169,78,177,48,76,201,106,32,128,0],[160,108,87,252,142,107,66,43,180,74,185,19,159,173,40,179,153,39,74,10,28,13,144,247,183,51,218,154,113,161,231,143,65,0],[160,50,5,220,4,115,212,19,13,196,112,96,232,166,44,178,146,110,2,157,194,28,118,5,235,50,212,222,201,126,28,165,152,0],[160,202,141,42,110,85,123,249,63,238,111,75,253,234,3,1,19,70,217,217,11,190,130,101,11,173,159,20,248,94,75,254,189,0],[160,20,25,119,129,22,221,65,78,129,235,24,175,17,191,66,181,74,205,232,126,229,189,28,246,225,195,204,18,22,124,155,60,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,203,87,180,45,19,172,24,151,176,8,27,47,192,189,32,113,228,245,158,104,157,237,63,19,196,74,37,208,213,20,1,213,160,132,48,250,11,195,102,49,193,238,164,205,16,173,44,2,29,58,172,221,235,127,251,229,66,91,191,112,91,236,207,104,120,160,131,213,136,238,187,58,77,165,180,116,229,218,162,253,156,209,171,144,175,8,191,107,28,11,209,43,36,29,189,28,84,211,160,69,204,182,150,212,83,114,124,133,157,80,247,44,120,54,203,254,245,86,190,51,208,132,224,93,251,231,167,209,73,103,67,160,132,176,57,248,168,242,46,234,206,37,24,51,181,185,91,122,16,61,171,182,237,94,83,95,74,121,149,154,126,96,71,47,160,1,8,149,21,233,104,85,4,158,168,223,169,31,36,59,203,201,67,39,188,53,208,204,206,225,123,200,204,69,80,227,17,160,125,116,23,208,88,146,41,122,93,143,44,12,1,72,164,128,28,109,197,44,22,213,208,92,249,228,104,148,1,126,215,126,160,48,220,143,189,40,125,41,221,219,161,44,173,255,212,230,189,162,18,91,234,7,206,235,164,51,174,41,34,91,222,36,223,160,197,159,133,129,224,237,45,64,249,182,173,101,245,118,244,56,8,223,218,171,147,173,20,252,237,239,214,134,138,2,244,3,160,169,198,159,86,160,240,203,102,247,34,149,195,177,66,175,8,30,213,88,17,100,22,220,219,80,147,187,177,9,151,33,224,160,180,99,60,107,34,255,249,17,167,167,19,194,147,218,132,227,171,42,105,175,75,118,243,161,158,184,143,130,30,0,146,111,160,173,218,74,214,33,206,79,127,44,161,168,119,133,239,13,130,239,92,194,134,224,239,124,169,78,177,48,76,201,106,32,128,160,108,87,252,142,107,66,43,180,74,185,19,159,173,40,179,153,39,74,10,28,13,144,247,183,51,218,154,113,161,231,143,65,160,50,5,220,4,115,212,19,13,196,112,96,232,166,44,178,146,110,2,157,194,28,118,5,235,50,212,222,201,126,28,165,152,160,202,141,42,110,85,123,249,63,238,111,75,253,234,3,1,19,70,217,217,11,190,130,101,11,173,159,20,248,94,75,254,189,160,20,25,119,129,22,221,65,78,129,235,24,175,17,191,66,181,74,205,232,126,229,189,28,246,225,195,204,18,22,124,155,60,128],[249,2,17,160,203,87,180,45,19,172,24,151,176,8,27,47,192,189,32,113,228,245,158,104,157,237,63,19,196,74,37,208,213,20,1,213,160,132,48,250,11,195,102,49,193,238,164,205,16,173,44,2,29,58,172,221,235,127,251,229,66,91,191,112,91,236,207,104,120,160,131,213,136,238,187,58,77,165,180,116,229,218,162,253,156,209,171,144,175,8,191,107,28,11,209,43,36,29,189,28,84,211,160,69,204,182,150,212,83,114,124,133,157,80,247,44,120,54,203,254,245,86,190,51,208,132,224,93,251,231,167,209,73,103,67,160,132,176,57,248,168,242,46,234,206,37,24,51,181,185,91,122,16,61,171,182,237,94,83,95,74,121,149,154,126,96,71,47,160,1,8,149,21,233,104,85,4,158,168,223,169,31,36,59,203,201,67,39,188,53,208,204,206,225,123,200,204,69,80,227,17,160,125,116,23,208,88,146,41,122,93,143,44,12,1,72,164,128,28,109,197,44,22,213,208,92,249,228,104,148,1,126,215,126,160,48,220,143,189,40,125,41,221,219,161,44,173,255,212,230,189,162,18,91,234,7,206,235,164,51,174,41,34,91,222,36,223,160,197,159,133,129,224,237,45,64,249,182,173,101,245,118,244,56,8,223,218,171,147,173,20,252,237,239,214,134,138,2,244,3,160,169,198,159,86,160,240,203,102,247,34,149,195,177,66,175,8,30,213,88,17,100,22,220,219,80,147,187,177,9,151,33,224,160,27,140,43,219,38,74,228,17,70,96,145,40,220,163,189,47,186,165,71,0,255,207,232,131,166,208,234,178,210,20,55,252,160,173,218,74,214,33,206,79,127,44,161,168,119,133,239,13,130,239,92,194,134,224,239,124,169,78,177,48,76,201,106,32,128,160,108,87,252,142,107,66,43,180,74,185,19,159,173,40,179,153,39,74,10,28,13,144,247,183,51,218,154,113,161,231,143,65,160,50,5,220,4,115,212,19,13,196,112,96,232,166,44,178,146,110,2,157,194,28,118,5,235,50,212,222,201,126,28,165,152,160,202,141,42,110,85,123,249,63,238,111,75,253,234,3,1,19,70,217,217,11,190,130,101,11,173,159,20,248,94,75,254,189,160,20,25,119,129,22,221,65,78,129,235,24,175,17,191,66,181,74,205,232,126,229,189,28,246,225,195,204,18,22,124,155,60,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,146,125,254,209,19,52,38,158,115,216,176,186,229,213,176,115,100,10,39,144,22,89,113,34,227,194,166,184,10,10,239,198,0],[160,164,180,29,22,203,14,23,254,91,167,142,82,252,226,144,159,50,228,193,89,255,17,202,245,137,242,83,21,221,254,241,75,0],[160,51,16,86,82,3,103,252,95,32,214,65,209,27,139,215,177,30,4,114,13,100,159,122,103,78,248,59,62,83,41,65,6,0],[160,153,44,61,41,56,105,20,92,71,71,28,87,80,225,56,22,11,22,92,125,109,109,25,42,244,179,157,0,195,61,109,153,0],[160,186,27,0,45,90,46,54,179,252,231,52,143,106,98,75,74,87,95,71,119,233,91,71,249,101,197,171,86,22,143,194,192,0],[160,68,254,241,192,187,6,53,16,239,162,140,90,80,24,15,2,237,196,139,50,146,113,134,132,242,34,248,45,4,229,94,60,0],[160,250,19,177,96,139,79,145,236,195,147,68,96,162,98,129,230,143,89,211,234,109,6,212,52,75,82,79,148,135,207,105,212,0],[160,248,191,9,26,115,87,162,60,78,162,196,199,178,60,25,76,128,69,159,113,166,224,134,224,3,169,48,253,152,245,105,99,0],[160,145,253,154,171,86,65,243,183,245,69,95,108,31,211,26,254,217,219,218,225,101,130,201,167,114,226,246,55,216,117,61,66,0],[160,129,142,118,2,163,156,147,102,49,255,164,178,49,203,177,58,49,88,179,200,39,50,204,115,252,237,207,186,167,60,199,224,0],[160,34,245,213,30,125,55,189,190,222,255,162,42,253,107,202,52,21,6,8,101,246,41,150,194,140,208,119,88,197,41,105,145,0],[160,151,101,139,165,122,27,169,90,82,231,90,133,204,80,249,120,190,103,47,12,178,65,243,170,161,2,249,78,81,203,174,3,0],[160,23,24,250,53,20,215,135,72,157,158,207,226,230,216,199,229,61,154,51,182,200,183,22,108,232,124,209,215,219,124,173,105,0],[160,168,222,193,164,239,216,82,134,36,161,154,86,36,247,133,2,201,34,22,131,69,149,154,160,109,45,98,135,183,171,69,190,0],[160,156,95,85,255,30,115,102,94,105,174,83,204,19,202,6,127,83,0,38,42,19,51,67,9,228,165,23,166,204,73,213,109,0],[160,33,163,247,169,198,139,127,139,35,122,193,20,247,119,29,205,178,210,236,124,111,246,249,234,135,91,151,74,118,136,24,205,0],[160,146,208,107,254,76,103,177,98,48,82,67,24,217,235,236,173,42,191,164,87,106,64,206,116,63,75,131,194,241,75,7,254,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,164,180,29,22,203,14,23,254,91,167,142,82,252,226,144,159,50,228,193,89,255,17,202,245,137,242,83,21,221,254,241,75,160,51,16,86,82,3,103,252,95,32,214,65,209,27,139,215,177,30,4,114,13,100,159,122,103,78,248,59,62,83,41,65,6,160,153,44,61,41,56,105,20,92,71,71,28,87,80,225,56,22,11,22,92,125,109,109,25,42,244,179,157,0,195,61,109,153,160,186,27,0,45,90,46,54,179,252,231,52,143,106,98,75,74,87,95,71,119,233,91,71,249,101,197,171,86,22,143,194,192,160,68,254,241,192,187,6,53,16,239,162,140,90,80,24,15,2,237,196,139,50,146,113,134,132,242,34,248,45,4,229,94,60,160,250,19,177,96,139,79,145,236,195,147,68,96,162,98,129,230,143,89,211,234,109,6,212,52,75,82,79,148,135,207,105,212,160,248,191,9,26,115,87,162,60,78,162,196,199,178,60,25,76,128,69,159,113,166,224,134,224,3,169,48,253,152,245,105,99,160,145,253,154,171,86,65,243,183,245,69,95,108,31,211,26,254,217,219,218,225,101,130,201,167,114,226,246,55,216,117,61,66,160,129,142,118,2,163,156,147,102,49,255,164,178,49,203,177,58,49,88,179,200,39,50,204,115,252,237,207,186,167,60,199,224,160,34,245,213,30,125,55,189,190,222,255,162,42,253,107,202,52,21,6,8,101,246,41,150,194,140,208,119,88,197,41,105,145,160,151,101,139,165,122,27,169,90,82,231,90,133,204,80,249,120,190,103,47,12,178,65,243,170,161,2,249,78,81,203,174,3,160,23,24,250,53,20,215,135,72,157,158,207,226,230,216,199,229,61,154,51,182,200,183,22,108,232,124,209,215,219,124,173,105,160,168,222,193,164,239,216,82,134,36,161,154,86,36,247,133,2,201,34,22,131,69,149,154,160,109,45,98,135,183,171,69,190,160,156,95,85,255,30,115,102,94,105,174,83,204,19,202,6,127,83,0,38,42,19,51,67,9,228,165,23,166,204,73,213,109,160,33,163,247,169,198,139,127,139,35,122,193,20,247,119,29,205,178,210,236,124,111,246,249,234,135,91,151,74,118,136,24,205,160,146,208,107,254,76,103,177,98,48,82,67,24,217,235,236,173,42,191,164,87,106,64,206,116,63,75,131,194,241,75,7,254,128],[249,2,17,160,164,180,29,22,203,14,23,254,91,167,142,82,252,226,144,159,50,228,193,89,255,17,202,245,137,242,83,21,221,254,241,75,160,51,16,86,82,3,103,252,95,32,214,65,209,27,139,215,177,30,4,114,13,100,159,122,103,78,248,59,62,83,41,65,6,160,153,44,61,41,56,105,20,92,71,71,28,87,80,225,56,22,11,22,92,125,109,109,25,42,244,179,157,0,195,61,109,153,160,146,125,254,209,19,52,38,158,115,216,176,186,229,213,176,115,100,10,39,144,22,89,113,34,227,194,166,184,10,10,239,198,160,68,254,241,192,187,6,53,16,239,162,140,90,80,24,15,2,237,196,139,50,146,113,134,132,242,34,248,45,4,229,94,60,160,250,19,177,96,139,79,145,236,195,147,68,96,162,98,129,230,143,89,211,234,109,6,212,52,75,82,79,148,135,207,105,212,160,248,191,9,26,115,87,162,60,78,162,196,199,178,60,25,76,128,69,159,113,166,224,134,224,3,169,48,253,152,245,105,99,160,145,253,154,171,86,65,243,183,245,69,95,108,31,211,26,254,217,219,218,225,101,130,201,167,114,226,246,55,216,117,61,66,160,129,142,118,2,163,156,147,102,49,255,164,178,49,203,177,58,49,88,179,200,39,50,204,115,252,237,207,186,167,60,199,224,160,34,245,213,30,125,55,189,190,222,255,162,42,253,107,202,52,21,6,8,101,246,41,150,194,140,208,119,88,197,41,105,145,160,151,101,139,165,122,27,169,90,82,231,90,133,204,80,249,120,190,103,47,12,178,65,243,170,161,2,249,78,81,203,174,3,160,23,24,250,53,20,215,135,72,157,158,207,226,230,216,199,229,61,154,51,182,200,183,22,108,232,124,209,215,219,124,173,105,160,168,222,193,164,239,216,82,134,36,161,154,86,36,247,133,2,201,34,22,131,69,149,154,160,109,45,98,135,183,171,69,190,160,156,95,85,255,30,115,102,94,105,174,83,204,19,202,6,127,83,0,38,42,19,51,67,9,228,165,23,166,204,73,213,109,160,33,163,247,169,198,139,127,139,35,122,193,20,247,119,29,205,178,210,236,124,111,246,249,234,135,91,151,74,118,136,24,205,160,146,208,107,254,76,103,177,98,48,82,67,24,217,235,236,173,42,191,164,87,106,64,206,116,63,75,131,194,241,75,7,254,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,254,34,75,70,73,67,22,74,222,62,219,135,220,197,138,74,198,109,235,222,229,58,110,81,76,32,76,151,23,125,69,230,0],[160,130,125,200,216,238,103,71,86,228,222,133,226,185,215,16,65,244,137,213,222,46,94,91,106,56,110,83,1,71,228,10,240,0],[160,248,202,84,13,216,174,252,30,229,65,141,37,227,150,196,28,28,105,146,6,157,111,192,16,166,121,175,81,241,46,64,21,0],[160,149,22,204,164,89,181,232,119,180,25,123,150,225,191,214,161,18,98,200,185,161,91,153,229,22,81,104,105,14,91,175,18,0],[160,136,47,162,174,125,241,171,51,20,17,84,201,78,127,167,38,221,244,167,60,242,192,140,126,214,188,167,22,227,17,131,24,0],[160,99,238,8,170,162,189,169,57,157,206,33,113,22,220,5,40,176,77,27,226,75,176,249,188,173,167,39,241,230,163,153,207,0],[160,15,42,19,16,84,126,167,130,52,226,72,244,186,227,216,196,73,213,1,164,64,16,41,141,148,236,212,26,61,227,209,40,0],[160,228,8,84,56,244,71,227,106,86,234,114,153,25,202,23,188,34,215,150,87,170,230,102,194,114,75,202,17,173,87,141,241,0],[160,145,9,246,79,103,114,147,211,156,49,54,227,178,50,208,12,134,162,195,210,143,116,89,7,68,55,158,29,166,214,250,114,0],[160,219,141,19,17,160,45,4,217,144,162,56,203,42,179,132,14,104,208,79,26,215,185,75,169,2,82,66,255,176,87,143,253,0],[160,77,115,76,19,189,118,139,166,32,56,51,43,158,23,165,222,149,211,85,76,57,250,207,23,230,79,118,141,232,176,1,32,0],[160,255,88,14,110,145,58,145,110,97,252,31,197,141,73,10,38,133,217,192,110,81,156,19,238,130,80,96,58,10,192,117,213,0],[160,246,73,170,108,238,154,1,184,132,255,244,164,47,158,247,4,47,222,0,221,180,95,142,203,9,168,102,75,61,72,158,75,0],[160,93,225,48,250,171,201,141,232,98,8,1,66,151,176,25,43,247,86,120,139,174,107,51,56,152,142,134,132,217,213,117,99,0],[160,114,100,103,31,57,40,189,156,8,133,90,111,104,215,121,110,200,156,14,102,232,61,40,208,26,216,208,49,88,79,30,30,0],[160,110,64,71,235,187,240,111,120,66,20,217,68,191,190,154,5,30,2,205,142,132,9,214,64,209,80,133,17,0,139,5,51,0],[160,251,231,67,229,234,241,249,19,1,238,151,102,24,216,168,26,135,210,83,135,151,113,210,9,29,156,161,11,209,118,249,163,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,130,125,200,216,238,103,71,86,228,222,133,226,185,215,16,65,244,137,213,222,46,94,91,106,56,110,83,1,71,228,10,240,160,248,202,84,13,216,174,252,30,229,65,141,37,227,150,196,28,28,105,146,6,157,111,192,16,166,121,175,81,241,46,64,21,160,149,22,204,164,89,181,232,119,180,25,123,150,225,191,214,161,18,98,200,185,161,91,153,229,22,81,104,105,14,91,175,18,160,136,47,162,174,125,241,171,51,20,17,84,201,78,127,167,38,221,244,167,60,242,192,140,126,214,188,167,22,227,17,131,24,160,99,238,8,170,162,189,169,57,157,206,33,113,22,220,5,40,176,77,27,226,75,176,249,188,173,167,39,241,230,163,153,207,160,15,42,19,16,84,126,167,130,52,226,72,244,186,227,216,196,73,213,1,164,64,16,41,141,148,236,212,26,61,227,209,40,160,228,8,84,56,244,71,227,106,86,234,114,153,25,202,23,188,34,215,150,87,170,230,102,194,114,75,202,17,173,87,141,241,160,145,9,246,79,103,114,147,211,156,49,54,227,178,50,208,12,134,162,195,210,143,116,89,7,68,55,158,29,166,214,250,114,160,219,141,19,17,160,45,4,217,144,162,56,203,42,179,132,14,104,208,79,26,215,185,75,169,2,82,66,255,176,87,143,253,160,77,115,76,19,189,118,139,166,32,56,51,43,158,23,165,222,149,211,85,76,57,250,207,23,230,79,118,141,232,176,1,32,160,255,88,14,110,145,58,145,110,97,252,31,197,141,73,10,38,133,217,192,110,81,156,19,238,130,80,96,58,10,192,117,213,160,246,73,170,108,238,154,1,184,132,255,244,164,47,158,247,4,47,222,0,221,180,95,142,203,9,168,102,75,61,72,158,75,160,93,225,48,250,171,201,141,232,98,8,1,66,151,176,25,43,247,86,120,139,174,107,51,56,152,142,134,132,217,213,117,99,160,114,100,103,31,57,40,189,156,8,133,90,111,104,215,121,110,200,156,14,102,232,61,40,208,26,216,208,49,88,79,30,30,160,110,64,71,235,187,240,111,120,66,20,217,68,191,190,154,5,30,2,205,142,132,9,214,64,209,80,133,17,0,139,5,51,160,251,231,67,229,234,241,249,19,1,238,151,102,24,216,168,26,135,210,83,135,151,113,210,9,29,156,161,11,209,118,249,163,128],[249,2,17,160,130,125,200,216,238,103,71,86,228,222,133,226,185,215,16,65,244,137,213,222,46,94,91,106,56,110,83,1,71,228,10,240,160,248,202,84,13,216,174,252,30,229,65,141,37,227,150,196,28,28,105,146,6,157,111,192,16,166,121,175,81,241,46,64,21,160,149,22,204,164,89,181,232,119,180,25,123,150,225,191,214,161,18,98,200,185,161,91,153,229,22,81,104,105,14,91,175,18,160,136,47,162,174,125,241,171,51,20,17,84,201,78,127,167,38,221,244,167,60,242,192,140,126,214,188,167,22,227,17,131,24,160,99,238,8,170,162,189,169,57,157,206,33,113,22,220,5,40,176,77,27,226,75,176,249,188,173,167,39,241,230,163,153,207,160,15,42,19,16,84,126,167,130,52,226,72,244,186,227,216,196,73,213,1,164,64,16,41,141,148,236,212,26,61,227,209,40,160,228,8,84,56,244,71,227,106,86,234,114,153,25,202,23,188,34,215,150,87,170,230,102,194,114,75,202,17,173,87,141,241,160,145,9,246,79,103,114,147,211,156,49,54,227,178,50,208,12,134,162,195,210,143,116,89,7,68,55,158,29,166,214,250,114,160,219,141,19,17,160,45,4,217,144,162,56,203,42,179,132,14,104,208,79,26,215,185,75,169,2,82,66,255,176,87,143,253,160,254,34,75,70,73,67,22,74,222,62,219,135,220,197,138,74,198,109,235,222,229,58,110,81,76,32,76,151,23,125,69,230,160,255,88,14,110,145,58,145,110,97,252,31,197,141,73,10,38,133,217,192,110,81,156,19,238,130,80,96,58,10,192,117,213,160,246,73,170,108,238,154,1,184,132,255,244,164,47,158,247,4,47,222,0,221,180,95,142,203,9,168,102,75,61,72,158,75,160,93,225,48,250,171,201,141,232,98,8,1,66,151,176,25,43,247,86,120,139,174,107,51,56,152,142,134,132,217,213,117,99,160,114,100,103,31,57,40,189,156,8,133,90,111,104,215,121,110,200,156,14,102,232,61,40,208,26,216,208,49,88,79,30,30,160,110,64,71,235,187,240,111,120,66,20,217,68,191,190,154,5,30,2,205,142,132,9,214,64,209,80,133,17,0,139,5,51,160,251,231,67,229,234,241,249,19,1,238,151,102,24,216,168,26,135,210,83,135,151,113,210,9,29,156,161,11,209,118,249,163,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":2,"drifted_index":2,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,116,64,237,27,23,208,83,11,188,20,106,5,195,85,133,249,85,232,13,73,0,26,197,152,202,106,80,118,223,127,122,185,0],[160,70,145,83,193,214,134,248,150,224,52,74,152,29,218,97,83,59,83,4,73,187,252,175,83,76,183,75,99,67,76,138,73,0],[160,22,190,149,252,61,199,213,233,229,10,51,220,75,54,224,16,32,42,49,162,63,252,27,165,66,150,131,107,66,16,224,254,0],[160,156,117,130,223,139,166,81,15,121,34,155,180,180,73,216,92,63,210,32,73,10,147,237,201,33,191,144,204,248,120,225,149,0],[160,90,249,62,95,120,4,195,163,16,243,187,115,149,41,218,140,203,37,14,47,202,220,147,184,30,152,1,67,19,77,174,95,0],[160,242,19,118,38,150,123,66,226,171,115,52,197,181,8,60,96,221,234,133,190,190,175,133,121,231,30,169,11,55,232,124,217,0],[160,250,232,13,221,55,87,247,231,209,182,17,203,74,1,63,52,180,107,235,166,85,166,64,15,130,255,205,166,8,103,42,148,0],[160,199,177,9,177,12,215,118,100,96,32,2,86,167,40,170,194,78,32,16,140,124,159,111,202,168,119,185,29,146,190,94,103,0],[160,219,146,211,131,15,109,53,238,134,174,222,68,167,236,230,125,230,52,215,131,236,156,165,99,208,212,238,209,105,29,158,115,0],[160,72,20,214,76,98,67,229,96,8,7,224,223,123,225,97,102,108,51,117,225,255,208,207,98,244,124,184,56,130,88,246,226,0],[160,151,68,74,226,114,34,178,164,77,234,195,37,80,231,9,115,74,85,174,135,138,239,65,113,57,51,41,37,217,229,7,112,0],[160,99,180,38,47,69,142,182,67,218,65,237,157,4,107,149,165,13,26,26,40,210,13,238,217,205,252,155,221,61,187,115,209,0],[160,104,252,79,74,128,102,126,216,235,122,235,232,78,90,171,166,221,90,99,167,132,8,14,147,240,85,158,69,181,253,59,74,0],[160,7,176,217,103,223,100,47,232,76,133,61,151,101,141,222,170,171,191,13,51,206,105,108,195,54,3,119,254,109,113,235,195,0],[160,199,40,86,250,85,115,89,81,218,107,168,175,235,50,126,83,98,122,90,56,246,195,208,155,120,249,245,11,58,228,81,168,0],[160,232,161,162,255,98,104,196,52,158,235,67,211,20,42,15,89,179,177,196,36,191,47,128,186,103,229,118,251,135,45,99,229,0],[160,251,16,185,34,102,255,78,201,110,108,48,37,2,19,29,214,170,253,218,86,75,241,187,210,49,208,166,239,232,247,86,116,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,70,145,83,193,214,134,248,150,224,52,74,152,29,218,97,83,59,83,4,73,187,252,175,83,76,183,75,99,67,76,138,73,160,22,190,149,252,61,199,213,233,229,10,51,220,75,54,224,16,32,42,49,162,63,252,27,165,66,150,131,107,66,16,224,254,160,156,117,130,223,139,166,81,15,121,34,155,180,180,73,216,92,63,210,32,73,10,147,237,201,33,191,144,204,248,120,225,149,160,90,249,62,95,120,4,195,163,16,243,187,115,149,41,218,140,203,37,14,47,202,220,147,184,30,152,1,67,19,77,174,95,160,242,19,118,38,150,123,66,226,171,115,52,197,181,8,60,96,221,234,133,190,190,175,133,121,231,30,169,11,55,232,124,217,160,250,232,13,221,55,87,247,231,209,182,17,203,74,1,63,52,180,107,235,166,85,166,64,15,130,255,205,166,8,103,42,148,160,199,177,9,177,12,215,118,100,96,32,2,86,167,40,170,194,78,32,16,140,124,159,111,202,168,119,185,29,146,190,94,103,160,219,146,211,131,15,109,53,238,134,174,222,68,167,236,230,125,230,52,215,131,236,156,165,99,208,212,238,209,105,29,158,115,160,72,20,214,76,98,67,229,96,8,7,224,223,123,225,97,102,108,51,117,225,255,208,207,98,244,124,184,56,130,88,246,226,160,151,68,74,226,114,34,178,164,77,234,195,37,80,231,9,115,74,85,174,135,138,239,65,113,57,51,41,37,217,229,7,112,160,99,180,38,47,69,142,182,67,218,65,237,157,4,107,149,165,13,26,26,40,210,13,238,217,205,252,155,221,61,187,115,209,160,104,252,79,74,128,102,126,216,235,122,235,232,78,90,171,166,221,90,99,167,132,8,14,147,240,85,158,69,181,253,59,74,160,7,176,217,103,223,100,47,232,76,133,61,151,101,141,222,170,171,191,13,51,206,105,108,195,54,3,119,254,109,113,235,195,160,199,40,86,250,85,115,89,81,218,107,168,175,235,50,126,83,98,122,90,56,246,195,208,155,120,249,245,11,58,228,81,168,160,232,161,162,255,98,104,196,52,158,235,67,211,20,42,15,89,179,177,196,36,191,47,128,186,103,229,118,251,135,45,99,229,160,251,16,185,34,102,255,78,201,110,108,48,37,2,19,29,214,170,253,218,86,75,241,187,210,49,208,166,239,232,247,86,116,128],[249,2,17,160,70,145,83,193,214,134,248,150,224,52,74,152,29,218,97,83,59,83,4,73,187,252,175,83,76,183,75,99,67,76,138,73,160,22,190,149,252,61,199,213,233,229,10,51,220,75,54,224,16,32,42,49,162,63,252,27,165,66,150,131,107,66,16,224,254,160,116,64,237,27,23,208,83,11,188,20,106,5,195,85,133,249,85,232,13,73,0,26,197,152,202,106,80,118,223,127,122,185,160,90,249,62,95,120,4,195,163,16,243,187,115,149,41,218,140,203,37,14,47,202,220,147,184,30,152,1,67,19,77,174,95,160,242,19,118,38,150,123,66,226,171,115,52,197,181,8,60,96,221,234,133,190,190,175,133,121,231,30,169,11,55,232,124,217,160,250,232,13,221,55,87,247,231,209,182,17,203,74,1,63,52,180,107,235,166,85,166,64,15,130,255,205,166,8,103,42,148,160,199,177,9,177,12,215,118,100,96,32,2,86,167,40,170,194,78,32,16,140,124,159,111,202,168,119,185,29,146,190,94,103,160,219,146,211,131,15,109,53,238,134,174,222,68,167,236,230,125,230,52,215,131,236,156,165,99,208,212,238,209,105,29,158,115,160,72,20,214,76,98,67,229,96,8,7,224,223,123,225,97,102,108,51,117,225,255,208,207,98,244,124,184,56,130,88,246,226,160,151,68,74,226,114,34,178,164,77,234,195,37,80,231,9,115,74,85,174,135,138,239,65,113,57,51,41,37,217,229,7,112,160,99,180,38,47,69,142,182,67,218,65,237,157,4,107,149,165,13,26,26,40,210,13,238,217,205,252,155,221,61,187,115,209,160,104,252,79,74,128,102,126,216,235,122,235,232,78,90,171,166,221,90,99,167,132,8,14,147,240,85,158,69,181,253,59,74,160,7,176,217,103,223,100,47,232,76,133,61,151,101,141,222,170,171,191,13,51,206,105,108,195,54,3,119,254,109,113,235,195,160,199,40,86,250,85,115,89,81,218,107,168,175,235,50,126,83,98,122,90,56,246,195,208,155,120,249,245,11,58,228,81,168,160,232,161,162,255,98,104,196,52,158,235,67,211,20,42,15,89,179,177,196,36,191,47,128,186,103,229,118,251,135,45,99,229,160,251,16,185,34,102,255,78,201,110,108,48,37,2,19,29,214,170,253,218,86,75,241,187,210,49,208,166,239,232,247,86,116,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,1,49],[249,1,49]]}},"account":null,"storage":null,"values":[[160,15,235,67,119,59,195,188,14,20,19,195,111,235,96,176,110,236,193,39,227,147,119,138,153,177,106,243,140,197,227,49,29,0],[160,243,244,186,6,58,228,218,241,173,144,6,180,223,117,177,50,152,37,30,35,180,88,165,163,110,180,36,218,254,23,72,14,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,101,201,19,214,180,225,89,152,133,13,189,160,75,190,49,145,54,223,182,93,69,52,178,126,1,165,98,119,169,220,85,143,0],[160,253,85,165,43,60,82,156,47,122,220,248,179,29,27,66,3,215,104,41,212,151,38,179,99,185,79,207,156,195,86,117,90,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,175,243,82,107,244,55,219,103,71,174,68,65,70,53,106,157,224,38,7,187,24,20,149,220,156,71,87,191,191,193,83,177,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,174,119,77,19,201,226,54,159,56,117,147,241,173,159,54,96,35,192,184,146,173,135,79,144,214,254,195,37,216,219,231,173,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,225,66,69,103,120,19,114,173,212,29,194,158,68,254,72,91,6,103,55,158,105,186,135,47,193,175,112,197,161,170,98,184,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,140,30,128,255,214,28,103,127,2,211,153,178,218,113,111,115,65,199,51,32,144,143,121,21,27,84,174,47,83,104,216,18,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,162,197,125,201,187,180,213,157,235,239,102,124,54,240,36,21,192,162,187,144,99,72,241,9,83,226,142,101,183,109,139,1,0],[160,152,36,188,87,218,33,40,78,210,121,54,183,197,77,106,156,185,88,57,220,53,254,91,1,83,131,83,150,244,29,5,170,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,49,160,243,244,186,6,58,228,218,241,173,144,6,180,223,117,177,50,152,37,30,35,180,88,165,163,110,180,36,218,254,23,72,14,128,160,101,201,19,214,180,225,89,152,133,13,189,160,75,190,49,145,54,223,182,93,69,52,178,126,1,165,98,119,169,220,85,143,160,253,85,165,43,60,82,156,47,122,220,248,179,29,27,66,3,215,104,41,212,151,38,179,99,185,79,207,156,195,86,117,90,128,128,160,175,243,82,107,244,55,219,103,71,174,68,65,70,53,106,157,224,38,7,187,24,20,149,220,156,71,87,191,191,193,83,177,128,160,174,119,77,19,201,226,54,159,56,117,147,241,173,159,54,96,35,192,184,146,173,135,79,144,214,254,195,37,216,219,231,173,128,160,225,66,69,103,120,19,114,173,212,29,194,158,68,254,72,91,6,103,55,158,105,186,135,47,193,175,112,197,161,170,98,184,128,160,140,30,128,255,214,28,103,127,2,211,153,178,218,113,111,115,65,199,51,32,144,143,121,21,27,84,174,47,83,104,216,18,128,160,162,197,125,201,187,180,213,157,235,239,102,124,54,240,36,21,192,162,187,144,99,72,241,9,83,226,142,101,183,109,139,1,160,152,36,188,87,218,33,40,78,210,121,54,183,197,77,106,156,185,88,57,220,53,254,91,1,83,131,83,150,244,29,5,170,128],[249,1,49,160,15,235,67,119,59,195,188,14,20,19,195,111,235,96,176,110,236,193,39,227,147,119,138,153,177,106,243,140,197,227,49,29,128,160,101,201,19,214,180,225,89,152,133,13,189,160,75,190,49,145,54,223,182,93,69,52,178,126,1,165,98,119,169,220,85,143,160,253,85,165,43,60,82,156,47,122,220,248,179,29,27,66,3,215,104,41,212,151,38,179,99,185,79,207,156,195,86,117,90,128,128,160,175,243,82,107,244,55,219,103,71,174,68,65,70,53,106,157,224,38,7,187,24,20,149,220,156,71,87,191,191,193,83,177,128,160,174,119,77,19,201,226,54,159,56,117,147,241,173,159,54,96,35,192,184,146,173,135,79,144,214,254,195,37,216,219,231,173,128,160,225,66,69,103,120,19,114,173,212,29,194,158,68,254,72,91,6,103,55,158,105,186,135,47,193,175,112,197,161,170,98,184,128,160,140,30,128,255,214,28,103,127,2,211,153,178,218,113,111,115,65,199,51,32,144,143,121,21,27,84,174,47,83,104,216,18,128,160,162,197,125,201,187,180,213,157,235,239,102,124,54,240,36,21,192,162,187,144,99,72,241,9,83,226,142,101,183,109,139,1,160,152,36,188,87,218,33,40,78,210,121,54,183,197,77,106,156,185,88,57,220,53,254,91,1,83,131,83,150,244,29,5,170,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,65,228,205,154,131,158,246,195,65,213,244,198,28,222,28,107,166,59,175,28,160,117,111,94,169,16,99,28,238,246,247,54,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,232,25,53,250,138,255,235,161,40,193,0,19,88,101,14,213,71,143,234,207,159,67,180,162,101,18,210,78,251,96,111,91,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,152,116,64,78,91,197,120,253,205,211,183,207,210,86,45,42,97,61,96,29,254,88,176,247,152,33,253,96,181,163,114,151,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,128,128,160,232,25,53,250,138,255,235,161,40,193,0,19,88,101,14,213,71,143,234,207,159,67,180,162,101,18,210,78,251,96,111,91,128,128,160,152,116,64,78,91,197,120,253,205,211,183,207,210,86,45,42,97,61,96,29,254,88,176,247,152,33,253,96,181,163,114,151,128,128,128],[248,81,128,128,128,128,128,128,128,128,128,128,160,65,228,205,154,131,158,246,195,65,213,244,198,28,222,28,107,166,59,175,28,160,117,111,94,169,16,99,28,238,246,247,54,128,128,160,152,116,64,78,91,197,120,253,205,211,183,207,210,86,45,42,97,61,96,29,254,88,176,247,152,33,253,96,181,163,114,151,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,251,239,33,80,129,131,194,182,60,89,117,120,38,223,78,36,235,129,201],"key":[69,163,146,10,62,93,129,85,209,204,55,235,67,56,182,198,220,198,25,69,14,53,78,37,148,78,8,145,165,205,66,236],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,32,62,93,129,85,209,204,55,235,67,56,182,198,220,198,25,69,14,53,78,37,148,78,8,145,165,205,66,236,0,0,0,0],[157,32,62,93,129,85,209,204,55,235,67,56,182,198,220,198,25,69,14,53,78,37,148,78,8,145,165,205,66,236,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,62,161,243,229,186,235,229,160,6,209,195,71,110,63,100,84,190,18,254,73,122,60,215,237,17,207,23,197,242,234,216,79,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,126,221,206,124,72,133,254,237,34,27,64,46,148,208,34,190,193,164,152,59,45,192,119,28,13,85,143,126,17,212,104,121,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,32,62,93,129,85,209,204,55,235,67,56,182,198,220,198,25,69,14,53,78,37,148,78,8,145,165,205,66,236,0,0,0,0]],"keccak_data":[[248,102,157,32,62,93,129,85,209,204,55,235,67,56,182,198,220,198,25,69,14,53,78,37,148,78,8,145,165,205,66,236,184,70,248,68,128,128,160,62,161,243,229,186,235,229,160,6,209,195,71,110,63,100,84,190,18,254,73,122,60,215,237,17,207,23,197,242,234,216,79,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,32,62,93,129,85,209,204,55,235,67,56,182,198,220,198,25,69,14,53,78,37,148,78,8,145,165,205,66,236,184,70,248,68,128,128,160,126,221,206,124,72,133,254,237,34,27,64,46,148,208,34,190,193,164,152,59,45,192,119,28,13,85,143,126,17,212,104,121,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,251,239,33,80,129,131,194,182,60,89,117,120,38,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,158,1,185,179,178,178,96,59,215,52,186,190,221,96,64,186,250,232,15,70,44,53,202,72,216,193,2,149,251,166,73,58,0],[160,88,130,254,176,165,150,161,122,54,133,71,237,254,141,101,100,135,185,202,23,195,5,199,45,49,253,246,235,178,0,255,130,0],[160,208,6,128,180,245,122,36,215,239,153,0,12,121,167,186,20,236,39,39,13,147,152,49,146,210,133,19,224,193,184,190,142,0],[160,185,228,203,130,115,16,96,207,136,110,239,83,202,102,94,135,170,241,137,34,227,70,105,198,48,47,61,176,187,146,152,206,0],[160,245,93,164,217,168,130,117,33,10,79,206,102,217,104,174,204,55,144,173,29,171,153,52,247,65,94,3,120,136,133,113,137,0],[160,230,68,115,42,167,193,17,185,239,176,90,30,205,99,190,175,89,178,168,70,89,14,220,67,184,146,202,42,189,182,51,190,0],[160,110,194,5,167,197,173,70,174,155,93,222,142,239,103,76,0,15,125,127,204,150,94,48,247,19,5,10,160,120,81,179,19,0],[160,89,90,52,80,252,109,214,48,252,66,48,208,168,79,62,80,179,254,122,181,240,126,71,118,238,74,221,169,34,91,144,38,0],[160,28,210,125,44,43,13,68,38,218,169,123,221,0,77,217,20,185,66,203,186,238,118,246,238,144,218,176,87,88,153,125,152,0],[160,51,40,154,4,219,129,108,42,120,61,114,181,239,14,0,138,62,32,222,102,180,46,163,235,14,71,27,3,242,151,165,133,0],[160,148,112,74,115,143,176,227,85,82,137,216,248,78,118,147,118,151,187,172,112,98,97,152,137,152,158,70,203,29,218,31,72,0],[160,58,22,42,72,118,113,38,35,57,68,95,117,66,169,9,9,28,25,143,102,24,118,144,65,229,228,121,101,20,167,6,194,0],[160,27,177,232,148,216,39,95,227,113,37,29,225,188,40,99,88,227,197,235,94,182,237,78,77,215,223,227,27,47,73,247,84,0],[160,130,164,185,214,76,218,31,222,13,144,252,191,78,46,40,7,7,97,186,214,6,107,105,56,60,220,208,245,174,80,221,230,0],[160,255,31,59,35,199,177,174,139,201,124,85,226,151,5,107,77,241,90,31,203,248,47,99,224,197,130,54,103,52,131,112,140,0],[160,214,195,244,45,246,115,176,146,233,247,32,195,23,12,70,101,107,190,55,215,72,166,82,77,141,143,174,96,220,117,67,119,0],[160,187,8,157,195,152,194,195,101,85,55,91,229,182,90,188,202,192,148,23,38,92,255,250,105,206,62,201,154,134,210,84,234,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,88,130,254,176,165,150,161,122,54,133,71,237,254,141,101,100,135,185,202,23,195,5,199,45,49,253,246,235,178,0,255,130,160,208,6,128,180,245,122,36,215,239,153,0,12,121,167,186,20,236,39,39,13,147,152,49,146,210,133,19,224,193,184,190,142,160,185,228,203,130,115,16,96,207,136,110,239,83,202,102,94,135,170,241,137,34,227,70,105,198,48,47,61,176,187,146,152,206,160,245,93,164,217,168,130,117,33,10,79,206,102,217,104,174,204,55,144,173,29,171,153,52,247,65,94,3,120,136,133,113,137,160,230,68,115,42,167,193,17,185,239,176,90,30,205,99,190,175,89,178,168,70,89,14,220,67,184,146,202,42,189,182,51,190,160,110,194,5,167,197,173,70,174,155,93,222,142,239,103,76,0,15,125,127,204,150,94,48,247,19,5,10,160,120,81,179,19,160,89,90,52,80,252,109,214,48,252,66,48,208,168,79,62,80,179,254,122,181,240,126,71,118,238,74,221,169,34,91,144,38,160,28,210,125,44,43,13,68,38,218,169,123,221,0,77,217,20,185,66,203,186,238,118,246,238,144,218,176,87,88,153,125,152,160,51,40,154,4,219,129,108,42,120,61,114,181,239,14,0,138,62,32,222,102,180,46,163,235,14,71,27,3,242,151,165,133,160,148,112,74,115,143,176,227,85,82,137,216,248,78,118,147,118,151,187,172,112,98,97,152,137,152,158,70,203,29,218,31,72,160,58,22,42,72,118,113,38,35,57,68,95,117,66,169,9,9,28,25,143,102,24,118,144,65,229,228,121,101,20,167,6,194,160,27,177,232,148,216,39,95,227,113,37,29,225,188,40,99,88,227,197,235,94,182,237,78,77,215,223,227,27,47,73,247,84,160,130,164,185,214,76,218,31,222,13,144,252,191,78,46,40,7,7,97,186,214,6,107,105,56,60,220,208,245,174,80,221,230,160,255,31,59,35,199,177,174,139,201,124,85,226,151,5,107,77,241,90,31,203,248,47,99,224,197,130,54,103,52,131,112,140,160,214,195,244,45,246,115,176,146,233,247,32,195,23,12,70,101,107,190,55,215,72,166,82,77,141,143,174,96,220,117,67,119,160,187,8,157,195,152,194,195,101,85,55,91,229,182,90,188,202,192,148,23,38,92,255,250,105,206,62,201,154,134,210,84,234,128],[249,2,17,160,88,130,254,176,165,150,161,122,54,133,71,237,254,141,101,100,135,185,202,23,195,5,199,45,49,253,246,235,178,0,255,130,160,208,6,128,180,245,122,36,215,239,153,0,12,121,167,186,20,236,39,39,13,147,152,49,146,210,133,19,224,193,184,190,142,160,185,228,203,130,115,16,96,207,136,110,239,83,202,102,94,135,170,241,137,34,227,70,105,198,48,47,61,176,187,146,152,206,160,245,93,164,217,168,130,117,33,10,79,206,102,217,104,174,204,55,144,173,29,171,153,52,247,65,94,3,120,136,133,113,137,160,230,68,115,42,167,193,17,185,239,176,90,30,205,99,190,175,89,178,168,70,89,14,220,67,184,146,202,42,189,182,51,190,160,110,194,5,167,197,173,70,174,155,93,222,142,239,103,76,0,15,125,127,204,150,94,48,247,19,5,10,160,120,81,179,19,160,89,90,52,80,252,109,214,48,252,66,48,208,168,79,62,80,179,254,122,181,240,126,71,118,238,74,221,169,34,91,144,38,160,28,210,125,44,43,13,68,38,218,169,123,221,0,77,217,20,185,66,203,186,238,118,246,238,144,218,176,87,88,153,125,152,160,51,40,154,4,219,129,108,42,120,61,114,181,239,14,0,138,62,32,222,102,180,46,163,235,14,71,27,3,242,151,165,133,160,148,112,74,115,143,176,227,85,82,137,216,248,78,118,147,118,151,187,172,112,98,97,152,137,152,158,70,203,29,218,31,72,160,58,22,42,72,118,113,38,35,57,68,95,117,66,169,9,9,28,25,143,102,24,118,144,65,229,228,121,101,20,167,6,194,160,27,177,232,148,216,39,95,227,113,37,29,225,188,40,99,88,227,197,235,94,182,237,78,77,215,223,227,27,47,73,247,84,160,130,164,185,214,76,218,31,222,13,144,252,191,78,46,40,7,7,97,186,214,6,107,105,56,60,220,208,245,174,80,221,230,160,255,31,59,35,199,177,174,139,201,124,85,226,151,5,107,77,241,90,31,203,248,47,99,224,197,130,54,103,52,131,112,140,160,158,1,185,179,178,178,96,59,215,52,186,190,221,96,64,186,250,232,15,70,44,53,202,72,216,193,2,149,251,166,73,58,160,187,8,157,195,152,194,195,101,85,55,91,229,182,90,188,202,192,148,23,38,92,255,250,105,206,62,201,154,134,210,84,234,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,1,81],[249,1,81]]}},"account":null,"storage":null,"values":[[160,234,242,30,7,249,134,245,117,172,51,76,95,98,96,39,255,158,84,86,140,240,202,116,222,186,131,119,57,186,191,241,200,0],[160,223,191,47,91,38,97,233,207,234,252,240,126,240,80,166,146,43,0,163,47,46,244,225,208,162,228,1,87,150,188,106,77,0],[160,255,69,36,238,59,56,81,174,192,41,30,22,105,156,2,102,173,58,62,95,210,198,243,187,172,82,81,110,157,36,173,56,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,186,227,45,209,79,154,5,112,143,64,120,137,180,220,95,217,242,33,120,152,221,159,185,238,104,77,176,251,69,213,123,160,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,187,244,53,58,42,141,178,166,196,86,132,46,248,240,248,123,193,114,242,47,204,54,76,166,150,15,74,135,193,230,9,172,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,225,136,101,189,239,82,3,5,134,251,62,100,120,128,129,186,92,184,233,88,187,23,68,92,149,49,207,163,243,163,232,23,0],[160,141,83,34,180,161,0,161,199,96,114,90,214,75,148,44,16,243,215,77,116,78,73,221,96,55,212,175,186,109,239,128,223,0],[160,224,39,241,8,86,117,180,255,110,155,204,245,17,208,152,191,111,95,124,65,172,241,28,81,146,97,149,20,154,213,232,106,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,200,46,43,163,240,176,159,66,189,141,0,101,185,85,208,239,240,81,52,222,137,109,217,103,229,88,34,216,31,124,111,156,0],[160,72,211,88,40,199,155,24,253,79,38,136,41,38,16,100,159,73,146,125,17,100,99,237,88,130,55,190,47,22,67,203,188,0],[160,231,33,33,44,130,79,181,58,121,185,85,171,197,178,228,192,123,46,3,95,35,193,225,191,34,30,31,58,22,54,182,240,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,81,160,223,191,47,91,38,97,233,207,234,252,240,126,240,80,166,146,43,0,163,47,46,244,225,208,162,228,1,87,150,188,106,77,160,255,69,36,238,59,56,81,174,192,41,30,22,105,156,2,102,173,58,62,95,210,198,243,187,172,82,81,110,157,36,173,56,128,128,160,186,227,45,209,79,154,5,112,143,64,120,137,180,220,95,217,242,33,120,152,221,159,185,238,104,77,176,251,69,213,123,160,128,160,187,244,53,58,42,141,178,166,196,86,132,46,248,240,248,123,193,114,242,47,204,54,76,166,150,15,74,135,193,230,9,172,128,160,225,136,101,189,239,82,3,5,134,251,62,100,120,128,129,186,92,184,233,88,187,23,68,92,149,49,207,163,243,163,232,23,160,141,83,34,180,161,0,161,199,96,114,90,214,75,148,44,16,243,215,77,116,78,73,221,96,55,212,175,186,109,239,128,223,160,224,39,241,8,86,117,180,255,110,155,204,245,17,208,152,191,111,95,124,65,172,241,28,81,146,97,149,20,154,213,232,106,128,160,200,46,43,163,240,176,159,66,189,141,0,101,185,85,208,239,240,81,52,222,137,109,217,103,229,88,34,216,31,124,111,156,160,72,211,88,40,199,155,24,253,79,38,136,41,38,16,100,159,73,146,125,17,100,99,237,88,130,55,190,47,22,67,203,188,160,231,33,33,44,130,79,181,58,121,185,85,171,197,178,228,192,123,46,3,95,35,193,225,191,34,30,31,58,22,54,182,240,128,128],[249,1,81,160,223,191,47,91,38,97,233,207,234,252,240,126,240,80,166,146,43,0,163,47,46,244,225,208,162,228,1,87,150,188,106,77,160,255,69,36,238,59,56,81,174,192,41,30,22,105,156,2,102,173,58,62,95,210,198,243,187,172,82,81,110,157,36,173,56,128,128,160,186,227,45,209,79,154,5,112,143,64,120,137,180,220,95,217,242,33,120,152,221,159,185,238,104,77,176,251,69,213,123,160,128,160,187,244,53,58,42,141,178,166,196,86,132,46,248,240,248,123,193,114,242,47,204,54,76,166,150,15,74,135,193,230,9,172,128,160,225,136,101,189,239,82,3,5,134,251,62,100,120,128,129,186,92,184,233,88,187,23,68,92,149,49,207,163,243,163,232,23,160,141,83,34,180,161,0,161,199,96,114,90,214,75,148,44,16,243,215,77,116,78,73,221,96,55,212,175,186,109,239,128,223,160,224,39,241,8,86,117,180,255,110,155,204,245,17,208,152,191,111,95,124,65,172,241,28,81,146,97,149,20,154,213,232,106,128,160,200,46,43,163,240,176,159,66,189,141,0,101,185,85,208,239,240,81,52,222,137,109,217,103,229,88,34,216,31,124,111,156,160,234,242,30,7,249,134,245,117,172,51,76,95,98,96,39,255,158,84,86,140,240,202,116,222,186,131,119,57,186,191,241,200,160,231,33,33,44,130,79,181,58,121,185,85,171,197,178,228,192,123,46,3,95,35,193,225,191,34,30,31,58,22,54,182,240,128,128]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[true,false],"extension":{"list_rlp_bytes":[228]},"branch":{"modified_index":13,"drifted_index":9,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,184,155,158,21,127,28,35,73,93,52,0,121,224,81,191,252,189,22,156,225,169,176,31,181,31,197,245,174,116,117,102,91,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,167,11,74,230,177,195,144,152,106,9,108,135,175,61,210,234,146,91,225,194,76,0,238,38,188,247,40,57,49,102,180,210,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,184,155,158,21,127,28,35,73,93,52,0,121,224,81,191,252,189,22,156,225,169,176,31,181,31,197,245,174,116,117,102,91,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[130,0,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,57,70,87,80,220,197,201,254,196,232,29,240,104,158,250,223,175,172,44,123,126,255,126,108,15,160,185,239,174,205,146,130,0],[0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,57,70,87,80,220,197,201,254,196,232,29,240,104,158,250,223,175,172,44,123,126,255,126,108,15,160,185,239,174,205,146,130,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,128,160,167,11,74,230,177,195,144,152,106,9,108,135,175,61,210,234,146,91,225,194,76,0,238,38,188,247,40,57,49,102,180,210,128,128,128,160,184,155,158,21,127,28,35,73,93,52,0,121,224,81,191,252,189,22,156,225,169,176,31,181,31,197,245,174,116,117,102,91,128,128,128],[248,81,128,128,128,128,128,128,128,128,128,160,167,11,74,230,177,195,144,152,106,9,108,135,175,61,210,234,146,91,225,194,76,0,238,38,188,247,40,57,49,102,180,210,128,128,128,160,184,155,158,21,127,28,35,73,93,52,0,121,224,81,191,252,189,22,156,225,169,176,31,181,31,197,245,174,116,117,102,91,128,128,128],[228,130,0,149,160,57,70,87,80,220,197,201,254,196,232,29,240,104,158,250,223,175,172,44,123,126,255,126,108,15,160,185,239,174,205,146,130],[228,130,0,149,160,57,70,87,80,220,197,201,254,196,232,29,240,104,158,250,223,175,172,44,123,126,255,126,108,15,160,185,239,174,205,146,130]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,114],"key":[237,149,213,42,227,19,230,190,109,140,143,153,69,146,58,100,151,195,114,105,186,53,213,227,83,91,117,142,71,34,124,252],"list_rlp_bytes":[[228],[224]],"value_rlp_bytes":[[130],[17]],"drifted_rlp_bytes":[226],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,32,149,152,74,221,132,196,1,76,127,157,102,161,183,62,120,142,45,182,79,87,99,250,134,26,213,45,162,4,247,27,43,0],[129,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[158,53,42,227,19,230,190,109,140,143,153,69,146,58,100,151,195,114,105,186,53,213,227,83,91,117,142,71,34,124,252,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[158,56,74,221,132,196,1,76,127,157,102,161,183,62,120,142,45,182,79,87,99,250,134,26,213,45,162,4,247,27,43,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[228,160,32,149,152,74,221,132,196,1,76,127,157,102,161,183,62,120,142,45,182,79,87,99,250,134,26,213,45,162,4,247,27,43,130,129,146],[224,158,53,42,227,19,230,190,109,140,143,153,69,146,58,100,151,195,114,105,186,53,213,227,83,91,117,142,71,34,124,252,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,114],[226,158,56,74,221,132,196,1,76,127,157,102,161,183,62,120,142,45,182,79,87,99,250,134,26,213,45,162,4,247,27,43,130,129,146]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ExtensionAddedTwoKeyBytesSel2.json b/zkevm-circuits/src/mpt_circuit/tests/ExtensionAddedTwoKeyBytesSel2.json new file mode 100644 index 0000000000..4b83d8a2be --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ExtensionAddedTwoKeyBytesSel2.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,35,138,116,176,152,195,155,106,69,11,122,161,106,192,74,95,77,27,253,195,229,12,102,112,191,38,206,177,216,154,18,90,0],[160,154,193,115,154,147,62,16,218,229,139,197,117,181,115,183,99,68,249,194,220,93,159,173,104,22,171,120,75,13,0,43,96,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,173,122,175,152,154,227,223,245,6,53,159,254,237,90,232,75,171,203,6,151,190,151,14,121,215,120,147,239,175,150,96,93,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,3,31,234,249,198,64,41,67,165,197,182,195,164,146,170,96,80,116,98,56,84,145,189,120,156,153,227,114,107,170,203,145,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,3,31,234,249,198,64,41,67,165,197,182,195,164,146,170,96,80,116,98,56,84,145,189,120,156,153,227,114,107,170,203,145,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,173,122,175,152,154,227,223,245,6,53,159,254,237,90,232,75,171,203,6,151,190,151,14,121,215,120,147,239,175,150,96,93,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,86,156,188,75,183,59,161,71,73,2,244,97,76,40,34,53,242,182,183,152,163,51,138,178,36,125,47,211,106,124,136,209,0],[160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,0],[160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,0],[160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,0],[160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,0],[160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,0],[160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,0],[160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,0],[160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,0],[160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,0],[160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,0],[160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,0],[160,128,173,60,145,248,253,133,144,179,124,61,33,232,140,5,252,151,234,86,121,34,249,8,121,154,121,230,147,181,238,80,169,0],[160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,0],[160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,0],[160,87,54,180,110,64,77,15,159,234,99,212,73,22,17,197,9,214,16,236,48,165,31,62,216,145,226,252,211,30,210,116,241,0],[160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,160,128,173,60,145,248,253,133,144,179,124,61,33,232,140,5,252,151,234,86,121,34,249,8,121,154,121,230,147,181,238,80,169,160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,160,87,54,180,110,64,77,15,159,234,99,212,73,22,17,197,9,214,16,236,48,165,31,62,216,145,226,252,211,30,210,116,241,160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,128],[249,2,17,160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,160,128,173,60,145,248,253,133,144,179,124,61,33,232,140,5,252,151,234,86,121,34,249,8,121,154,121,230,147,181,238,80,169,160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,160,86,156,188,75,183,59,161,71,73,2,244,97,76,40,34,53,242,182,183,152,163,51,138,178,36,125,47,211,106,124,136,209,160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,200,20,211,170,52,196,86,189,52,3,219,68,103,98,122,236,202,188,99,159,192,154,87,3,205,12,238,152,52,141,44,62,0],[160,80,75,215,208,193,159,84,57,71,243,7,14,204,100,148,205,208,55,165,27,88,145,87,12,99,158,158,182,197,55,33,95,0],[160,76,180,250,234,22,207,36,13,201,139,0,120,72,139,180,238,156,185,62,97,200,44,188,159,187,99,106,94,147,15,25,20,0],[160,189,17,169,103,34,213,240,167,18,182,246,233,129,88,212,80,113,250,13,189,211,144,206,169,179,25,180,70,188,155,55,32,0],[160,32,220,255,83,236,6,9,125,247,185,224,139,47,190,49,98,219,131,56,50,131,152,150,81,107,126,7,163,202,127,91,164,0],[160,185,211,148,32,33,143,139,118,55,225,47,134,141,134,35,28,209,179,72,57,247,141,152,65,38,141,179,61,214,174,204,14,0],[160,107,106,58,227,233,173,248,116,152,133,228,250,245,205,196,226,135,107,65,132,233,139,78,59,136,248,255,241,150,83,160,5,0],[160,0,164,180,172,120,195,134,123,28,39,200,127,136,82,33,245,97,141,28,111,0,184,5,98,102,230,66,116,77,224,101,219,0],[160,248,105,172,225,53,1,157,135,194,244,188,254,17,122,124,197,196,99,49,56,111,8,165,230,145,108,189,38,207,45,75,50,0],[160,35,73,222,234,130,172,207,150,15,218,253,15,36,223,217,31,215,79,14,171,224,221,215,51,242,239,84,255,134,147,216,166,0],[160,240,32,244,239,11,87,72,174,41,33,118,196,147,56,102,122,208,41,160,96,186,168,111,141,93,215,31,104,139,17,215,242,0],[160,82,199,196,167,58,157,107,196,36,170,39,205,176,246,208,56,210,163,200,208,226,179,109,60,35,248,244,49,8,254,178,170,0],[160,33,190,56,251,52,247,118,96,233,51,53,164,173,160,79,2,49,253,230,162,239,132,215,203,213,171,255,237,125,30,128,72,0],[160,255,250,210,54,157,254,43,240,80,48,249,200,142,240,27,109,12,250,107,172,243,192,36,2,224,146,228,178,151,220,187,84,0],[160,231,83,108,124,37,12,66,134,242,2,97,130,128,110,222,91,65,238,211,219,127,83,155,247,57,160,84,71,36,68,143,249,0],[160,49,132,199,94,225,34,198,225,84,182,131,124,126,81,66,197,238,228,144,216,66,221,170,150,141,52,23,177,9,14,164,218,0],[160,119,192,211,22,95,58,240,144,240,37,172,65,97,91,255,225,107,12,151,189,7,88,0,51,192,124,155,194,253,5,143,142,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,80,75,215,208,193,159,84,57,71,243,7,14,204,100,148,205,208,55,165,27,88,145,87,12,99,158,158,182,197,55,33,95,160,76,180,250,234,22,207,36,13,201,139,0,120,72,139,180,238,156,185,62,97,200,44,188,159,187,99,106,94,147,15,25,20,160,189,17,169,103,34,213,240,167,18,182,246,233,129,88,212,80,113,250,13,189,211,144,206,169,179,25,180,70,188,155,55,32,160,32,220,255,83,236,6,9,125,247,185,224,139,47,190,49,98,219,131,56,50,131,152,150,81,107,126,7,163,202,127,91,164,160,185,211,148,32,33,143,139,118,55,225,47,134,141,134,35,28,209,179,72,57,247,141,152,65,38,141,179,61,214,174,204,14,160,107,106,58,227,233,173,248,116,152,133,228,250,245,205,196,226,135,107,65,132,233,139,78,59,136,248,255,241,150,83,160,5,160,0,164,180,172,120,195,134,123,28,39,200,127,136,82,33,245,97,141,28,111,0,184,5,98,102,230,66,116,77,224,101,219,160,248,105,172,225,53,1,157,135,194,244,188,254,17,122,124,197,196,99,49,56,111,8,165,230,145,108,189,38,207,45,75,50,160,35,73,222,234,130,172,207,150,15,218,253,15,36,223,217,31,215,79,14,171,224,221,215,51,242,239,84,255,134,147,216,166,160,240,32,244,239,11,87,72,174,41,33,118,196,147,56,102,122,208,41,160,96,186,168,111,141,93,215,31,104,139,17,215,242,160,82,199,196,167,58,157,107,196,36,170,39,205,176,246,208,56,210,163,200,208,226,179,109,60,35,248,244,49,8,254,178,170,160,33,190,56,251,52,247,118,96,233,51,53,164,173,160,79,2,49,253,230,162,239,132,215,203,213,171,255,237,125,30,128,72,160,255,250,210,54,157,254,43,240,80,48,249,200,142,240,27,109,12,250,107,172,243,192,36,2,224,146,228,178,151,220,187,84,160,231,83,108,124,37,12,66,134,242,2,97,130,128,110,222,91,65,238,211,219,127,83,155,247,57,160,84,71,36,68,143,249,160,49,132,199,94,225,34,198,225,84,182,131,124,126,81,66,197,238,228,144,216,66,221,170,150,141,52,23,177,9,14,164,218,160,119,192,211,22,95,58,240,144,240,37,172,65,97,91,255,225,107,12,151,189,7,88,0,51,192,124,155,194,253,5,143,142,128],[249,2,17,160,80,75,215,208,193,159,84,57,71,243,7,14,204,100,148,205,208,55,165,27,88,145,87,12,99,158,158,182,197,55,33,95,160,76,180,250,234,22,207,36,13,201,139,0,120,72,139,180,238,156,185,62,97,200,44,188,159,187,99,106,94,147,15,25,20,160,189,17,169,103,34,213,240,167,18,182,246,233,129,88,212,80,113,250,13,189,211,144,206,169,179,25,180,70,188,155,55,32,160,32,220,255,83,236,6,9,125,247,185,224,139,47,190,49,98,219,131,56,50,131,152,150,81,107,126,7,163,202,127,91,164,160,185,211,148,32,33,143,139,118,55,225,47,134,141,134,35,28,209,179,72,57,247,141,152,65,38,141,179,61,214,174,204,14,160,107,106,58,227,233,173,248,116,152,133,228,250,245,205,196,226,135,107,65,132,233,139,78,59,136,248,255,241,150,83,160,5,160,0,164,180,172,120,195,134,123,28,39,200,127,136,82,33,245,97,141,28,111,0,184,5,98,102,230,66,116,77,224,101,219,160,248,105,172,225,53,1,157,135,194,244,188,254,17,122,124,197,196,99,49,56,111,8,165,230,145,108,189,38,207,45,75,50,160,35,73,222,234,130,172,207,150,15,218,253,15,36,223,217,31,215,79,14,171,224,221,215,51,242,239,84,255,134,147,216,166,160,240,32,244,239,11,87,72,174,41,33,118,196,147,56,102,122,208,41,160,96,186,168,111,141,93,215,31,104,139,17,215,242,160,82,199,196,167,58,157,107,196,36,170,39,205,176,246,208,56,210,163,200,208,226,179,109,60,35,248,244,49,8,254,178,170,160,200,20,211,170,52,196,86,189,52,3,219,68,103,98,122,236,202,188,99,159,192,154,87,3,205,12,238,152,52,141,44,62,160,255,250,210,54,157,254,43,240,80,48,249,200,142,240,27,109,12,250,107,172,243,192,36,2,224,146,228,178,151,220,187,84,160,231,83,108,124,37,12,66,134,242,2,97,130,128,110,222,91,65,238,211,219,127,83,155,247,57,160,84,71,36,68,143,249,160,49,132,199,94,225,34,198,225,84,182,131,124,126,81,66,197,238,228,144,216,66,221,170,150,141,52,23,177,9,14,164,218,160,119,192,211,22,95,58,240,144,240,37,172,65,97,91,255,225,107,12,151,189,7,88,0,51,192,124,155,194,253,5,143,142,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,129,188,133,16,245,204,210,125,199,189,76,229,99,131,99,14,23,255,74,180,141,187,100,124,77,33,213,255,244,48,110,78,0],[160,135,19,64,207,217,223,201,245,3,114,121,32,66,43,57,133,252,55,82,116,223,71,100,149,122,243,45,28,63,150,204,110,0],[160,210,120,212,210,151,79,221,51,232,80,80,186,46,159,194,233,203,46,201,120,35,213,101,124,0,8,177,219,68,14,121,240,0],[160,7,114,2,237,174,156,12,217,41,80,207,22,255,39,79,29,172,209,87,195,37,188,55,186,206,78,97,11,87,224,72,236,0],[160,22,29,249,121,177,221,199,134,231,204,178,150,90,71,228,195,117,255,255,223,21,95,194,251,151,149,22,131,234,12,148,141,0],[160,154,130,254,249,64,180,76,29,52,23,185,183,92,39,79,57,58,81,220,159,7,224,15,179,212,252,51,109,150,166,138,123,0],[160,191,184,181,142,36,247,244,175,48,46,160,172,131,40,126,16,142,50,208,215,51,119,231,93,236,238,227,222,169,47,110,125,0],[160,63,16,188,230,177,90,174,250,172,232,195,227,33,146,180,160,216,2,248,221,210,179,93,60,27,200,22,229,211,119,190,115,0],[160,138,74,110,255,154,192,63,78,13,54,218,154,104,77,67,37,120,10,243,153,177,62,197,78,1,222,4,9,36,71,48,112,0],[160,178,157,0,28,65,106,227,88,84,22,69,42,75,101,149,62,86,45,11,59,216,93,0,97,209,124,70,114,145,152,73,213,0],[160,80,176,142,247,234,92,148,168,17,76,79,72,211,136,9,251,173,156,52,47,222,75,47,99,175,39,37,242,43,103,246,104,0],[160,220,42,251,8,22,8,115,225,127,17,184,13,248,242,7,12,82,192,44,74,62,147,117,10,57,158,59,179,221,195,212,185,0],[160,73,210,235,92,4,27,119,189,211,244,21,130,213,183,166,10,118,148,51,106,35,39,41,16,212,32,33,30,232,202,253,127,0],[160,45,234,125,167,138,171,111,217,200,71,109,44,151,79,202,136,227,21,63,196,251,135,189,172,157,97,199,5,92,103,113,208,0],[160,32,136,102,148,196,136,37,163,51,96,178,15,175,37,129,190,72,46,102,165,57,108,199,41,1,153,217,87,99,246,185,134,0],[160,195,142,65,38,53,73,58,93,254,20,214,13,99,184,121,102,237,111,202,60,113,233,229,157,72,243,233,231,38,188,161,198,0],[160,29,13,42,118,4,81,208,108,222,61,121,232,127,152,172,231,68,36,11,214,122,155,128,182,146,21,101,238,226,237,167,149,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,135,19,64,207,217,223,201,245,3,114,121,32,66,43,57,133,252,55,82,116,223,71,100,149,122,243,45,28,63,150,204,110,160,210,120,212,210,151,79,221,51,232,80,80,186,46,159,194,233,203,46,201,120,35,213,101,124,0,8,177,219,68,14,121,240,160,7,114,2,237,174,156,12,217,41,80,207,22,255,39,79,29,172,209,87,195,37,188,55,186,206,78,97,11,87,224,72,236,160,22,29,249,121,177,221,199,134,231,204,178,150,90,71,228,195,117,255,255,223,21,95,194,251,151,149,22,131,234,12,148,141,160,154,130,254,249,64,180,76,29,52,23,185,183,92,39,79,57,58,81,220,159,7,224,15,179,212,252,51,109,150,166,138,123,160,191,184,181,142,36,247,244,175,48,46,160,172,131,40,126,16,142,50,208,215,51,119,231,93,236,238,227,222,169,47,110,125,160,63,16,188,230,177,90,174,250,172,232,195,227,33,146,180,160,216,2,248,221,210,179,93,60,27,200,22,229,211,119,190,115,160,138,74,110,255,154,192,63,78,13,54,218,154,104,77,67,37,120,10,243,153,177,62,197,78,1,222,4,9,36,71,48,112,160,178,157,0,28,65,106,227,88,84,22,69,42,75,101,149,62,86,45,11,59,216,93,0,97,209,124,70,114,145,152,73,213,160,80,176,142,247,234,92,148,168,17,76,79,72,211,136,9,251,173,156,52,47,222,75,47,99,175,39,37,242,43,103,246,104,160,220,42,251,8,22,8,115,225,127,17,184,13,248,242,7,12,82,192,44,74,62,147,117,10,57,158,59,179,221,195,212,185,160,73,210,235,92,4,27,119,189,211,244,21,130,213,183,166,10,118,148,51,106,35,39,41,16,212,32,33,30,232,202,253,127,160,45,234,125,167,138,171,111,217,200,71,109,44,151,79,202,136,227,21,63,196,251,135,189,172,157,97,199,5,92,103,113,208,160,32,136,102,148,196,136,37,163,51,96,178,15,175,37,129,190,72,46,102,165,57,108,199,41,1,153,217,87,99,246,185,134,160,195,142,65,38,53,73,58,93,254,20,214,13,99,184,121,102,237,111,202,60,113,233,229,157,72,243,233,231,38,188,161,198,160,29,13,42,118,4,81,208,108,222,61,121,232,127,152,172,231,68,36,11,214,122,155,128,182,146,21,101,238,226,237,167,149,128],[249,2,17,160,135,19,64,207,217,223,201,245,3,114,121,32,66,43,57,133,252,55,82,116,223,71,100,149,122,243,45,28,63,150,204,110,160,210,120,212,210,151,79,221,51,232,80,80,186,46,159,194,233,203,46,201,120,35,213,101,124,0,8,177,219,68,14,121,240,160,7,114,2,237,174,156,12,217,41,80,207,22,255,39,79,29,172,209,87,195,37,188,55,186,206,78,97,11,87,224,72,236,160,22,29,249,121,177,221,199,134,231,204,178,150,90,71,228,195,117,255,255,223,21,95,194,251,151,149,22,131,234,12,148,141,160,154,130,254,249,64,180,76,29,52,23,185,183,92,39,79,57,58,81,220,159,7,224,15,179,212,252,51,109,150,166,138,123,160,191,184,181,142,36,247,244,175,48,46,160,172,131,40,126,16,142,50,208,215,51,119,231,93,236,238,227,222,169,47,110,125,160,63,16,188,230,177,90,174,250,172,232,195,227,33,146,180,160,216,2,248,221,210,179,93,60,27,200,22,229,211,119,190,115,160,129,188,133,16,245,204,210,125,199,189,76,229,99,131,99,14,23,255,74,180,141,187,100,124,77,33,213,255,244,48,110,78,160,178,157,0,28,65,106,227,88,84,22,69,42,75,101,149,62,86,45,11,59,216,93,0,97,209,124,70,114,145,152,73,213,160,80,176,142,247,234,92,148,168,17,76,79,72,211,136,9,251,173,156,52,47,222,75,47,99,175,39,37,242,43,103,246,104,160,220,42,251,8,22,8,115,225,127,17,184,13,248,242,7,12,82,192,44,74,62,147,117,10,57,158,59,179,221,195,212,185,160,73,210,235,92,4,27,119,189,211,244,21,130,213,183,166,10,118,148,51,106,35,39,41,16,212,32,33,30,232,202,253,127,160,45,234,125,167,138,171,111,217,200,71,109,44,151,79,202,136,227,21,63,196,251,135,189,172,157,97,199,5,92,103,113,208,160,32,136,102,148,196,136,37,163,51,96,178,15,175,37,129,190,72,46,102,165,57,108,199,41,1,153,217,87,99,246,185,134,160,195,142,65,38,53,73,58,93,254,20,214,13,99,184,121,102,237,111,202,60,113,233,229,157,72,243,233,231,38,188,161,198,160,29,13,42,118,4,81,208,108,222,61,121,232,127,152,172,231,68,36,11,214,122,155,128,182,146,21,101,238,226,237,167,149,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,141,111,222,1,129,231,99,205,80,149,63,58,188,133,57,199,167,74,121,55,149,118,121,10,46,126,21,56,89,104,184,182,0],[160,133,167,189,133,123,193,191,222,89,216,35,78,93,7,66,131,149,42,249,152,66,106,244,232,140,225,53,159,56,146,232,23,0],[160,252,122,28,104,215,195,210,194,90,68,41,241,5,233,121,31,111,39,40,44,8,54,98,144,203,206,196,168,223,212,246,221,0],[160,108,140,134,51,36,35,162,155,179,219,212,248,1,165,39,162,65,235,79,21,5,180,1,119,15,51,58,169,249,106,94,169,0],[160,254,76,95,71,155,26,54,113,106,54,108,164,206,63,247,247,91,164,234,52,148,14,43,211,132,137,64,194,118,82,194,177,0],[160,14,185,41,78,52,126,90,218,79,124,126,55,116,181,121,241,185,238,44,135,0,49,233,24,87,231,76,225,31,130,200,18,0],[160,184,203,50,205,70,164,135,3,71,89,95,190,248,113,62,67,78,182,14,228,178,180,2,161,165,175,67,60,73,23,173,123,0],[160,144,195,48,89,145,149,182,147,85,15,69,184,79,146,224,36,71,69,131,22,233,191,131,250,24,98,82,185,178,33,37,178,0],[160,103,13,127,211,234,63,148,126,213,126,127,233,179,188,239,177,163,141,165,207,149,48,253,223,158,89,76,162,21,6,208,123,0],[160,60,30,137,167,221,156,12,2,111,77,132,147,40,151,60,202,47,85,195,64,141,50,215,66,51,129,199,36,184,203,150,136,0],[160,47,92,105,177,160,255,212,105,132,109,28,120,118,228,101,197,3,61,151,81,126,86,140,26,92,137,116,150,66,142,148,133,0],[160,188,123,142,119,144,241,30,96,104,247,77,149,203,234,218,50,166,117,17,238,216,103,24,146,142,202,126,58,34,229,213,98,0],[160,224,216,112,130,13,100,121,43,240,200,170,28,115,114,221,150,152,231,2,47,200,214,115,66,3,187,118,3,137,11,68,137,0],[160,10,81,148,85,182,179,4,213,104,8,18,186,104,176,241,146,55,220,243,205,207,90,175,2,120,133,99,27,67,103,37,137,0],[160,92,135,250,214,119,219,245,233,65,207,198,41,62,154,6,183,119,86,175,138,217,145,8,75,217,202,166,21,201,199,183,160,0],[160,178,118,164,136,184,196,235,68,1,208,226,214,129,93,154,28,118,79,39,37,41,21,31,157,175,140,26,16,206,117,245,161,0],[160,166,122,17,151,156,67,20,33,110,157,14,75,253,205,253,90,57,76,61,99,70,105,124,243,136,52,164,181,121,236,236,70,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,133,167,189,133,123,193,191,222,89,216,35,78,93,7,66,131,149,42,249,152,66,106,244,232,140,225,53,159,56,146,232,23,160,252,122,28,104,215,195,210,194,90,68,41,241,5,233,121,31,111,39,40,44,8,54,98,144,203,206,196,168,223,212,246,221,160,108,140,134,51,36,35,162,155,179,219,212,248,1,165,39,162,65,235,79,21,5,180,1,119,15,51,58,169,249,106,94,169,160,254,76,95,71,155,26,54,113,106,54,108,164,206,63,247,247,91,164,234,52,148,14,43,211,132,137,64,194,118,82,194,177,160,14,185,41,78,52,126,90,218,79,124,126,55,116,181,121,241,185,238,44,135,0,49,233,24,87,231,76,225,31,130,200,18,160,184,203,50,205,70,164,135,3,71,89,95,190,248,113,62,67,78,182,14,228,178,180,2,161,165,175,67,60,73,23,173,123,160,144,195,48,89,145,149,182,147,85,15,69,184,79,146,224,36,71,69,131,22,233,191,131,250,24,98,82,185,178,33,37,178,160,103,13,127,211,234,63,148,126,213,126,127,233,179,188,239,177,163,141,165,207,149,48,253,223,158,89,76,162,21,6,208,123,160,60,30,137,167,221,156,12,2,111,77,132,147,40,151,60,202,47,85,195,64,141,50,215,66,51,129,199,36,184,203,150,136,160,47,92,105,177,160,255,212,105,132,109,28,120,118,228,101,197,3,61,151,81,126,86,140,26,92,137,116,150,66,142,148,133,160,188,123,142,119,144,241,30,96,104,247,77,149,203,234,218,50,166,117,17,238,216,103,24,146,142,202,126,58,34,229,213,98,160,224,216,112,130,13,100,121,43,240,200,170,28,115,114,221,150,152,231,2,47,200,214,115,66,3,187,118,3,137,11,68,137,160,10,81,148,85,182,179,4,213,104,8,18,186,104,176,241,146,55,220,243,205,207,90,175,2,120,133,99,27,67,103,37,137,160,92,135,250,214,119,219,245,233,65,207,198,41,62,154,6,183,119,86,175,138,217,145,8,75,217,202,166,21,201,199,183,160,160,178,118,164,136,184,196,235,68,1,208,226,214,129,93,154,28,118,79,39,37,41,21,31,157,175,140,26,16,206,117,245,161,160,166,122,17,151,156,67,20,33,110,157,14,75,253,205,253,90,57,76,61,99,70,105,124,243,136,52,164,181,121,236,236,70,128],[249,2,17,160,133,167,189,133,123,193,191,222,89,216,35,78,93,7,66,131,149,42,249,152,66,106,244,232,140,225,53,159,56,146,232,23,160,252,122,28,104,215,195,210,194,90,68,41,241,5,233,121,31,111,39,40,44,8,54,98,144,203,206,196,168,223,212,246,221,160,108,140,134,51,36,35,162,155,179,219,212,248,1,165,39,162,65,235,79,21,5,180,1,119,15,51,58,169,249,106,94,169,160,254,76,95,71,155,26,54,113,106,54,108,164,206,63,247,247,91,164,234,52,148,14,43,211,132,137,64,194,118,82,194,177,160,14,185,41,78,52,126,90,218,79,124,126,55,116,181,121,241,185,238,44,135,0,49,233,24,87,231,76,225,31,130,200,18,160,184,203,50,205,70,164,135,3,71,89,95,190,248,113,62,67,78,182,14,228,178,180,2,161,165,175,67,60,73,23,173,123,160,144,195,48,89,145,149,182,147,85,15,69,184,79,146,224,36,71,69,131,22,233,191,131,250,24,98,82,185,178,33,37,178,160,103,13,127,211,234,63,148,126,213,126,127,233,179,188,239,177,163,141,165,207,149,48,253,223,158,89,76,162,21,6,208,123,160,60,30,137,167,221,156,12,2,111,77,132,147,40,151,60,202,47,85,195,64,141,50,215,66,51,129,199,36,184,203,150,136,160,47,92,105,177,160,255,212,105,132,109,28,120,118,228,101,197,3,61,151,81,126,86,140,26,92,137,116,150,66,142,148,133,160,188,123,142,119,144,241,30,96,104,247,77,149,203,234,218,50,166,117,17,238,216,103,24,146,142,202,126,58,34,229,213,98,160,141,111,222,1,129,231,99,205,80,149,63,58,188,133,57,199,167,74,121,55,149,118,121,10,46,126,21,56,89,104,184,182,160,10,81,148,85,182,179,4,213,104,8,18,186,104,176,241,146,55,220,243,205,207,90,175,2,120,133,99,27,67,103,37,137,160,92,135,250,214,119,219,245,233,65,207,198,41,62,154,6,183,119,86,175,138,217,145,8,75,217,202,166,21,201,199,183,160,160,178,118,164,136,184,196,235,68,1,208,226,214,129,93,154,28,118,79,39,37,41,21,31,157,175,140,26,16,206,117,245,161,160,166,122,17,151,156,67,20,33,110,157,14,75,253,205,253,90,57,76,61,99,70,105,124,243,136,52,164,181,121,236,236,70,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,100,201,120,5,13,170,15,233,142,231,158,54,151,210,70,223,43,116,168,18,166,148,138,148,240,79,217,182,181,225,181,164,0],[160,148,96,233,169,14,90,134,113,124,248,170,233,105,200,185,209,37,170,23,12,53,121,255,207,171,140,58,155,240,245,176,148,0],[160,44,47,217,201,92,122,132,137,66,226,149,169,177,49,235,62,79,6,38,116,120,55,195,24,55,197,51,169,64,4,70,173,0],[160,239,47,98,216,238,2,166,46,89,15,56,7,5,196,196,62,67,249,253,235,20,235,102,134,142,200,26,17,214,152,1,145,0],[160,197,17,178,32,200,66,202,234,188,218,127,181,8,17,4,30,61,47,57,234,58,255,120,204,181,237,168,202,28,76,105,234,0],[160,63,229,58,247,19,93,67,185,34,164,106,81,163,92,222,25,161,27,40,212,121,191,185,203,236,130,187,73,151,69,189,185,0],[160,254,144,109,156,81,221,79,66,253,183,145,54,58,41,16,116,249,56,61,32,1,181,98,101,217,110,246,137,185,35,129,215,0],[160,42,32,250,190,187,193,176,158,238,99,10,152,135,244,177,201,170,90,140,94,31,244,155,240,210,136,149,233,93,37,48,191,0],[160,7,112,217,103,187,234,29,102,153,133,145,162,61,99,174,66,142,135,92,153,8,211,193,236,188,60,32,137,180,198,220,125,0],[160,81,76,82,36,53,180,76,100,114,1,16,17,231,143,16,128,224,130,54,29,129,30,175,141,192,31,129,54,103,40,235,30,0],[160,91,241,99,220,108,63,125,225,150,80,223,253,107,254,87,177,201,91,21,251,24,233,244,246,13,134,68,64,146,212,100,133,0],[160,236,116,61,181,70,202,25,127,58,207,72,50,66,207,22,152,197,203,167,193,92,102,153,213,59,137,65,153,49,136,57,215,0],[160,216,2,120,95,255,84,108,99,100,122,21,213,206,229,80,63,183,191,6,12,87,234,21,174,229,146,63,113,77,198,240,39,0],[160,190,218,104,114,65,143,16,76,171,187,221,133,224,217,179,164,222,126,10,33,35,71,63,53,163,111,199,211,228,164,124,223,0],[160,213,170,112,202,127,64,210,139,189,213,55,20,144,252,240,46,126,109,109,74,135,136,15,128,192,99,16,67,173,97,168,61,0],[160,147,75,172,163,178,143,148,112,133,47,43,229,251,14,130,192,253,59,110,111,147,43,65,57,213,172,199,179,154,184,206,56,0],[160,164,223,28,174,107,173,96,167,56,249,242,213,153,166,239,188,30,37,226,19,250,193,152,99,72,192,45,227,39,220,80,199,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,148,96,233,169,14,90,134,113,124,248,170,233,105,200,185,209,37,170,23,12,53,121,255,207,171,140,58,155,240,245,176,148,160,44,47,217,201,92,122,132,137,66,226,149,169,177,49,235,62,79,6,38,116,120,55,195,24,55,197,51,169,64,4,70,173,160,239,47,98,216,238,2,166,46,89,15,56,7,5,196,196,62,67,249,253,235,20,235,102,134,142,200,26,17,214,152,1,145,160,197,17,178,32,200,66,202,234,188,218,127,181,8,17,4,30,61,47,57,234,58,255,120,204,181,237,168,202,28,76,105,234,160,63,229,58,247,19,93,67,185,34,164,106,81,163,92,222,25,161,27,40,212,121,191,185,203,236,130,187,73,151,69,189,185,160,254,144,109,156,81,221,79,66,253,183,145,54,58,41,16,116,249,56,61,32,1,181,98,101,217,110,246,137,185,35,129,215,160,42,32,250,190,187,193,176,158,238,99,10,152,135,244,177,201,170,90,140,94,31,244,155,240,210,136,149,233,93,37,48,191,160,7,112,217,103,187,234,29,102,153,133,145,162,61,99,174,66,142,135,92,153,8,211,193,236,188,60,32,137,180,198,220,125,160,81,76,82,36,53,180,76,100,114,1,16,17,231,143,16,128,224,130,54,29,129,30,175,141,192,31,129,54,103,40,235,30,160,91,241,99,220,108,63,125,225,150,80,223,253,107,254,87,177,201,91,21,251,24,233,244,246,13,134,68,64,146,212,100,133,160,236,116,61,181,70,202,25,127,58,207,72,50,66,207,22,152,197,203,167,193,92,102,153,213,59,137,65,153,49,136,57,215,160,216,2,120,95,255,84,108,99,100,122,21,213,206,229,80,63,183,191,6,12,87,234,21,174,229,146,63,113,77,198,240,39,160,190,218,104,114,65,143,16,76,171,187,221,133,224,217,179,164,222,126,10,33,35,71,63,53,163,111,199,211,228,164,124,223,160,213,170,112,202,127,64,210,139,189,213,55,20,144,252,240,46,126,109,109,74,135,136,15,128,192,99,16,67,173,97,168,61,160,147,75,172,163,178,143,148,112,133,47,43,229,251,14,130,192,253,59,110,111,147,43,65,57,213,172,199,179,154,184,206,56,160,164,223,28,174,107,173,96,167,56,249,242,213,153,166,239,188,30,37,226,19,250,193,152,99,72,192,45,227,39,220,80,199,128],[249,2,17,160,148,96,233,169,14,90,134,113,124,248,170,233,105,200,185,209,37,170,23,12,53,121,255,207,171,140,58,155,240,245,176,148,160,44,47,217,201,92,122,132,137,66,226,149,169,177,49,235,62,79,6,38,116,120,55,195,24,55,197,51,169,64,4,70,173,160,239,47,98,216,238,2,166,46,89,15,56,7,5,196,196,62,67,249,253,235,20,235,102,134,142,200,26,17,214,152,1,145,160,197,17,178,32,200,66,202,234,188,218,127,181,8,17,4,30,61,47,57,234,58,255,120,204,181,237,168,202,28,76,105,234,160,63,229,58,247,19,93,67,185,34,164,106,81,163,92,222,25,161,27,40,212,121,191,185,203,236,130,187,73,151,69,189,185,160,254,144,109,156,81,221,79,66,253,183,145,54,58,41,16,116,249,56,61,32,1,181,98,101,217,110,246,137,185,35,129,215,160,42,32,250,190,187,193,176,158,238,99,10,152,135,244,177,201,170,90,140,94,31,244,155,240,210,136,149,233,93,37,48,191,160,100,201,120,5,13,170,15,233,142,231,158,54,151,210,70,223,43,116,168,18,166,148,138,148,240,79,217,182,181,225,181,164,160,81,76,82,36,53,180,76,100,114,1,16,17,231,143,16,128,224,130,54,29,129,30,175,141,192,31,129,54,103,40,235,30,160,91,241,99,220,108,63,125,225,150,80,223,253,107,254,87,177,201,91,21,251,24,233,244,246,13,134,68,64,146,212,100,133,160,236,116,61,181,70,202,25,127,58,207,72,50,66,207,22,152,197,203,167,193,92,102,153,213,59,137,65,153,49,136,57,215,160,216,2,120,95,255,84,108,99,100,122,21,213,206,229,80,63,183,191,6,12,87,234,21,174,229,146,63,113,77,198,240,39,160,190,218,104,114,65,143,16,76,171,187,221,133,224,217,179,164,222,126,10,33,35,71,63,53,163,111,199,211,228,164,124,223,160,213,170,112,202,127,64,210,139,189,213,55,20,144,252,240,46,126,109,109,74,135,136,15,128,192,99,16,67,173,97,168,61,160,147,75,172,163,178,143,148,112,133,47,43,229,251,14,130,192,253,59,110,111,147,43,65,57,213,172,199,179,154,184,206,56,160,164,223,28,174,107,173,96,167,56,249,242,213,153,166,239,188,30,37,226,19,250,193,152,99,72,192,45,227,39,220,80,199,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,172,206,173,180,154,233,255,157,140,50,184,242,217,100,104,189,68,143,47,202,189,152,144,185,5,197,150,101,158,230,100,137,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,30,165,12,148,60,73,75,129,99,22,189,179,165,212,97,30,70,252,178,141,82,212,205,86,33,189,64,225,155,151,44,228,0],[160,143,165,150,220,29,213,132,61,84,146,177,121,240,70,49,108,193,141,238,104,187,31,65,67,198,42,160,132,145,244,195,47,0],[160,249,206,148,243,175,9,54,64,123,62,84,79,56,2,167,180,229,57,141,60,57,230,39,198,161,165,104,120,15,27,210,19,0],[160,35,2,113,27,174,138,111,47,143,63,131,219,176,187,151,237,202,89,0,243,6,15,2,56,30,196,6,32,30,28,90,37,0],[160,58,236,215,25,102,10,91,61,145,178,196,158,128,97,75,40,167,190,55,63,190,206,1,214,162,90,94,106,14,98,57,150,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,192,147,56,216,166,204,38,22,236,116,212,187,163,46,244,70,243,70,187,207,2,165,214,141,45,103,210,194,66,11,69,179,0],[160,117,122,201,227,86,39,241,238,102,35,220,228,173,47,177,21,179,1,127,203,246,161,7,8,74,137,61,215,220,217,185,22,0],[160,241,188,52,165,71,42,145,44,6,13,51,116,50,101,11,21,41,174,213,101,6,12,243,195,47,91,175,49,28,99,33,190,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,128,160,30,165,12,148,60,73,75,129,99,22,189,179,165,212,97,30,70,252,178,141,82,212,205,86,33,189,64,225,155,151,44,228,160,143,165,150,220,29,213,132,61,84,146,177,121,240,70,49,108,193,141,238,104,187,31,65,67,198,42,160,132,145,244,195,47,160,249,206,148,243,175,9,54,64,123,62,84,79,56,2,167,180,229,57,141,60,57,230,39,198,161,165,104,120,15,27,210,19,160,35,2,113,27,174,138,111,47,143,63,131,219,176,187,151,237,202,89,0,243,6,15,2,56,30,196,6,32,30,28,90,37,160,58,236,215,25,102,10,91,61,145,178,196,158,128,97,75,40,167,190,55,63,190,206,1,214,162,90,94,106,14,98,57,150,128,128,128,128,160,192,147,56,216,166,204,38,22,236,116,212,187,163,46,244,70,243,70,187,207,2,165,214,141,45,103,210,194,66,11,69,179,160,117,122,201,227,86,39,241,238,102,35,220,228,173,47,177,21,179,1,127,203,246,161,7,8,74,137,61,215,220,217,185,22,160,241,188,52,165,71,42,145,44,6,13,51,116,50,101,11,21,41,174,213,101,6,12,243,195,47,91,175,49,28,99,33,190,128,128,128,128],[249,1,17,128,160,30,165,12,148,60,73,75,129,99,22,189,179,165,212,97,30,70,252,178,141,82,212,205,86,33,189,64,225,155,151,44,228,160,143,165,150,220,29,213,132,61,84,146,177,121,240,70,49,108,193,141,238,104,187,31,65,67,198,42,160,132,145,244,195,47,160,249,206,148,243,175,9,54,64,123,62,84,79,56,2,167,180,229,57,141,60,57,230,39,198,161,165,104,120,15,27,210,19,160,35,2,113,27,174,138,111,47,143,63,131,219,176,187,151,237,202,89,0,243,6,15,2,56,30,196,6,32,30,28,90,37,160,58,236,215,25,102,10,91,61,145,178,196,158,128,97,75,40,167,190,55,63,190,206,1,214,162,90,94,106,14,98,57,150,128,128,128,128,160,192,147,56,216,166,204,38,22,236,116,212,187,163,46,244,70,243,70,187,207,2,165,214,141,45,103,210,194,66,11,69,179,160,172,206,173,180,154,233,255,157,140,50,184,242,217,100,104,189,68,143,47,202,189,152,144,185,5,197,150,101,158,230,100,137,160,241,188,52,165,71,42,145,44,6,13,51,116,50,101,11,21,41,174,213,101,6,12,243,195,47,91,175,49,28,99,33,190,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,251,239,33,80,129,140,50,179,108,87,149,114,38,223,78,36,235,129,201],"key":[190,183,183,180,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,0,0,0,0],[157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,245,152,63,62,176,191,125,119,210,234,247,202,239,92,234,25,136,113,232,83,42,62,99,70,60,82,223,170,5,21,44,159,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,47,121,224,194,201,142,138,249,134,59,142,94,252,56,59,224,87,108,160,54,205,115,121,62,62,149,28,39,144,229,149,21,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,0,0,0,0]],"keccak_data":[[248,102,157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,184,70,248,68,128,128,160,245,152,63,62,176,191,125,119,210,234,247,202,239,92,234,25,136,113,232,83,42,62,99,70,60,82,223,170,5,21,44,159,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,184,70,248,68,128,128,160,47,121,224,194,201,142,138,249,134,59,142,94,252,56,59,224,87,108,160,54,205,115,121,62,62,149,28,39,144,229,149,21,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,251,239,33,80,129,140,50,179,108,87,149,114,38,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,42,19,10,204,69,228,60,91,43,147,199,202,15,94,12,116,65,214,201,165,159,187,202,26,213,49,86,240,174,7,67,210,0],[160,118,40,174,124,139,109,204,241,251,195,147,65,240,76,106,24,242,36,51,101,103,143,50,92,114,253,104,5,109,181,51,98,0],[160,249,69,87,71,18,138,15,72,213,240,18,253,31,183,249,185,207,133,33,180,215,237,204,224,95,114,221,205,174,94,80,244,0],[160,53,57,5,118,189,13,82,33,4,101,196,180,100,26,132,37,191,188,180,35,181,67,39,96,217,195,83,144,212,139,30,218,0],[160,220,236,127,174,16,101,252,249,176,202,40,113,117,67,145,12,107,82,149,224,202,127,31,87,229,111,196,89,5,69,67,155,0],[160,13,146,12,166,36,40,125,231,99,11,185,247,66,19,4,130,202,239,0,234,44,91,23,164,51,122,70,247,186,184,84,225,0],[160,63,207,96,242,116,99,51,175,181,69,77,239,210,8,223,62,170,118,66,120,216,244,38,186,180,129,163,20,255,0,251,231,0],[160,250,6,114,73,191,145,246,192,1,171,95,122,81,242,8,14,44,131,139,188,101,24,146,246,138,6,123,209,247,165,197,238,0],[160,249,101,11,78,90,104,246,49,184,234,234,22,209,111,92,145,89,235,37,164,213,174,204,136,178,251,130,33,52,21,190,45,0],[160,190,138,53,100,188,117,108,77,198,151,97,70,115,9,212,196,59,214,199,41,190,24,144,234,62,249,227,71,120,252,143,79,0],[160,209,15,183,214,169,88,15,173,79,129,153,172,206,76,41,65,13,176,71,171,91,233,170,138,246,159,96,104,72,179,227,58,0],[160,221,241,141,212,51,62,6,143,147,145,234,254,111,166,215,16,248,171,127,255,146,63,93,155,77,43,148,123,86,174,18,83,0],[160,147,87,15,16,182,60,27,80,103,56,116,24,19,169,217,157,59,22,211,207,35,243,226,147,25,142,45,86,215,21,166,103,0],[160,121,25,243,224,133,107,212,169,6,147,225,220,37,129,34,85,80,15,238,202,4,91,99,160,108,5,253,172,255,13,196,44,0],[160,232,16,146,211,53,170,231,136,193,205,237,60,140,81,56,242,232,139,191,91,235,220,128,115,138,38,16,22,178,14,151,8,0],[160,161,154,17,2,49,207,254,215,226,78,143,236,9,153,84,158,193,231,187,214,88,252,220,14,230,107,163,235,38,222,118,66,0],[160,231,199,0,196,103,10,162,141,15,87,130,118,77,175,140,214,137,127,126,189,42,9,165,200,220,138,199,106,68,241,165,239,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,118,40,174,124,139,109,204,241,251,195,147,65,240,76,106,24,242,36,51,101,103,143,50,92,114,253,104,5,109,181,51,98,160,249,69,87,71,18,138,15,72,213,240,18,253,31,183,249,185,207,133,33,180,215,237,204,224,95,114,221,205,174,94,80,244,160,53,57,5,118,189,13,82,33,4,101,196,180,100,26,132,37,191,188,180,35,181,67,39,96,217,195,83,144,212,139,30,218,160,220,236,127,174,16,101,252,249,176,202,40,113,117,67,145,12,107,82,149,224,202,127,31,87,229,111,196,89,5,69,67,155,160,13,146,12,166,36,40,125,231,99,11,185,247,66,19,4,130,202,239,0,234,44,91,23,164,51,122,70,247,186,184,84,225,160,63,207,96,242,116,99,51,175,181,69,77,239,210,8,223,62,170,118,66,120,216,244,38,186,180,129,163,20,255,0,251,231,160,250,6,114,73,191,145,246,192,1,171,95,122,81,242,8,14,44,131,139,188,101,24,146,246,138,6,123,209,247,165,197,238,160,249,101,11,78,90,104,246,49,184,234,234,22,209,111,92,145,89,235,37,164,213,174,204,136,178,251,130,33,52,21,190,45,160,190,138,53,100,188,117,108,77,198,151,97,70,115,9,212,196,59,214,199,41,190,24,144,234,62,249,227,71,120,252,143,79,160,209,15,183,214,169,88,15,173,79,129,153,172,206,76,41,65,13,176,71,171,91,233,170,138,246,159,96,104,72,179,227,58,160,221,241,141,212,51,62,6,143,147,145,234,254,111,166,215,16,248,171,127,255,146,63,93,155,77,43,148,123,86,174,18,83,160,147,87,15,16,182,60,27,80,103,56,116,24,19,169,217,157,59,22,211,207,35,243,226,147,25,142,45,86,215,21,166,103,160,121,25,243,224,133,107,212,169,6,147,225,220,37,129,34,85,80,15,238,202,4,91,99,160,108,5,253,172,255,13,196,44,160,232,16,146,211,53,170,231,136,193,205,237,60,140,81,56,242,232,139,191,91,235,220,128,115,138,38,16,22,178,14,151,8,160,161,154,17,2,49,207,254,215,226,78,143,236,9,153,84,158,193,231,187,214,88,252,220,14,230,107,163,235,38,222,118,66,160,231,199,0,196,103,10,162,141,15,87,130,118,77,175,140,214,137,127,126,189,42,9,165,200,220,138,199,106,68,241,165,239,128],[249,2,17,160,118,40,174,124,139,109,204,241,251,195,147,65,240,76,106,24,242,36,51,101,103,143,50,92,114,253,104,5,109,181,51,98,160,249,69,87,71,18,138,15,72,213,240,18,253,31,183,249,185,207,133,33,180,215,237,204,224,95,114,221,205,174,94,80,244,160,53,57,5,118,189,13,82,33,4,101,196,180,100,26,132,37,191,188,180,35,181,67,39,96,217,195,83,144,212,139,30,218,160,220,236,127,174,16,101,252,249,176,202,40,113,117,67,145,12,107,82,149,224,202,127,31,87,229,111,196,89,5,69,67,155,160,13,146,12,166,36,40,125,231,99,11,185,247,66,19,4,130,202,239,0,234,44,91,23,164,51,122,70,247,186,184,84,225,160,63,207,96,242,116,99,51,175,181,69,77,239,210,8,223,62,170,118,66,120,216,244,38,186,180,129,163,20,255,0,251,231,160,250,6,114,73,191,145,246,192,1,171,95,122,81,242,8,14,44,131,139,188,101,24,146,246,138,6,123,209,247,165,197,238,160,249,101,11,78,90,104,246,49,184,234,234,22,209,111,92,145,89,235,37,164,213,174,204,136,178,251,130,33,52,21,190,45,160,190,138,53,100,188,117,108,77,198,151,97,70,115,9,212,196,59,214,199,41,190,24,144,234,62,249,227,71,120,252,143,79,160,209,15,183,214,169,88,15,173,79,129,153,172,206,76,41,65,13,176,71,171,91,233,170,138,246,159,96,104,72,179,227,58,160,42,19,10,204,69,228,60,91,43,147,199,202,15,94,12,116,65,214,201,165,159,187,202,26,213,49,86,240,174,7,67,210,160,147,87,15,16,182,60,27,80,103,56,116,24,19,169,217,157,59,22,211,207,35,243,226,147,25,142,45,86,215,21,166,103,160,121,25,243,224,133,107,212,169,6,147,225,220,37,129,34,85,80,15,238,202,4,91,99,160,108,5,253,172,255,13,196,44,160,232,16,146,211,53,170,231,136,193,205,237,60,140,81,56,242,232,139,191,91,235,220,128,115,138,38,16,22,178,14,151,8,160,161,154,17,2,49,207,254,215,226,78,143,236,9,153,84,158,193,231,187,214,88,252,220,14,230,107,163,235,38,222,118,66,160,231,199,0,196,103,10,162,141,15,87,130,118,77,175,140,214,137,127,126,189,42,9,165,200,220,138,199,106,68,241,165,239,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,13,59,66,173,214,55,59,19,125,163,24,33,238,176,21,224,109,217,55,28,33,101,133,140,222,138,194,216,153,132,136,230,0],[160,11,197,167,171,58,244,157,63,25,85,230,91,222,57,45,90,195,173,143,95,172,237,70,48,195,147,252,227,94,166,93,10,0],[160,213,189,24,210,121,22,165,9,190,165,38,56,208,49,139,76,38,71,36,143,63,28,66,221,59,227,181,114,90,163,83,118,0],[160,198,216,36,131,141,153,71,181,71,43,115,191,131,63,147,71,120,112,44,189,134,233,180,33,82,255,81,215,194,19,55,100,0],[160,206,25,55,20,146,60,214,18,12,167,17,203,54,69,68,252,237,135,36,127,167,28,47,198,144,44,79,154,184,240,137,52,0],[160,213,17,219,144,37,154,95,47,207,244,149,187,66,212,157,125,64,202,217,83,49,204,213,179,171,108,193,17,108,31,175,70,0],[160,196,8,80,100,153,2,7,170,81,45,165,171,238,25,90,204,233,162,53,150,33,147,169,174,192,177,128,99,26,149,239,143,0],[160,132,119,21,52,21,62,74,197,52,231,139,83,237,217,120,123,75,100,186,124,111,129,254,225,204,82,186,213,166,56,84,75,0],[160,126,142,162,127,168,35,77,214,151,138,90,40,185,168,100,52,46,237,151,175,120,45,201,209,115,240,192,29,120,240,216,183,0],[160,243,206,192,239,64,99,13,81,166,177,20,144,103,34,139,175,235,197,91,53,76,216,197,71,61,204,142,227,126,128,232,104,0],[160,238,168,57,214,12,203,71,227,222,95,120,180,59,185,161,195,136,160,116,107,26,125,207,74,230,168,102,27,205,128,62,218,0],[160,207,137,219,224,45,180,1,99,107,123,161,59,99,104,249,95,61,80,219,9,85,61,224,107,28,84,129,233,253,189,252,67,0],[160,243,39,76,86,252,113,115,180,222,63,187,194,170,12,165,59,72,51,248,21,108,112,98,243,69,2,115,101,168,46,121,54,0],[160,228,9,140,231,204,59,191,210,153,103,229,96,66,95,205,105,31,72,40,100,82,49,170,250,108,6,75,193,124,69,5,209,0],[160,117,152,142,42,173,67,31,177,235,86,231,243,27,94,203,178,209,82,80,66,133,249,211,59,208,88,64,76,227,222,152,58,0],[160,196,209,10,11,203,198,224,14,121,23,120,141,125,30,79,228,142,109,253,71,249,143,150,168,49,211,211,67,226,157,8,28,0],[160,210,238,238,194,77,71,114,122,71,239,124,178,219,200,167,116,143,64,223,227,10,191,123,25,13,77,19,142,39,114,50,5,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,11,197,167,171,58,244,157,63,25,85,230,91,222,57,45,90,195,173,143,95,172,237,70,48,195,147,252,227,94,166,93,10,160,213,189,24,210,121,22,165,9,190,165,38,56,208,49,139,76,38,71,36,143,63,28,66,221,59,227,181,114,90,163,83,118,160,198,216,36,131,141,153,71,181,71,43,115,191,131,63,147,71,120,112,44,189,134,233,180,33,82,255,81,215,194,19,55,100,160,206,25,55,20,146,60,214,18,12,167,17,203,54,69,68,252,237,135,36,127,167,28,47,198,144,44,79,154,184,240,137,52,160,213,17,219,144,37,154,95,47,207,244,149,187,66,212,157,125,64,202,217,83,49,204,213,179,171,108,193,17,108,31,175,70,160,196,8,80,100,153,2,7,170,81,45,165,171,238,25,90,204,233,162,53,150,33,147,169,174,192,177,128,99,26,149,239,143,160,132,119,21,52,21,62,74,197,52,231,139,83,237,217,120,123,75,100,186,124,111,129,254,225,204,82,186,213,166,56,84,75,160,126,142,162,127,168,35,77,214,151,138,90,40,185,168,100,52,46,237,151,175,120,45,201,209,115,240,192,29,120,240,216,183,160,243,206,192,239,64,99,13,81,166,177,20,144,103,34,139,175,235,197,91,53,76,216,197,71,61,204,142,227,126,128,232,104,160,238,168,57,214,12,203,71,227,222,95,120,180,59,185,161,195,136,160,116,107,26,125,207,74,230,168,102,27,205,128,62,218,160,207,137,219,224,45,180,1,99,107,123,161,59,99,104,249,95,61,80,219,9,85,61,224,107,28,84,129,233,253,189,252,67,160,243,39,76,86,252,113,115,180,222,63,187,194,170,12,165,59,72,51,248,21,108,112,98,243,69,2,115,101,168,46,121,54,160,228,9,140,231,204,59,191,210,153,103,229,96,66,95,205,105,31,72,40,100,82,49,170,250,108,6,75,193,124,69,5,209,160,117,152,142,42,173,67,31,177,235,86,231,243,27,94,203,178,209,82,80,66,133,249,211,59,208,88,64,76,227,222,152,58,160,196,209,10,11,203,198,224,14,121,23,120,141,125,30,79,228,142,109,253,71,249,143,150,168,49,211,211,67,226,157,8,28,160,210,238,238,194,77,71,114,122,71,239,124,178,219,200,167,116,143,64,223,227,10,191,123,25,13,77,19,142,39,114,50,5,128],[249,2,17,160,11,197,167,171,58,244,157,63,25,85,230,91,222,57,45,90,195,173,143,95,172,237,70,48,195,147,252,227,94,166,93,10,160,213,189,24,210,121,22,165,9,190,165,38,56,208,49,139,76,38,71,36,143,63,28,66,221,59,227,181,114,90,163,83,118,160,198,216,36,131,141,153,71,181,71,43,115,191,131,63,147,71,120,112,44,189,134,233,180,33,82,255,81,215,194,19,55,100,160,206,25,55,20,146,60,214,18,12,167,17,203,54,69,68,252,237,135,36,127,167,28,47,198,144,44,79,154,184,240,137,52,160,13,59,66,173,214,55,59,19,125,163,24,33,238,176,21,224,109,217,55,28,33,101,133,140,222,138,194,216,153,132,136,230,160,196,8,80,100,153,2,7,170,81,45,165,171,238,25,90,204,233,162,53,150,33,147,169,174,192,177,128,99,26,149,239,143,160,132,119,21,52,21,62,74,197,52,231,139,83,237,217,120,123,75,100,186,124,111,129,254,225,204,82,186,213,166,56,84,75,160,126,142,162,127,168,35,77,214,151,138,90,40,185,168,100,52,46,237,151,175,120,45,201,209,115,240,192,29,120,240,216,183,160,243,206,192,239,64,99,13,81,166,177,20,144,103,34,139,175,235,197,91,53,76,216,197,71,61,204,142,227,126,128,232,104,160,238,168,57,214,12,203,71,227,222,95,120,180,59,185,161,195,136,160,116,107,26,125,207,74,230,168,102,27,205,128,62,218,160,207,137,219,224,45,180,1,99,107,123,161,59,99,104,249,95,61,80,219,9,85,61,224,107,28,84,129,233,253,189,252,67,160,243,39,76,86,252,113,115,180,222,63,187,194,170,12,165,59,72,51,248,21,108,112,98,243,69,2,115,101,168,46,121,54,160,228,9,140,231,204,59,191,210,153,103,229,96,66,95,205,105,31,72,40,100,82,49,170,250,108,6,75,193,124,69,5,209,160,117,152,142,42,173,67,31,177,235,86,231,243,27,94,203,178,209,82,80,66,133,249,211,59,208,88,64,76,227,222,152,58,160,196,209,10,11,203,198,224,14,121,23,120,141,125,30,79,228,142,109,253,71,249,143,150,168,49,211,211,67,226,157,8,28,160,210,238,238,194,77,71,114,122,71,239,124,178,219,200,167,116,143,64,223,227,10,191,123,25,13,77,19,142,39,114,50,5,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,154,198,63,41,156,57,24,5,4,135,238,4,68,3,248,17,34,184,202,188,10,232,136,16,130,61,25,188,149,179,79,231,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,98,246,49,222,4,0,66,38,162,85,170,44,25,6,9,97,136,61,108,171,74,80,239,178,173,178,116,224,255,31,249,57,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,238,173,29,39,104,215,76,171,160,76,242,192,29,147,89,208,198,225,190,0,15,200,154,36,250,128,239,167,73,218,105,155,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,160,98,246,49,222,4,0,66,38,162,85,170,44,25,6,9,97,136,61,108,171,74,80,239,178,173,178,116,224,255,31,249,57,128,128,128,128,128,128,128,128,128,160,238,173,29,39,104,215,76,171,160,76,242,192,29,147,89,208,198,225,190,0,15,200,154,36,250,128,239,167,73,218,105,155,128,128,128,128,128],[248,81,128,160,154,198,63,41,156,57,24,5,4,135,238,4,68,3,248,17,34,184,202,188,10,232,136,16,130,61,25,188,149,179,79,231,128,128,128,128,128,128,128,128,128,160,238,173,29,39,104,215,76,171,160,76,242,192,29,147,89,208,198,225,190,0,15,200,154,36,250,128,239,167,73,218,105,155,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[true,false],"extension":{"list_rlp_bytes":[228]},"branch":{"modified_index":2,"drifted_index":5,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,35,195,53,81,248,35,147,21,30,3,185,153,70,138,192,165,77,7,129,118,37,132,120,197,130,18,209,89,99,85,245,222,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,35,195,53,81,248,35,147,21,30,3,185,153,70,138,192,165,77,7,129,118,37,132,120,197,130,18,209,89,99,85,245,222,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,243,31,69,208,16,22,226,247,232,151,237,185,83,172,203,208,250,241,4,31,115,43,37,31,57,54,253,184,19,41,26,5,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[130,0,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,208,13,115,5,131,97,180,161,37,184,30,176,46,254,113,83,244,235,231,202,172,66,172,99,25,151,249,73,32,160,1,218,0],[0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,208,13,115,5,131,97,180,161,37,184,30,176,46,254,113,83,244,235,231,202,172,66,172,99,25,151,249,73,32,160,1,218,0]],"keccak_data":[[248,81,128,128,160,35,195,53,81,248,35,147,21,30,3,185,153,70,138,192,165,77,7,129,118,37,132,120,197,130,18,209,89,99,85,245,222,128,128,160,243,31,69,208,16,22,226,247,232,151,237,185,83,172,203,208,250,241,4,31,115,43,37,31,57,54,253,184,19,41,26,5,128,128,128,128,128,128,128,128,128,128,128],[248,81,128,128,160,35,195,53,81,248,35,147,21,30,3,185,153,70,138,192,165,77,7,129,118,37,132,120,197,130,18,209,89,99,85,245,222,128,128,160,243,31,69,208,16,22,226,247,232,151,237,185,83,172,203,208,250,241,4,31,115,43,37,31,57,54,253,184,19,41,26,5,128,128,128,128,128,128,128,128,128,128,128],[228,130,0,150,160,208,13,115,5,131,97,180,161,37,184,30,176,46,254,113,83,244,235,231,202,172,66,172,99,25,151,249,73,32,160,1,218],[228,130,0,150,160,208,13,115,5,131,97,180,161,37,184,30,176,46,254,113,83,244,235,231,202,172,66,172,99,25,151,249,73,32,160,1,218]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,167,114],"key":[164,25,98,246,246,19,240,98,5,150,229,5,150,96,180,21,9,65,218,20,213,215,50,192,129,14,3,147,169,124,32,122],"list_rlp_bytes":[[228],[224]],"value_rlp_bytes":[[131],[17]],"drifted_rlp_bytes":[227],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[159,57,101,26,129,33,55,93,150,117,9,236,45,35,57,3,15,215,78,192,68,214,120,223,182,158,207,180,81,16,87,50,0,0],[130,2,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[158,32,246,246,19,240,98,5,150,229,5,150,96,180,21,9,65,218,20,213,215,50,192,129,14,3,147,169,124,32,122,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[158,32,26,129,33,55,93,150,117,9,236,45,35,57,3,15,215,78,192,68,214,120,223,182,158,207,180,81,16,87,50,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[228,159,57,101,26,129,33,55,93,150,117,9,236,45,35,57,3,15,215,78,192,68,214,120,223,182,158,207,180,81,16,87,50,131,130,2,22],[224,158,32,246,246,19,240,98,5,150,229,5,150,96,180,21,9,65,218,20,213,215,50,192,129,14,3,147,169,124,32,122,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,167,114],[227,158,32,26,129,33,55,93,150,117,9,236,45,35,57,3,15,215,78,192,68,214,120,223,182,158,207,180,81,16,87,50,131,130,2,22]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ExtensionDeletedOneKeyByteSel1.json b/zkevm-circuits/src/mpt_circuit/tests/ExtensionDeletedOneKeyByteSel1.json new file mode 100644 index 0000000000..615dd4ff1c --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ExtensionDeletedOneKeyByteSel1.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,221,170,130,147,186,88,0,156,240,133,62,16,142,207,172,8,147,77,107,242,52,118,225,193,116,218,165,215,190,25,31,206,0],[160,0,107,58,47,21,149,140,94,24,227,55,136,61,133,147,244,53,80,105,234,75,147,246,141,153,7,142,60,185,17,201,250,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,11,122,24,184,141,150,58,53,220,58,188,17,167,30,82,128,148,213,14,40,24,159,21,74,144,94,36,177,35,75,83,174,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,141,33,238,89,68,177,88,0,191,68,231,161,213,181,130,91,177,245,29,66,78,224,229,10,37,60,17,114,178,91,245,6,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,141,33,238,89,68,177,88,0,191,68,231,161,213,181,130,91,177,245,29,66,78,224,229,10,37,60,17,114,178,91,245,6,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,11,122,24,184,141,150,58,53,220,58,188,17,167,30,82,128,148,213,14,40,24,159,21,74,144,94,36,177,35,75,83,174,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,39,39,45,175,58,167,117,176,247,129,45,9,94,210,44,4,5,223,158,62,209,10,3,144,51,105,232,62,134,188,145,188,0],[160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,0],[160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,0],[160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,0],[160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,0],[160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,0],[160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,0],[160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,0],[160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,0],[160,146,182,235,84,94,114,8,227,240,42,193,1,138,219,154,123,24,248,232,13,53,253,122,191,191,215,130,128,234,226,86,123,0],[160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,0],[160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,0],[160,194,242,97,102,38,252,208,245,222,0,45,210,254,230,48,93,24,176,215,243,131,232,124,239,152,230,154,253,35,182,58,244,0],[160,237,113,19,48,172,139,234,51,70,37,236,44,37,118,182,177,114,98,221,189,39,248,50,83,47,77,215,60,136,159,224,77,0],[160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,0],[160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,0],[160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,160,146,182,235,84,94,114,8,227,240,42,193,1,138,219,154,123,24,248,232,13,53,253,122,191,191,215,130,128,234,226,86,123,160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,160,194,242,97,102,38,252,208,245,222,0,45,210,254,230,48,93,24,176,215,243,131,232,124,239,152,230,154,253,35,182,58,244,160,237,113,19,48,172,139,234,51,70,37,236,44,37,118,182,177,114,98,221,189,39,248,50,83,47,77,215,60,136,159,224,77,160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,128],[249,2,17,160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,160,146,182,235,84,94,114,8,227,240,42,193,1,138,219,154,123,24,248,232,13,53,253,122,191,191,215,130,128,234,226,86,123,160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,160,39,39,45,175,58,167,117,176,247,129,45,9,94,210,44,4,5,223,158,62,209,10,3,144,51,105,232,62,134,188,145,188,160,237,113,19,48,172,139,234,51,70,37,236,44,37,118,182,177,114,98,221,189,39,248,50,83,47,77,215,60,136,159,224,77,160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,2,103,24,154,157,19,247,166,154,39,227,112,215,233,73,232,49,102,31,37,24,128,106,37,49,207,18,180,85,217,181,86,0],[160,17,14,152,228,161,27,201,217,36,240,10,175,206,177,124,38,135,28,190,122,91,109,224,56,126,139,153,149,123,137,108,103,0],[160,18,13,111,197,83,111,187,99,87,247,167,17,128,97,141,1,62,136,8,123,124,243,65,227,23,101,121,34,154,68,118,245,0],[160,176,73,194,83,219,26,39,202,203,250,128,222,2,177,177,68,119,93,193,32,146,124,90,108,159,120,167,196,183,104,110,220,0],[160,234,122,249,169,12,143,244,231,64,210,251,191,94,111,132,33,28,70,182,238,25,111,147,215,30,110,66,63,9,123,140,59,0],[160,243,129,214,205,142,5,250,58,99,129,145,177,53,137,7,205,21,205,113,246,52,66,180,235,229,84,190,12,2,142,255,153,0],[160,88,72,38,73,92,103,15,103,83,111,122,242,225,201,211,199,143,217,2,53,164,164,90,115,27,64,178,170,122,127,229,220,0],[160,113,108,247,26,59,67,31,95,124,173,73,67,237,250,140,15,99,74,90,62,158,128,77,2,244,88,163,175,63,114,221,50,0],[160,193,70,173,55,41,231,69,65,112,9,158,41,97,73,77,3,108,222,33,61,121,168,60,39,134,48,129,8,134,170,184,112,0],[160,220,67,96,141,155,253,66,228,10,14,151,7,221,195,199,37,52,154,39,206,103,247,124,126,95,11,24,126,253,196,147,234,0],[160,4,251,178,215,177,99,63,65,108,73,209,148,181,62,151,132,211,2,62,45,174,250,205,180,18,104,82,173,232,87,65,25,0],[160,127,188,123,217,18,146,253,108,75,236,17,218,226,163,173,108,114,232,4,85,250,30,215,35,248,232,237,143,231,149,4,100,0],[160,251,60,128,176,16,190,42,167,32,137,202,218,86,170,232,220,155,186,71,101,44,31,115,102,205,77,5,66,172,253,178,197,0],[160,191,206,160,180,210,66,180,165,142,193,114,59,208,212,163,71,192,68,161,246,68,173,99,14,63,196,189,212,183,26,248,166,0],[160,120,111,196,145,168,96,1,64,243,97,255,71,183,26,182,112,90,106,209,172,36,63,178,27,112,28,8,224,237,43,8,55,0],[160,255,180,41,152,120,18,117,140,48,239,106,19,151,226,224,119,56,150,40,117,133,9,82,75,94,255,0,36,42,211,190,0,0],[160,63,111,21,204,37,243,152,155,55,14,233,122,16,231,133,74,39,8,120,115,231,98,225,151,4,251,118,215,74,51,97,254,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,17,14,152,228,161,27,201,217,36,240,10,175,206,177,124,38,135,28,190,122,91,109,224,56,126,139,153,149,123,137,108,103,160,18,13,111,197,83,111,187,99,87,247,167,17,128,97,141,1,62,136,8,123,124,243,65,227,23,101,121,34,154,68,118,245,160,176,73,194,83,219,26,39,202,203,250,128,222,2,177,177,68,119,93,193,32,146,124,90,108,159,120,167,196,183,104,110,220,160,234,122,249,169,12,143,244,231,64,210,251,191,94,111,132,33,28,70,182,238,25,111,147,215,30,110,66,63,9,123,140,59,160,243,129,214,205,142,5,250,58,99,129,145,177,53,137,7,205,21,205,113,246,52,66,180,235,229,84,190,12,2,142,255,153,160,88,72,38,73,92,103,15,103,83,111,122,242,225,201,211,199,143,217,2,53,164,164,90,115,27,64,178,170,122,127,229,220,160,113,108,247,26,59,67,31,95,124,173,73,67,237,250,140,15,99,74,90,62,158,128,77,2,244,88,163,175,63,114,221,50,160,193,70,173,55,41,231,69,65,112,9,158,41,97,73,77,3,108,222,33,61,121,168,60,39,134,48,129,8,134,170,184,112,160,220,67,96,141,155,253,66,228,10,14,151,7,221,195,199,37,52,154,39,206,103,247,124,126,95,11,24,126,253,196,147,234,160,4,251,178,215,177,99,63,65,108,73,209,148,181,62,151,132,211,2,62,45,174,250,205,180,18,104,82,173,232,87,65,25,160,127,188,123,217,18,146,253,108,75,236,17,218,226,163,173,108,114,232,4,85,250,30,215,35,248,232,237,143,231,149,4,100,160,251,60,128,176,16,190,42,167,32,137,202,218,86,170,232,220,155,186,71,101,44,31,115,102,205,77,5,66,172,253,178,197,160,191,206,160,180,210,66,180,165,142,193,114,59,208,212,163,71,192,68,161,246,68,173,99,14,63,196,189,212,183,26,248,166,160,120,111,196,145,168,96,1,64,243,97,255,71,183,26,182,112,90,106,209,172,36,63,178,27,112,28,8,224,237,43,8,55,160,255,180,41,152,120,18,117,140,48,239,106,19,151,226,224,119,56,150,40,117,133,9,82,75,94,255,0,36,42,211,190,0,160,63,111,21,204,37,243,152,155,55,14,233,122,16,231,133,74,39,8,120,115,231,98,225,151,4,251,118,215,74,51,97,254,128],[249,2,17,160,17,14,152,228,161,27,201,217,36,240,10,175,206,177,124,38,135,28,190,122,91,109,224,56,126,139,153,149,123,137,108,103,160,18,13,111,197,83,111,187,99,87,247,167,17,128,97,141,1,62,136,8,123,124,243,65,227,23,101,121,34,154,68,118,245,160,176,73,194,83,219,26,39,202,203,250,128,222,2,177,177,68,119,93,193,32,146,124,90,108,159,120,167,196,183,104,110,220,160,2,103,24,154,157,19,247,166,154,39,227,112,215,233,73,232,49,102,31,37,24,128,106,37,49,207,18,180,85,217,181,86,160,243,129,214,205,142,5,250,58,99,129,145,177,53,137,7,205,21,205,113,246,52,66,180,235,229,84,190,12,2,142,255,153,160,88,72,38,73,92,103,15,103,83,111,122,242,225,201,211,199,143,217,2,53,164,164,90,115,27,64,178,170,122,127,229,220,160,113,108,247,26,59,67,31,95,124,173,73,67,237,250,140,15,99,74,90,62,158,128,77,2,244,88,163,175,63,114,221,50,160,193,70,173,55,41,231,69,65,112,9,158,41,97,73,77,3,108,222,33,61,121,168,60,39,134,48,129,8,134,170,184,112,160,220,67,96,141,155,253,66,228,10,14,151,7,221,195,199,37,52,154,39,206,103,247,124,126,95,11,24,126,253,196,147,234,160,4,251,178,215,177,99,63,65,108,73,209,148,181,62,151,132,211,2,62,45,174,250,205,180,18,104,82,173,232,87,65,25,160,127,188,123,217,18,146,253,108,75,236,17,218,226,163,173,108,114,232,4,85,250,30,215,35,248,232,237,143,231,149,4,100,160,251,60,128,176,16,190,42,167,32,137,202,218,86,170,232,220,155,186,71,101,44,31,115,102,205,77,5,66,172,253,178,197,160,191,206,160,180,210,66,180,165,142,193,114,59,208,212,163,71,192,68,161,246,68,173,99,14,63,196,189,212,183,26,248,166,160,120,111,196,145,168,96,1,64,243,97,255,71,183,26,182,112,90,106,209,172,36,63,178,27,112,28,8,224,237,43,8,55,160,255,180,41,152,120,18,117,140,48,239,106,19,151,226,224,119,56,150,40,117,133,9,82,75,94,255,0,36,42,211,190,0,160,63,111,21,204,37,243,152,155,55,14,233,122,16,231,133,74,39,8,120,115,231,98,225,151,4,251,118,215,74,51,97,254,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,172,218,202,236,83,210,237,163,218,121,212,228,200,106,63,190,70,236,143,208,141,8,140,248,160,92,20,247,148,224,37,76,0],[160,45,176,192,131,103,46,125,69,137,220,205,162,24,186,11,196,15,145,109,234,234,157,28,139,241,205,25,120,185,161,244,32,0],[160,243,215,148,180,148,117,204,92,219,123,146,157,35,53,129,153,255,157,198,201,221,69,187,166,25,135,103,148,130,77,56,72,0],[160,231,29,60,93,136,60,186,17,157,224,26,19,111,236,167,5,120,217,245,241,110,184,114,120,203,13,187,192,108,59,177,235,0],[160,250,124,203,235,134,33,153,5,105,81,141,236,77,232,208,204,144,199,143,198,130,220,236,240,144,108,56,249,225,50,125,156,0],[160,140,46,14,113,70,89,95,192,44,205,219,174,70,242,9,252,64,41,136,127,14,91,59,230,82,177,58,167,119,35,131,214,0],[160,224,6,156,63,55,125,214,139,25,38,45,190,150,87,227,197,192,253,41,138,100,229,60,240,37,246,125,171,191,67,4,31,0],[160,63,128,79,244,80,116,153,47,52,45,122,92,97,33,187,18,188,187,126,39,233,88,11,155,35,193,71,124,180,197,133,17,0],[160,25,85,178,234,135,114,1,182,168,156,119,106,168,232,60,178,120,152,77,31,103,183,68,176,20,22,219,189,134,32,165,50,0],[160,98,187,195,190,112,171,213,255,55,156,163,103,212,232,13,95,179,177,190,108,75,124,138,99,108,169,141,34,181,89,132,40,0],[160,236,141,9,44,231,10,145,189,76,194,47,252,201,3,54,168,71,76,58,187,234,204,92,170,16,129,19,201,9,252,167,111,0],[160,94,134,224,129,48,238,42,144,131,125,108,164,40,191,102,9,72,67,171,69,72,214,186,84,235,136,56,254,174,36,102,85,0],[160,12,29,112,110,8,140,75,10,232,209,170,13,137,90,39,141,237,210,207,28,171,97,74,185,109,184,168,73,214,2,132,97,0],[160,120,215,77,127,165,83,158,102,146,107,230,56,68,11,198,176,36,228,75,144,14,147,129,94,157,66,102,203,94,235,152,50,0],[160,231,241,125,247,52,253,228,200,117,85,103,199,195,44,52,233,159,230,145,17,116,183,22,84,70,44,7,13,4,73,185,12,0],[160,252,241,80,73,8,232,87,254,104,121,82,210,107,199,38,5,32,69,99,110,107,145,34,236,192,88,192,231,77,42,82,254,0],[160,148,164,243,224,114,211,36,66,233,174,116,37,91,62,4,42,33,29,237,253,20,170,147,143,98,251,213,226,251,141,47,35,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,45,176,192,131,103,46,125,69,137,220,205,162,24,186,11,196,15,145,109,234,234,157,28,139,241,205,25,120,185,161,244,32,160,243,215,148,180,148,117,204,92,219,123,146,157,35,53,129,153,255,157,198,201,221,69,187,166,25,135,103,148,130,77,56,72,160,231,29,60,93,136,60,186,17,157,224,26,19,111,236,167,5,120,217,245,241,110,184,114,120,203,13,187,192,108,59,177,235,160,250,124,203,235,134,33,153,5,105,81,141,236,77,232,208,204,144,199,143,198,130,220,236,240,144,108,56,249,225,50,125,156,160,140,46,14,113,70,89,95,192,44,205,219,174,70,242,9,252,64,41,136,127,14,91,59,230,82,177,58,167,119,35,131,214,160,224,6,156,63,55,125,214,139,25,38,45,190,150,87,227,197,192,253,41,138,100,229,60,240,37,246,125,171,191,67,4,31,160,63,128,79,244,80,116,153,47,52,45,122,92,97,33,187,18,188,187,126,39,233,88,11,155,35,193,71,124,180,197,133,17,160,25,85,178,234,135,114,1,182,168,156,119,106,168,232,60,178,120,152,77,31,103,183,68,176,20,22,219,189,134,32,165,50,160,98,187,195,190,112,171,213,255,55,156,163,103,212,232,13,95,179,177,190,108,75,124,138,99,108,169,141,34,181,89,132,40,160,236,141,9,44,231,10,145,189,76,194,47,252,201,3,54,168,71,76,58,187,234,204,92,170,16,129,19,201,9,252,167,111,160,94,134,224,129,48,238,42,144,131,125,108,164,40,191,102,9,72,67,171,69,72,214,186,84,235,136,56,254,174,36,102,85,160,12,29,112,110,8,140,75,10,232,209,170,13,137,90,39,141,237,210,207,28,171,97,74,185,109,184,168,73,214,2,132,97,160,120,215,77,127,165,83,158,102,146,107,230,56,68,11,198,176,36,228,75,144,14,147,129,94,157,66,102,203,94,235,152,50,160,231,241,125,247,52,253,228,200,117,85,103,199,195,44,52,233,159,230,145,17,116,183,22,84,70,44,7,13,4,73,185,12,160,252,241,80,73,8,232,87,254,104,121,82,210,107,199,38,5,32,69,99,110,107,145,34,236,192,88,192,231,77,42,82,254,160,148,164,243,224,114,211,36,66,233,174,116,37,91,62,4,42,33,29,237,253,20,170,147,143,98,251,213,226,251,141,47,35,128],[249,2,17,160,45,176,192,131,103,46,125,69,137,220,205,162,24,186,11,196,15,145,109,234,234,157,28,139,241,205,25,120,185,161,244,32,160,243,215,148,180,148,117,204,92,219,123,146,157,35,53,129,153,255,157,198,201,221,69,187,166,25,135,103,148,130,77,56,72,160,231,29,60,93,136,60,186,17,157,224,26,19,111,236,167,5,120,217,245,241,110,184,114,120,203,13,187,192,108,59,177,235,160,250,124,203,235,134,33,153,5,105,81,141,236,77,232,208,204,144,199,143,198,130,220,236,240,144,108,56,249,225,50,125,156,160,140,46,14,113,70,89,95,192,44,205,219,174,70,242,9,252,64,41,136,127,14,91,59,230,82,177,58,167,119,35,131,214,160,172,218,202,236,83,210,237,163,218,121,212,228,200,106,63,190,70,236,143,208,141,8,140,248,160,92,20,247,148,224,37,76,160,63,128,79,244,80,116,153,47,52,45,122,92,97,33,187,18,188,187,126,39,233,88,11,155,35,193,71,124,180,197,133,17,160,25,85,178,234,135,114,1,182,168,156,119,106,168,232,60,178,120,152,77,31,103,183,68,176,20,22,219,189,134,32,165,50,160,98,187,195,190,112,171,213,255,55,156,163,103,212,232,13,95,179,177,190,108,75,124,138,99,108,169,141,34,181,89,132,40,160,236,141,9,44,231,10,145,189,76,194,47,252,201,3,54,168,71,76,58,187,234,204,92,170,16,129,19,201,9,252,167,111,160,94,134,224,129,48,238,42,144,131,125,108,164,40,191,102,9,72,67,171,69,72,214,186,84,235,136,56,254,174,36,102,85,160,12,29,112,110,8,140,75,10,232,209,170,13,137,90,39,141,237,210,207,28,171,97,74,185,109,184,168,73,214,2,132,97,160,120,215,77,127,165,83,158,102,146,107,230,56,68,11,198,176,36,228,75,144,14,147,129,94,157,66,102,203,94,235,152,50,160,231,241,125,247,52,253,228,200,117,85,103,199,195,44,52,233,159,230,145,17,116,183,22,84,70,44,7,13,4,73,185,12,160,252,241,80,73,8,232,87,254,104,121,82,210,107,199,38,5,32,69,99,110,107,145,34,236,192,88,192,231,77,42,82,254,160,148,164,243,224,114,211,36,66,233,174,116,37,91,62,4,42,33,29,237,253,20,170,147,143,98,251,213,226,251,141,47,35,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,143,112,54,254,186,200,164,169,150,135,158,148,96,94,180,28,227,132,131,11,43,26,103,142,67,132,127,76,51,177,105,76,0],[160,119,105,145,26,28,255,104,172,29,56,196,147,18,74,237,221,155,205,28,232,224,103,181,33,197,208,155,85,111,134,7,239,0],[160,92,225,136,53,94,242,130,121,66,180,129,73,62,137,113,39,157,47,250,247,96,6,149,239,75,188,143,101,196,195,187,78,0],[160,85,151,137,123,118,91,216,41,57,24,165,44,206,224,10,128,251,15,164,118,92,242,175,26,146,23,47,248,53,141,243,45,0],[160,113,178,7,198,112,61,173,230,218,153,92,129,115,65,200,18,75,42,113,113,0,135,13,126,36,157,143,191,165,12,184,57,0],[160,150,97,150,145,107,244,44,250,141,13,144,1,251,63,128,74,55,250,54,16,92,128,197,200,49,209,49,16,252,145,189,127,0],[160,180,3,118,75,67,176,172,252,139,202,126,110,34,239,7,208,162,177,131,167,98,103,155,144,44,128,108,157,145,176,204,224,0],[160,124,211,78,76,216,218,242,206,136,237,80,11,208,226,98,129,107,28,16,185,162,195,212,205,11,125,211,165,163,239,231,175,0],[160,130,29,215,22,236,4,11,156,108,115,106,136,51,53,121,214,184,160,196,54,128,75,193,128,154,161,119,20,149,5,21,232,0],[160,146,45,45,22,45,52,140,71,140,247,250,96,51,235,26,223,42,83,220,255,239,12,53,110,80,170,60,222,229,28,97,52,0],[160,203,2,160,252,206,121,237,249,186,209,194,213,35,133,12,39,33,3,246,253,123,180,95,157,81,174,186,226,200,242,200,110,0],[160,144,153,120,51,204,79,203,155,153,155,50,237,6,232,237,62,16,81,226,62,65,150,5,97,185,204,247,105,78,108,30,73,0],[160,104,166,196,84,52,148,177,156,68,148,3,44,152,9,224,132,106,118,130,255,40,142,135,42,44,243,114,125,205,231,149,25,0],[160,248,154,231,202,39,177,133,174,115,235,47,202,138,161,14,214,26,62,87,126,182,63,129,113,207,220,87,195,226,246,142,141,0],[160,228,242,79,113,47,86,57,210,166,108,232,171,242,46,202,5,30,18,243,107,205,250,197,255,34,43,147,69,187,83,93,32,0],[160,172,157,30,140,199,116,163,203,168,186,234,151,25,227,173,114,244,127,84,156,132,152,244,53,138,95,111,218,204,40,168,229,0],[160,127,50,219,239,41,81,53,84,176,159,41,184,111,22,103,209,94,182,193,89,242,172,90,17,55,8,114,21,166,60,211,125,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,119,105,145,26,28,255,104,172,29,56,196,147,18,74,237,221,155,205,28,232,224,103,181,33,197,208,155,85,111,134,7,239,160,92,225,136,53,94,242,130,121,66,180,129,73,62,137,113,39,157,47,250,247,96,6,149,239,75,188,143,101,196,195,187,78,160,85,151,137,123,118,91,216,41,57,24,165,44,206,224,10,128,251,15,164,118,92,242,175,26,146,23,47,248,53,141,243,45,160,113,178,7,198,112,61,173,230,218,153,92,129,115,65,200,18,75,42,113,113,0,135,13,126,36,157,143,191,165,12,184,57,160,150,97,150,145,107,244,44,250,141,13,144,1,251,63,128,74,55,250,54,16,92,128,197,200,49,209,49,16,252,145,189,127,160,180,3,118,75,67,176,172,252,139,202,126,110,34,239,7,208,162,177,131,167,98,103,155,144,44,128,108,157,145,176,204,224,160,124,211,78,76,216,218,242,206,136,237,80,11,208,226,98,129,107,28,16,185,162,195,212,205,11,125,211,165,163,239,231,175,160,130,29,215,22,236,4,11,156,108,115,106,136,51,53,121,214,184,160,196,54,128,75,193,128,154,161,119,20,149,5,21,232,160,146,45,45,22,45,52,140,71,140,247,250,96,51,235,26,223,42,83,220,255,239,12,53,110,80,170,60,222,229,28,97,52,160,203,2,160,252,206,121,237,249,186,209,194,213,35,133,12,39,33,3,246,253,123,180,95,157,81,174,186,226,200,242,200,110,160,144,153,120,51,204,79,203,155,153,155,50,237,6,232,237,62,16,81,226,62,65,150,5,97,185,204,247,105,78,108,30,73,160,104,166,196,84,52,148,177,156,68,148,3,44,152,9,224,132,106,118,130,255,40,142,135,42,44,243,114,125,205,231,149,25,160,248,154,231,202,39,177,133,174,115,235,47,202,138,161,14,214,26,62,87,126,182,63,129,113,207,220,87,195,226,246,142,141,160,228,242,79,113,47,86,57,210,166,108,232,171,242,46,202,5,30,18,243,107,205,250,197,255,34,43,147,69,187,83,93,32,160,172,157,30,140,199,116,163,203,168,186,234,151,25,227,173,114,244,127,84,156,132,152,244,53,138,95,111,218,204,40,168,229,160,127,50,219,239,41,81,53,84,176,159,41,184,111,22,103,209,94,182,193,89,242,172,90,17,55,8,114,21,166,60,211,125,128],[249,2,17,160,119,105,145,26,28,255,104,172,29,56,196,147,18,74,237,221,155,205,28,232,224,103,181,33,197,208,155,85,111,134,7,239,160,92,225,136,53,94,242,130,121,66,180,129,73,62,137,113,39,157,47,250,247,96,6,149,239,75,188,143,101,196,195,187,78,160,85,151,137,123,118,91,216,41,57,24,165,44,206,224,10,128,251,15,164,118,92,242,175,26,146,23,47,248,53,141,243,45,160,113,178,7,198,112,61,173,230,218,153,92,129,115,65,200,18,75,42,113,113,0,135,13,126,36,157,143,191,165,12,184,57,160,150,97,150,145,107,244,44,250,141,13,144,1,251,63,128,74,55,250,54,16,92,128,197,200,49,209,49,16,252,145,189,127,160,180,3,118,75,67,176,172,252,139,202,126,110,34,239,7,208,162,177,131,167,98,103,155,144,44,128,108,157,145,176,204,224,160,124,211,78,76,216,218,242,206,136,237,80,11,208,226,98,129,107,28,16,185,162,195,212,205,11,125,211,165,163,239,231,175,160,130,29,215,22,236,4,11,156,108,115,106,136,51,53,121,214,184,160,196,54,128,75,193,128,154,161,119,20,149,5,21,232,160,146,45,45,22,45,52,140,71,140,247,250,96,51,235,26,223,42,83,220,255,239,12,53,110,80,170,60,222,229,28,97,52,160,203,2,160,252,206,121,237,249,186,209,194,213,35,133,12,39,33,3,246,253,123,180,95,157,81,174,186,226,200,242,200,110,160,144,153,120,51,204,79,203,155,153,155,50,237,6,232,237,62,16,81,226,62,65,150,5,97,185,204,247,105,78,108,30,73,160,104,166,196,84,52,148,177,156,68,148,3,44,152,9,224,132,106,118,130,255,40,142,135,42,44,243,114,125,205,231,149,25,160,248,154,231,202,39,177,133,174,115,235,47,202,138,161,14,214,26,62,87,126,182,63,129,113,207,220,87,195,226,246,142,141,160,228,242,79,113,47,86,57,210,166,108,232,171,242,46,202,5,30,18,243,107,205,250,197,255,34,43,147,69,187,83,93,32,160,172,157,30,140,199,116,163,203,168,186,234,151,25,227,173,114,244,127,84,156,132,152,244,53,138,95,111,218,204,40,168,229,160,143,112,54,254,186,200,164,169,150,135,158,148,96,94,180,28,227,132,131,11,43,26,103,142,67,132,127,76,51,177,105,76,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,193,116,164,149,186,139,97,111,83,15,2,222,56,241,51,234,100,150,157,173,193,182,121,92,234,8,95,213,12,157,17,192,0],[160,179,237,140,206,247,30,47,38,126,149,230,215,75,14,150,49,32,117,188,209,50,154,17,164,13,111,15,27,86,244,241,155,0],[160,216,166,15,171,3,39,222,226,151,7,37,162,160,144,133,85,178,191,100,200,115,78,200,44,121,98,26,36,102,16,63,13,0],[160,211,166,189,180,127,185,152,149,196,69,174,17,106,89,82,206,38,7,121,157,189,138,225,44,244,97,11,67,203,222,95,28,0],[160,8,132,151,143,212,144,55,128,240,33,254,84,188,235,190,202,228,136,21,56,199,56,48,117,146,1,142,149,157,133,5,83,0],[160,18,255,109,243,160,40,236,105,6,205,142,224,96,195,215,117,111,114,130,172,165,161,177,16,77,50,87,191,130,63,166,5,0],[160,255,167,69,108,76,23,221,108,179,56,235,118,27,211,35,161,111,140,1,65,73,52,229,44,150,245,89,151,82,249,13,233,0],[160,176,161,10,73,10,179,102,6,110,102,236,31,50,75,166,185,71,237,244,63,62,215,206,146,88,150,36,85,233,98,84,159,0],[160,44,20,10,64,108,235,119,158,27,72,55,238,236,23,39,243,202,142,236,246,223,215,132,39,236,40,137,220,171,10,12,90,0],[160,118,152,151,239,78,48,94,96,179,196,178,68,169,208,186,255,116,53,99,1,38,74,9,249,245,50,93,83,246,159,187,30,0],[160,6,182,43,29,10,39,36,32,151,111,196,35,45,156,11,119,52,176,126,121,213,195,197,168,25,34,222,162,134,34,147,50,0],[160,144,144,27,145,141,178,127,228,173,79,255,136,206,15,175,150,172,231,184,25,170,28,173,3,136,198,64,255,126,237,174,114,0],[160,245,49,214,101,12,165,166,2,18,138,0,253,65,99,79,84,226,162,107,54,98,115,91,95,146,210,29,232,226,245,54,213,0],[160,221,205,179,159,233,237,236,114,183,219,53,51,166,185,9,228,140,101,58,99,139,26,176,195,76,203,247,163,63,208,137,225,0],[160,232,235,145,5,44,141,250,3,118,7,163,104,71,36,93,160,208,128,111,37,201,73,245,144,25,94,139,202,56,181,10,230,0],[160,198,134,207,135,75,85,16,155,86,254,148,114,254,136,73,45,40,192,26,172,199,51,34,110,157,145,114,195,109,224,200,147,0],[160,106,119,204,239,39,9,55,56,19,152,147,66,136,112,164,162,58,183,50,194,100,25,61,248,48,195,101,179,96,160,123,97,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,179,237,140,206,247,30,47,38,126,149,230,215,75,14,150,49,32,117,188,209,50,154,17,164,13,111,15,27,86,244,241,155,160,216,166,15,171,3,39,222,226,151,7,37,162,160,144,133,85,178,191,100,200,115,78,200,44,121,98,26,36,102,16,63,13,160,211,166,189,180,127,185,152,149,196,69,174,17,106,89,82,206,38,7,121,157,189,138,225,44,244,97,11,67,203,222,95,28,160,8,132,151,143,212,144,55,128,240,33,254,84,188,235,190,202,228,136,21,56,199,56,48,117,146,1,142,149,157,133,5,83,160,18,255,109,243,160,40,236,105,6,205,142,224,96,195,215,117,111,114,130,172,165,161,177,16,77,50,87,191,130,63,166,5,160,255,167,69,108,76,23,221,108,179,56,235,118,27,211,35,161,111,140,1,65,73,52,229,44,150,245,89,151,82,249,13,233,160,176,161,10,73,10,179,102,6,110,102,236,31,50,75,166,185,71,237,244,63,62,215,206,146,88,150,36,85,233,98,84,159,160,44,20,10,64,108,235,119,158,27,72,55,238,236,23,39,243,202,142,236,246,223,215,132,39,236,40,137,220,171,10,12,90,160,118,152,151,239,78,48,94,96,179,196,178,68,169,208,186,255,116,53,99,1,38,74,9,249,245,50,93,83,246,159,187,30,160,6,182,43,29,10,39,36,32,151,111,196,35,45,156,11,119,52,176,126,121,213,195,197,168,25,34,222,162,134,34,147,50,160,144,144,27,145,141,178,127,228,173,79,255,136,206,15,175,150,172,231,184,25,170,28,173,3,136,198,64,255,126,237,174,114,160,245,49,214,101,12,165,166,2,18,138,0,253,65,99,79,84,226,162,107,54,98,115,91,95,146,210,29,232,226,245,54,213,160,221,205,179,159,233,237,236,114,183,219,53,51,166,185,9,228,140,101,58,99,139,26,176,195,76,203,247,163,63,208,137,225,160,232,235,145,5,44,141,250,3,118,7,163,104,71,36,93,160,208,128,111,37,201,73,245,144,25,94,139,202,56,181,10,230,160,198,134,207,135,75,85,16,155,86,254,148,114,254,136,73,45,40,192,26,172,199,51,34,110,157,145,114,195,109,224,200,147,160,106,119,204,239,39,9,55,56,19,152,147,66,136,112,164,162,58,183,50,194,100,25,61,248,48,195,101,179,96,160,123,97,128],[249,2,17,160,193,116,164,149,186,139,97,111,83,15,2,222,56,241,51,234,100,150,157,173,193,182,121,92,234,8,95,213,12,157,17,192,160,216,166,15,171,3,39,222,226,151,7,37,162,160,144,133,85,178,191,100,200,115,78,200,44,121,98,26,36,102,16,63,13,160,211,166,189,180,127,185,152,149,196,69,174,17,106,89,82,206,38,7,121,157,189,138,225,44,244,97,11,67,203,222,95,28,160,8,132,151,143,212,144,55,128,240,33,254,84,188,235,190,202,228,136,21,56,199,56,48,117,146,1,142,149,157,133,5,83,160,18,255,109,243,160,40,236,105,6,205,142,224,96,195,215,117,111,114,130,172,165,161,177,16,77,50,87,191,130,63,166,5,160,255,167,69,108,76,23,221,108,179,56,235,118,27,211,35,161,111,140,1,65,73,52,229,44,150,245,89,151,82,249,13,233,160,176,161,10,73,10,179,102,6,110,102,236,31,50,75,166,185,71,237,244,63,62,215,206,146,88,150,36,85,233,98,84,159,160,44,20,10,64,108,235,119,158,27,72,55,238,236,23,39,243,202,142,236,246,223,215,132,39,236,40,137,220,171,10,12,90,160,118,152,151,239,78,48,94,96,179,196,178,68,169,208,186,255,116,53,99,1,38,74,9,249,245,50,93,83,246,159,187,30,160,6,182,43,29,10,39,36,32,151,111,196,35,45,156,11,119,52,176,126,121,213,195,197,168,25,34,222,162,134,34,147,50,160,144,144,27,145,141,178,127,228,173,79,255,136,206,15,175,150,172,231,184,25,170,28,173,3,136,198,64,255,126,237,174,114,160,245,49,214,101,12,165,166,2,18,138,0,253,65,99,79,84,226,162,107,54,98,115,91,95,146,210,29,232,226,245,54,213,160,221,205,179,159,233,237,236,114,183,219,53,51,166,185,9,228,140,101,58,99,139,26,176,195,76,203,247,163,63,208,137,225,160,232,235,145,5,44,141,250,3,118,7,163,104,71,36,93,160,208,128,111,37,201,73,245,144,25,94,139,202,56,181,10,230,160,198,134,207,135,75,85,16,155,86,254,148,114,254,136,73,45,40,192,26,172,199,51,34,110,157,145,114,195,109,224,200,147,160,106,119,204,239,39,9,55,56,19,152,147,66,136,112,164,162,58,183,50,194,100,25,61,248,48,195,101,179,96,160,123,97,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,252,39,146,218,98,43,100,189,62,16,59,1,123,187,135,8,151,254,116,14,199,80,25,6,25,54,70,113,209,199,72,39,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,37,112,16,199,69,26,213,141,117,15,88,58,234,140,35,212,221,46,9,159,183,156,34,187,200,130,0,49,2,231,49,202,0],[160,202,102,136,102,113,4,170,146,89,0,165,217,178,107,106,182,102,207,236,234,173,1,92,15,206,97,1,168,136,217,64,129,0],[160,205,9,41,43,203,158,199,235,255,74,41,22,216,191,72,3,87,91,58,221,106,67,112,93,211,209,113,221,36,169,105,237,0],[160,222,151,189,27,111,65,240,142,200,49,241,226,166,1,15,178,183,26,35,61,118,249,22,24,122,105,243,84,145,67,123,122,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,132,233,79,11,166,48,68,162,163,147,55,129,108,76,188,16,90,126,123,177,237,78,56,227,61,63,90,64,39,45,33,114,0],[160,25,255,191,193,140,206,89,20,157,212,240,1,70,228,43,244,155,44,106,161,31,169,1,16,80,174,138,52,189,246,172,160,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,248,28,212,113,157,219,28,196,226,90,62,51,115,196,123,226,135,9,162,67,108,99,106,138,39,38,178,178,50,64,89,146,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,70,28,90,76,241,7,217,141,50,238,173,174,99,70,154,199,136,103,233,188,38,197,227,152,134,125,52,249,245,108,147,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,128,128,128,128,160,37,112,16,199,69,26,213,141,117,15,88,58,234,140,35,212,221,46,9,159,183,156,34,187,200,130,0,49,2,231,49,202,160,202,102,136,102,113,4,170,146,89,0,165,217,178,107,106,182,102,207,236,234,173,1,92,15,206,97,1,168,136,217,64,129,160,205,9,41,43,203,158,199,235,255,74,41,22,216,191,72,3,87,91,58,221,106,67,112,93,211,209,113,221,36,169,105,237,160,222,151,189,27,111,65,240,142,200,49,241,226,166,1,15,178,183,26,35,61,118,249,22,24,122,105,243,84,145,67,123,122,128,128,160,132,233,79,11,166,48,68,162,163,147,55,129,108,76,188,16,90,126,123,177,237,78,56,227,61,63,90,64,39,45,33,114,160,25,255,191,193,140,206,89,20,157,212,240,1,70,228,43,244,155,44,106,161,31,169,1,16,80,174,138,52,189,246,172,160,128,160,248,28,212,113,157,219,28,196,226,90,62,51,115,196,123,226,135,9,162,67,108,99,106,138,39,38,178,178,50,64,89,146,128,160,0,70,28,90,76,241,7,217,141,50,238,173,174,99,70,154,199,136,103,233,188,38,197,227,152,134,125,52,249,245,108,147,128],[249,1,17,128,128,128,128,160,37,112,16,199,69,26,213,141,117,15,88,58,234,140,35,212,221,46,9,159,183,156,34,187,200,130,0,49,2,231,49,202,160,252,39,146,218,98,43,100,189,62,16,59,1,123,187,135,8,151,254,116,14,199,80,25,6,25,54,70,113,209,199,72,39,160,205,9,41,43,203,158,199,235,255,74,41,22,216,191,72,3,87,91,58,221,106,67,112,93,211,209,113,221,36,169,105,237,160,222,151,189,27,111,65,240,142,200,49,241,226,166,1,15,178,183,26,35,61,118,249,22,24,122,105,243,84,145,67,123,122,128,128,160,132,233,79,11,166,48,68,162,163,147,55,129,108,76,188,16,90,126,123,177,237,78,56,227,61,63,90,64,39,45,33,114,160,25,255,191,193,140,206,89,20,157,212,240,1,70,228,43,244,155,44,106,161,31,169,1,16,80,174,138,52,189,246,172,160,128,160,248,28,212,113,157,219,28,196,226,90,62,51,115,196,123,226,135,9,162,67,108,99,106,138,39,38,178,178,50,64,89,146,128,160,0,70,28,90,76,241,7,217,141,50,238,173,174,99,70,154,199,136,103,233,188,38,197,227,152,134,125,52,249,245,108,147,128]]},{"start":null,"extension_branch":null,"account":{"address":[80,239,191,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201],"key":[123,53,240,91,158,160,175,159,65,212,107,23,98,208,38,205,150,63,244,2,185,236,246,95,240,224,191,229,27,102,202,231],"list_rlp_bytes":[[248,112],[248,112]],"value_rlp_bytes":[[184,80],[184,80]],"value_list_rlp_bytes":[[248,78],[248,78]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,112]},"storage":null,"values":[[157,59,158,160,175,159,65,212,107,23,98,208,38,205,150,63,244,2,185,236,246,95,240,224,191,229,27,102,202,231,0,0,0,0],[157,59,158,160,175,159,65,212,107,23,98,208,38,205,150,63,244,2,185,236,246,95,240,224,191,229,27,102,202,231,0,0,0,0],[130,18,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[136,33,40,142,198,128,211,61,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,255,243,45,227,6,47,247,113,162,99,39,41,88,47,150,11,65,9,208,167,35,114,253,251,209,4,71,19,64,248,2,93,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[130,18,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[136,33,40,142,198,128,211,61,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,4,183,252,174,26,221,230,182,75,80,209,197,80,56,152,45,108,235,152,89,143,154,237,243,102,137,61,241,164,47,183,180,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,59,158,160,175,159,65,212,107,23,98,208,38,205,150,63,244,2,185,236,246,95,240,224,191,229,27,102,202,231,0,0,0,0]],"keccak_data":[[248,112,157,59,158,160,175,159,65,212,107,23,98,208,38,205,150,63,244,2,185,236,246,95,240,224,191,229,27,102,202,231,184,80,248,78,130,18,138,136,33,40,142,198,128,211,61,32,160,255,243,45,227,6,47,247,113,162,99,39,41,88,47,150,11,65,9,208,167,35,114,253,251,209,4,71,19,64,248,2,93,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,112,157,59,158,160,175,159,65,212,107,23,98,208,38,205,150,63,244,2,185,236,246,95,240,224,191,229,27,102,202,231,184,80,248,78,130,18,138,136,33,40,142,198,128,211,61,32,160,4,183,252,174,26,221,230,182,75,80,209,197,80,56,152,45,108,235,152,89,143,154,237,243,102,137,61,241,164,47,183,180,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[80,239,191,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,1,241],[249,1,241]]}},"account":null,"storage":null,"values":[[160,2,156,243,74,20,163,95,64,180,165,4,61,14,87,32,233,49,232,0,56,137,122,103,112,32,178,181,87,163,181,64,89,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,95,19,17,62,195,21,112,178,91,225,14,194,21,168,35,49,39,107,10,56,101,128,36,217,195,210,193,21,53,154,138,171,0],[160,175,207,89,245,47,173,60,160,122,96,157,127,3,152,102,158,148,184,85,198,206,7,30,222,109,154,230,46,232,107,164,66,0],[160,77,222,225,16,91,179,178,38,17,28,35,5,71,173,167,61,12,115,134,59,229,155,67,40,67,14,182,83,176,172,144,129,0],[160,212,230,233,210,20,158,212,187,111,154,133,199,191,96,226,165,238,48,208,133,144,218,33,187,135,57,230,252,104,125,237,69,0],[160,120,1,86,145,3,10,105,17,34,115,133,200,189,158,212,165,33,216,133,182,125,10,45,56,252,68,193,126,191,247,173,238,0],[160,132,148,140,158,238,164,33,240,153,75,89,38,215,5,210,140,107,228,245,91,112,92,26,86,64,61,88,169,51,116,115,102,0],[160,159,216,124,34,123,240,35,11,182,243,49,236,27,87,228,162,65,65,230,22,206,191,39,137,154,236,246,210,109,101,109,248,0],[160,101,224,124,233,33,17,81,30,51,151,106,92,117,28,16,2,141,82,5,254,162,225,170,235,187,113,144,168,51,14,230,236,0],[160,240,254,112,35,220,39,209,90,66,250,47,216,130,3,191,26,218,215,64,181,193,29,63,232,232,145,115,172,109,200,247,115,0],[160,39,236,191,154,77,8,251,32,175,137,226,76,15,67,143,171,176,132,223,207,254,183,128,232,211,196,249,0,154,160,240,137,0],[160,35,230,98,247,182,254,82,31,143,244,71,131,238,197,72,113,131,137,220,131,129,198,215,222,32,149,235,141,228,116,144,11,0],[160,197,191,41,97,166,131,183,149,180,152,128,185,71,164,0,54,158,86,246,170,86,32,181,124,148,190,125,76,221,201,208,141,0],[160,159,23,20,94,88,209,213,39,109,180,74,34,185,138,194,148,69,95,119,50,93,35,119,35,70,144,55,113,186,190,10,50,0],[160,240,158,127,254,140,2,233,125,227,85,228,153,234,107,39,120,86,114,141,165,236,70,55,34,51,80,214,82,216,72,194,167,0],[160,241,115,8,250,103,6,172,201,8,94,235,232,251,105,76,35,24,123,51,123,228,59,251,178,106,222,112,183,73,64,160,131,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,241,128,160,95,19,17,62,195,21,112,178,91,225,14,194,21,168,35,49,39,107,10,56,101,128,36,217,195,210,193,21,53,154,138,171,160,175,207,89,245,47,173,60,160,122,96,157,127,3,152,102,158,148,184,85,198,206,7,30,222,109,154,230,46,232,107,164,66,160,77,222,225,16,91,179,178,38,17,28,35,5,71,173,167,61,12,115,134,59,229,155,67,40,67,14,182,83,176,172,144,129,160,212,230,233,210,20,158,212,187,111,154,133,199,191,96,226,165,238,48,208,133,144,218,33,187,135,57,230,252,104,125,237,69,160,120,1,86,145,3,10,105,17,34,115,133,200,189,158,212,165,33,216,133,182,125,10,45,56,252,68,193,126,191,247,173,238,160,132,148,140,158,238,164,33,240,153,75,89,38,215,5,210,140,107,228,245,91,112,92,26,86,64,61,88,169,51,116,115,102,160,159,216,124,34,123,240,35,11,182,243,49,236,27,87,228,162,65,65,230,22,206,191,39,137,154,236,246,210,109,101,109,248,160,101,224,124,233,33,17,81,30,51,151,106,92,117,28,16,2,141,82,5,254,162,225,170,235,187,113,144,168,51,14,230,236,160,240,254,112,35,220,39,209,90,66,250,47,216,130,3,191,26,218,215,64,181,193,29,63,232,232,145,115,172,109,200,247,115,160,39,236,191,154,77,8,251,32,175,137,226,76,15,67,143,171,176,132,223,207,254,183,128,232,211,196,249,0,154,160,240,137,160,35,230,98,247,182,254,82,31,143,244,71,131,238,197,72,113,131,137,220,131,129,198,215,222,32,149,235,141,228,116,144,11,160,197,191,41,97,166,131,183,149,180,152,128,185,71,164,0,54,158,86,246,170,86,32,181,124,148,190,125,76,221,201,208,141,160,159,23,20,94,88,209,213,39,109,180,74,34,185,138,194,148,69,95,119,50,93,35,119,35,70,144,55,113,186,190,10,50,160,240,158,127,254,140,2,233,125,227,85,228,153,234,107,39,120,86,114,141,165,236,70,55,34,51,80,214,82,216,72,194,167,160,241,115,8,250,103,6,172,201,8,94,235,232,251,105,76,35,24,123,51,123,228,59,251,178,106,222,112,183,73,64,160,131,128],[249,1,241,128,160,95,19,17,62,195,21,112,178,91,225,14,194,21,168,35,49,39,107,10,56,101,128,36,217,195,210,193,21,53,154,138,171,160,175,207,89,245,47,173,60,160,122,96,157,127,3,152,102,158,148,184,85,198,206,7,30,222,109,154,230,46,232,107,164,66,160,77,222,225,16,91,179,178,38,17,28,35,5,71,173,167,61,12,115,134,59,229,155,67,40,67,14,182,83,176,172,144,129,160,212,230,233,210,20,158,212,187,111,154,133,199,191,96,226,165,238,48,208,133,144,218,33,187,135,57,230,252,104,125,237,69,160,2,156,243,74,20,163,95,64,180,165,4,61,14,87,32,233,49,232,0,56,137,122,103,112,32,178,181,87,163,181,64,89,160,132,148,140,158,238,164,33,240,153,75,89,38,215,5,210,140,107,228,245,91,112,92,26,86,64,61,88,169,51,116,115,102,160,159,216,124,34,123,240,35,11,182,243,49,236,27,87,228,162,65,65,230,22,206,191,39,137,154,236,246,210,109,101,109,248,160,101,224,124,233,33,17,81,30,51,151,106,92,117,28,16,2,141,82,5,254,162,225,170,235,187,113,144,168,51,14,230,236,160,240,254,112,35,220,39,209,90,66,250,47,216,130,3,191,26,218,215,64,181,193,29,63,232,232,145,115,172,109,200,247,115,160,39,236,191,154,77,8,251,32,175,137,226,76,15,67,143,171,176,132,223,207,254,183,128,232,211,196,249,0,154,160,240,137,160,35,230,98,247,182,254,82,31,143,244,71,131,238,197,72,113,131,137,220,131,129,198,215,222,32,149,235,141,228,116,144,11,160,197,191,41,97,166,131,183,149,180,152,128,185,71,164,0,54,158,86,246,170,86,32,181,124,148,190,125,76,221,201,208,141,160,159,23,20,94,88,209,213,39,109,180,74,34,185,138,194,148,69,95,119,50,93,35,119,35,70,144,55,113,186,190,10,50,160,240,158,127,254,140,2,233,125,227,85,228,153,234,107,39,120,86,114,141,165,236,70,55,34,51,80,214,82,216,72,194,167,160,241,115,8,250,103,6,172,201,8,94,235,232,251,105,76,35,24,123,51,123,228,59,251,178,106,222,112,183,73,64,160,131,128]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[false,true],"extension":{"list_rlp_bytes":[226]},"branch":{"modified_index":14,"drifted_index":6,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,121,46,159,52,238,151,118,183,150,148,113,69,176,81,212,232,95,239,250,197,145,56,57,51,146,14,235,201,44,149,104,164,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,29,143,36,49,6,106,55,88,195,10,34,208,147,134,155,181,100,142,66,21,255,171,228,168,85,11,239,170,233,241,171,242,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,121,46,159,52,238,151,118,183,150,148,113,69,176,81,212,232,95,239,250,197,145,56,57,51,146,14,235,201,44,149,104,164,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,228,87,170,5,217,226,84,10,6,66,83,20,21,181,211,177,59,70,16,15,61,229,143,101,155,165,195,91,16,114,155,105,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,228,87,170,5,217,226,84,10,6,66,83,20,21,181,211,177,59,70,16,15,61,229,143,101,155,165,195,91,16,114,155,105,0]],"keccak_data":[[248,81,128,128,128,128,128,128,160,29,143,36,49,6,106,55,88,195,10,34,208,147,134,155,181,100,142,66,21,255,171,228,168,85,11,239,170,233,241,171,242,128,128,128,128,128,128,128,160,121,46,159,52,238,151,118,183,150,148,113,69,176,81,212,232,95,239,250,197,145,56,57,51,146,14,235,201,44,149,104,164,128,128],[248,81,128,128,128,128,128,128,160,29,143,36,49,6,106,55,88,195,10,34,208,147,134,155,181,100,142,66,21,255,171,228,168,85,11,239,170,233,241,171,242,128,128,128,128,128,128,128,160,121,46,159,52,238,151,118,183,150,148,113,69,176,81,212,232,95,239,250,197,145,56,57,51,146,14,235,201,44,149,104,164,128,128],[226,30,160,228,87,170,5,217,226,84,10,6,66,83,20,21,181,211,177,59,70,16,15,61,229,143,101,155,165,195,91,16,114,155,105],[226,30,160,228,87,170,5,217,226,84,10,6,66,83,20,21,181,211,177,59,70,16,15,61,229,143,101,155,165,195,91,16,114,155,105]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24],"key":[94,234,134,125,75,134,189,115,81,70,174,143,11,63,23,72,49,75,47,165,136,244,176,0,109,24,198,250,226,255,32,16],"list_rlp_bytes":[[225],[226]],"value_rlp_bytes":[[35],[30]],"drifted_rlp_bytes":[225],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[159,58,134,125,75,134,189,115,81,70,174,143,11,63,23,72,49,75,47,165,136,244,176,0,109,24,198,250,226,255,32,16,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,62,102,91,73,41,246,40,51,138,212,183,115,140,93,166,226,13,233,58,214,43,57,192,130,99,177,83,39,171,163,18,65,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,54,91,73,41,246,40,51,138,212,183,115,140,93,166,226,13,233,58,214,43,57,192,130,99,177,83,39,171,163,18,65,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[225,159,58,134,125,75,134,189,115,81,70,174,143,11,63,23,72,49,75,47,165,136,244,176,0,109,24,198,250,226,255,32,16,35],[226,160,62,102,91,73,41,246,40,51,138,212,183,115,140,93,166,226,13,233,58,214,43,57,192,130,99,177,83,39,171,163,18,65,30],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24],[225,159,54,91,73,41,246,40,51,138,212,183,115,140,93,166,226,13,233,58,214,43,57,192,130,99,177,83,39,171,163,18,65,30]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ExtensionDeletedOneKeyByteSel2.json b/zkevm-circuits/src/mpt_circuit/tests/ExtensionDeletedOneKeyByteSel2.json new file mode 100644 index 0000000000..615e6d6ec2 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ExtensionDeletedOneKeyByteSel2.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,54,179,159,61,164,213,56,141,247,227,214,100,112,69,236,156,81,36,31,223,151,41,91,157,37,94,195,199,193,213,211,252,0],[160,37,191,180,194,42,164,148,169,168,223,141,194,167,74,227,95,253,63,224,124,112,89,200,113,209,231,106,62,29,145,227,10,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,9,16,17,47,163,142,230,56,57,118,42,234,15,167,191,233,217,9,56,22,117,252,137,197,103,101,205,58,113,191,194,222,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,167,151,5,29,17,227,112,120,220,76,167,5,31,48,238,42,218,44,123,4,251,93,145,48,164,12,97,186,166,146,187,56,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,167,151,5,29,17,227,112,120,220,76,167,5,31,48,238,42,218,44,123,4,251,93,145,48,164,12,97,186,166,146,187,56,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,9,16,17,47,163,142,230,56,57,118,42,234,15,167,191,233,217,9,56,22,117,252,137,197,103,101,205,58,113,191,194,222,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,105,211,216,18,33,57,12,225,121,220,128,89,36,128,210,8,39,171,184,204,208,153,203,143,53,204,18,223,91,194,118,113,0],[160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,0],[160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,0],[160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,0],[160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,0],[160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,0],[160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,0],[160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,0],[160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,0],[160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,0],[160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,0],[160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,0],[160,128,173,60,145,248,253,133,144,179,124,61,33,232,140,5,252,151,234,86,121,34,249,8,121,154,121,230,147,181,238,80,169,0],[160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,0],[160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,0],[160,108,100,16,239,143,223,176,117,172,111,57,10,135,153,27,63,77,11,170,247,58,37,188,185,60,51,247,73,236,253,169,33,0],[160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,160,128,173,60,145,248,253,133,144,179,124,61,33,232,140,5,252,151,234,86,121,34,249,8,121,154,121,230,147,181,238,80,169,160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,160,108,100,16,239,143,223,176,117,172,111,57,10,135,153,27,63,77,11,170,247,58,37,188,185,60,51,247,73,236,253,169,33,160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,128],[249,2,17,160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,160,128,173,60,145,248,253,133,144,179,124,61,33,232,140,5,252,151,234,86,121,34,249,8,121,154,121,230,147,181,238,80,169,160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,160,105,211,216,18,33,57,12,225,121,220,128,89,36,128,210,8,39,171,184,204,208,153,203,143,53,204,18,223,91,194,118,113,160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,216,62,194,237,129,44,145,171,239,11,119,240,43,237,60,28,83,72,37,30,210,168,173,78,166,14,185,111,68,211,153,137,0],[160,80,75,215,208,193,159,84,57,71,243,7,14,204,100,148,205,208,55,165,27,88,145,87,12,99,158,158,182,197,55,33,95,0],[160,76,180,250,234,22,207,36,13,201,139,0,120,72,139,180,238,156,185,62,97,200,44,188,159,187,99,106,94,147,15,25,20,0],[160,189,17,169,103,34,213,240,167,18,182,246,233,129,88,212,80,113,250,13,189,211,144,206,169,179,25,180,70,188,155,55,32,0],[160,32,220,255,83,236,6,9,125,247,185,224,139,47,190,49,98,219,131,56,50,131,152,150,81,107,126,7,163,202,127,91,164,0],[160,185,211,148,32,33,143,139,118,55,225,47,134,141,134,35,28,209,179,72,57,247,141,152,65,38,141,179,61,214,174,204,14,0],[160,107,106,58,227,233,173,248,116,152,133,228,250,245,205,196,226,135,107,65,132,233,139,78,59,136,248,255,241,150,83,160,5,0],[160,0,164,180,172,120,195,134,123,28,39,200,127,136,82,33,245,97,141,28,111,0,184,5,98,102,230,66,116,77,224,101,219,0],[160,248,105,172,225,53,1,157,135,194,244,188,254,17,122,124,197,196,99,49,56,111,8,165,230,145,108,189,38,207,45,75,50,0],[160,35,73,222,234,130,172,207,150,15,218,253,15,36,223,217,31,215,79,14,171,224,221,215,51,242,239,84,255,134,147,216,166,0],[160,240,32,244,239,11,87,72,174,41,33,118,196,147,56,102,122,208,41,160,96,186,168,111,141,93,215,31,104,139,17,215,242,0],[160,82,199,196,167,58,157,107,196,36,170,39,205,176,246,208,56,210,163,200,208,226,179,109,60,35,248,244,49,8,254,178,170,0],[160,41,120,139,152,77,177,209,163,251,86,56,110,91,133,48,219,84,61,35,168,197,183,209,12,192,6,94,59,173,60,160,174,0],[160,255,250,210,54,157,254,43,240,80,48,249,200,142,240,27,109,12,250,107,172,243,192,36,2,224,146,228,178,151,220,187,84,0],[160,231,83,108,124,37,12,66,134,242,2,97,130,128,110,222,91,65,238,211,219,127,83,155,247,57,160,84,71,36,68,143,249,0],[160,49,132,199,94,225,34,198,225,84,182,131,124,126,81,66,197,238,228,144,216,66,221,170,150,141,52,23,177,9,14,164,218,0],[160,119,192,211,22,95,58,240,144,240,37,172,65,97,91,255,225,107,12,151,189,7,88,0,51,192,124,155,194,253,5,143,142,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,80,75,215,208,193,159,84,57,71,243,7,14,204,100,148,205,208,55,165,27,88,145,87,12,99,158,158,182,197,55,33,95,160,76,180,250,234,22,207,36,13,201,139,0,120,72,139,180,238,156,185,62,97,200,44,188,159,187,99,106,94,147,15,25,20,160,189,17,169,103,34,213,240,167,18,182,246,233,129,88,212,80,113,250,13,189,211,144,206,169,179,25,180,70,188,155,55,32,160,32,220,255,83,236,6,9,125,247,185,224,139,47,190,49,98,219,131,56,50,131,152,150,81,107,126,7,163,202,127,91,164,160,185,211,148,32,33,143,139,118,55,225,47,134,141,134,35,28,209,179,72,57,247,141,152,65,38,141,179,61,214,174,204,14,160,107,106,58,227,233,173,248,116,152,133,228,250,245,205,196,226,135,107,65,132,233,139,78,59,136,248,255,241,150,83,160,5,160,0,164,180,172,120,195,134,123,28,39,200,127,136,82,33,245,97,141,28,111,0,184,5,98,102,230,66,116,77,224,101,219,160,248,105,172,225,53,1,157,135,194,244,188,254,17,122,124,197,196,99,49,56,111,8,165,230,145,108,189,38,207,45,75,50,160,35,73,222,234,130,172,207,150,15,218,253,15,36,223,217,31,215,79,14,171,224,221,215,51,242,239,84,255,134,147,216,166,160,240,32,244,239,11,87,72,174,41,33,118,196,147,56,102,122,208,41,160,96,186,168,111,141,93,215,31,104,139,17,215,242,160,82,199,196,167,58,157,107,196,36,170,39,205,176,246,208,56,210,163,200,208,226,179,109,60,35,248,244,49,8,254,178,170,160,41,120,139,152,77,177,209,163,251,86,56,110,91,133,48,219,84,61,35,168,197,183,209,12,192,6,94,59,173,60,160,174,160,255,250,210,54,157,254,43,240,80,48,249,200,142,240,27,109,12,250,107,172,243,192,36,2,224,146,228,178,151,220,187,84,160,231,83,108,124,37,12,66,134,242,2,97,130,128,110,222,91,65,238,211,219,127,83,155,247,57,160,84,71,36,68,143,249,160,49,132,199,94,225,34,198,225,84,182,131,124,126,81,66,197,238,228,144,216,66,221,170,150,141,52,23,177,9,14,164,218,160,119,192,211,22,95,58,240,144,240,37,172,65,97,91,255,225,107,12,151,189,7,88,0,51,192,124,155,194,253,5,143,142,128],[249,2,17,160,80,75,215,208,193,159,84,57,71,243,7,14,204,100,148,205,208,55,165,27,88,145,87,12,99,158,158,182,197,55,33,95,160,76,180,250,234,22,207,36,13,201,139,0,120,72,139,180,238,156,185,62,97,200,44,188,159,187,99,106,94,147,15,25,20,160,189,17,169,103,34,213,240,167,18,182,246,233,129,88,212,80,113,250,13,189,211,144,206,169,179,25,180,70,188,155,55,32,160,32,220,255,83,236,6,9,125,247,185,224,139,47,190,49,98,219,131,56,50,131,152,150,81,107,126,7,163,202,127,91,164,160,185,211,148,32,33,143,139,118,55,225,47,134,141,134,35,28,209,179,72,57,247,141,152,65,38,141,179,61,214,174,204,14,160,107,106,58,227,233,173,248,116,152,133,228,250,245,205,196,226,135,107,65,132,233,139,78,59,136,248,255,241,150,83,160,5,160,0,164,180,172,120,195,134,123,28,39,200,127,136,82,33,245,97,141,28,111,0,184,5,98,102,230,66,116,77,224,101,219,160,248,105,172,225,53,1,157,135,194,244,188,254,17,122,124,197,196,99,49,56,111,8,165,230,145,108,189,38,207,45,75,50,160,35,73,222,234,130,172,207,150,15,218,253,15,36,223,217,31,215,79,14,171,224,221,215,51,242,239,84,255,134,147,216,166,160,240,32,244,239,11,87,72,174,41,33,118,196,147,56,102,122,208,41,160,96,186,168,111,141,93,215,31,104,139,17,215,242,160,82,199,196,167,58,157,107,196,36,170,39,205,176,246,208,56,210,163,200,208,226,179,109,60,35,248,244,49,8,254,178,170,160,216,62,194,237,129,44,145,171,239,11,119,240,43,237,60,28,83,72,37,30,210,168,173,78,166,14,185,111,68,211,153,137,160,255,250,210,54,157,254,43,240,80,48,249,200,142,240,27,109,12,250,107,172,243,192,36,2,224,146,228,178,151,220,187,84,160,231,83,108,124,37,12,66,134,242,2,97,130,128,110,222,91,65,238,211,219,127,83,155,247,57,160,84,71,36,68,143,249,160,49,132,199,94,225,34,198,225,84,182,131,124,126,81,66,197,238,228,144,216,66,221,170,150,141,52,23,177,9,14,164,218,160,119,192,211,22,95,58,240,144,240,37,172,65,97,91,255,225,107,12,151,189,7,88,0,51,192,124,155,194,253,5,143,142,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,189,215,205,95,109,59,96,171,214,102,250,212,81,244,56,199,244,198,164,30,187,51,185,100,90,155,111,95,152,115,51,130,0],[160,135,19,64,207,217,223,201,245,3,114,121,32,66,43,57,133,252,55,82,116,223,71,100,149,122,243,45,28,63,150,204,110,0],[160,210,120,212,210,151,79,221,51,232,80,80,186,46,159,194,233,203,46,201,120,35,213,101,124,0,8,177,219,68,14,121,240,0],[160,7,114,2,237,174,156,12,217,41,80,207,22,255,39,79,29,172,209,87,195,37,188,55,186,206,78,97,11,87,224,72,236,0],[160,22,29,249,121,177,221,199,134,231,204,178,150,90,71,228,195,117,255,255,223,21,95,194,251,151,149,22,131,234,12,148,141,0],[160,154,130,254,249,64,180,76,29,52,23,185,183,92,39,79,57,58,81,220,159,7,224,15,179,212,252,51,109,150,166,138,123,0],[160,191,184,181,142,36,247,244,175,48,46,160,172,131,40,126,16,142,50,208,215,51,119,231,93,236,238,227,222,169,47,110,125,0],[160,63,16,188,230,177,90,174,250,172,232,195,227,33,146,180,160,216,2,248,221,210,179,93,60,27,200,22,229,211,119,190,115,0],[160,53,84,133,174,116,94,41,6,85,129,119,229,230,193,188,123,41,20,118,167,127,74,171,217,108,64,156,67,204,33,116,201,0],[160,178,157,0,28,65,106,227,88,84,22,69,42,75,101,149,62,86,45,11,59,216,93,0,97,209,124,70,114,145,152,73,213,0],[160,80,176,142,247,234,92,148,168,17,76,79,72,211,136,9,251,173,156,52,47,222,75,47,99,175,39,37,242,43,103,246,104,0],[160,220,42,251,8,22,8,115,225,127,17,184,13,248,242,7,12,82,192,44,74,62,147,117,10,57,158,59,179,221,195,212,185,0],[160,73,210,235,92,4,27,119,189,211,244,21,130,213,183,166,10,118,148,51,106,35,39,41,16,212,32,33,30,232,202,253,127,0],[160,45,234,125,167,138,171,111,217,200,71,109,44,151,79,202,136,227,21,63,196,251,135,189,172,157,97,199,5,92,103,113,208,0],[160,32,136,102,148,196,136,37,163,51,96,178,15,175,37,129,190,72,46,102,165,57,108,199,41,1,153,217,87,99,246,185,134,0],[160,195,142,65,38,53,73,58,93,254,20,214,13,99,184,121,102,237,111,202,60,113,233,229,157,72,243,233,231,38,188,161,198,0],[160,29,13,42,118,4,81,208,108,222,61,121,232,127,152,172,231,68,36,11,214,122,155,128,182,146,21,101,238,226,237,167,149,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,135,19,64,207,217,223,201,245,3,114,121,32,66,43,57,133,252,55,82,116,223,71,100,149,122,243,45,28,63,150,204,110,160,210,120,212,210,151,79,221,51,232,80,80,186,46,159,194,233,203,46,201,120,35,213,101,124,0,8,177,219,68,14,121,240,160,7,114,2,237,174,156,12,217,41,80,207,22,255,39,79,29,172,209,87,195,37,188,55,186,206,78,97,11,87,224,72,236,160,22,29,249,121,177,221,199,134,231,204,178,150,90,71,228,195,117,255,255,223,21,95,194,251,151,149,22,131,234,12,148,141,160,154,130,254,249,64,180,76,29,52,23,185,183,92,39,79,57,58,81,220,159,7,224,15,179,212,252,51,109,150,166,138,123,160,191,184,181,142,36,247,244,175,48,46,160,172,131,40,126,16,142,50,208,215,51,119,231,93,236,238,227,222,169,47,110,125,160,63,16,188,230,177,90,174,250,172,232,195,227,33,146,180,160,216,2,248,221,210,179,93,60,27,200,22,229,211,119,190,115,160,53,84,133,174,116,94,41,6,85,129,119,229,230,193,188,123,41,20,118,167,127,74,171,217,108,64,156,67,204,33,116,201,160,178,157,0,28,65,106,227,88,84,22,69,42,75,101,149,62,86,45,11,59,216,93,0,97,209,124,70,114,145,152,73,213,160,80,176,142,247,234,92,148,168,17,76,79,72,211,136,9,251,173,156,52,47,222,75,47,99,175,39,37,242,43,103,246,104,160,220,42,251,8,22,8,115,225,127,17,184,13,248,242,7,12,82,192,44,74,62,147,117,10,57,158,59,179,221,195,212,185,160,73,210,235,92,4,27,119,189,211,244,21,130,213,183,166,10,118,148,51,106,35,39,41,16,212,32,33,30,232,202,253,127,160,45,234,125,167,138,171,111,217,200,71,109,44,151,79,202,136,227,21,63,196,251,135,189,172,157,97,199,5,92,103,113,208,160,32,136,102,148,196,136,37,163,51,96,178,15,175,37,129,190,72,46,102,165,57,108,199,41,1,153,217,87,99,246,185,134,160,195,142,65,38,53,73,58,93,254,20,214,13,99,184,121,102,237,111,202,60,113,233,229,157,72,243,233,231,38,188,161,198,160,29,13,42,118,4,81,208,108,222,61,121,232,127,152,172,231,68,36,11,214,122,155,128,182,146,21,101,238,226,237,167,149,128],[249,2,17,160,135,19,64,207,217,223,201,245,3,114,121,32,66,43,57,133,252,55,82,116,223,71,100,149,122,243,45,28,63,150,204,110,160,210,120,212,210,151,79,221,51,232,80,80,186,46,159,194,233,203,46,201,120,35,213,101,124,0,8,177,219,68,14,121,240,160,7,114,2,237,174,156,12,217,41,80,207,22,255,39,79,29,172,209,87,195,37,188,55,186,206,78,97,11,87,224,72,236,160,22,29,249,121,177,221,199,134,231,204,178,150,90,71,228,195,117,255,255,223,21,95,194,251,151,149,22,131,234,12,148,141,160,154,130,254,249,64,180,76,29,52,23,185,183,92,39,79,57,58,81,220,159,7,224,15,179,212,252,51,109,150,166,138,123,160,191,184,181,142,36,247,244,175,48,46,160,172,131,40,126,16,142,50,208,215,51,119,231,93,236,238,227,222,169,47,110,125,160,63,16,188,230,177,90,174,250,172,232,195,227,33,146,180,160,216,2,248,221,210,179,93,60,27,200,22,229,211,119,190,115,160,189,215,205,95,109,59,96,171,214,102,250,212,81,244,56,199,244,198,164,30,187,51,185,100,90,155,111,95,152,115,51,130,160,178,157,0,28,65,106,227,88,84,22,69,42,75,101,149,62,86,45,11,59,216,93,0,97,209,124,70,114,145,152,73,213,160,80,176,142,247,234,92,148,168,17,76,79,72,211,136,9,251,173,156,52,47,222,75,47,99,175,39,37,242,43,103,246,104,160,220,42,251,8,22,8,115,225,127,17,184,13,248,242,7,12,82,192,44,74,62,147,117,10,57,158,59,179,221,195,212,185,160,73,210,235,92,4,27,119,189,211,244,21,130,213,183,166,10,118,148,51,106,35,39,41,16,212,32,33,30,232,202,253,127,160,45,234,125,167,138,171,111,217,200,71,109,44,151,79,202,136,227,21,63,196,251,135,189,172,157,97,199,5,92,103,113,208,160,32,136,102,148,196,136,37,163,51,96,178,15,175,37,129,190,72,46,102,165,57,108,199,41,1,153,217,87,99,246,185,134,160,195,142,65,38,53,73,58,93,254,20,214,13,99,184,121,102,237,111,202,60,113,233,229,157,72,243,233,231,38,188,161,198,160,29,13,42,118,4,81,208,108,222,61,121,232,127,152,172,231,68,36,11,214,122,155,128,182,146,21,101,238,226,237,167,149,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,158,112,252,4,56,232,171,152,35,26,63,6,17,118,129,139,43,15,139,25,151,223,194,103,24,189,239,18,199,150,1,183,0],[160,133,167,189,133,123,193,191,222,89,216,35,78,93,7,66,131,149,42,249,152,66,106,244,232,140,225,53,159,56,146,232,23,0],[160,252,122,28,104,215,195,210,194,90,68,41,241,5,233,121,31,111,39,40,44,8,54,98,144,203,206,196,168,223,212,246,221,0],[160,108,140,134,51,36,35,162,155,179,219,212,248,1,165,39,162,65,235,79,21,5,180,1,119,15,51,58,169,249,106,94,169,0],[160,254,76,95,71,155,26,54,113,106,54,108,164,206,63,247,247,91,164,234,52,148,14,43,211,132,137,64,194,118,82,194,177,0],[160,14,185,41,78,52,126,90,218,79,124,126,55,116,181,121,241,185,238,44,135,0,49,233,24,87,231,76,225,31,130,200,18,0],[160,184,203,50,205,70,164,135,3,71,89,95,190,248,113,62,67,78,182,14,228,178,180,2,161,165,175,67,60,73,23,173,123,0],[160,144,195,48,89,145,149,182,147,85,15,69,184,79,146,224,36,71,69,131,22,233,191,131,250,24,98,82,185,178,33,37,178,0],[160,103,13,127,211,234,63,148,126,213,126,127,233,179,188,239,177,163,141,165,207,149,48,253,223,158,89,76,162,21,6,208,123,0],[160,60,30,137,167,221,156,12,2,111,77,132,147,40,151,60,202,47,85,195,64,141,50,215,66,51,129,199,36,184,203,150,136,0],[160,47,92,105,177,160,255,212,105,132,109,28,120,118,228,101,197,3,61,151,81,126,86,140,26,92,137,116,150,66,142,148,133,0],[160,188,123,142,119,144,241,30,96,104,247,77,149,203,234,218,50,166,117,17,238,216,103,24,146,142,202,126,58,34,229,213,98,0],[160,118,160,183,246,222,81,81,110,178,28,67,171,144,85,193,24,86,90,191,175,156,176,49,241,181,29,151,58,69,17,153,247,0],[160,10,81,148,85,182,179,4,213,104,8,18,186,104,176,241,146,55,220,243,205,207,90,175,2,120,133,99,27,67,103,37,137,0],[160,92,135,250,214,119,219,245,233,65,207,198,41,62,154,6,183,119,86,175,138,217,145,8,75,217,202,166,21,201,199,183,160,0],[160,178,118,164,136,184,196,235,68,1,208,226,214,129,93,154,28,118,79,39,37,41,21,31,157,175,140,26,16,206,117,245,161,0],[160,166,122,17,151,156,67,20,33,110,157,14,75,253,205,253,90,57,76,61,99,70,105,124,243,136,52,164,181,121,236,236,70,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,133,167,189,133,123,193,191,222,89,216,35,78,93,7,66,131,149,42,249,152,66,106,244,232,140,225,53,159,56,146,232,23,160,252,122,28,104,215,195,210,194,90,68,41,241,5,233,121,31,111,39,40,44,8,54,98,144,203,206,196,168,223,212,246,221,160,108,140,134,51,36,35,162,155,179,219,212,248,1,165,39,162,65,235,79,21,5,180,1,119,15,51,58,169,249,106,94,169,160,254,76,95,71,155,26,54,113,106,54,108,164,206,63,247,247,91,164,234,52,148,14,43,211,132,137,64,194,118,82,194,177,160,14,185,41,78,52,126,90,218,79,124,126,55,116,181,121,241,185,238,44,135,0,49,233,24,87,231,76,225,31,130,200,18,160,184,203,50,205,70,164,135,3,71,89,95,190,248,113,62,67,78,182,14,228,178,180,2,161,165,175,67,60,73,23,173,123,160,144,195,48,89,145,149,182,147,85,15,69,184,79,146,224,36,71,69,131,22,233,191,131,250,24,98,82,185,178,33,37,178,160,103,13,127,211,234,63,148,126,213,126,127,233,179,188,239,177,163,141,165,207,149,48,253,223,158,89,76,162,21,6,208,123,160,60,30,137,167,221,156,12,2,111,77,132,147,40,151,60,202,47,85,195,64,141,50,215,66,51,129,199,36,184,203,150,136,160,47,92,105,177,160,255,212,105,132,109,28,120,118,228,101,197,3,61,151,81,126,86,140,26,92,137,116,150,66,142,148,133,160,188,123,142,119,144,241,30,96,104,247,77,149,203,234,218,50,166,117,17,238,216,103,24,146,142,202,126,58,34,229,213,98,160,118,160,183,246,222,81,81,110,178,28,67,171,144,85,193,24,86,90,191,175,156,176,49,241,181,29,151,58,69,17,153,247,160,10,81,148,85,182,179,4,213,104,8,18,186,104,176,241,146,55,220,243,205,207,90,175,2,120,133,99,27,67,103,37,137,160,92,135,250,214,119,219,245,233,65,207,198,41,62,154,6,183,119,86,175,138,217,145,8,75,217,202,166,21,201,199,183,160,160,178,118,164,136,184,196,235,68,1,208,226,214,129,93,154,28,118,79,39,37,41,21,31,157,175,140,26,16,206,117,245,161,160,166,122,17,151,156,67,20,33,110,157,14,75,253,205,253,90,57,76,61,99,70,105,124,243,136,52,164,181,121,236,236,70,128],[249,2,17,160,133,167,189,133,123,193,191,222,89,216,35,78,93,7,66,131,149,42,249,152,66,106,244,232,140,225,53,159,56,146,232,23,160,252,122,28,104,215,195,210,194,90,68,41,241,5,233,121,31,111,39,40,44,8,54,98,144,203,206,196,168,223,212,246,221,160,108,140,134,51,36,35,162,155,179,219,212,248,1,165,39,162,65,235,79,21,5,180,1,119,15,51,58,169,249,106,94,169,160,254,76,95,71,155,26,54,113,106,54,108,164,206,63,247,247,91,164,234,52,148,14,43,211,132,137,64,194,118,82,194,177,160,14,185,41,78,52,126,90,218,79,124,126,55,116,181,121,241,185,238,44,135,0,49,233,24,87,231,76,225,31,130,200,18,160,184,203,50,205,70,164,135,3,71,89,95,190,248,113,62,67,78,182,14,228,178,180,2,161,165,175,67,60,73,23,173,123,160,144,195,48,89,145,149,182,147,85,15,69,184,79,146,224,36,71,69,131,22,233,191,131,250,24,98,82,185,178,33,37,178,160,103,13,127,211,234,63,148,126,213,126,127,233,179,188,239,177,163,141,165,207,149,48,253,223,158,89,76,162,21,6,208,123,160,60,30,137,167,221,156,12,2,111,77,132,147,40,151,60,202,47,85,195,64,141,50,215,66,51,129,199,36,184,203,150,136,160,47,92,105,177,160,255,212,105,132,109,28,120,118,228,101,197,3,61,151,81,126,86,140,26,92,137,116,150,66,142,148,133,160,188,123,142,119,144,241,30,96,104,247,77,149,203,234,218,50,166,117,17,238,216,103,24,146,142,202,126,58,34,229,213,98,160,158,112,252,4,56,232,171,152,35,26,63,6,17,118,129,139,43,15,139,25,151,223,194,103,24,189,239,18,199,150,1,183,160,10,81,148,85,182,179,4,213,104,8,18,186,104,176,241,146,55,220,243,205,207,90,175,2,120,133,99,27,67,103,37,137,160,92,135,250,214,119,219,245,233,65,207,198,41,62,154,6,183,119,86,175,138,217,145,8,75,217,202,166,21,201,199,183,160,160,178,118,164,136,184,196,235,68,1,208,226,214,129,93,154,28,118,79,39,37,41,21,31,157,175,140,26,16,206,117,245,161,160,166,122,17,151,156,67,20,33,110,157,14,75,253,205,253,90,57,76,61,99,70,105,124,243,136,52,164,181,121,236,236,70,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,188,98,220,182,239,209,186,48,108,185,141,72,27,152,99,208,240,110,165,208,132,156,50,186,32,29,38,162,101,12,183,65,0],[160,148,96,233,169,14,90,134,113,124,248,170,233,105,200,185,209,37,170,23,12,53,121,255,207,171,140,58,155,240,245,176,148,0],[160,44,47,217,201,92,122,132,137,66,226,149,169,177,49,235,62,79,6,38,116,120,55,195,24,55,197,51,169,64,4,70,173,0],[160,239,47,98,216,238,2,166,46,89,15,56,7,5,196,196,62,67,249,253,235,20,235,102,134,142,200,26,17,214,152,1,145,0],[160,197,17,178,32,200,66,202,234,188,218,127,181,8,17,4,30,61,47,57,234,58,255,120,204,181,237,168,202,28,76,105,234,0],[160,63,229,58,247,19,93,67,185,34,164,106,81,163,92,222,25,161,27,40,212,121,191,185,203,236,130,187,73,151,69,189,185,0],[160,254,144,109,156,81,221,79,66,253,183,145,54,58,41,16,116,249,56,61,32,1,181,98,101,217,110,246,137,185,35,129,215,0],[160,42,32,250,190,187,193,176,158,238,99,10,152,135,244,177,201,170,90,140,94,31,244,155,240,210,136,149,233,93,37,48,191,0],[160,61,109,224,56,165,245,64,137,152,181,215,104,250,196,136,153,125,159,66,122,124,73,180,198,62,12,247,125,2,26,120,32,0],[160,81,76,82,36,53,180,76,100,114,1,16,17,231,143,16,128,224,130,54,29,129,30,175,141,192,31,129,54,103,40,235,30,0],[160,91,241,99,220,108,63,125,225,150,80,223,253,107,254,87,177,201,91,21,251,24,233,244,246,13,134,68,64,146,212,100,133,0],[160,236,116,61,181,70,202,25,127,58,207,72,50,66,207,22,152,197,203,167,193,92,102,153,213,59,137,65,153,49,136,57,215,0],[160,216,2,120,95,255,84,108,99,100,122,21,213,206,229,80,63,183,191,6,12,87,234,21,174,229,146,63,113,77,198,240,39,0],[160,190,218,104,114,65,143,16,76,171,187,221,133,224,217,179,164,222,126,10,33,35,71,63,53,163,111,199,211,228,164,124,223,0],[160,213,170,112,202,127,64,210,139,189,213,55,20,144,252,240,46,126,109,109,74,135,136,15,128,192,99,16,67,173,97,168,61,0],[160,147,75,172,163,178,143,148,112,133,47,43,229,251,14,130,192,253,59,110,111,147,43,65,57,213,172,199,179,154,184,206,56,0],[160,164,223,28,174,107,173,96,167,56,249,242,213,153,166,239,188,30,37,226,19,250,193,152,99,72,192,45,227,39,220,80,199,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,148,96,233,169,14,90,134,113,124,248,170,233,105,200,185,209,37,170,23,12,53,121,255,207,171,140,58,155,240,245,176,148,160,44,47,217,201,92,122,132,137,66,226,149,169,177,49,235,62,79,6,38,116,120,55,195,24,55,197,51,169,64,4,70,173,160,239,47,98,216,238,2,166,46,89,15,56,7,5,196,196,62,67,249,253,235,20,235,102,134,142,200,26,17,214,152,1,145,160,197,17,178,32,200,66,202,234,188,218,127,181,8,17,4,30,61,47,57,234,58,255,120,204,181,237,168,202,28,76,105,234,160,63,229,58,247,19,93,67,185,34,164,106,81,163,92,222,25,161,27,40,212,121,191,185,203,236,130,187,73,151,69,189,185,160,254,144,109,156,81,221,79,66,253,183,145,54,58,41,16,116,249,56,61,32,1,181,98,101,217,110,246,137,185,35,129,215,160,42,32,250,190,187,193,176,158,238,99,10,152,135,244,177,201,170,90,140,94,31,244,155,240,210,136,149,233,93,37,48,191,160,61,109,224,56,165,245,64,137,152,181,215,104,250,196,136,153,125,159,66,122,124,73,180,198,62,12,247,125,2,26,120,32,160,81,76,82,36,53,180,76,100,114,1,16,17,231,143,16,128,224,130,54,29,129,30,175,141,192,31,129,54,103,40,235,30,160,91,241,99,220,108,63,125,225,150,80,223,253,107,254,87,177,201,91,21,251,24,233,244,246,13,134,68,64,146,212,100,133,160,236,116,61,181,70,202,25,127,58,207,72,50,66,207,22,152,197,203,167,193,92,102,153,213,59,137,65,153,49,136,57,215,160,216,2,120,95,255,84,108,99,100,122,21,213,206,229,80,63,183,191,6,12,87,234,21,174,229,146,63,113,77,198,240,39,160,190,218,104,114,65,143,16,76,171,187,221,133,224,217,179,164,222,126,10,33,35,71,63,53,163,111,199,211,228,164,124,223,160,213,170,112,202,127,64,210,139,189,213,55,20,144,252,240,46,126,109,109,74,135,136,15,128,192,99,16,67,173,97,168,61,160,147,75,172,163,178,143,148,112,133,47,43,229,251,14,130,192,253,59,110,111,147,43,65,57,213,172,199,179,154,184,206,56,160,164,223,28,174,107,173,96,167,56,249,242,213,153,166,239,188,30,37,226,19,250,193,152,99,72,192,45,227,39,220,80,199,128],[249,2,17,160,148,96,233,169,14,90,134,113,124,248,170,233,105,200,185,209,37,170,23,12,53,121,255,207,171,140,58,155,240,245,176,148,160,44,47,217,201,92,122,132,137,66,226,149,169,177,49,235,62,79,6,38,116,120,55,195,24,55,197,51,169,64,4,70,173,160,239,47,98,216,238,2,166,46,89,15,56,7,5,196,196,62,67,249,253,235,20,235,102,134,142,200,26,17,214,152,1,145,160,197,17,178,32,200,66,202,234,188,218,127,181,8,17,4,30,61,47,57,234,58,255,120,204,181,237,168,202,28,76,105,234,160,63,229,58,247,19,93,67,185,34,164,106,81,163,92,222,25,161,27,40,212,121,191,185,203,236,130,187,73,151,69,189,185,160,254,144,109,156,81,221,79,66,253,183,145,54,58,41,16,116,249,56,61,32,1,181,98,101,217,110,246,137,185,35,129,215,160,42,32,250,190,187,193,176,158,238,99,10,152,135,244,177,201,170,90,140,94,31,244,155,240,210,136,149,233,93,37,48,191,160,188,98,220,182,239,209,186,48,108,185,141,72,27,152,99,208,240,110,165,208,132,156,50,186,32,29,38,162,101,12,183,65,160,81,76,82,36,53,180,76,100,114,1,16,17,231,143,16,128,224,130,54,29,129,30,175,141,192,31,129,54,103,40,235,30,160,91,241,99,220,108,63,125,225,150,80,223,253,107,254,87,177,201,91,21,251,24,233,244,246,13,134,68,64,146,212,100,133,160,236,116,61,181,70,202,25,127,58,207,72,50,66,207,22,152,197,203,167,193,92,102,153,213,59,137,65,153,49,136,57,215,160,216,2,120,95,255,84,108,99,100,122,21,213,206,229,80,63,183,191,6,12,87,234,21,174,229,146,63,113,77,198,240,39,160,190,218,104,114,65,143,16,76,171,187,221,133,224,217,179,164,222,126,10,33,35,71,63,53,163,111,199,211,228,164,124,223,160,213,170,112,202,127,64,210,139,189,213,55,20,144,252,240,46,126,109,109,74,135,136,15,128,192,99,16,67,173,97,168,61,160,147,75,172,163,178,143,148,112,133,47,43,229,251,14,130,192,253,59,110,111,147,43,65,57,213,172,199,179,154,184,206,56,160,164,223,28,174,107,173,96,167,56,249,242,213,153,166,239,188,30,37,226,19,250,193,152,99,72,192,45,227,39,220,80,199,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,139,254,139,73,142,192,10,10,57,1,39,51,10,246,12,167,172,220,114,14,192,73,90,252,160,176,159,181,137,222,154,33,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,30,165,12,148,60,73,75,129,99,22,189,179,165,212,97,30,70,252,178,141,82,212,205,86,33,189,64,225,155,151,44,228,0],[160,143,165,150,220,29,213,132,61,84,146,177,121,240,70,49,108,193,141,238,104,187,31,65,67,198,42,160,132,145,244,195,47,0],[160,249,206,148,243,175,9,54,64,123,62,84,79,56,2,167,180,229,57,141,60,57,230,39,198,161,165,104,120,15,27,210,19,0],[160,35,2,113,27,174,138,111,47,143,63,131,219,176,187,151,237,202,89,0,243,6,15,2,56,30,196,6,32,30,28,90,37,0],[160,58,236,215,25,102,10,91,61,145,178,196,158,128,97,75,40,167,190,55,63,190,206,1,214,162,90,94,106,14,98,57,150,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,192,147,56,216,166,204,38,22,236,116,212,187,163,46,244,70,243,70,187,207,2,165,214,141,45,103,210,194,66,11,69,179,0],[160,53,121,2,248,88,112,144,252,89,104,248,103,3,186,223,144,16,249,254,171,166,207,57,215,153,238,158,125,169,169,8,144,0],[160,241,188,52,165,71,42,145,44,6,13,51,116,50,101,11,21,41,174,213,101,6,12,243,195,47,91,175,49,28,99,33,190,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,128,160,30,165,12,148,60,73,75,129,99,22,189,179,165,212,97,30,70,252,178,141,82,212,205,86,33,189,64,225,155,151,44,228,160,143,165,150,220,29,213,132,61,84,146,177,121,240,70,49,108,193,141,238,104,187,31,65,67,198,42,160,132,145,244,195,47,160,249,206,148,243,175,9,54,64,123,62,84,79,56,2,167,180,229,57,141,60,57,230,39,198,161,165,104,120,15,27,210,19,160,35,2,113,27,174,138,111,47,143,63,131,219,176,187,151,237,202,89,0,243,6,15,2,56,30,196,6,32,30,28,90,37,160,58,236,215,25,102,10,91,61,145,178,196,158,128,97,75,40,167,190,55,63,190,206,1,214,162,90,94,106,14,98,57,150,128,128,128,128,160,192,147,56,216,166,204,38,22,236,116,212,187,163,46,244,70,243,70,187,207,2,165,214,141,45,103,210,194,66,11,69,179,160,53,121,2,248,88,112,144,252,89,104,248,103,3,186,223,144,16,249,254,171,166,207,57,215,153,238,158,125,169,169,8,144,160,241,188,52,165,71,42,145,44,6,13,51,116,50,101,11,21,41,174,213,101,6,12,243,195,47,91,175,49,28,99,33,190,128,128,128,128],[249,1,17,128,160,30,165,12,148,60,73,75,129,99,22,189,179,165,212,97,30,70,252,178,141,82,212,205,86,33,189,64,225,155,151,44,228,160,143,165,150,220,29,213,132,61,84,146,177,121,240,70,49,108,193,141,238,104,187,31,65,67,198,42,160,132,145,244,195,47,160,249,206,148,243,175,9,54,64,123,62,84,79,56,2,167,180,229,57,141,60,57,230,39,198,161,165,104,120,15,27,210,19,160,35,2,113,27,174,138,111,47,143,63,131,219,176,187,151,237,202,89,0,243,6,15,2,56,30,196,6,32,30,28,90,37,160,58,236,215,25,102,10,91,61,145,178,196,158,128,97,75,40,167,190,55,63,190,206,1,214,162,90,94,106,14,98,57,150,128,128,128,128,160,192,147,56,216,166,204,38,22,236,116,212,187,163,46,244,70,243,70,187,207,2,165,214,141,45,103,210,194,66,11,69,179,160,139,254,139,73,142,192,10,10,57,1,39,51,10,246,12,167,172,220,114,14,192,73,90,252,160,176,159,181,137,222,154,33,160,241,188,52,165,71,42,145,44,6,13,51,116,50,101,11,21,41,174,213,101,6,12,243,195,47,91,175,49,28,99,33,190,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,251,239,33,80,129,140,50,179,108,87,149,114,38,223,78,36,235,129,201],"key":[190,183,183,180,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,0,0,0,0],[157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,15,108,88,107,194,189,15,82,236,209,78,97,30,50,118,96,132,240,202,106,51,130,176,90,228,193,49,184,47,232,39,159,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,251,109,225,120,217,138,90,153,200,38,16,249,176,79,249,184,117,132,103,134,214,233,155,241,75,66,173,154,182,193,214,167,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,0,0,0,0]],"keccak_data":[[248,102,157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,184,70,248,68,128,128,160,15,108,88,107,194,189,15,82,236,209,78,97,30,50,118,96,132,240,202,106,51,130,176,90,228,193,49,184,47,232,39,159,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,184,70,248,68,128,128,160,251,109,225,120,217,138,90,153,200,38,16,249,176,79,249,184,117,132,103,134,214,233,155,241,75,66,173,154,182,193,214,167,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,251,239,33,80,129,140,50,179,108,87,149,114,38,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,217,76,109,98,178,50,235,121,192,40,249,242,190,222,83,20,24,210,214,114,119,102,137,143,188,75,174,187,212,151,28,17,0],[160,199,7,37,185,37,91,182,45,165,122,208,185,90,144,11,45,139,168,225,124,74,246,60,201,187,119,135,221,233,18,191,221,0],[160,162,175,133,187,219,239,119,151,95,222,27,129,73,222,219,181,13,128,78,7,224,142,244,71,234,19,80,204,169,244,0,87,0],[160,58,60,54,149,3,205,76,32,114,171,130,231,241,27,85,217,154,210,18,227,106,225,149,84,154,52,148,232,21,66,116,31,0],[160,253,163,202,142,157,155,138,225,162,235,57,54,88,186,254,215,44,218,114,226,22,108,52,0,22,210,251,90,59,245,132,164,0],[160,88,253,168,183,167,24,59,71,66,2,138,202,246,220,159,159,205,204,132,25,74,204,132,126,11,108,227,31,33,134,168,54,0],[160,174,159,215,246,148,47,251,128,68,133,135,143,4,201,65,126,102,248,78,59,98,133,77,240,253,90,78,164,148,100,175,48,0],[160,221,79,222,160,107,166,177,105,81,79,147,190,19,10,157,79,207,51,221,79,73,38,80,3,91,93,204,94,10,153,56,72,0],[160,109,116,156,243,230,209,211,29,219,17,87,228,134,197,52,167,174,133,21,113,25,85,36,90,245,228,79,66,87,114,46,39,0],[160,234,85,204,14,74,84,96,216,235,139,169,174,188,79,111,92,209,207,167,162,47,138,27,77,220,119,93,56,197,196,12,159,0],[160,96,164,94,198,66,93,24,209,234,0,105,195,26,66,85,188,155,170,172,252,49,109,111,151,41,55,125,131,148,93,100,107,0],[160,102,169,82,198,144,176,62,55,232,164,14,215,234,58,4,98,107,114,203,112,99,172,101,218,151,140,23,163,68,122,182,9,0],[160,181,221,183,228,80,79,15,233,9,59,124,56,137,118,27,182,146,52,215,105,246,48,148,29,21,126,221,25,104,217,60,53,0],[160,128,15,176,199,139,63,103,195,229,91,52,59,211,65,89,64,79,179,139,132,57,156,21,28,21,42,161,182,22,124,38,233,0],[160,5,244,200,187,143,8,84,83,48,169,247,34,137,34,28,5,90,174,205,176,32,237,146,119,229,53,238,239,124,46,99,26,0],[160,151,124,238,145,179,177,25,87,187,254,224,157,186,53,78,237,65,4,242,28,27,232,57,35,54,116,143,141,142,222,173,47,0],[160,153,204,205,170,68,197,244,33,216,144,97,187,247,155,14,237,83,136,150,151,80,184,49,215,91,219,88,84,53,99,129,161,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,199,7,37,185,37,91,182,45,165,122,208,185,90,144,11,45,139,168,225,124,74,246,60,201,187,119,135,221,233,18,191,221,160,162,175,133,187,219,239,119,151,95,222,27,129,73,222,219,181,13,128,78,7,224,142,244,71,234,19,80,204,169,244,0,87,160,58,60,54,149,3,205,76,32,114,171,130,231,241,27,85,217,154,210,18,227,106,225,149,84,154,52,148,232,21,66,116,31,160,253,163,202,142,157,155,138,225,162,235,57,54,88,186,254,215,44,218,114,226,22,108,52,0,22,210,251,90,59,245,132,164,160,88,253,168,183,167,24,59,71,66,2,138,202,246,220,159,159,205,204,132,25,74,204,132,126,11,108,227,31,33,134,168,54,160,174,159,215,246,148,47,251,128,68,133,135,143,4,201,65,126,102,248,78,59,98,133,77,240,253,90,78,164,148,100,175,48,160,221,79,222,160,107,166,177,105,81,79,147,190,19,10,157,79,207,51,221,79,73,38,80,3,91,93,204,94,10,153,56,72,160,109,116,156,243,230,209,211,29,219,17,87,228,134,197,52,167,174,133,21,113,25,85,36,90,245,228,79,66,87,114,46,39,160,234,85,204,14,74,84,96,216,235,139,169,174,188,79,111,92,209,207,167,162,47,138,27,77,220,119,93,56,197,196,12,159,160,96,164,94,198,66,93,24,209,234,0,105,195,26,66,85,188,155,170,172,252,49,109,111,151,41,55,125,131,148,93,100,107,160,102,169,82,198,144,176,62,55,232,164,14,215,234,58,4,98,107,114,203,112,99,172,101,218,151,140,23,163,68,122,182,9,160,181,221,183,228,80,79,15,233,9,59,124,56,137,118,27,182,146,52,215,105,246,48,148,29,21,126,221,25,104,217,60,53,160,128,15,176,199,139,63,103,195,229,91,52,59,211,65,89,64,79,179,139,132,57,156,21,28,21,42,161,182,22,124,38,233,160,5,244,200,187,143,8,84,83,48,169,247,34,137,34,28,5,90,174,205,176,32,237,146,119,229,53,238,239,124,46,99,26,160,151,124,238,145,179,177,25,87,187,254,224,157,186,53,78,237,65,4,242,28,27,232,57,35,54,116,143,141,142,222,173,47,160,153,204,205,170,68,197,244,33,216,144,97,187,247,155,14,237,83,136,150,151,80,184,49,215,91,219,88,84,53,99,129,161,128],[249,2,17,160,199,7,37,185,37,91,182,45,165,122,208,185,90,144,11,45,139,168,225,124,74,246,60,201,187,119,135,221,233,18,191,221,160,162,175,133,187,219,239,119,151,95,222,27,129,73,222,219,181,13,128,78,7,224,142,244,71,234,19,80,204,169,244,0,87,160,58,60,54,149,3,205,76,32,114,171,130,231,241,27,85,217,154,210,18,227,106,225,149,84,154,52,148,232,21,66,116,31,160,253,163,202,142,157,155,138,225,162,235,57,54,88,186,254,215,44,218,114,226,22,108,52,0,22,210,251,90,59,245,132,164,160,88,253,168,183,167,24,59,71,66,2,138,202,246,220,159,159,205,204,132,25,74,204,132,126,11,108,227,31,33,134,168,54,160,174,159,215,246,148,47,251,128,68,133,135,143,4,201,65,126,102,248,78,59,98,133,77,240,253,90,78,164,148,100,175,48,160,221,79,222,160,107,166,177,105,81,79,147,190,19,10,157,79,207,51,221,79,73,38,80,3,91,93,204,94,10,153,56,72,160,109,116,156,243,230,209,211,29,219,17,87,228,134,197,52,167,174,133,21,113,25,85,36,90,245,228,79,66,87,114,46,39,160,234,85,204,14,74,84,96,216,235,139,169,174,188,79,111,92,209,207,167,162,47,138,27,77,220,119,93,56,197,196,12,159,160,96,164,94,198,66,93,24,209,234,0,105,195,26,66,85,188,155,170,172,252,49,109,111,151,41,55,125,131,148,93,100,107,160,217,76,109,98,178,50,235,121,192,40,249,242,190,222,83,20,24,210,214,114,119,102,137,143,188,75,174,187,212,151,28,17,160,181,221,183,228,80,79,15,233,9,59,124,56,137,118,27,182,146,52,215,105,246,48,148,29,21,126,221,25,104,217,60,53,160,128,15,176,199,139,63,103,195,229,91,52,59,211,65,89,64,79,179,139,132,57,156,21,28,21,42,161,182,22,124,38,233,160,5,244,200,187,143,8,84,83,48,169,247,34,137,34,28,5,90,174,205,176,32,237,146,119,229,53,238,239,124,46,99,26,160,151,124,238,145,179,177,25,87,187,254,224,157,186,53,78,237,65,4,242,28,27,232,57,35,54,116,143,141,142,222,173,47,160,153,204,205,170,68,197,244,33,216,144,97,187,247,155,14,237,83,136,150,151,80,184,49,215,91,219,88,84,53,99,129,161,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,120,2,60,31,9,17,112,248,248,27,140,144,148,184,163,236,254,52,52,111,219,1,75,134,94,72,130,237,11,201,94,204,0],[160,10,11,149,12,142,202,194,193,83,24,24,104,171,96,161,219,119,65,137,93,44,91,87,80,60,110,159,30,86,188,100,10,0],[160,39,121,230,39,167,161,129,53,122,169,245,140,52,23,2,36,165,188,119,4,45,196,106,160,65,112,91,107,79,132,116,69,0],[160,88,185,52,166,252,165,200,178,180,95,208,36,154,103,209,50,6,89,195,66,174,93,158,61,84,76,85,250,207,133,47,240,0],[160,213,56,164,23,6,58,156,182,33,182,7,204,68,61,175,98,92,118,160,197,33,115,111,122,107,128,91,161,33,6,92,45,0],[160,202,229,249,81,1,238,228,32,21,81,101,141,32,137,53,56,45,123,217,147,25,161,92,21,136,222,179,159,179,72,221,134,0],[160,201,122,133,107,231,72,116,35,25,99,12,164,48,114,64,245,167,84,164,45,115,146,165,202,133,239,107,149,81,13,134,245,0],[160,87,74,180,16,9,104,174,153,216,77,218,72,245,5,40,122,105,82,214,193,144,67,110,184,80,173,207,63,61,132,109,190,0],[160,166,32,30,7,57,227,117,143,123,252,126,139,162,83,233,9,244,31,101,60,140,116,90,216,231,11,180,90,7,219,55,197,0],[160,154,7,28,59,219,138,240,13,116,245,19,62,193,183,80,141,59,142,71,8,159,225,139,241,102,204,162,22,53,83,177,27,0],[160,66,157,164,229,190,190,234,127,138,65,178,206,129,97,252,116,91,153,125,45,178,214,153,145,25,34,42,100,35,67,168,163,0],[160,189,109,204,118,60,183,213,130,243,213,244,177,200,6,208,183,250,103,85,108,253,44,119,226,37,78,5,61,255,98,56,43,0],[160,226,205,145,71,162,229,17,220,159,79,102,59,146,46,141,196,50,199,6,111,103,207,136,90,253,2,218,84,150,191,222,40,0],[160,68,226,216,228,251,200,128,183,129,191,190,61,165,153,127,206,178,129,208,179,201,118,24,231,116,183,5,84,244,55,137,70,0],[160,53,253,129,135,137,7,110,91,48,159,136,47,210,40,105,124,20,137,53,163,88,15,219,11,222,189,127,93,212,239,229,80,0],[160,80,196,130,226,110,59,147,107,181,45,5,32,36,0,237,119,119,241,111,26,118,253,135,226,12,157,195,107,246,156,102,70,0],[160,97,63,230,41,76,222,85,238,51,105,73,255,26,35,32,204,38,127,237,83,222,99,57,216,142,26,203,127,252,16,25,160,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,10,11,149,12,142,202,194,193,83,24,24,104,171,96,161,219,119,65,137,93,44,91,87,80,60,110,159,30,86,188,100,10,160,39,121,230,39,167,161,129,53,122,169,245,140,52,23,2,36,165,188,119,4,45,196,106,160,65,112,91,107,79,132,116,69,160,88,185,52,166,252,165,200,178,180,95,208,36,154,103,209,50,6,89,195,66,174,93,158,61,84,76,85,250,207,133,47,240,160,213,56,164,23,6,58,156,182,33,182,7,204,68,61,175,98,92,118,160,197,33,115,111,122,107,128,91,161,33,6,92,45,160,202,229,249,81,1,238,228,32,21,81,101,141,32,137,53,56,45,123,217,147,25,161,92,21,136,222,179,159,179,72,221,134,160,201,122,133,107,231,72,116,35,25,99,12,164,48,114,64,245,167,84,164,45,115,146,165,202,133,239,107,149,81,13,134,245,160,87,74,180,16,9,104,174,153,216,77,218,72,245,5,40,122,105,82,214,193,144,67,110,184,80,173,207,63,61,132,109,190,160,166,32,30,7,57,227,117,143,123,252,126,139,162,83,233,9,244,31,101,60,140,116,90,216,231,11,180,90,7,219,55,197,160,154,7,28,59,219,138,240,13,116,245,19,62,193,183,80,141,59,142,71,8,159,225,139,241,102,204,162,22,53,83,177,27,160,66,157,164,229,190,190,234,127,138,65,178,206,129,97,252,116,91,153,125,45,178,214,153,145,25,34,42,100,35,67,168,163,160,189,109,204,118,60,183,213,130,243,213,244,177,200,6,208,183,250,103,85,108,253,44,119,226,37,78,5,61,255,98,56,43,160,226,205,145,71,162,229,17,220,159,79,102,59,146,46,141,196,50,199,6,111,103,207,136,90,253,2,218,84,150,191,222,40,160,68,226,216,228,251,200,128,183,129,191,190,61,165,153,127,206,178,129,208,179,201,118,24,231,116,183,5,84,244,55,137,70,160,53,253,129,135,137,7,110,91,48,159,136,47,210,40,105,124,20,137,53,163,88,15,219,11,222,189,127,93,212,239,229,80,160,80,196,130,226,110,59,147,107,181,45,5,32,36,0,237,119,119,241,111,26,118,253,135,226,12,157,195,107,246,156,102,70,160,97,63,230,41,76,222,85,238,51,105,73,255,26,35,32,204,38,127,237,83,222,99,57,216,142,26,203,127,252,16,25,160,128],[249,2,17,160,10,11,149,12,142,202,194,193,83,24,24,104,171,96,161,219,119,65,137,93,44,91,87,80,60,110,159,30,86,188,100,10,160,39,121,230,39,167,161,129,53,122,169,245,140,52,23,2,36,165,188,119,4,45,196,106,160,65,112,91,107,79,132,116,69,160,88,185,52,166,252,165,200,178,180,95,208,36,154,103,209,50,6,89,195,66,174,93,158,61,84,76,85,250,207,133,47,240,160,213,56,164,23,6,58,156,182,33,182,7,204,68,61,175,98,92,118,160,197,33,115,111,122,107,128,91,161,33,6,92,45,160,202,229,249,81,1,238,228,32,21,81,101,141,32,137,53,56,45,123,217,147,25,161,92,21,136,222,179,159,179,72,221,134,160,201,122,133,107,231,72,116,35,25,99,12,164,48,114,64,245,167,84,164,45,115,146,165,202,133,239,107,149,81,13,134,245,160,87,74,180,16,9,104,174,153,216,77,218,72,245,5,40,122,105,82,214,193,144,67,110,184,80,173,207,63,61,132,109,190,160,166,32,30,7,57,227,117,143,123,252,126,139,162,83,233,9,244,31,101,60,140,116,90,216,231,11,180,90,7,219,55,197,160,154,7,28,59,219,138,240,13,116,245,19,62,193,183,80,141,59,142,71,8,159,225,139,241,102,204,162,22,53,83,177,27,160,66,157,164,229,190,190,234,127,138,65,178,206,129,97,252,116,91,153,125,45,178,214,153,145,25,34,42,100,35,67,168,163,160,189,109,204,118,60,183,213,130,243,213,244,177,200,6,208,183,250,103,85,108,253,44,119,226,37,78,5,61,255,98,56,43,160,120,2,60,31,9,17,112,248,248,27,140,144,148,184,163,236,254,52,52,111,219,1,75,134,94,72,130,237,11,201,94,204,160,68,226,216,228,251,200,128,183,129,191,190,61,165,153,127,206,178,129,208,179,201,118,24,231,116,183,5,84,244,55,137,70,160,53,253,129,135,137,7,110,91,48,159,136,47,210,40,105,124,20,137,53,163,88,15,219,11,222,189,127,93,212,239,229,80,160,80,196,130,226,110,59,147,107,181,45,5,32,36,0,237,119,119,241,111,26,118,253,135,226,12,157,195,107,246,156,102,70,160,97,63,230,41,76,222,85,238,51,105,73,255,26,35,32,204,38,127,237,83,222,99,57,216,142,26,203,127,252,16,25,160,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[248,113],[248,113]]}},"account":null,"storage":null,"values":[[160,174,53,33,84,221,67,25,198,136,138,180,139,112,152,200,53,236,70,82,12,221,129,160,106,137,191,105,179,23,60,179,250,0],[160,60,80,140,101,244,4,77,149,17,207,109,243,185,27,241,96,205,177,239,22,0,195,169,22,184,150,243,12,212,246,2,222,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,43,18,36,196,118,46,248,92,235,12,107,111,221,183,28,61,72,129,61,66,149,22,75,46,79,128,52,90,28,242,79,159,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,249,11,221,110,180,103,29,12,225,173,122,7,115,205,15,36,44,225,3,76,172,102,80,84,169,252,251,117,62,71,3,220,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,113,160,60,80,140,101,244,4,77,149,17,207,109,243,185,27,241,96,205,177,239,22,0,195,169,22,184,150,243,12,212,246,2,222,128,128,128,160,43,18,36,196,118,46,248,92,235,12,107,111,221,183,28,61,72,129,61,66,149,22,75,46,79,128,52,90,28,242,79,159,128,128,128,160,249,11,221,110,180,103,29,12,225,173,122,7,115,205,15,36,44,225,3,76,172,102,80,84,169,252,251,117,62,71,3,220,128,128,128,128,128,128,128,128],[248,113,160,60,80,140,101,244,4,77,149,17,207,109,243,185,27,241,96,205,177,239,22,0,195,169,22,184,150,243,12,212,246,2,222,128,128,128,160,174,53,33,84,221,67,25,198,136,138,180,139,112,152,200,53,236,70,82,12,221,129,160,106,137,191,105,179,23,60,179,250,128,128,128,160,249,11,221,110,180,103,29,12,225,173,122,7,115,205,15,36,44,225,3,76,172,102,80,84,169,252,251,117,62,71,3,220,128,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[false,true],"extension":{"list_rlp_bytes":[226]},"branch":{"modified_index":7,"drifted_index":12,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,228,109,34,102,28,235,59,123,49,11,58,169,170,107,94,136,43,144,138,26,216,79,148,120,25,223,117,221,172,143,191,144,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,228,109,34,102,28,235,59,123,49,11,58,169,170,107,94,136,43,144,138,26,216,79,148,120,25,223,117,221,172,143,191,144,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,40,175,194,55,133,111,153,12,72,141,81,152,48,181,135,221,4,182,4,94,221,55,10,244,161,19,55,119,145,105,0,224,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,8,176,198,35,154,142,101,60,122,190,28,220,186,172,13,41,87,208,78,180,0,170,50,74,42,254,1,175,135,116,210,128,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,8,176,198,35,154,142,101,60,122,190,28,220,186,172,13,41,87,208,78,180,0,170,50,74,42,254,1,175,135,116,210,128,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,160,228,109,34,102,28,235,59,123,49,11,58,169,170,107,94,136,43,144,138,26,216,79,148,120,25,223,117,221,172,143,191,144,128,128,128,128,160,40,175,194,55,133,111,153,12,72,141,81,152,48,181,135,221,4,182,4,94,221,55,10,244,161,19,55,119,145,105,0,224,128,128,128,128],[248,81,128,128,128,128,128,128,128,160,228,109,34,102,28,235,59,123,49,11,58,169,170,107,94,136,43,144,138,26,216,79,148,120,25,223,117,221,172,143,191,144,128,128,128,128,160,40,175,194,55,133,111,153,12,72,141,81,152,48,181,135,221,4,182,4,94,221,55,10,244,161,19,55,119,145,105,0,224,128,128,128,128],[226,23,160,8,176,198,35,154,142,101,60,122,190,28,220,186,172,13,41,87,208,78,180,0,170,50,74,42,254,1,175,135,116,210,128],[226,23,160,8,176,198,35,154,142,101,60,122,190,28,220,186,172,13,41,87,208,78,180,0,170,50,74,42,254,1,175,135,116,210,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,166,68],"key":[171,71,114,101,111,62,204,197,79,253,187,249,55,237,203,119,129,118,111,30,207,108,4,216,19,202,228,181,220,226,52,159],"list_rlp_bytes":[[227],[228]],"value_rlp_bytes":[[131],[131]],"drifted_rlp_bytes":[227],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[158,50,101,111,62,204,197,79,253,187,249,55,237,203,119,129,118,111,30,207,108,4,216,19,202,228,181,220,226,52,159,0,0,0],[130,2,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,55,204,40,235,251,240,6,226,51,219,92,249,162,56,187,150,223,67,221,241,124,79,245,19,78,189,186,224,236,172,230,0,0],[130,2,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[158,60,40,235,251,240,6,226,51,219,92,249,162,56,187,150,223,67,221,241,124,79,245,19,78,189,186,224,236,172,230,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[227,158,50,101,111,62,204,197,79,253,187,249,55,237,203,119,129,118,111,30,207,108,4,216,19,202,228,181,220,226,52,159,131,130,2,133],[228,159,55,204,40,235,251,240,6,226,51,219,92,249,162,56,187,150,223,67,221,241,124,79,245,19,78,189,186,224,236,172,230,131,130,2,157],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,166,68],[227,158,60,40,235,251,240,6,226,51,219,92,249,162,56,187,150,223,67,221,241,124,79,245,19,78,189,186,224,236,172,230,131,130,2,157]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ExtensionDeletedThreeKeyBytesSel2.json b/zkevm-circuits/src/mpt_circuit/tests/ExtensionDeletedThreeKeyBytesSel2.json new file mode 100644 index 0000000000..0f50895617 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ExtensionDeletedThreeKeyBytesSel2.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,65,204,15,96,245,218,81,251,91,243,45,106,224,187,170,191,134,127,168,160,77,217,173,210,80,218,187,245,124,140,202,157,0],[160,5,78,184,84,123,84,61,94,128,74,150,68,241,58,46,78,76,101,61,80,141,139,85,21,43,108,228,46,142,21,241,63,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,227,161,228,90,39,187,200,217,133,90,147,54,224,50,111,226,138,250,245,21,37,154,178,43,11,151,240,31,133,85,195,140,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,196,44,227,224,205,196,249,179,76,162,33,210,124,247,41,170,109,53,21,225,145,36,149,221,99,41,109,41,102,237,150,106,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,196,44,227,224,205,196,249,179,76,162,33,210,124,247,41,170,109,53,21,225,145,36,149,221,99,41,109,41,102,237,150,106,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,227,161,228,90,39,187,200,217,133,90,147,54,224,50,111,226,138,250,245,21,37,154,178,43,11,151,240,31,133,85,195,140,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,224,221,251,197,81,183,75,7,235,52,92,142,162,39,77,89,38,153,56,223,129,3,64,104,165,113,77,61,238,249,176,24,0],[160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,0],[160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,0],[160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,0],[160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,0],[160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,0],[160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,0],[160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,0],[160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,0],[160,194,241,212,160,23,101,119,10,214,198,224,25,48,210,213,248,152,202,71,215,60,3,191,152,180,119,170,71,60,169,103,101,0],[160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,0],[160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,0],[160,227,33,91,131,11,140,204,127,36,52,192,187,51,9,224,190,228,17,100,163,82,196,205,244,33,26,240,245,139,112,116,56,0],[160,237,113,19,48,172,139,234,51,70,37,236,44,37,118,182,177,114,98,221,189,39,248,50,83,47,77,215,60,136,159,224,77,0],[160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,0],[160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,0],[160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,160,194,241,212,160,23,101,119,10,214,198,224,25,48,210,213,248,152,202,71,215,60,3,191,152,180,119,170,71,60,169,103,101,160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,160,227,33,91,131,11,140,204,127,36,52,192,187,51,9,224,190,228,17,100,163,82,196,205,244,33,26,240,245,139,112,116,56,160,237,113,19,48,172,139,234,51,70,37,236,44,37,118,182,177,114,98,221,189,39,248,50,83,47,77,215,60,136,159,224,77,160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,128],[249,2,17,160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,160,224,221,251,197,81,183,75,7,235,52,92,142,162,39,77,89,38,153,56,223,129,3,64,104,165,113,77,61,238,249,176,24,160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,160,227,33,91,131,11,140,204,127,36,52,192,187,51,9,224,190,228,17,100,163,82,196,205,244,33,26,240,245,139,112,116,56,160,237,113,19,48,172,139,234,51,70,37,236,44,37,118,182,177,114,98,221,189,39,248,50,83,47,77,215,60,136,159,224,77,160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,195,10,46,26,18,125,216,183,190,226,83,167,164,207,114,95,133,139,59,89,75,157,79,98,113,29,97,225,117,127,190,66,0],[160,92,168,67,167,114,22,27,217,14,103,239,246,29,105,8,65,48,222,155,27,169,254,122,26,44,121,201,21,98,92,78,169,0],[160,147,231,72,90,70,231,94,113,177,149,152,167,211,65,105,196,79,22,2,190,3,201,166,236,17,203,211,123,206,200,57,69,0],[160,79,214,34,60,184,209,156,75,4,50,151,6,46,63,82,233,116,124,161,43,81,210,175,30,190,47,93,162,235,27,42,212,0],[160,174,116,61,4,55,96,101,233,1,220,167,155,177,227,120,63,131,16,165,161,58,111,69,19,89,183,237,166,191,136,153,214,0],[160,234,103,229,226,180,118,226,42,119,106,8,68,122,148,115,208,43,247,208,33,184,113,34,130,253,94,171,190,224,175,178,149,0],[160,125,158,219,111,118,86,76,165,6,232,77,48,127,157,22,4,156,187,55,141,60,75,46,90,201,150,83,154,97,233,111,147,0],[160,159,153,110,67,208,55,108,119,133,186,244,219,97,123,42,57,77,198,67,101,143,21,81,203,232,95,55,175,57,10,141,17,0],[160,253,78,175,142,245,133,131,90,234,72,28,46,246,35,209,189,100,220,208,55,41,17,116,209,235,173,123,93,196,123,147,45,0],[160,25,51,42,32,156,80,212,230,221,248,211,17,155,60,199,224,99,234,112,249,155,63,89,26,253,95,0,38,107,160,60,49,0],[160,55,233,50,240,115,106,200,149,91,112,170,81,113,132,55,5,199,194,255,66,187,210,3,197,119,33,146,102,217,129,115,38,0],[160,112,154,58,83,111,210,116,192,71,120,152,185,215,113,63,78,224,149,162,179,187,158,41,175,40,73,231,24,66,243,78,152,0],[160,225,226,232,116,233,52,143,62,86,128,184,236,176,34,105,29,104,168,91,90,89,17,9,237,227,14,98,153,206,207,86,176,0],[160,148,120,183,48,28,252,97,156,9,151,71,9,58,158,163,211,10,158,80,13,200,188,124,124,135,250,19,35,0,49,94,241,0],[160,219,185,81,58,189,178,31,226,43,92,85,50,149,112,246,78,245,2,232,234,198,28,75,98,40,204,225,220,228,247,251,247,0],[160,44,15,94,183,58,251,85,52,218,221,167,27,84,128,112,235,31,234,65,19,117,17,83,124,42,165,186,33,116,183,63,90,0],[160,136,4,90,22,214,62,100,89,115,0,96,138,213,52,252,154,225,43,23,85,174,103,221,27,128,84,55,63,146,81,247,217,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,92,168,67,167,114,22,27,217,14,103,239,246,29,105,8,65,48,222,155,27,169,254,122,26,44,121,201,21,98,92,78,169,160,147,231,72,90,70,231,94,113,177,149,152,167,211,65,105,196,79,22,2,190,3,201,166,236,17,203,211,123,206,200,57,69,160,79,214,34,60,184,209,156,75,4,50,151,6,46,63,82,233,116,124,161,43,81,210,175,30,190,47,93,162,235,27,42,212,160,174,116,61,4,55,96,101,233,1,220,167,155,177,227,120,63,131,16,165,161,58,111,69,19,89,183,237,166,191,136,153,214,160,234,103,229,226,180,118,226,42,119,106,8,68,122,148,115,208,43,247,208,33,184,113,34,130,253,94,171,190,224,175,178,149,160,125,158,219,111,118,86,76,165,6,232,77,48,127,157,22,4,156,187,55,141,60,75,46,90,201,150,83,154,97,233,111,147,160,159,153,110,67,208,55,108,119,133,186,244,219,97,123,42,57,77,198,67,101,143,21,81,203,232,95,55,175,57,10,141,17,160,253,78,175,142,245,133,131,90,234,72,28,46,246,35,209,189,100,220,208,55,41,17,116,209,235,173,123,93,196,123,147,45,160,25,51,42,32,156,80,212,230,221,248,211,17,155,60,199,224,99,234,112,249,155,63,89,26,253,95,0,38,107,160,60,49,160,55,233,50,240,115,106,200,149,91,112,170,81,113,132,55,5,199,194,255,66,187,210,3,197,119,33,146,102,217,129,115,38,160,112,154,58,83,111,210,116,192,71,120,152,185,215,113,63,78,224,149,162,179,187,158,41,175,40,73,231,24,66,243,78,152,160,225,226,232,116,233,52,143,62,86,128,184,236,176,34,105,29,104,168,91,90,89,17,9,237,227,14,98,153,206,207,86,176,160,148,120,183,48,28,252,97,156,9,151,71,9,58,158,163,211,10,158,80,13,200,188,124,124,135,250,19,35,0,49,94,241,160,219,185,81,58,189,178,31,226,43,92,85,50,149,112,246,78,245,2,232,234,198,28,75,98,40,204,225,220,228,247,251,247,160,44,15,94,183,58,251,85,52,218,221,167,27,84,128,112,235,31,234,65,19,117,17,83,124,42,165,186,33,116,183,63,90,160,136,4,90,22,214,62,100,89,115,0,96,138,213,52,252,154,225,43,23,85,174,103,221,27,128,84,55,63,146,81,247,217,128],[249,2,17,160,92,168,67,167,114,22,27,217,14,103,239,246,29,105,8,65,48,222,155,27,169,254,122,26,44,121,201,21,98,92,78,169,160,147,231,72,90,70,231,94,113,177,149,152,167,211,65,105,196,79,22,2,190,3,201,166,236,17,203,211,123,206,200,57,69,160,79,214,34,60,184,209,156,75,4,50,151,6,46,63,82,233,116,124,161,43,81,210,175,30,190,47,93,162,235,27,42,212,160,174,116,61,4,55,96,101,233,1,220,167,155,177,227,120,63,131,16,165,161,58,111,69,19,89,183,237,166,191,136,153,214,160,234,103,229,226,180,118,226,42,119,106,8,68,122,148,115,208,43,247,208,33,184,113,34,130,253,94,171,190,224,175,178,149,160,125,158,219,111,118,86,76,165,6,232,77,48,127,157,22,4,156,187,55,141,60,75,46,90,201,150,83,154,97,233,111,147,160,159,153,110,67,208,55,108,119,133,186,244,219,97,123,42,57,77,198,67,101,143,21,81,203,232,95,55,175,57,10,141,17,160,253,78,175,142,245,133,131,90,234,72,28,46,246,35,209,189,100,220,208,55,41,17,116,209,235,173,123,93,196,123,147,45,160,195,10,46,26,18,125,216,183,190,226,83,167,164,207,114,95,133,139,59,89,75,157,79,98,113,29,97,225,117,127,190,66,160,55,233,50,240,115,106,200,149,91,112,170,81,113,132,55,5,199,194,255,66,187,210,3,197,119,33,146,102,217,129,115,38,160,112,154,58,83,111,210,116,192,71,120,152,185,215,113,63,78,224,149,162,179,187,158,41,175,40,73,231,24,66,243,78,152,160,225,226,232,116,233,52,143,62,86,128,184,236,176,34,105,29,104,168,91,90,89,17,9,237,227,14,98,153,206,207,86,176,160,148,120,183,48,28,252,97,156,9,151,71,9,58,158,163,211,10,158,80,13,200,188,124,124,135,250,19,35,0,49,94,241,160,219,185,81,58,189,178,31,226,43,92,85,50,149,112,246,78,245,2,232,234,198,28,75,98,40,204,225,220,228,247,251,247,160,44,15,94,183,58,251,85,52,218,221,167,27,84,128,112,235,31,234,65,19,117,17,83,124,42,165,186,33,116,183,63,90,160,136,4,90,22,214,62,100,89,115,0,96,138,213,52,252,154,225,43,23,85,174,103,221,27,128,84,55,63,146,81,247,217,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,214,41,19,173,84,136,238,36,215,12,44,155,79,110,74,177,92,88,235,254,95,26,43,186,164,206,67,222,147,105,52,182,0],[160,134,18,75,116,191,180,170,7,164,2,130,19,108,230,123,215,225,22,145,97,207,34,177,168,140,222,37,221,11,72,129,242,0],[160,78,47,202,223,147,142,0,183,20,7,218,89,25,105,43,56,236,60,188,219,128,33,39,149,112,185,247,50,217,133,87,225,0],[160,144,55,233,72,198,175,219,121,126,1,64,144,160,178,123,207,8,24,185,147,149,205,178,0,141,77,45,53,217,39,52,154,0],[160,145,133,86,119,88,110,78,222,182,116,93,169,20,223,243,251,8,128,182,102,75,187,164,93,133,132,8,21,142,238,33,127,0],[160,223,175,93,224,150,84,41,208,56,116,40,195,81,34,83,42,162,137,128,92,31,28,197,139,154,150,233,139,210,69,225,105,0],[160,164,223,222,68,23,136,197,25,123,9,133,30,52,39,239,219,116,181,199,208,139,79,113,33,132,23,102,145,93,122,66,138,0],[160,95,121,253,137,77,36,143,232,237,31,135,134,252,15,197,77,83,132,152,22,183,176,210,122,91,126,225,127,210,102,79,185,0],[160,106,29,87,118,248,25,198,229,240,5,186,130,27,32,24,169,15,213,67,215,45,200,195,221,119,145,154,223,127,129,121,148,0],[160,6,135,18,174,154,122,193,139,163,88,240,34,21,5,64,192,174,237,105,74,188,159,65,179,108,54,113,115,221,8,69,110,0],[160,116,84,145,214,88,243,186,151,248,41,219,115,26,39,173,51,147,147,233,241,158,106,143,170,92,92,216,23,2,103,69,80,0],[160,150,70,38,233,135,45,3,175,53,157,18,100,102,78,178,202,133,168,248,140,34,222,231,173,151,185,254,97,94,92,165,162,0],[160,179,200,169,0,94,240,4,87,147,61,52,36,179,172,16,166,200,148,253,73,182,201,201,248,223,10,198,198,247,184,123,131,0],[160,120,168,240,51,183,53,255,178,143,61,122,43,226,191,51,213,220,34,214,172,62,177,47,70,54,41,36,178,50,78,142,76,0],[160,219,168,214,111,42,214,74,148,23,52,48,82,236,216,67,250,16,95,149,205,130,130,231,122,98,17,117,83,173,251,163,56,0],[160,124,156,154,170,36,23,227,152,201,50,24,110,233,199,142,162,242,124,224,249,59,58,68,123,16,24,28,227,103,103,146,174,0],[160,85,145,77,253,172,65,75,215,211,182,248,58,185,136,179,45,249,152,108,78,226,157,231,42,111,122,36,151,73,41,117,58,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,134,18,75,116,191,180,170,7,164,2,130,19,108,230,123,215,225,22,145,97,207,34,177,168,140,222,37,221,11,72,129,242,160,78,47,202,223,147,142,0,183,20,7,218,89,25,105,43,56,236,60,188,219,128,33,39,149,112,185,247,50,217,133,87,225,160,144,55,233,72,198,175,219,121,126,1,64,144,160,178,123,207,8,24,185,147,149,205,178,0,141,77,45,53,217,39,52,154,160,145,133,86,119,88,110,78,222,182,116,93,169,20,223,243,251,8,128,182,102,75,187,164,93,133,132,8,21,142,238,33,127,160,223,175,93,224,150,84,41,208,56,116,40,195,81,34,83,42,162,137,128,92,31,28,197,139,154,150,233,139,210,69,225,105,160,164,223,222,68,23,136,197,25,123,9,133,30,52,39,239,219,116,181,199,208,139,79,113,33,132,23,102,145,93,122,66,138,160,95,121,253,137,77,36,143,232,237,31,135,134,252,15,197,77,83,132,152,22,183,176,210,122,91,126,225,127,210,102,79,185,160,106,29,87,118,248,25,198,229,240,5,186,130,27,32,24,169,15,213,67,215,45,200,195,221,119,145,154,223,127,129,121,148,160,6,135,18,174,154,122,193,139,163,88,240,34,21,5,64,192,174,237,105,74,188,159,65,179,108,54,113,115,221,8,69,110,160,116,84,145,214,88,243,186,151,248,41,219,115,26,39,173,51,147,147,233,241,158,106,143,170,92,92,216,23,2,103,69,80,160,150,70,38,233,135,45,3,175,53,157,18,100,102,78,178,202,133,168,248,140,34,222,231,173,151,185,254,97,94,92,165,162,160,179,200,169,0,94,240,4,87,147,61,52,36,179,172,16,166,200,148,253,73,182,201,201,248,223,10,198,198,247,184,123,131,160,120,168,240,51,183,53,255,178,143,61,122,43,226,191,51,213,220,34,214,172,62,177,47,70,54,41,36,178,50,78,142,76,160,219,168,214,111,42,214,74,148,23,52,48,82,236,216,67,250,16,95,149,205,130,130,231,122,98,17,117,83,173,251,163,56,160,124,156,154,170,36,23,227,152,201,50,24,110,233,199,142,162,242,124,224,249,59,58,68,123,16,24,28,227,103,103,146,174,160,85,145,77,253,172,65,75,215,211,182,248,58,185,136,179,45,249,152,108,78,226,157,231,42,111,122,36,151,73,41,117,58,128],[249,2,17,160,134,18,75,116,191,180,170,7,164,2,130,19,108,230,123,215,225,22,145,97,207,34,177,168,140,222,37,221,11,72,129,242,160,78,47,202,223,147,142,0,183,20,7,218,89,25,105,43,56,236,60,188,219,128,33,39,149,112,185,247,50,217,133,87,225,160,144,55,233,72,198,175,219,121,126,1,64,144,160,178,123,207,8,24,185,147,149,205,178,0,141,77,45,53,217,39,52,154,160,145,133,86,119,88,110,78,222,182,116,93,169,20,223,243,251,8,128,182,102,75,187,164,93,133,132,8,21,142,238,33,127,160,223,175,93,224,150,84,41,208,56,116,40,195,81,34,83,42,162,137,128,92,31,28,197,139,154,150,233,139,210,69,225,105,160,164,223,222,68,23,136,197,25,123,9,133,30,52,39,239,219,116,181,199,208,139,79,113,33,132,23,102,145,93,122,66,138,160,95,121,253,137,77,36,143,232,237,31,135,134,252,15,197,77,83,132,152,22,183,176,210,122,91,126,225,127,210,102,79,185,160,106,29,87,118,248,25,198,229,240,5,186,130,27,32,24,169,15,213,67,215,45,200,195,221,119,145,154,223,127,129,121,148,160,6,135,18,174,154,122,193,139,163,88,240,34,21,5,64,192,174,237,105,74,188,159,65,179,108,54,113,115,221,8,69,110,160,116,84,145,214,88,243,186,151,248,41,219,115,26,39,173,51,147,147,233,241,158,106,143,170,92,92,216,23,2,103,69,80,160,214,41,19,173,84,136,238,36,215,12,44,155,79,110,74,177,92,88,235,254,95,26,43,186,164,206,67,222,147,105,52,182,160,179,200,169,0,94,240,4,87,147,61,52,36,179,172,16,166,200,148,253,73,182,201,201,248,223,10,198,198,247,184,123,131,160,120,168,240,51,183,53,255,178,143,61,122,43,226,191,51,213,220,34,214,172,62,177,47,70,54,41,36,178,50,78,142,76,160,219,168,214,111,42,214,74,148,23,52,48,82,236,216,67,250,16,95,149,205,130,130,231,122,98,17,117,83,173,251,163,56,160,124,156,154,170,36,23,227,152,201,50,24,110,233,199,142,162,242,124,224,249,59,58,68,123,16,24,28,227,103,103,146,174,160,85,145,77,253,172,65,75,215,211,182,248,58,185,136,179,45,249,152,108,78,226,157,231,42,111,122,36,151,73,41,117,58,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,94,64,184,42,252,142,104,65,135,123,135,124,196,247,70,240,76,105,118,243,14,129,178,240,171,19,145,163,66,174,32,119,0],[160,175,84,201,168,228,0,184,154,71,8,92,173,125,235,98,158,248,249,163,199,53,84,89,122,190,11,45,14,4,56,139,43,0],[160,142,201,232,22,116,220,124,158,250,130,181,222,224,24,63,147,141,188,222,77,0,220,29,141,150,62,8,171,138,29,252,209,0],[160,43,82,36,255,85,80,32,35,237,40,104,243,105,18,187,137,194,177,232,54,21,103,44,30,254,80,168,66,245,158,83,79,0],[160,199,248,224,68,250,84,45,149,144,216,217,183,28,234,166,202,133,78,73,59,66,136,131,44,223,246,37,34,104,150,52,96,0],[160,91,187,179,34,48,181,196,195,52,190,54,219,19,198,69,14,89,197,103,201,37,195,102,211,18,23,168,229,43,138,126,166,0],[160,156,22,131,145,232,27,156,162,219,37,159,68,129,123,105,144,118,55,156,115,111,145,57,173,206,144,92,72,84,204,229,34,0],[160,7,107,81,25,26,255,62,129,126,244,23,74,88,155,42,10,129,255,100,189,27,175,76,182,57,79,189,228,23,14,59,224,0],[160,160,222,138,204,126,5,9,221,201,239,253,194,190,50,207,247,235,193,205,95,239,232,189,74,23,32,181,39,64,160,254,172,0],[160,147,72,42,4,64,23,97,208,74,152,53,61,196,94,145,148,169,105,181,67,15,227,173,113,85,253,202,91,50,209,199,244,0],[160,188,173,251,149,23,183,233,144,48,43,230,24,50,84,224,115,129,1,68,119,2,218,141,68,15,233,86,139,89,93,74,203,0],[160,102,151,157,26,53,173,210,98,115,132,145,119,244,39,245,252,104,216,31,69,131,231,223,7,112,239,55,221,191,85,160,112,0],[160,224,46,12,209,28,18,176,43,179,57,8,56,32,133,216,171,79,2,182,9,212,33,72,218,152,134,174,108,239,0,246,100,0],[160,188,166,110,94,36,173,44,240,98,88,79,171,31,58,32,75,171,14,6,154,13,149,86,185,160,13,217,30,139,79,41,249,0],[160,99,219,116,210,28,45,78,210,100,149,253,18,232,9,108,184,255,219,26,65,8,198,216,44,78,230,45,205,141,83,166,231,0],[160,224,140,208,196,146,152,233,198,247,167,124,19,188,237,106,87,176,88,233,144,194,46,73,253,22,190,140,198,217,211,101,182,0],[160,12,58,31,198,128,244,206,15,81,55,193,6,40,179,252,156,66,188,220,145,173,229,251,52,144,251,255,113,57,53,211,128,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,175,84,201,168,228,0,184,154,71,8,92,173,125,235,98,158,248,249,163,199,53,84,89,122,190,11,45,14,4,56,139,43,160,142,201,232,22,116,220,124,158,250,130,181,222,224,24,63,147,141,188,222,77,0,220,29,141,150,62,8,171,138,29,252,209,160,43,82,36,255,85,80,32,35,237,40,104,243,105,18,187,137,194,177,232,54,21,103,44,30,254,80,168,66,245,158,83,79,160,199,248,224,68,250,84,45,149,144,216,217,183,28,234,166,202,133,78,73,59,66,136,131,44,223,246,37,34,104,150,52,96,160,91,187,179,34,48,181,196,195,52,190,54,219,19,198,69,14,89,197,103,201,37,195,102,211,18,23,168,229,43,138,126,166,160,156,22,131,145,232,27,156,162,219,37,159,68,129,123,105,144,118,55,156,115,111,145,57,173,206,144,92,72,84,204,229,34,160,7,107,81,25,26,255,62,129,126,244,23,74,88,155,42,10,129,255,100,189,27,175,76,182,57,79,189,228,23,14,59,224,160,160,222,138,204,126,5,9,221,201,239,253,194,190,50,207,247,235,193,205,95,239,232,189,74,23,32,181,39,64,160,254,172,160,147,72,42,4,64,23,97,208,74,152,53,61,196,94,145,148,169,105,181,67,15,227,173,113,85,253,202,91,50,209,199,244,160,188,173,251,149,23,183,233,144,48,43,230,24,50,84,224,115,129,1,68,119,2,218,141,68,15,233,86,139,89,93,74,203,160,102,151,157,26,53,173,210,98,115,132,145,119,244,39,245,252,104,216,31,69,131,231,223,7,112,239,55,221,191,85,160,112,160,224,46,12,209,28,18,176,43,179,57,8,56,32,133,216,171,79,2,182,9,212,33,72,218,152,134,174,108,239,0,246,100,160,188,166,110,94,36,173,44,240,98,88,79,171,31,58,32,75,171,14,6,154,13,149,86,185,160,13,217,30,139,79,41,249,160,99,219,116,210,28,45,78,210,100,149,253,18,232,9,108,184,255,219,26,65,8,198,216,44,78,230,45,205,141,83,166,231,160,224,140,208,196,146,152,233,198,247,167,124,19,188,237,106,87,176,88,233,144,194,46,73,253,22,190,140,198,217,211,101,182,160,12,58,31,198,128,244,206,15,81,55,193,6,40,179,252,156,66,188,220,145,173,229,251,52,144,251,255,113,57,53,211,128,128],[249,2,17,160,175,84,201,168,228,0,184,154,71,8,92,173,125,235,98,158,248,249,163,199,53,84,89,122,190,11,45,14,4,56,139,43,160,142,201,232,22,116,220,124,158,250,130,181,222,224,24,63,147,141,188,222,77,0,220,29,141,150,62,8,171,138,29,252,209,160,43,82,36,255,85,80,32,35,237,40,104,243,105,18,187,137,194,177,232,54,21,103,44,30,254,80,168,66,245,158,83,79,160,199,248,224,68,250,84,45,149,144,216,217,183,28,234,166,202,133,78,73,59,66,136,131,44,223,246,37,34,104,150,52,96,160,91,187,179,34,48,181,196,195,52,190,54,219,19,198,69,14,89,197,103,201,37,195,102,211,18,23,168,229,43,138,126,166,160,156,22,131,145,232,27,156,162,219,37,159,68,129,123,105,144,118,55,156,115,111,145,57,173,206,144,92,72,84,204,229,34,160,7,107,81,25,26,255,62,129,126,244,23,74,88,155,42,10,129,255,100,189,27,175,76,182,57,79,189,228,23,14,59,224,160,160,222,138,204,126,5,9,221,201,239,253,194,190,50,207,247,235,193,205,95,239,232,189,74,23,32,181,39,64,160,254,172,160,147,72,42,4,64,23,97,208,74,152,53,61,196,94,145,148,169,105,181,67,15,227,173,113,85,253,202,91,50,209,199,244,160,188,173,251,149,23,183,233,144,48,43,230,24,50,84,224,115,129,1,68,119,2,218,141,68,15,233,86,139,89,93,74,203,160,102,151,157,26,53,173,210,98,115,132,145,119,244,39,245,252,104,216,31,69,131,231,223,7,112,239,55,221,191,85,160,112,160,224,46,12,209,28,18,176,43,179,57,8,56,32,133,216,171,79,2,182,9,212,33,72,218,152,134,174,108,239,0,246,100,160,188,166,110,94,36,173,44,240,98,88,79,171,31,58,32,75,171,14,6,154,13,149,86,185,160,13,217,30,139,79,41,249,160,99,219,116,210,28,45,78,210,100,149,253,18,232,9,108,184,255,219,26,65,8,198,216,44,78,230,45,205,141,83,166,231,160,94,64,184,42,252,142,104,65,135,123,135,124,196,247,70,240,76,105,118,243,14,129,178,240,171,19,145,163,66,174,32,119,160,12,58,31,198,128,244,206,15,81,55,193,6,40,179,252,156,66,188,220,145,173,229,251,52,144,251,255,113,57,53,211,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,96,25,108,200,147,183,13,58,23,166,31,99,65,35,93,152,35,118,188,36,67,64,224,89,167,217,194,253,37,55,183,18,0],[160,157,49,72,9,168,199,212,244,19,227,138,187,221,172,227,129,144,156,118,150,91,227,148,137,72,70,215,182,58,214,44,115,0],[160,142,225,153,94,68,106,155,61,66,178,80,180,215,142,156,253,243,134,191,242,5,207,71,100,16,212,112,37,12,25,238,188,0],[160,140,141,162,205,54,205,240,101,110,0,228,214,15,40,73,117,219,138,201,103,43,172,6,65,57,60,55,76,28,96,30,9,0],[160,209,132,91,50,7,206,222,2,220,61,71,168,112,0,240,136,185,234,200,4,119,133,78,71,104,8,88,33,42,230,199,221,0],[160,115,130,29,45,240,44,28,74,54,186,2,67,237,211,183,192,241,136,110,218,65,164,123,13,6,99,21,224,84,47,151,153,0],[160,99,180,74,154,244,189,179,217,85,13,247,31,164,236,82,50,88,126,187,178,133,112,174,248,160,163,235,100,42,208,151,212,0],[160,184,235,63,13,150,149,63,0,117,245,64,101,234,142,239,154,85,223,14,32,62,9,252,8,66,98,194,151,9,62,194,139,0],[160,63,47,136,104,4,254,131,213,54,7,151,77,47,137,73,115,236,252,190,88,202,63,181,125,59,155,172,181,54,202,17,247,0],[160,3,113,57,152,230,40,254,195,180,164,231,57,17,131,232,25,46,172,92,94,145,124,198,160,229,175,124,227,247,19,159,40,0],[160,103,163,129,235,75,3,208,75,23,179,108,227,78,160,223,91,208,98,91,233,160,198,86,8,132,8,224,237,48,254,138,118,0],[160,95,220,47,9,122,22,99,24,49,39,245,220,13,228,123,192,147,13,125,168,58,88,177,21,196,62,74,159,229,39,41,79,0],[160,88,166,30,78,145,240,20,49,216,127,251,238,250,252,128,216,101,94,197,137,252,132,68,61,207,8,190,224,63,213,234,112,0],[160,116,89,226,121,210,213,34,98,150,193,117,200,198,226,209,171,51,221,129,162,168,233,129,169,195,196,96,49,192,36,139,71,0],[160,117,186,44,188,138,184,207,119,18,231,39,75,241,26,152,158,180,92,44,216,195,156,39,233,176,208,14,8,191,59,189,141,0],[160,72,83,39,121,92,221,181,157,125,58,78,202,133,71,192,52,39,95,40,36,240,218,84,67,66,217,87,122,179,51,152,18,0],[160,138,88,60,199,109,25,5,160,200,80,209,157,157,200,33,124,103,16,1,26,155,5,124,88,251,171,29,219,176,76,185,159,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,157,49,72,9,168,199,212,244,19,227,138,187,221,172,227,129,144,156,118,150,91,227,148,137,72,70,215,182,58,214,44,115,160,142,225,153,94,68,106,155,61,66,178,80,180,215,142,156,253,243,134,191,242,5,207,71,100,16,212,112,37,12,25,238,188,160,140,141,162,205,54,205,240,101,110,0,228,214,15,40,73,117,219,138,201,103,43,172,6,65,57,60,55,76,28,96,30,9,160,209,132,91,50,7,206,222,2,220,61,71,168,112,0,240,136,185,234,200,4,119,133,78,71,104,8,88,33,42,230,199,221,160,115,130,29,45,240,44,28,74,54,186,2,67,237,211,183,192,241,136,110,218,65,164,123,13,6,99,21,224,84,47,151,153,160,99,180,74,154,244,189,179,217,85,13,247,31,164,236,82,50,88,126,187,178,133,112,174,248,160,163,235,100,42,208,151,212,160,184,235,63,13,150,149,63,0,117,245,64,101,234,142,239,154,85,223,14,32,62,9,252,8,66,98,194,151,9,62,194,139,160,63,47,136,104,4,254,131,213,54,7,151,77,47,137,73,115,236,252,190,88,202,63,181,125,59,155,172,181,54,202,17,247,160,3,113,57,152,230,40,254,195,180,164,231,57,17,131,232,25,46,172,92,94,145,124,198,160,229,175,124,227,247,19,159,40,160,103,163,129,235,75,3,208,75,23,179,108,227,78,160,223,91,208,98,91,233,160,198,86,8,132,8,224,237,48,254,138,118,160,95,220,47,9,122,22,99,24,49,39,245,220,13,228,123,192,147,13,125,168,58,88,177,21,196,62,74,159,229,39,41,79,160,88,166,30,78,145,240,20,49,216,127,251,238,250,252,128,216,101,94,197,137,252,132,68,61,207,8,190,224,63,213,234,112,160,116,89,226,121,210,213,34,98,150,193,117,200,198,226,209,171,51,221,129,162,168,233,129,169,195,196,96,49,192,36,139,71,160,117,186,44,188,138,184,207,119,18,231,39,75,241,26,152,158,180,92,44,216,195,156,39,233,176,208,14,8,191,59,189,141,160,72,83,39,121,92,221,181,157,125,58,78,202,133,71,192,52,39,95,40,36,240,218,84,67,66,217,87,122,179,51,152,18,160,138,88,60,199,109,25,5,160,200,80,209,157,157,200,33,124,103,16,1,26,155,5,124,88,251,171,29,219,176,76,185,159,128],[249,2,17,160,157,49,72,9,168,199,212,244,19,227,138,187,221,172,227,129,144,156,118,150,91,227,148,137,72,70,215,182,58,214,44,115,160,142,225,153,94,68,106,155,61,66,178,80,180,215,142,156,253,243,134,191,242,5,207,71,100,16,212,112,37,12,25,238,188,160,140,141,162,205,54,205,240,101,110,0,228,214,15,40,73,117,219,138,201,103,43,172,6,65,57,60,55,76,28,96,30,9,160,209,132,91,50,7,206,222,2,220,61,71,168,112,0,240,136,185,234,200,4,119,133,78,71,104,8,88,33,42,230,199,221,160,115,130,29,45,240,44,28,74,54,186,2,67,237,211,183,192,241,136,110,218,65,164,123,13,6,99,21,224,84,47,151,153,160,96,25,108,200,147,183,13,58,23,166,31,99,65,35,93,152,35,118,188,36,67,64,224,89,167,217,194,253,37,55,183,18,160,184,235,63,13,150,149,63,0,117,245,64,101,234,142,239,154,85,223,14,32,62,9,252,8,66,98,194,151,9,62,194,139,160,63,47,136,104,4,254,131,213,54,7,151,77,47,137,73,115,236,252,190,88,202,63,181,125,59,155,172,181,54,202,17,247,160,3,113,57,152,230,40,254,195,180,164,231,57,17,131,232,25,46,172,92,94,145,124,198,160,229,175,124,227,247,19,159,40,160,103,163,129,235,75,3,208,75,23,179,108,227,78,160,223,91,208,98,91,233,160,198,86,8,132,8,224,237,48,254,138,118,160,95,220,47,9,122,22,99,24,49,39,245,220,13,228,123,192,147,13,125,168,58,88,177,21,196,62,74,159,229,39,41,79,160,88,166,30,78,145,240,20,49,216,127,251,238,250,252,128,216,101,94,197,137,252,132,68,61,207,8,190,224,63,213,234,112,160,116,89,226,121,210,213,34,98,150,193,117,200,198,226,209,171,51,221,129,162,168,233,129,169,195,196,96,49,192,36,139,71,160,117,186,44,188,138,184,207,119,18,231,39,75,241,26,152,158,180,92,44,216,195,156,39,233,176,208,14,8,191,59,189,141,160,72,83,39,121,92,221,181,157,125,58,78,202,133,71,192,52,39,95,40,36,240,218,84,67,66,217,87,122,179,51,152,18,160,138,88,60,199,109,25,5,160,200,80,209,157,157,200,33,124,103,16,1,26,155,5,124,88,251,171,29,219,176,76,185,159,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":2,"drifted_index":2,"list_rlp_bytes":[[248,209],[248,209]]}},"account":null,"storage":null,"values":[[160,123,166,194,78,125,205,19,63,5,32,43,62,169,68,246,134,207,242,37,109,113,124,127,180,151,9,24,84,185,14,173,180,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,181,173,145,212,74,109,222,119,141,188,57,114,44,179,205,108,136,241,21,94,155,155,126,1,65,123,183,164,53,142,172,80,0],[160,39,93,102,110,163,8,85,244,43,127,206,181,5,6,27,132,127,248,253,120,100,88,124,228,118,111,151,188,248,235,69,202,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,66,41,209,222,96,221,184,36,89,21,89,184,152,254,60,16,37,150,250,120,144,139,38,111,41,15,226,116,202,158,77,229,0],[160,185,34,227,141,15,168,232,207,212,205,209,74,135,114,253,204,159,18,66,221,135,209,192,183,202,131,245,18,3,189,115,206,0],[160,166,124,191,187,48,24,150,201,144,143,192,67,72,140,4,103,76,234,200,194,253,200,155,94,100,190,160,105,156,60,0,48,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,199,102,157,141,43,148,65,199,159,101,169,108,5,65,181,10,178,211,96,182,191,241,121,145,102,43,2,57,85,7,171,208,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,209,128,160,181,173,145,212,74,109,222,119,141,188,57,114,44,179,205,108,136,241,21,94,155,155,126,1,65,123,183,164,53,142,172,80,160,39,93,102,110,163,8,85,244,43,127,206,181,5,6,27,132,127,248,253,120,100,88,124,228,118,111,151,188,248,235,69,202,128,128,128,128,160,66,41,209,222,96,221,184,36,89,21,89,184,152,254,60,16,37,150,250,120,144,139,38,111,41,15,226,116,202,158,77,229,160,185,34,227,141,15,168,232,207,212,205,209,74,135,114,253,204,159,18,66,221,135,209,192,183,202,131,245,18,3,189,115,206,160,166,124,191,187,48,24,150,201,144,143,192,67,72,140,4,103,76,234,200,194,253,200,155,94,100,190,160,105,156,60,0,48,128,128,128,128,160,199,102,157,141,43,148,65,199,159,101,169,108,5,65,181,10,178,211,96,182,191,241,121,145,102,43,2,57,85,7,171,208,128,128],[248,209,128,160,181,173,145,212,74,109,222,119,141,188,57,114,44,179,205,108,136,241,21,94,155,155,126,1,65,123,183,164,53,142,172,80,160,123,166,194,78,125,205,19,63,5,32,43,62,169,68,246,134,207,242,37,109,113,124,127,180,151,9,24,84,185,14,173,180,128,128,128,128,160,66,41,209,222,96,221,184,36,89,21,89,184,152,254,60,16,37,150,250,120,144,139,38,111,41,15,226,116,202,158,77,229,160,185,34,227,141,15,168,232,207,212,205,209,74,135,114,253,204,159,18,66,221,135,209,192,183,202,131,245,18,3,189,115,206,160,166,124,191,187,48,24,150,201,144,143,192,67,72,140,4,103,76,234,200,194,253,200,155,94,100,190,160,105,156,60,0,48,128,128,128,128,160,199,102,157,141,43,148,65,199,159,101,169,108,5,65,181,10,178,211,96,182,191,241,121,145,102,43,2,57,85,7,171,208,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[80,254,177,242,88,1,56,188,98,60,151,85,114,134,223,78,36,235,129,201],"key":[120,138,229,47,218,28,43,235,133,51,194,3,179,148,41,2,143,246,126,9,123,153,217,195,30,24,246,59,96,2,243,226],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,63,218,28,43,235,133,51,194,3,179,148,41,2,143,246,126,9,123,153,217,195,30,24,246,59,96,2,243,226,0,0,0,0],[157,63,218,28,43,235,133,51,194,3,179,148,41,2,143,246,126,9,123,153,217,195,30,24,246,59,96,2,243,226,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,244,204,43,204,179,165,144,88,206,229,204,57,1,32,29,14,238,35,155,100,79,198,45,25,48,108,39,188,129,249,244,196,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,213,62,161,8,35,98,145,66,78,44,110,92,163,203,160,13,207,98,201,83,136,68,35,199,120,126,199,65,143,183,49,133,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,63,218,28,43,235,133,51,194,3,179,148,41,2,143,246,126,9,123,153,217,195,30,24,246,59,96,2,243,226,0,0,0,0]],"keccak_data":[[248,102,157,63,218,28,43,235,133,51,194,3,179,148,41,2,143,246,126,9,123,153,217,195,30,24,246,59,96,2,243,226,184,70,248,68,128,128,160,244,204,43,204,179,165,144,88,206,229,204,57,1,32,29,14,238,35,155,100,79,198,45,25,48,108,39,188,129,249,244,196,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,63,218,28,43,235,133,51,194,3,179,148,41,2,143,246,126,9,123,153,217,195,30,24,246,59,96,2,243,226,184,70,248,68,128,128,160,213,62,161,8,35,98,145,66,78,44,110,92,163,203,160,13,207,98,201,83,136,68,35,199,120,126,199,65,143,183,49,133,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[80,254,177,242,88,1,56,188,98,60,151,85,114,134,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,1,113],[249,1,113]]}},"account":null,"storage":null,"values":[[160,221,201,203,168,157,78,183,36,187,128,74,31,157,245,231,146,14,85,81,158,154,225,119,239,34,214,95,87,78,245,32,116,0],[160,136,87,99,158,57,68,238,251,83,252,146,127,216,42,55,27,214,253,106,218,143,159,233,203,194,182,56,28,26,235,95,236,0],[160,183,61,21,88,192,16,29,107,46,186,196,241,234,252,196,232,56,231,43,220,244,49,201,108,250,122,6,130,156,122,119,10,0],[160,79,197,241,58,178,249,186,12,45,168,139,1,81,171,14,124,244,216,93,8,204,164,92,205,146,60,106,183,99,35,235,40,0],[160,147,31,200,131,19,49,103,136,46,1,167,47,128,146,235,40,179,181,1,99,210,43,90,113,42,63,194,216,20,174,42,218,0],[160,21,80,62,145,249,37,6,84,207,114,144,110,56,167,203,20,195,241,204,6,101,131,121,211,127,12,91,92,50,72,40,128,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,169,18,162,145,57,53,65,63,240,75,85,206,217,60,29,201,24,232,211,108,49,208,137,37,40,163,39,144,96,35,83,209,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,7,27,1,31,219,212,173,125,30,111,151,98,190,77,26,136,223,253,230,20,166,189,57,155,243,181,186,216,244,18,73,181,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,197,213,75,145,91,86,168,136,238,228,230,238,179,20,30,119,143,155,103,77,29,50,41,98,238,217,0,240,44,41,153,10,0],[160,226,244,240,21,75,28,189,235,196,209,59,77,208,104,237,37,116,56,174,201,13,250,69,140,139,247,160,87,132,196,103,119,0],[160,27,86,204,10,91,155,28,227,78,154,20,232,150,234,0,12,131,11,214,67,135,87,61,35,140,190,63,162,77,223,162,195,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,51,64,187,174,175,205,163,168,103,46,184,48,153,35,29,187,250,184,218,224,42,30,142,194,247,24,5,56,250,194,7,224,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,113,160,136,87,99,158,57,68,238,251,83,252,146,127,216,42,55,27,214,253,106,218,143,159,233,203,194,182,56,28,26,235,95,236,160,183,61,21,88,192,16,29,107,46,186,196,241,234,252,196,232,56,231,43,220,244,49,201,108,250,122,6,130,156,122,119,10,160,79,197,241,58,178,249,186,12,45,168,139,1,81,171,14,124,244,216,93,8,204,164,92,205,146,60,106,183,99,35,235,40,160,147,31,200,131,19,49,103,136,46,1,167,47,128,146,235,40,179,181,1,99,210,43,90,113,42,63,194,216,20,174,42,218,160,21,80,62,145,249,37,6,84,207,114,144,110,56,167,203,20,195,241,204,6,101,131,121,211,127,12,91,92,50,72,40,128,128,160,169,18,162,145,57,53,65,63,240,75,85,206,217,60,29,201,24,232,211,108,49,208,137,37,40,163,39,144,96,35,83,209,128,160,7,27,1,31,219,212,173,125,30,111,151,98,190,77,26,136,223,253,230,20,166,189,57,155,243,181,186,216,244,18,73,181,128,160,197,213,75,145,91,86,168,136,238,228,230,238,179,20,30,119,143,155,103,77,29,50,41,98,238,217,0,240,44,41,153,10,160,226,244,240,21,75,28,189,235,196,209,59,77,208,104,237,37,116,56,174,201,13,250,69,140,139,247,160,87,132,196,103,119,160,27,86,204,10,91,155,28,227,78,154,20,232,150,234,0,12,131,11,214,67,135,87,61,35,140,190,63,162,77,223,162,195,128,128,160,51,64,187,174,175,205,163,168,103,46,184,48,153,35,29,187,250,184,218,224,42,30,142,194,247,24,5,56,250,194,7,224,128],[249,1,113,160,136,87,99,158,57,68,238,251,83,252,146,127,216,42,55,27,214,253,106,218,143,159,233,203,194,182,56,28,26,235,95,236,160,183,61,21,88,192,16,29,107,46,186,196,241,234,252,196,232,56,231,43,220,244,49,201,108,250,122,6,130,156,122,119,10,160,79,197,241,58,178,249,186,12,45,168,139,1,81,171,14,124,244,216,93,8,204,164,92,205,146,60,106,183,99,35,235,40,160,147,31,200,131,19,49,103,136,46,1,167,47,128,146,235,40,179,181,1,99,210,43,90,113,42,63,194,216,20,174,42,218,160,21,80,62,145,249,37,6,84,207,114,144,110,56,167,203,20,195,241,204,6,101,131,121,211,127,12,91,92,50,72,40,128,128,160,169,18,162,145,57,53,65,63,240,75,85,206,217,60,29,201,24,232,211,108,49,208,137,37,40,163,39,144,96,35,83,209,128,160,7,27,1,31,219,212,173,125,30,111,151,98,190,77,26,136,223,253,230,20,166,189,57,155,243,181,186,216,244,18,73,181,128,160,197,213,75,145,91,86,168,136,238,228,230,238,179,20,30,119,143,155,103,77,29,50,41,98,238,217,0,240,44,41,153,10,160,221,201,203,168,157,78,183,36,187,128,74,31,157,245,231,146,14,85,81,158,154,225,119,239,34,214,95,87,78,245,32,116,160,27,86,204,10,91,155,28,227,78,154,20,232,150,234,0,12,131,11,214,67,135,87,61,35,140,190,63,162,77,223,162,195,128,128,160,51,64,187,174,175,205,163,168,103,46,184,48,153,35,29,187,250,184,218,224,42,30,142,194,247,24,5,56,250,194,7,224,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,150,69,94,225,216,87,199,7,148,97,118,250,90,6,55,217,74,2,146,116,204,17,76,170,51,133,23,237,110,94,224,94,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,85,83,20,68,174,134,225,58,6,228,53,105,211,99,100,217,228,208,243,250,101,118,255,10,196,79,189,67,25,181,251,217,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,117,254,248,169,140,212,202,48,190,248,66,108,226,49,13,176,213,221,44,93,158,12,29,42,13,71,21,208,116,159,193,173,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,160,85,83,20,68,174,134,225,58,6,228,53,105,211,99,100,217,228,208,243,250,101,118,255,10,196,79,189,67,25,181,251,217,128,128,128,128,128,128,128,128,128,160,117,254,248,169,140,212,202,48,190,248,66,108,226,49,13,176,213,221,44,93,158,12,29,42,13,71,21,208,116,159,193,173,128,128,128,128,128],[248,81,128,160,150,69,94,225,216,87,199,7,148,97,118,250,90,6,55,217,74,2,146,116,204,17,76,170,51,133,23,237,110,94,224,94,128,128,128,128,128,128,128,128,128,160,117,254,248,169,140,212,202,48,190,248,66,108,226,49,13,176,213,221,44,93,158,12,29,42,13,71,21,208,116,159,193,173,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[false,true],"extension":{"list_rlp_bytes":[228]},"branch":{"modified_index":5,"drifted_index":13,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,211,249,223,77,204,93,151,22,55,8,74,93,112,172,236,226,201,121,48,172,103,225,49,95,240,88,214,58,173,80,157,199,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,211,249,223,77,204,93,151,22,55,8,74,93,112,172,236,226,201,121,48,172,103,225,49,95,240,88,214,58,173,80,157,199,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,191,71,239,74,19,210,48,95,245,219,155,214,119,15,115,38,110,156,238,68,43,0,186,153,83,138,157,91,125,116,238,156,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[130,16,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,19,109,204,123,208,26,119,133,219,240,167,71,67,13,131,226,53,243,130,232,101,160,141,168,187,23,193,39,221,76,180,249,0],[0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,19,109,204,123,208,26,119,133,219,240,167,71,67,13,131,226,53,243,130,232,101,160,141,168,187,23,193,39,221,76,180,249,0]],"keccak_data":[[248,81,128,128,128,128,128,160,211,249,223,77,204,93,151,22,55,8,74,93,112,172,236,226,201,121,48,172,103,225,49,95,240,88,214,58,173,80,157,199,128,128,128,128,128,128,128,160,191,71,239,74,19,210,48,95,245,219,155,214,119,15,115,38,110,156,238,68,43,0,186,153,83,138,157,91,125,116,238,156,128,128,128],[248,81,128,128,128,128,128,160,211,249,223,77,204,93,151,22,55,8,74,93,112,172,236,226,201,121,48,172,103,225,49,95,240,88,214,58,173,80,157,199,128,128,128,128,128,128,128,160,191,71,239,74,19,210,48,95,245,219,155,214,119,15,115,38,110,156,238,68,43,0,186,153,83,138,157,91,125,116,238,156,128,128,128],[228,130,16,226,160,19,109,204,123,208,26,119,133,219,240,167,71,67,13,131,226,53,243,130,232,101,160,141,168,187,23,193,39,221,76,180,249],[228,130,16,226,160,19,109,204,123,208,26,119,133,219,240,167,71,67,13,131,226,53,243,130,232,101,160,141,168,187,23,193,39,221,76,180,249]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,50,52],"key":[177,14,37,119,247,121,182,85,98,237,248,234,41,197,17,202,86,71,159,217,0,117,14,166,144,244,96,114,36,239,104,53],"list_rlp_bytes":[[224],[226]],"value_rlp_bytes":[[1],[1]],"drifted_rlp_bytes":[224],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[158,32,119,247,121,182,85,98,237,248,234,41,197,17,202,86,71,159,217,0,117,14,166,144,244,96,114,36,239,104,53,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,14,45,82,118,18,7,59,38,238,205,253,113,126,106,50,12,244,75,74,250,194,176,115,45,159,203,226,183,250,12,246,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[158,32,82,118,18,7,59,38,238,205,253,113,126,106,50,12,244,75,74,250,194,176,115,45,159,203,226,183,250,12,246,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[224,158,32,119,247,121,182,85,98,237,248,234,41,197,17,202,86,71,159,217,0,117,14,166,144,244,96,114,36,239,104,53,1],[226,160,32,14,45,82,118,18,7,59,38,238,205,253,113,126,106,50,12,244,75,74,250,194,176,115,45,159,203,226,183,250,12,246,1],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,50,52],[224,158,32,82,118,18,7,59,38,238,205,253,113,126,106,50,12,244,75,74,250,194,176,115,45,159,203,226,183,250,12,246,1]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ExtensionDeletedTwoKeyBytesSel1.json b/zkevm-circuits/src/mpt_circuit/tests/ExtensionDeletedTwoKeyBytesSel1.json new file mode 100644 index 0000000000..2f150b4a4c --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ExtensionDeletedTwoKeyBytesSel1.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,222,115,186,235,169,87,113,45,165,25,30,86,241,248,60,198,195,137,162,81,254,143,243,98,31,3,12,253,100,13,43,128,0],[160,126,218,27,210,89,116,112,246,85,206,218,130,236,224,121,5,169,26,195,105,54,218,234,14,180,31,89,37,212,20,180,232,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,178,104,86,163,124,165,55,179,155,172,38,180,66,97,27,8,123,208,70,5,83,218,215,120,2,103,119,60,188,210,243,146,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,140,162,140,51,85,241,170,108,120,171,15,146,167,140,89,15,86,32,200,223,46,110,130,183,74,246,159,11,253,245,158,109,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,140,162,140,51,85,241,170,108,120,171,15,146,167,140,89,15,86,32,200,223,46,110,130,183,74,246,159,11,253,245,158,109,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,178,104,86,163,124,165,55,179,155,172,38,180,66,97,27,8,123,208,70,5,83,218,215,120,2,103,119,60,188,210,243,146,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,238,10,134,224,80,118,230,172,152,39,34,181,235,251,168,109,192,119,46,32,213,84,220,252,184,252,249,8,152,186,226,93,0],[160,0,206,33,240,101,251,90,188,73,10,150,144,56,188,30,27,85,139,94,5,74,204,46,227,225,161,245,164,212,123,119,17,0],[160,158,197,146,195,133,234,84,43,152,85,76,221,237,86,132,255,115,79,61,107,23,194,92,56,75,113,216,10,200,183,87,26,0],[160,194,152,14,169,119,137,64,54,162,181,197,145,208,235,167,184,70,163,196,232,144,255,116,16,132,177,77,174,101,172,104,104,0],[160,49,47,172,152,7,7,6,11,232,103,121,231,161,101,145,71,211,123,164,44,71,10,103,248,185,164,232,204,165,45,250,102,0],[160,68,19,96,150,137,200,112,23,100,65,2,179,154,130,167,209,205,114,87,189,201,71,56,52,59,176,142,55,246,33,222,198,0],[160,81,70,73,19,147,30,34,151,188,103,251,126,254,62,35,101,204,198,100,92,148,234,127,153,251,38,140,243,110,120,89,206,0],[160,153,56,68,205,140,247,250,231,180,188,89,107,54,149,145,83,147,173,184,162,137,156,161,58,69,102,85,11,26,243,192,247,0],[160,84,11,169,54,36,169,241,17,118,20,121,192,66,53,145,167,106,20,34,93,81,153,161,151,166,111,186,196,207,79,205,102,0],[160,21,204,109,8,193,125,112,192,47,37,182,82,90,109,229,234,172,243,83,193,102,230,190,180,211,203,242,20,246,16,116,37,0],[160,2,110,30,248,38,115,226,23,53,13,149,185,153,44,145,216,62,245,29,160,176,11,217,110,165,94,251,184,155,55,249,242,0],[160,167,46,230,43,234,32,209,151,178,230,220,223,167,95,226,105,101,123,1,163,65,37,73,49,185,130,26,88,87,252,241,42,0],[160,137,62,202,192,116,223,58,179,189,121,20,106,116,93,190,135,19,188,37,163,59,107,40,241,88,142,206,9,234,163,219,69,0],[160,74,166,255,37,80,208,11,236,208,85,44,196,213,203,218,41,43,59,35,132,56,206,202,50,27,77,241,165,33,96,71,223,0],[160,145,245,133,65,255,26,96,140,173,209,133,207,36,36,151,166,254,245,244,101,139,185,231,35,159,31,57,31,33,18,45,78,0],[160,60,217,92,4,104,103,148,169,116,98,182,50,210,45,100,120,94,64,85,175,168,151,183,14,126,152,234,94,158,106,32,112,0],[160,79,71,88,62,75,54,226,220,72,114,42,84,193,10,153,112,156,49,56,210,107,120,3,176,215,31,85,113,94,10,176,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,0,206,33,240,101,251,90,188,73,10,150,144,56,188,30,27,85,139,94,5,74,204,46,227,225,161,245,164,212,123,119,17,160,158,197,146,195,133,234,84,43,152,85,76,221,237,86,132,255,115,79,61,107,23,194,92,56,75,113,216,10,200,183,87,26,160,194,152,14,169,119,137,64,54,162,181,197,145,208,235,167,184,70,163,196,232,144,255,116,16,132,177,77,174,101,172,104,104,160,49,47,172,152,7,7,6,11,232,103,121,231,161,101,145,71,211,123,164,44,71,10,103,248,185,164,232,204,165,45,250,102,160,68,19,96,150,137,200,112,23,100,65,2,179,154,130,167,209,205,114,87,189,201,71,56,52,59,176,142,55,246,33,222,198,160,81,70,73,19,147,30,34,151,188,103,251,126,254,62,35,101,204,198,100,92,148,234,127,153,251,38,140,243,110,120,89,206,160,153,56,68,205,140,247,250,231,180,188,89,107,54,149,145,83,147,173,184,162,137,156,161,58,69,102,85,11,26,243,192,247,160,84,11,169,54,36,169,241,17,118,20,121,192,66,53,145,167,106,20,34,93,81,153,161,151,166,111,186,196,207,79,205,102,160,21,204,109,8,193,125,112,192,47,37,182,82,90,109,229,234,172,243,83,193,102,230,190,180,211,203,242,20,246,16,116,37,160,2,110,30,248,38,115,226,23,53,13,149,185,153,44,145,216,62,245,29,160,176,11,217,110,165,94,251,184,155,55,249,242,160,167,46,230,43,234,32,209,151,178,230,220,223,167,95,226,105,101,123,1,163,65,37,73,49,185,130,26,88,87,252,241,42,160,137,62,202,192,116,223,58,179,189,121,20,106,116,93,190,135,19,188,37,163,59,107,40,241,88,142,206,9,234,163,219,69,160,74,166,255,37,80,208,11,236,208,85,44,196,213,203,218,41,43,59,35,132,56,206,202,50,27,77,241,165,33,96,71,223,160,145,245,133,65,255,26,96,140,173,209,133,207,36,36,151,166,254,245,244,101,139,185,231,35,159,31,57,31,33,18,45,78,160,60,217,92,4,104,103,148,169,116,98,182,50,210,45,100,120,94,64,85,175,168,151,183,14,126,152,234,94,158,106,32,112,160,79,71,88,62,75,54,226,220,72,114,42,84,193,10,153,112,156,49,56,210,107,120,3,176,215,31,85,113,94,10,176,0,128],[249,2,17,160,0,206,33,240,101,251,90,188,73,10,150,144,56,188,30,27,85,139,94,5,74,204,46,227,225,161,245,164,212,123,119,17,160,158,197,146,195,133,234,84,43,152,85,76,221,237,86,132,255,115,79,61,107,23,194,92,56,75,113,216,10,200,183,87,26,160,194,152,14,169,119,137,64,54,162,181,197,145,208,235,167,184,70,163,196,232,144,255,116,16,132,177,77,174,101,172,104,104,160,49,47,172,152,7,7,6,11,232,103,121,231,161,101,145,71,211,123,164,44,71,10,103,248,185,164,232,204,165,45,250,102,160,68,19,96,150,137,200,112,23,100,65,2,179,154,130,167,209,205,114,87,189,201,71,56,52,59,176,142,55,246,33,222,198,160,238,10,134,224,80,118,230,172,152,39,34,181,235,251,168,109,192,119,46,32,213,84,220,252,184,252,249,8,152,186,226,93,160,153,56,68,205,140,247,250,231,180,188,89,107,54,149,145,83,147,173,184,162,137,156,161,58,69,102,85,11,26,243,192,247,160,84,11,169,54,36,169,241,17,118,20,121,192,66,53,145,167,106,20,34,93,81,153,161,151,166,111,186,196,207,79,205,102,160,21,204,109,8,193,125,112,192,47,37,182,82,90,109,229,234,172,243,83,193,102,230,190,180,211,203,242,20,246,16,116,37,160,2,110,30,248,38,115,226,23,53,13,149,185,153,44,145,216,62,245,29,160,176,11,217,110,165,94,251,184,155,55,249,242,160,167,46,230,43,234,32,209,151,178,230,220,223,167,95,226,105,101,123,1,163,65,37,73,49,185,130,26,88,87,252,241,42,160,137,62,202,192,116,223,58,179,189,121,20,106,116,93,190,135,19,188,37,163,59,107,40,241,88,142,206,9,234,163,219,69,160,74,166,255,37,80,208,11,236,208,85,44,196,213,203,218,41,43,59,35,132,56,206,202,50,27,77,241,165,33,96,71,223,160,145,245,133,65,255,26,96,140,173,209,133,207,36,36,151,166,254,245,244,101,139,185,231,35,159,31,57,31,33,18,45,78,160,60,217,92,4,104,103,148,169,116,98,182,50,210,45,100,120,94,64,85,175,168,151,183,14,126,152,234,94,158,106,32,112,160,79,71,88,62,75,54,226,220,72,114,42,84,193,10,153,112,156,49,56,210,107,120,3,176,215,31,85,113,94,10,176,0,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,47,232,8,200,131,113,234,62,247,239,0,15,116,219,229,117,174,178,176,250,28,166,67,158,109,65,167,139,71,4,209,218,0],[160,203,87,180,45,19,172,24,151,176,8,27,47,192,189,32,113,228,245,158,104,157,237,63,19,196,74,37,208,213,20,1,213,0],[160,132,48,250,11,195,102,49,193,238,164,205,16,173,44,2,29,58,172,221,235,127,251,229,66,91,191,112,91,236,207,104,120,0],[160,131,213,136,238,187,58,77,165,180,116,229,218,162,253,156,209,171,144,175,8,191,107,28,11,209,43,36,29,189,28,84,211,0],[160,69,204,182,150,212,83,114,124,133,157,80,247,44,120,54,203,254,245,86,190,51,208,132,224,93,251,231,167,209,73,103,67,0],[160,132,176,57,248,168,242,46,234,206,37,24,51,181,185,91,122,16,61,171,182,237,94,83,95,74,121,149,154,126,96,71,47,0],[160,1,8,149,21,233,104,85,4,158,168,223,169,31,36,59,203,201,67,39,188,53,208,204,206,225,123,200,204,69,80,227,17,0],[160,125,116,23,208,88,146,41,122,93,143,44,12,1,72,164,128,28,109,197,44,22,213,208,92,249,228,104,148,1,126,215,126,0],[160,48,220,143,189,40,125,41,221,219,161,44,173,255,212,230,189,162,18,91,234,7,206,235,164,51,174,41,34,91,222,36,223,0],[160,197,159,133,129,224,237,45,64,249,182,173,101,245,118,244,56,8,223,218,171,147,173,20,252,237,239,214,134,138,2,244,3,0],[160,169,198,159,86,160,240,203,102,247,34,149,195,177,66,175,8,30,213,88,17,100,22,220,219,80,147,187,177,9,151,33,224,0],[160,220,200,73,227,108,9,100,152,129,135,163,68,139,35,209,102,236,134,208,53,72,218,158,155,155,230,53,219,143,93,192,9,0],[160,173,218,74,214,33,206,79,127,44,161,168,119,133,239,13,130,239,92,194,134,224,239,124,169,78,177,48,76,201,106,32,128,0],[160,108,87,252,142,107,66,43,180,74,185,19,159,173,40,179,153,39,74,10,28,13,144,247,183,51,218,154,113,161,231,143,65,0],[160,50,5,220,4,115,212,19,13,196,112,96,232,166,44,178,146,110,2,157,194,28,118,5,235,50,212,222,201,126,28,165,152,0],[160,202,141,42,110,85,123,249,63,238,111,75,253,234,3,1,19,70,217,217,11,190,130,101,11,173,159,20,248,94,75,254,189,0],[160,20,25,119,129,22,221,65,78,129,235,24,175,17,191,66,181,74,205,232,126,229,189,28,246,225,195,204,18,22,124,155,60,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,203,87,180,45,19,172,24,151,176,8,27,47,192,189,32,113,228,245,158,104,157,237,63,19,196,74,37,208,213,20,1,213,160,132,48,250,11,195,102,49,193,238,164,205,16,173,44,2,29,58,172,221,235,127,251,229,66,91,191,112,91,236,207,104,120,160,131,213,136,238,187,58,77,165,180,116,229,218,162,253,156,209,171,144,175,8,191,107,28,11,209,43,36,29,189,28,84,211,160,69,204,182,150,212,83,114,124,133,157,80,247,44,120,54,203,254,245,86,190,51,208,132,224,93,251,231,167,209,73,103,67,160,132,176,57,248,168,242,46,234,206,37,24,51,181,185,91,122,16,61,171,182,237,94,83,95,74,121,149,154,126,96,71,47,160,1,8,149,21,233,104,85,4,158,168,223,169,31,36,59,203,201,67,39,188,53,208,204,206,225,123,200,204,69,80,227,17,160,125,116,23,208,88,146,41,122,93,143,44,12,1,72,164,128,28,109,197,44,22,213,208,92,249,228,104,148,1,126,215,126,160,48,220,143,189,40,125,41,221,219,161,44,173,255,212,230,189,162,18,91,234,7,206,235,164,51,174,41,34,91,222,36,223,160,197,159,133,129,224,237,45,64,249,182,173,101,245,118,244,56,8,223,218,171,147,173,20,252,237,239,214,134,138,2,244,3,160,169,198,159,86,160,240,203,102,247,34,149,195,177,66,175,8,30,213,88,17,100,22,220,219,80,147,187,177,9,151,33,224,160,220,200,73,227,108,9,100,152,129,135,163,68,139,35,209,102,236,134,208,53,72,218,158,155,155,230,53,219,143,93,192,9,160,173,218,74,214,33,206,79,127,44,161,168,119,133,239,13,130,239,92,194,134,224,239,124,169,78,177,48,76,201,106,32,128,160,108,87,252,142,107,66,43,180,74,185,19,159,173,40,179,153,39,74,10,28,13,144,247,183,51,218,154,113,161,231,143,65,160,50,5,220,4,115,212,19,13,196,112,96,232,166,44,178,146,110,2,157,194,28,118,5,235,50,212,222,201,126,28,165,152,160,202,141,42,110,85,123,249,63,238,111,75,253,234,3,1,19,70,217,217,11,190,130,101,11,173,159,20,248,94,75,254,189,160,20,25,119,129,22,221,65,78,129,235,24,175,17,191,66,181,74,205,232,126,229,189,28,246,225,195,204,18,22,124,155,60,128],[249,2,17,160,203,87,180,45,19,172,24,151,176,8,27,47,192,189,32,113,228,245,158,104,157,237,63,19,196,74,37,208,213,20,1,213,160,132,48,250,11,195,102,49,193,238,164,205,16,173,44,2,29,58,172,221,235,127,251,229,66,91,191,112,91,236,207,104,120,160,131,213,136,238,187,58,77,165,180,116,229,218,162,253,156,209,171,144,175,8,191,107,28,11,209,43,36,29,189,28,84,211,160,69,204,182,150,212,83,114,124,133,157,80,247,44,120,54,203,254,245,86,190,51,208,132,224,93,251,231,167,209,73,103,67,160,132,176,57,248,168,242,46,234,206,37,24,51,181,185,91,122,16,61,171,182,237,94,83,95,74,121,149,154,126,96,71,47,160,1,8,149,21,233,104,85,4,158,168,223,169,31,36,59,203,201,67,39,188,53,208,204,206,225,123,200,204,69,80,227,17,160,125,116,23,208,88,146,41,122,93,143,44,12,1,72,164,128,28,109,197,44,22,213,208,92,249,228,104,148,1,126,215,126,160,48,220,143,189,40,125,41,221,219,161,44,173,255,212,230,189,162,18,91,234,7,206,235,164,51,174,41,34,91,222,36,223,160,197,159,133,129,224,237,45,64,249,182,173,101,245,118,244,56,8,223,218,171,147,173,20,252,237,239,214,134,138,2,244,3,160,169,198,159,86,160,240,203,102,247,34,149,195,177,66,175,8,30,213,88,17,100,22,220,219,80,147,187,177,9,151,33,224,160,47,232,8,200,131,113,234,62,247,239,0,15,116,219,229,117,174,178,176,250,28,166,67,158,109,65,167,139,71,4,209,218,160,173,218,74,214,33,206,79,127,44,161,168,119,133,239,13,130,239,92,194,134,224,239,124,169,78,177,48,76,201,106,32,128,160,108,87,252,142,107,66,43,180,74,185,19,159,173,40,179,153,39,74,10,28,13,144,247,183,51,218,154,113,161,231,143,65,160,50,5,220,4,115,212,19,13,196,112,96,232,166,44,178,146,110,2,157,194,28,118,5,235,50,212,222,201,126,28,165,152,160,202,141,42,110,85,123,249,63,238,111,75,253,234,3,1,19,70,217,217,11,190,130,101,11,173,159,20,248,94,75,254,189,160,20,25,119,129,22,221,65,78,129,235,24,175,17,191,66,181,74,205,232,126,229,189,28,246,225,195,204,18,22,124,155,60,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,22,36,150,231,201,172,42,102,220,159,214,224,22,28,23,196,94,168,39,208,137,162,111,9,203,66,200,7,95,56,235,86,0],[160,164,180,29,22,203,14,23,254,91,167,142,82,252,226,144,159,50,228,193,89,255,17,202,245,137,242,83,21,221,254,241,75,0],[160,51,16,86,82,3,103,252,95,32,214,65,209,27,139,215,177,30,4,114,13,100,159,122,103,78,248,59,62,83,41,65,6,0],[160,153,44,61,41,56,105,20,92,71,71,28,87,80,225,56,22,11,22,92,125,109,109,25,42,244,179,157,0,195,61,109,153,0],[160,227,225,214,191,223,49,38,169,67,48,203,255,62,86,197,27,208,20,189,85,16,201,190,151,36,10,31,71,81,115,153,28,0],[160,68,254,241,192,187,6,53,16,239,162,140,90,80,24,15,2,237,196,139,50,146,113,134,132,242,34,248,45,4,229,94,60,0],[160,250,19,177,96,139,79,145,236,195,147,68,96,162,98,129,230,143,89,211,234,109,6,212,52,75,82,79,148,135,207,105,212,0],[160,248,191,9,26,115,87,162,60,78,162,196,199,178,60,25,76,128,69,159,113,166,224,134,224,3,169,48,253,152,245,105,99,0],[160,145,253,154,171,86,65,243,183,245,69,95,108,31,211,26,254,217,219,218,225,101,130,201,167,114,226,246,55,216,117,61,66,0],[160,129,142,118,2,163,156,147,102,49,255,164,178,49,203,177,58,49,88,179,200,39,50,204,115,252,237,207,186,167,60,199,224,0],[160,34,245,213,30,125,55,189,190,222,255,162,42,253,107,202,52,21,6,8,101,246,41,150,194,140,208,119,88,197,41,105,145,0],[160,151,101,139,165,122,27,169,90,82,231,90,133,204,80,249,120,190,103,47,12,178,65,243,170,161,2,249,78,81,203,174,3,0],[160,23,24,250,53,20,215,135,72,157,158,207,226,230,216,199,229,61,154,51,182,200,183,22,108,232,124,209,215,219,124,173,105,0],[160,168,222,193,164,239,216,82,134,36,161,154,86,36,247,133,2,201,34,22,131,69,149,154,160,109,45,98,135,183,171,69,190,0],[160,156,95,85,255,30,115,102,94,105,174,83,204,19,202,6,127,83,0,38,42,19,51,67,9,228,165,23,166,204,73,213,109,0],[160,33,163,247,169,198,139,127,139,35,122,193,20,247,119,29,205,178,210,236,124,111,246,249,234,135,91,151,74,118,136,24,205,0],[160,146,208,107,254,76,103,177,98,48,82,67,24,217,235,236,173,42,191,164,87,106,64,206,116,63,75,131,194,241,75,7,254,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,164,180,29,22,203,14,23,254,91,167,142,82,252,226,144,159,50,228,193,89,255,17,202,245,137,242,83,21,221,254,241,75,160,51,16,86,82,3,103,252,95,32,214,65,209,27,139,215,177,30,4,114,13,100,159,122,103,78,248,59,62,83,41,65,6,160,153,44,61,41,56,105,20,92,71,71,28,87,80,225,56,22,11,22,92,125,109,109,25,42,244,179,157,0,195,61,109,153,160,227,225,214,191,223,49,38,169,67,48,203,255,62,86,197,27,208,20,189,85,16,201,190,151,36,10,31,71,81,115,153,28,160,68,254,241,192,187,6,53,16,239,162,140,90,80,24,15,2,237,196,139,50,146,113,134,132,242,34,248,45,4,229,94,60,160,250,19,177,96,139,79,145,236,195,147,68,96,162,98,129,230,143,89,211,234,109,6,212,52,75,82,79,148,135,207,105,212,160,248,191,9,26,115,87,162,60,78,162,196,199,178,60,25,76,128,69,159,113,166,224,134,224,3,169,48,253,152,245,105,99,160,145,253,154,171,86,65,243,183,245,69,95,108,31,211,26,254,217,219,218,225,101,130,201,167,114,226,246,55,216,117,61,66,160,129,142,118,2,163,156,147,102,49,255,164,178,49,203,177,58,49,88,179,200,39,50,204,115,252,237,207,186,167,60,199,224,160,34,245,213,30,125,55,189,190,222,255,162,42,253,107,202,52,21,6,8,101,246,41,150,194,140,208,119,88,197,41,105,145,160,151,101,139,165,122,27,169,90,82,231,90,133,204,80,249,120,190,103,47,12,178,65,243,170,161,2,249,78,81,203,174,3,160,23,24,250,53,20,215,135,72,157,158,207,226,230,216,199,229,61,154,51,182,200,183,22,108,232,124,209,215,219,124,173,105,160,168,222,193,164,239,216,82,134,36,161,154,86,36,247,133,2,201,34,22,131,69,149,154,160,109,45,98,135,183,171,69,190,160,156,95,85,255,30,115,102,94,105,174,83,204,19,202,6,127,83,0,38,42,19,51,67,9,228,165,23,166,204,73,213,109,160,33,163,247,169,198,139,127,139,35,122,193,20,247,119,29,205,178,210,236,124,111,246,249,234,135,91,151,74,118,136,24,205,160,146,208,107,254,76,103,177,98,48,82,67,24,217,235,236,173,42,191,164,87,106,64,206,116,63,75,131,194,241,75,7,254,128],[249,2,17,160,164,180,29,22,203,14,23,254,91,167,142,82,252,226,144,159,50,228,193,89,255,17,202,245,137,242,83,21,221,254,241,75,160,51,16,86,82,3,103,252,95,32,214,65,209,27,139,215,177,30,4,114,13,100,159,122,103,78,248,59,62,83,41,65,6,160,153,44,61,41,56,105,20,92,71,71,28,87,80,225,56,22,11,22,92,125,109,109,25,42,244,179,157,0,195,61,109,153,160,22,36,150,231,201,172,42,102,220,159,214,224,22,28,23,196,94,168,39,208,137,162,111,9,203,66,200,7,95,56,235,86,160,68,254,241,192,187,6,53,16,239,162,140,90,80,24,15,2,237,196,139,50,146,113,134,132,242,34,248,45,4,229,94,60,160,250,19,177,96,139,79,145,236,195,147,68,96,162,98,129,230,143,89,211,234,109,6,212,52,75,82,79,148,135,207,105,212,160,248,191,9,26,115,87,162,60,78,162,196,199,178,60,25,76,128,69,159,113,166,224,134,224,3,169,48,253,152,245,105,99,160,145,253,154,171,86,65,243,183,245,69,95,108,31,211,26,254,217,219,218,225,101,130,201,167,114,226,246,55,216,117,61,66,160,129,142,118,2,163,156,147,102,49,255,164,178,49,203,177,58,49,88,179,200,39,50,204,115,252,237,207,186,167,60,199,224,160,34,245,213,30,125,55,189,190,222,255,162,42,253,107,202,52,21,6,8,101,246,41,150,194,140,208,119,88,197,41,105,145,160,151,101,139,165,122,27,169,90,82,231,90,133,204,80,249,120,190,103,47,12,178,65,243,170,161,2,249,78,81,203,174,3,160,23,24,250,53,20,215,135,72,157,158,207,226,230,216,199,229,61,154,51,182,200,183,22,108,232,124,209,215,219,124,173,105,160,168,222,193,164,239,216,82,134,36,161,154,86,36,247,133,2,201,34,22,131,69,149,154,160,109,45,98,135,183,171,69,190,160,156,95,85,255,30,115,102,94,105,174,83,204,19,202,6,127,83,0,38,42,19,51,67,9,228,165,23,166,204,73,213,109,160,33,163,247,169,198,139,127,139,35,122,193,20,247,119,29,205,178,210,236,124,111,246,249,234,135,91,151,74,118,136,24,205,160,146,208,107,254,76,103,177,98,48,82,67,24,217,235,236,173,42,191,164,87,106,64,206,116,63,75,131,194,241,75,7,254,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,242,31,126,93,188,147,212,220,45,196,117,37,200,96,56,65,215,57,112,125,220,94,61,88,215,28,57,230,177,191,68,62,0],[160,130,125,200,216,238,103,71,86,228,222,133,226,185,215,16,65,244,137,213,222,46,94,91,106,56,110,83,1,71,228,10,240,0],[160,248,202,84,13,216,174,252,30,229,65,141,37,227,150,196,28,28,105,146,6,157,111,192,16,166,121,175,81,241,46,64,21,0],[160,149,22,204,164,89,181,232,119,180,25,123,150,225,191,214,161,18,98,200,185,161,91,153,229,22,81,104,105,14,91,175,18,0],[160,136,47,162,174,125,241,171,51,20,17,84,201,78,127,167,38,221,244,167,60,242,192,140,126,214,188,167,22,227,17,131,24,0],[160,99,238,8,170,162,189,169,57,157,206,33,113,22,220,5,40,176,77,27,226,75,176,249,188,173,167,39,241,230,163,153,207,0],[160,15,42,19,16,84,126,167,130,52,226,72,244,186,227,216,196,73,213,1,164,64,16,41,141,148,236,212,26,61,227,209,40,0],[160,228,8,84,56,244,71,227,106,86,234,114,153,25,202,23,188,34,215,150,87,170,230,102,194,114,75,202,17,173,87,141,241,0],[160,145,9,246,79,103,114,147,211,156,49,54,227,178,50,208,12,134,162,195,210,143,116,89,7,68,55,158,29,166,214,250,114,0],[160,219,141,19,17,160,45,4,217,144,162,56,203,42,179,132,14,104,208,79,26,215,185,75,169,2,82,66,255,176,87,143,253,0],[160,230,246,0,147,43,79,220,149,115,36,61,157,241,142,78,64,62,185,218,167,59,5,58,34,72,215,242,208,105,143,243,203,0],[160,255,88,14,110,145,58,145,110,97,252,31,197,141,73,10,38,133,217,192,110,81,156,19,238,130,80,96,58,10,192,117,213,0],[160,246,73,170,108,238,154,1,184,132,255,244,164,47,158,247,4,47,222,0,221,180,95,142,203,9,168,102,75,61,72,158,75,0],[160,93,225,48,250,171,201,141,232,98,8,1,66,151,176,25,43,247,86,120,139,174,107,51,56,152,142,134,132,217,213,117,99,0],[160,114,100,103,31,57,40,189,156,8,133,90,111,104,215,121,110,200,156,14,102,232,61,40,208,26,216,208,49,88,79,30,30,0],[160,110,64,71,235,187,240,111,120,66,20,217,68,191,190,154,5,30,2,205,142,132,9,214,64,209,80,133,17,0,139,5,51,0],[160,251,231,67,229,234,241,249,19,1,238,151,102,24,216,168,26,135,210,83,135,151,113,210,9,29,156,161,11,209,118,249,163,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,130,125,200,216,238,103,71,86,228,222,133,226,185,215,16,65,244,137,213,222,46,94,91,106,56,110,83,1,71,228,10,240,160,248,202,84,13,216,174,252,30,229,65,141,37,227,150,196,28,28,105,146,6,157,111,192,16,166,121,175,81,241,46,64,21,160,149,22,204,164,89,181,232,119,180,25,123,150,225,191,214,161,18,98,200,185,161,91,153,229,22,81,104,105,14,91,175,18,160,136,47,162,174,125,241,171,51,20,17,84,201,78,127,167,38,221,244,167,60,242,192,140,126,214,188,167,22,227,17,131,24,160,99,238,8,170,162,189,169,57,157,206,33,113,22,220,5,40,176,77,27,226,75,176,249,188,173,167,39,241,230,163,153,207,160,15,42,19,16,84,126,167,130,52,226,72,244,186,227,216,196,73,213,1,164,64,16,41,141,148,236,212,26,61,227,209,40,160,228,8,84,56,244,71,227,106,86,234,114,153,25,202,23,188,34,215,150,87,170,230,102,194,114,75,202,17,173,87,141,241,160,145,9,246,79,103,114,147,211,156,49,54,227,178,50,208,12,134,162,195,210,143,116,89,7,68,55,158,29,166,214,250,114,160,219,141,19,17,160,45,4,217,144,162,56,203,42,179,132,14,104,208,79,26,215,185,75,169,2,82,66,255,176,87,143,253,160,230,246,0,147,43,79,220,149,115,36,61,157,241,142,78,64,62,185,218,167,59,5,58,34,72,215,242,208,105,143,243,203,160,255,88,14,110,145,58,145,110,97,252,31,197,141,73,10,38,133,217,192,110,81,156,19,238,130,80,96,58,10,192,117,213,160,246,73,170,108,238,154,1,184,132,255,244,164,47,158,247,4,47,222,0,221,180,95,142,203,9,168,102,75,61,72,158,75,160,93,225,48,250,171,201,141,232,98,8,1,66,151,176,25,43,247,86,120,139,174,107,51,56,152,142,134,132,217,213,117,99,160,114,100,103,31,57,40,189,156,8,133,90,111,104,215,121,110,200,156,14,102,232,61,40,208,26,216,208,49,88,79,30,30,160,110,64,71,235,187,240,111,120,66,20,217,68,191,190,154,5,30,2,205,142,132,9,214,64,209,80,133,17,0,139,5,51,160,251,231,67,229,234,241,249,19,1,238,151,102,24,216,168,26,135,210,83,135,151,113,210,9,29,156,161,11,209,118,249,163,128],[249,2,17,160,130,125,200,216,238,103,71,86,228,222,133,226,185,215,16,65,244,137,213,222,46,94,91,106,56,110,83,1,71,228,10,240,160,248,202,84,13,216,174,252,30,229,65,141,37,227,150,196,28,28,105,146,6,157,111,192,16,166,121,175,81,241,46,64,21,160,149,22,204,164,89,181,232,119,180,25,123,150,225,191,214,161,18,98,200,185,161,91,153,229,22,81,104,105,14,91,175,18,160,136,47,162,174,125,241,171,51,20,17,84,201,78,127,167,38,221,244,167,60,242,192,140,126,214,188,167,22,227,17,131,24,160,99,238,8,170,162,189,169,57,157,206,33,113,22,220,5,40,176,77,27,226,75,176,249,188,173,167,39,241,230,163,153,207,160,15,42,19,16,84,126,167,130,52,226,72,244,186,227,216,196,73,213,1,164,64,16,41,141,148,236,212,26,61,227,209,40,160,228,8,84,56,244,71,227,106,86,234,114,153,25,202,23,188,34,215,150,87,170,230,102,194,114,75,202,17,173,87,141,241,160,145,9,246,79,103,114,147,211,156,49,54,227,178,50,208,12,134,162,195,210,143,116,89,7,68,55,158,29,166,214,250,114,160,219,141,19,17,160,45,4,217,144,162,56,203,42,179,132,14,104,208,79,26,215,185,75,169,2,82,66,255,176,87,143,253,160,242,31,126,93,188,147,212,220,45,196,117,37,200,96,56,65,215,57,112,125,220,94,61,88,215,28,57,230,177,191,68,62,160,255,88,14,110,145,58,145,110,97,252,31,197,141,73,10,38,133,217,192,110,81,156,19,238,130,80,96,58,10,192,117,213,160,246,73,170,108,238,154,1,184,132,255,244,164,47,158,247,4,47,222,0,221,180,95,142,203,9,168,102,75,61,72,158,75,160,93,225,48,250,171,201,141,232,98,8,1,66,151,176,25,43,247,86,120,139,174,107,51,56,152,142,134,132,217,213,117,99,160,114,100,103,31,57,40,189,156,8,133,90,111,104,215,121,110,200,156,14,102,232,61,40,208,26,216,208,49,88,79,30,30,160,110,64,71,235,187,240,111,120,66,20,217,68,191,190,154,5,30,2,205,142,132,9,214,64,209,80,133,17,0,139,5,51,160,251,231,67,229,234,241,249,19,1,238,151,102,24,216,168,26,135,210,83,135,151,113,210,9,29,156,161,11,209,118,249,163,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":2,"drifted_index":2,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,189,177,95,17,53,50,40,6,170,240,43,153,63,238,51,172,67,8,106,107,51,71,203,33,2,81,17,252,125,161,94,89,0],[160,70,145,83,193,214,134,248,150,224,52,74,152,29,218,97,83,59,83,4,73,187,252,175,83,76,183,75,99,67,76,138,73,0],[160,22,190,149,252,61,199,213,233,229,10,51,220,75,54,224,16,32,42,49,162,63,252,27,165,66,150,131,107,66,16,224,254,0],[160,125,241,16,249,157,36,241,214,139,166,64,44,103,217,40,55,61,28,153,186,97,7,195,4,202,18,229,176,79,195,227,165,0],[160,90,249,62,95,120,4,195,163,16,243,187,115,149,41,218,140,203,37,14,47,202,220,147,184,30,152,1,67,19,77,174,95,0],[160,242,19,118,38,150,123,66,226,171,115,52,197,181,8,60,96,221,234,133,190,190,175,133,121,231,30,169,11,55,232,124,217,0],[160,250,232,13,221,55,87,247,231,209,182,17,203,74,1,63,52,180,107,235,166,85,166,64,15,130,255,205,166,8,103,42,148,0],[160,199,177,9,177,12,215,118,100,96,32,2,86,167,40,170,194,78,32,16,140,124,159,111,202,168,119,185,29,146,190,94,103,0],[160,219,146,211,131,15,109,53,238,134,174,222,68,167,236,230,125,230,52,215,131,236,156,165,99,208,212,238,209,105,29,158,115,0],[160,72,20,214,76,98,67,229,96,8,7,224,223,123,225,97,102,108,51,117,225,255,208,207,98,244,124,184,56,130,88,246,226,0],[160,151,68,74,226,114,34,178,164,77,234,195,37,80,231,9,115,74,85,174,135,138,239,65,113,57,51,41,37,217,229,7,112,0],[160,99,180,38,47,69,142,182,67,218,65,237,157,4,107,149,165,13,26,26,40,210,13,238,217,205,252,155,221,61,187,115,209,0],[160,104,252,79,74,128,102,126,216,235,122,235,232,78,90,171,166,221,90,99,167,132,8,14,147,240,85,158,69,181,253,59,74,0],[160,7,176,217,103,223,100,47,232,76,133,61,151,101,141,222,170,171,191,13,51,206,105,108,195,54,3,119,254,109,113,235,195,0],[160,199,40,86,250,85,115,89,81,218,107,168,175,235,50,126,83,98,122,90,56,246,195,208,155,120,249,245,11,58,228,81,168,0],[160,232,161,162,255,98,104,196,52,158,235,67,211,20,42,15,89,179,177,196,36,191,47,128,186,103,229,118,251,135,45,99,229,0],[160,251,16,185,34,102,255,78,201,110,108,48,37,2,19,29,214,170,253,218,86,75,241,187,210,49,208,166,239,232,247,86,116,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,70,145,83,193,214,134,248,150,224,52,74,152,29,218,97,83,59,83,4,73,187,252,175,83,76,183,75,99,67,76,138,73,160,22,190,149,252,61,199,213,233,229,10,51,220,75,54,224,16,32,42,49,162,63,252,27,165,66,150,131,107,66,16,224,254,160,125,241,16,249,157,36,241,214,139,166,64,44,103,217,40,55,61,28,153,186,97,7,195,4,202,18,229,176,79,195,227,165,160,90,249,62,95,120,4,195,163,16,243,187,115,149,41,218,140,203,37,14,47,202,220,147,184,30,152,1,67,19,77,174,95,160,242,19,118,38,150,123,66,226,171,115,52,197,181,8,60,96,221,234,133,190,190,175,133,121,231,30,169,11,55,232,124,217,160,250,232,13,221,55,87,247,231,209,182,17,203,74,1,63,52,180,107,235,166,85,166,64,15,130,255,205,166,8,103,42,148,160,199,177,9,177,12,215,118,100,96,32,2,86,167,40,170,194,78,32,16,140,124,159,111,202,168,119,185,29,146,190,94,103,160,219,146,211,131,15,109,53,238,134,174,222,68,167,236,230,125,230,52,215,131,236,156,165,99,208,212,238,209,105,29,158,115,160,72,20,214,76,98,67,229,96,8,7,224,223,123,225,97,102,108,51,117,225,255,208,207,98,244,124,184,56,130,88,246,226,160,151,68,74,226,114,34,178,164,77,234,195,37,80,231,9,115,74,85,174,135,138,239,65,113,57,51,41,37,217,229,7,112,160,99,180,38,47,69,142,182,67,218,65,237,157,4,107,149,165,13,26,26,40,210,13,238,217,205,252,155,221,61,187,115,209,160,104,252,79,74,128,102,126,216,235,122,235,232,78,90,171,166,221,90,99,167,132,8,14,147,240,85,158,69,181,253,59,74,160,7,176,217,103,223,100,47,232,76,133,61,151,101,141,222,170,171,191,13,51,206,105,108,195,54,3,119,254,109,113,235,195,160,199,40,86,250,85,115,89,81,218,107,168,175,235,50,126,83,98,122,90,56,246,195,208,155,120,249,245,11,58,228,81,168,160,232,161,162,255,98,104,196,52,158,235,67,211,20,42,15,89,179,177,196,36,191,47,128,186,103,229,118,251,135,45,99,229,160,251,16,185,34,102,255,78,201,110,108,48,37,2,19,29,214,170,253,218,86,75,241,187,210,49,208,166,239,232,247,86,116,128],[249,2,17,160,70,145,83,193,214,134,248,150,224,52,74,152,29,218,97,83,59,83,4,73,187,252,175,83,76,183,75,99,67,76,138,73,160,22,190,149,252,61,199,213,233,229,10,51,220,75,54,224,16,32,42,49,162,63,252,27,165,66,150,131,107,66,16,224,254,160,189,177,95,17,53,50,40,6,170,240,43,153,63,238,51,172,67,8,106,107,51,71,203,33,2,81,17,252,125,161,94,89,160,90,249,62,95,120,4,195,163,16,243,187,115,149,41,218,140,203,37,14,47,202,220,147,184,30,152,1,67,19,77,174,95,160,242,19,118,38,150,123,66,226,171,115,52,197,181,8,60,96,221,234,133,190,190,175,133,121,231,30,169,11,55,232,124,217,160,250,232,13,221,55,87,247,231,209,182,17,203,74,1,63,52,180,107,235,166,85,166,64,15,130,255,205,166,8,103,42,148,160,199,177,9,177,12,215,118,100,96,32,2,86,167,40,170,194,78,32,16,140,124,159,111,202,168,119,185,29,146,190,94,103,160,219,146,211,131,15,109,53,238,134,174,222,68,167,236,230,125,230,52,215,131,236,156,165,99,208,212,238,209,105,29,158,115,160,72,20,214,76,98,67,229,96,8,7,224,223,123,225,97,102,108,51,117,225,255,208,207,98,244,124,184,56,130,88,246,226,160,151,68,74,226,114,34,178,164,77,234,195,37,80,231,9,115,74,85,174,135,138,239,65,113,57,51,41,37,217,229,7,112,160,99,180,38,47,69,142,182,67,218,65,237,157,4,107,149,165,13,26,26,40,210,13,238,217,205,252,155,221,61,187,115,209,160,104,252,79,74,128,102,126,216,235,122,235,232,78,90,171,166,221,90,99,167,132,8,14,147,240,85,158,69,181,253,59,74,160,7,176,217,103,223,100,47,232,76,133,61,151,101,141,222,170,171,191,13,51,206,105,108,195,54,3,119,254,109,113,235,195,160,199,40,86,250,85,115,89,81,218,107,168,175,235,50,126,83,98,122,90,56,246,195,208,155,120,249,245,11,58,228,81,168,160,232,161,162,255,98,104,196,52,158,235,67,211,20,42,15,89,179,177,196,36,191,47,128,186,103,229,118,251,135,45,99,229,160,251,16,185,34,102,255,78,201,110,108,48,37,2,19,29,214,170,253,218,86,75,241,187,210,49,208,166,239,232,247,86,116,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,1,49],[249,1,49]]}},"account":null,"storage":null,"values":[[160,250,154,110,129,244,31,28,63,154,22,16,102,79,128,63,118,197,109,84,197,39,108,208,147,42,178,139,87,11,235,180,249,0],[160,118,242,101,44,253,106,80,226,115,167,231,134,185,144,197,247,214,162,163,245,29,192,199,182,79,156,98,234,166,120,48,254,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,101,201,19,214,180,225,89,152,133,13,189,160,75,190,49,145,54,223,182,93,69,52,178,126,1,165,98,119,169,220,85,143,0],[160,253,85,165,43,60,82,156,47,122,220,248,179,29,27,66,3,215,104,41,212,151,38,179,99,185,79,207,156,195,86,117,90,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,175,243,82,107,244,55,219,103,71,174,68,65,70,53,106,157,224,38,7,187,24,20,149,220,156,71,87,191,191,193,83,177,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,174,119,77,19,201,226,54,159,56,117,147,241,173,159,54,96,35,192,184,146,173,135,79,144,214,254,195,37,216,219,231,173,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,225,66,69,103,120,19,114,173,212,29,194,158,68,254,72,91,6,103,55,158,105,186,135,47,193,175,112,197,161,170,98,184,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,140,30,128,255,214,28,103,127,2,211,153,178,218,113,111,115,65,199,51,32,144,143,121,21,27,84,174,47,83,104,216,18,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,162,197,125,201,187,180,213,157,235,239,102,124,54,240,36,21,192,162,187,144,99,72,241,9,83,226,142,101,183,109,139,1,0],[160,152,36,188,87,218,33,40,78,210,121,54,183,197,77,106,156,185,88,57,220,53,254,91,1,83,131,83,150,244,29,5,170,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,49,160,118,242,101,44,253,106,80,226,115,167,231,134,185,144,197,247,214,162,163,245,29,192,199,182,79,156,98,234,166,120,48,254,128,160,101,201,19,214,180,225,89,152,133,13,189,160,75,190,49,145,54,223,182,93,69,52,178,126,1,165,98,119,169,220,85,143,160,253,85,165,43,60,82,156,47,122,220,248,179,29,27,66,3,215,104,41,212,151,38,179,99,185,79,207,156,195,86,117,90,128,128,160,175,243,82,107,244,55,219,103,71,174,68,65,70,53,106,157,224,38,7,187,24,20,149,220,156,71,87,191,191,193,83,177,128,160,174,119,77,19,201,226,54,159,56,117,147,241,173,159,54,96,35,192,184,146,173,135,79,144,214,254,195,37,216,219,231,173,128,160,225,66,69,103,120,19,114,173,212,29,194,158,68,254,72,91,6,103,55,158,105,186,135,47,193,175,112,197,161,170,98,184,128,160,140,30,128,255,214,28,103,127,2,211,153,178,218,113,111,115,65,199,51,32,144,143,121,21,27,84,174,47,83,104,216,18,128,160,162,197,125,201,187,180,213,157,235,239,102,124,54,240,36,21,192,162,187,144,99,72,241,9,83,226,142,101,183,109,139,1,160,152,36,188,87,218,33,40,78,210,121,54,183,197,77,106,156,185,88,57,220,53,254,91,1,83,131,83,150,244,29,5,170,128],[249,1,49,160,250,154,110,129,244,31,28,63,154,22,16,102,79,128,63,118,197,109,84,197,39,108,208,147,42,178,139,87,11,235,180,249,128,160,101,201,19,214,180,225,89,152,133,13,189,160,75,190,49,145,54,223,182,93,69,52,178,126,1,165,98,119,169,220,85,143,160,253,85,165,43,60,82,156,47,122,220,248,179,29,27,66,3,215,104,41,212,151,38,179,99,185,79,207,156,195,86,117,90,128,128,160,175,243,82,107,244,55,219,103,71,174,68,65,70,53,106,157,224,38,7,187,24,20,149,220,156,71,87,191,191,193,83,177,128,160,174,119,77,19,201,226,54,159,56,117,147,241,173,159,54,96,35,192,184,146,173,135,79,144,214,254,195,37,216,219,231,173,128,160,225,66,69,103,120,19,114,173,212,29,194,158,68,254,72,91,6,103,55,158,105,186,135,47,193,175,112,197,161,170,98,184,128,160,140,30,128,255,214,28,103,127,2,211,153,178,218,113,111,115,65,199,51,32,144,143,121,21,27,84,174,47,83,104,216,18,128,160,162,197,125,201,187,180,213,157,235,239,102,124,54,240,36,21,192,162,187,144,99,72,241,9,83,226,142,101,183,109,139,1,160,152,36,188,87,218,33,40,78,210,121,54,183,197,77,106,156,185,88,57,220,53,254,91,1,83,131,83,150,244,29,5,170,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,13,177,245,68,236,254,43,151,206,200,57,115,101,158,166,109,198,181,38,214,159,193,74,148,104,52,5,188,228,158,233,22,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,124,226,43,87,157,109,238,147,48,189,121,210,191,137,79,1,163,157,141,194,172,38,71,85,3,138,157,169,164,99,106,253,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,152,116,64,78,91,197,120,253,205,211,183,207,210,86,45,42,97,61,96,29,254,88,176,247,152,33,253,96,181,163,114,151,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,128,128,160,124,226,43,87,157,109,238,147,48,189,121,210,191,137,79,1,163,157,141,194,172,38,71,85,3,138,157,169,164,99,106,253,128,128,160,152,116,64,78,91,197,120,253,205,211,183,207,210,86,45,42,97,61,96,29,254,88,176,247,152,33,253,96,181,163,114,151,128,128,128],[248,81,128,128,128,128,128,128,128,128,128,128,160,13,177,245,68,236,254,43,151,206,200,57,115,101,158,166,109,198,181,38,214,159,193,74,148,104,52,5,188,228,158,233,22,128,128,160,152,116,64,78,91,197,120,253,205,211,183,207,210,86,45,42,97,61,96,29,254,88,176,247,152,33,253,96,181,163,114,151,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,251,239,33,80,129,131,194,182,60,89,117,120,38,223,78,36,235,129,201],"key":[69,163,146,10,62,93,129,85,209,204,55,235,67,56,182,198,220,198,25,69,14,53,78,37,148,78,8,145,165,205,66,236],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,32,62,93,129,85,209,204,55,235,67,56,182,198,220,198,25,69,14,53,78,37,148,78,8,145,165,205,66,236,0,0,0,0],[157,32,62,93,129,85,209,204,55,235,67,56,182,198,220,198,25,69,14,53,78,37,148,78,8,145,165,205,66,236,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,168,199,104,88,68,55,11,128,145,98,30,83,40,31,217,185,56,112,58,179,189,41,202,228,253,231,28,165,252,233,206,60,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,76,89,109,159,75,109,69,130,201,183,83,235,158,209,149,47,83,85,253,118,20,91,85,40,255,7,134,199,151,232,69,5,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,32,62,93,129,85,209,204,55,235,67,56,182,198,220,198,25,69,14,53,78,37,148,78,8,145,165,205,66,236,0,0,0,0]],"keccak_data":[[248,102,157,32,62,93,129,85,209,204,55,235,67,56,182,198,220,198,25,69,14,53,78,37,148,78,8,145,165,205,66,236,184,70,248,68,128,128,160,168,199,104,88,68,55,11,128,145,98,30,83,40,31,217,185,56,112,58,179,189,41,202,228,253,231,28,165,252,233,206,60,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,32,62,93,129,85,209,204,55,235,67,56,182,198,220,198,25,69,14,53,78,37,148,78,8,145,165,205,66,236,184,70,248,68,128,128,160,76,89,109,159,75,109,69,130,201,183,83,235,158,209,149,47,83,85,253,118,20,91,85,40,255,7,134,199,151,232,69,5,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,251,239,33,80,129,131,194,182,60,89,117,120,38,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,214,195,244,45,246,115,176,146,233,247,32,195,23,12,70,101,107,190,55,215,72,166,82,77,141,143,174,96,220,117,67,119,0],[160,88,130,254,176,165,150,161,122,54,133,71,237,254,141,101,100,135,185,202,23,195,5,199,45,49,253,246,235,178,0,255,130,0],[160,206,100,21,163,213,202,153,211,20,89,121,201,128,199,82,37,152,176,13,161,59,237,124,148,254,236,216,242,126,119,233,121,0],[160,185,228,203,130,115,16,96,207,136,110,239,83,202,102,94,135,170,241,137,34,227,70,105,198,48,47,61,176,187,146,152,206,0],[160,245,93,164,217,168,130,117,33,10,79,206,102,217,104,174,204,55,144,173,29,171,153,52,247,65,94,3,120,136,133,113,137,0],[160,230,68,115,42,167,193,17,185,239,176,90,30,205,99,190,175,89,178,168,70,89,14,220,67,184,146,202,42,189,182,51,190,0],[160,85,83,114,61,113,42,28,60,242,159,218,90,206,16,140,74,124,154,18,160,53,246,186,233,107,73,46,254,18,75,47,147,0],[160,89,90,52,80,252,109,214,48,252,66,48,208,168,79,62,80,179,254,122,181,240,126,71,118,238,74,221,169,34,91,144,38,0],[160,28,210,125,44,43,13,68,38,218,169,123,221,0,77,217,20,185,66,203,186,238,118,246,238,144,218,176,87,88,153,125,152,0],[160,51,40,154,4,219,129,108,42,120,61,114,181,239,14,0,138,62,32,222,102,180,46,163,235,14,71,27,3,242,151,165,133,0],[160,221,181,63,128,237,179,86,222,12,41,194,7,85,77,73,37,146,251,42,86,29,141,89,57,66,97,207,16,160,113,99,158,0],[160,58,22,42,72,118,113,38,35,57,68,95,117,66,169,9,9,28,25,143,102,24,118,144,65,229,228,121,101,20,167,6,194,0],[160,27,177,232,148,216,39,95,227,113,37,29,225,188,40,99,88,227,197,235,94,182,237,78,77,215,223,227,27,47,73,247,84,0],[160,130,164,185,214,76,218,31,222,13,144,252,191,78,46,40,7,7,97,186,214,6,107,105,56,60,220,208,245,174,80,221,230,0],[160,94,102,86,131,113,1,162,16,94,58,115,225,65,201,33,17,159,22,91,48,168,142,10,191,36,160,28,198,113,75,54,72,0],[160,1,51,213,33,216,48,173,250,164,40,77,32,67,15,137,93,185,243,109,76,169,33,179,71,166,47,193,148,243,216,221,73,0],[160,187,8,157,195,152,194,195,101,85,55,91,229,182,90,188,202,192,148,23,38,92,255,250,105,206,62,201,154,134,210,84,234,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,88,130,254,176,165,150,161,122,54,133,71,237,254,141,101,100,135,185,202,23,195,5,199,45,49,253,246,235,178,0,255,130,160,206,100,21,163,213,202,153,211,20,89,121,201,128,199,82,37,152,176,13,161,59,237,124,148,254,236,216,242,126,119,233,121,160,185,228,203,130,115,16,96,207,136,110,239,83,202,102,94,135,170,241,137,34,227,70,105,198,48,47,61,176,187,146,152,206,160,245,93,164,217,168,130,117,33,10,79,206,102,217,104,174,204,55,144,173,29,171,153,52,247,65,94,3,120,136,133,113,137,160,230,68,115,42,167,193,17,185,239,176,90,30,205,99,190,175,89,178,168,70,89,14,220,67,184,146,202,42,189,182,51,190,160,85,83,114,61,113,42,28,60,242,159,218,90,206,16,140,74,124,154,18,160,53,246,186,233,107,73,46,254,18,75,47,147,160,89,90,52,80,252,109,214,48,252,66,48,208,168,79,62,80,179,254,122,181,240,126,71,118,238,74,221,169,34,91,144,38,160,28,210,125,44,43,13,68,38,218,169,123,221,0,77,217,20,185,66,203,186,238,118,246,238,144,218,176,87,88,153,125,152,160,51,40,154,4,219,129,108,42,120,61,114,181,239,14,0,138,62,32,222,102,180,46,163,235,14,71,27,3,242,151,165,133,160,221,181,63,128,237,179,86,222,12,41,194,7,85,77,73,37,146,251,42,86,29,141,89,57,66,97,207,16,160,113,99,158,160,58,22,42,72,118,113,38,35,57,68,95,117,66,169,9,9,28,25,143,102,24,118,144,65,229,228,121,101,20,167,6,194,160,27,177,232,148,216,39,95,227,113,37,29,225,188,40,99,88,227,197,235,94,182,237,78,77,215,223,227,27,47,73,247,84,160,130,164,185,214,76,218,31,222,13,144,252,191,78,46,40,7,7,97,186,214,6,107,105,56,60,220,208,245,174,80,221,230,160,94,102,86,131,113,1,162,16,94,58,115,225,65,201,33,17,159,22,91,48,168,142,10,191,36,160,28,198,113,75,54,72,160,1,51,213,33,216,48,173,250,164,40,77,32,67,15,137,93,185,243,109,76,169,33,179,71,166,47,193,148,243,216,221,73,160,187,8,157,195,152,194,195,101,85,55,91,229,182,90,188,202,192,148,23,38,92,255,250,105,206,62,201,154,134,210,84,234,128],[249,2,17,160,88,130,254,176,165,150,161,122,54,133,71,237,254,141,101,100,135,185,202,23,195,5,199,45,49,253,246,235,178,0,255,130,160,206,100,21,163,213,202,153,211,20,89,121,201,128,199,82,37,152,176,13,161,59,237,124,148,254,236,216,242,126,119,233,121,160,185,228,203,130,115,16,96,207,136,110,239,83,202,102,94,135,170,241,137,34,227,70,105,198,48,47,61,176,187,146,152,206,160,245,93,164,217,168,130,117,33,10,79,206,102,217,104,174,204,55,144,173,29,171,153,52,247,65,94,3,120,136,133,113,137,160,230,68,115,42,167,193,17,185,239,176,90,30,205,99,190,175,89,178,168,70,89,14,220,67,184,146,202,42,189,182,51,190,160,85,83,114,61,113,42,28,60,242,159,218,90,206,16,140,74,124,154,18,160,53,246,186,233,107,73,46,254,18,75,47,147,160,89,90,52,80,252,109,214,48,252,66,48,208,168,79,62,80,179,254,122,181,240,126,71,118,238,74,221,169,34,91,144,38,160,28,210,125,44,43,13,68,38,218,169,123,221,0,77,217,20,185,66,203,186,238,118,246,238,144,218,176,87,88,153,125,152,160,51,40,154,4,219,129,108,42,120,61,114,181,239,14,0,138,62,32,222,102,180,46,163,235,14,71,27,3,242,151,165,133,160,221,181,63,128,237,179,86,222,12,41,194,7,85,77,73,37,146,251,42,86,29,141,89,57,66,97,207,16,160,113,99,158,160,58,22,42,72,118,113,38,35,57,68,95,117,66,169,9,9,28,25,143,102,24,118,144,65,229,228,121,101,20,167,6,194,160,27,177,232,148,216,39,95,227,113,37,29,225,188,40,99,88,227,197,235,94,182,237,78,77,215,223,227,27,47,73,247,84,160,130,164,185,214,76,218,31,222,13,144,252,191,78,46,40,7,7,97,186,214,6,107,105,56,60,220,208,245,174,80,221,230,160,94,102,86,131,113,1,162,16,94,58,115,225,65,201,33,17,159,22,91,48,168,142,10,191,36,160,28,198,113,75,54,72,160,214,195,244,45,246,115,176,146,233,247,32,195,23,12,70,101,107,190,55,215,72,166,82,77,141,143,174,96,220,117,67,119,160,187,8,157,195,152,194,195,101,85,55,91,229,182,90,188,202,192,148,23,38,92,255,250,105,206,62,201,154,134,210,84,234,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,1,81],[249,1,81]]}},"account":null,"storage":null,"values":[[160,72,211,88,40,199,155,24,253,79,38,136,41,38,16,100,159,73,146,125,17,100,99,237,88,130,55,190,47,22,67,203,188,0],[160,223,191,47,91,38,97,233,207,234,252,240,126,240,80,166,146,43,0,163,47,46,244,225,208,162,228,1,87,150,188,106,77,0],[160,255,69,36,238,59,56,81,174,192,41,30,22,105,156,2,102,173,58,62,95,210,198,243,187,172,82,81,110,157,36,173,56,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,186,227,45,209,79,154,5,112,143,64,120,137,180,220,95,217,242,33,120,152,221,159,185,238,104,77,176,251,69,213,123,160,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,187,244,53,58,42,141,178,166,196,86,132,46,248,240,248,123,193,114,242,47,204,54,76,166,150,15,74,135,193,230,9,172,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,225,136,101,189,239,82,3,5,134,251,62,100,120,128,129,186,92,184,233,88,187,23,68,92,149,49,207,163,243,163,232,23,0],[160,141,83,34,180,161,0,161,199,96,114,90,214,75,148,44,16,243,215,77,116,78,73,221,96,55,212,175,186,109,239,128,223,0],[160,224,39,241,8,86,117,180,255,110,155,204,245,17,208,152,191,111,95,124,65,172,241,28,81,146,97,149,20,154,213,232,106,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,200,46,43,163,240,176,159,66,189,141,0,101,185,85,208,239,240,81,52,222,137,109,217,103,229,88,34,216,31,124,111,156,0],[160,54,63,38,143,24,187,59,31,244,76,63,28,86,27,108,104,184,215,17,124,1,255,174,150,116,135,163,23,33,7,65,3,0],[160,231,33,33,44,130,79,181,58,121,185,85,171,197,178,228,192,123,46,3,95,35,193,225,191,34,30,31,58,22,54,182,240,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,81,160,223,191,47,91,38,97,233,207,234,252,240,126,240,80,166,146,43,0,163,47,46,244,225,208,162,228,1,87,150,188,106,77,160,255,69,36,238,59,56,81,174,192,41,30,22,105,156,2,102,173,58,62,95,210,198,243,187,172,82,81,110,157,36,173,56,128,128,160,186,227,45,209,79,154,5,112,143,64,120,137,180,220,95,217,242,33,120,152,221,159,185,238,104,77,176,251,69,213,123,160,128,160,187,244,53,58,42,141,178,166,196,86,132,46,248,240,248,123,193,114,242,47,204,54,76,166,150,15,74,135,193,230,9,172,128,160,225,136,101,189,239,82,3,5,134,251,62,100,120,128,129,186,92,184,233,88,187,23,68,92,149,49,207,163,243,163,232,23,160,141,83,34,180,161,0,161,199,96,114,90,214,75,148,44,16,243,215,77,116,78,73,221,96,55,212,175,186,109,239,128,223,160,224,39,241,8,86,117,180,255,110,155,204,245,17,208,152,191,111,95,124,65,172,241,28,81,146,97,149,20,154,213,232,106,128,160,200,46,43,163,240,176,159,66,189,141,0,101,185,85,208,239,240,81,52,222,137,109,217,103,229,88,34,216,31,124,111,156,160,54,63,38,143,24,187,59,31,244,76,63,28,86,27,108,104,184,215,17,124,1,255,174,150,116,135,163,23,33,7,65,3,160,231,33,33,44,130,79,181,58,121,185,85,171,197,178,228,192,123,46,3,95,35,193,225,191,34,30,31,58,22,54,182,240,128,128],[249,1,81,160,223,191,47,91,38,97,233,207,234,252,240,126,240,80,166,146,43,0,163,47,46,244,225,208,162,228,1,87,150,188,106,77,160,255,69,36,238,59,56,81,174,192,41,30,22,105,156,2,102,173,58,62,95,210,198,243,187,172,82,81,110,157,36,173,56,128,128,160,186,227,45,209,79,154,5,112,143,64,120,137,180,220,95,217,242,33,120,152,221,159,185,238,104,77,176,251,69,213,123,160,128,160,187,244,53,58,42,141,178,166,196,86,132,46,248,240,248,123,193,114,242,47,204,54,76,166,150,15,74,135,193,230,9,172,128,160,225,136,101,189,239,82,3,5,134,251,62,100,120,128,129,186,92,184,233,88,187,23,68,92,149,49,207,163,243,163,232,23,160,141,83,34,180,161,0,161,199,96,114,90,214,75,148,44,16,243,215,77,116,78,73,221,96,55,212,175,186,109,239,128,223,160,224,39,241,8,86,117,180,255,110,155,204,245,17,208,152,191,111,95,124,65,172,241,28,81,146,97,149,20,154,213,232,106,128,160,200,46,43,163,240,176,159,66,189,141,0,101,185,85,208,239,240,81,52,222,137,109,217,103,229,88,34,216,31,124,111,156,160,72,211,88,40,199,155,24,253,79,38,136,41,38,16,100,159,73,146,125,17,100,99,237,88,130,55,190,47,22,67,203,188,160,231,33,33,44,130,79,181,58,121,185,85,171,197,178,228,192,123,46,3,95,35,193,225,191,34,30,31,58,22,54,182,240,128,128]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[false,true],"extension":{"list_rlp_bytes":[228]},"branch":{"modified_index":13,"drifted_index":9,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,95,184,246,162,216,146,32,47,123,31,21,167,62,238,216,82,226,132,86,213,247,36,36,234,72,52,26,136,223,232,253,63,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,167,11,74,230,177,195,144,152,106,9,108,135,175,61,210,234,146,91,225,194,76,0,238,38,188,247,40,57,49,102,180,210,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,95,184,246,162,216,146,32,47,123,31,21,167,62,238,216,82,226,132,86,213,247,36,36,234,72,52,26,136,223,232,253,63,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[130,0,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,114,253,150,133,18,192,156,19,241,162,51,210,24,1,151,16,48,7,177,42,60,49,34,230,254,242,79,132,165,90,75,249,0],[0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,114,253,150,133,18,192,156,19,241,162,51,210,24,1,151,16,48,7,177,42,60,49,34,230,254,242,79,132,165,90,75,249,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,128,160,167,11,74,230,177,195,144,152,106,9,108,135,175,61,210,234,146,91,225,194,76,0,238,38,188,247,40,57,49,102,180,210,128,128,128,160,95,184,246,162,216,146,32,47,123,31,21,167,62,238,216,82,226,132,86,213,247,36,36,234,72,52,26,136,223,232,253,63,128,128,128],[248,81,128,128,128,128,128,128,128,128,128,160,167,11,74,230,177,195,144,152,106,9,108,135,175,61,210,234,146,91,225,194,76,0,238,38,188,247,40,57,49,102,180,210,128,128,128,160,95,184,246,162,216,146,32,47,123,31,21,167,62,238,216,82,226,132,86,213,247,36,36,234,72,52,26,136,223,232,253,63,128,128,128],[228,130,0,149,160,114,253,150,133,18,192,156,19,241,162,51,210,24,1,151,16,48,7,177,42,60,49,34,230,254,242,79,132,165,90,75,249],[228,130,0,149,160,114,253,150,133,18,192,156,19,241,162,51,210,24,1,151,16,48,7,177,42,60,49,34,230,254,242,79,132,165,90,75,249]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,114],"key":[237,149,213,42,227,19,230,190,109,140,143,153,69,146,58,100,151,195,114,105,186,53,213,227,83,91,117,142,71,34,124,252],"list_rlp_bytes":[[226],[228]],"value_rlp_bytes":[[130],[130]],"drifted_rlp_bytes":[226],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[158,53,42,227,19,230,190,109,140,143,153,69,146,58,100,151,195,114,105,186,53,213,227,83,91,117,142,71,34,124,252,0,0,0],[129,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,149,152,74,221,132,196,1,76,127,157,102,161,183,62,120,142,45,182,79,87,99,250,134,26,213,45,162,4,247,27,43,0],[129,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[158,56,74,221,132,196,1,76,127,157,102,161,183,62,120,142,45,182,79,87,99,250,134,26,213,45,162,4,247,27,43,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[226,158,53,42,227,19,230,190,109,140,143,153,69,146,58,100,151,195,114,105,186,53,213,227,83,91,117,142,71,34,124,252,130,129,173],[228,160,32,149,152,74,221,132,196,1,76,127,157,102,161,183,62,120,142,45,182,79,87,99,250,134,26,213,45,162,4,247,27,43,130,129,146],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,114],[226,158,56,74,221,132,196,1,76,127,157,102,161,183,62,120,142,45,182,79,87,99,250,134,26,213,45,162,4,247,27,43,130,129,146]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ExtensionDeletedTwoKeyBytesSel2.json b/zkevm-circuits/src/mpt_circuit/tests/ExtensionDeletedTwoKeyBytesSel2.json new file mode 100644 index 0000000000..0e77c45f22 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ExtensionDeletedTwoKeyBytesSel2.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,217,189,154,245,148,60,246,196,48,7,91,27,75,207,123,195,20,161,124,51,226,135,16,82,212,70,106,221,134,62,240,99,0],[160,123,243,228,151,12,212,203,233,4,7,169,29,1,191,225,14,230,20,99,229,68,51,219,193,140,137,157,83,128,41,175,30,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,250,220,105,244,241,220,145,80,1,234,219,121,174,185,14,131,194,223,138,243,6,248,124,98,218,7,116,216,163,129,58,15,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,208,230,7,186,137,143,47,107,201,43,109,52,82,40,72,163,135,169,33,123,56,113,247,127,68,242,83,66,32,5,176,75,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,208,230,7,186,137,143,47,107,201,43,109,52,82,40,72,163,135,169,33,123,56,113,247,127,68,242,83,66,32,5,176,75,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,250,220,105,244,241,220,145,80,1,234,219,121,174,185,14,131,194,223,138,243,6,248,124,98,218,7,116,216,163,129,58,15,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,242,7,233,199,59,177,135,8,251,11,244,104,163,211,102,32,208,221,34,206,187,14,210,207,40,74,238,78,159,76,171,116,0],[160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,0],[160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,0],[160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,0],[160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,0],[160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,0],[160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,0],[160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,0],[160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,0],[160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,0],[160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,0],[160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,0],[160,128,173,60,145,248,253,133,144,179,124,61,33,232,140,5,252,151,234,86,121,34,249,8,121,154,121,230,147,181,238,80,169,0],[160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,0],[160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,0],[160,105,31,143,202,97,79,163,131,191,159,167,233,177,89,154,179,146,17,145,88,113,213,102,123,125,49,63,14,23,154,117,151,0],[160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,160,128,173,60,145,248,253,133,144,179,124,61,33,232,140,5,252,151,234,86,121,34,249,8,121,154,121,230,147,181,238,80,169,160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,160,105,31,143,202,97,79,163,131,191,159,167,233,177,89,154,179,146,17,145,88,113,213,102,123,125,49,63,14,23,154,117,151,160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,128],[249,2,17,160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,160,128,173,60,145,248,253,133,144,179,124,61,33,232,140,5,252,151,234,86,121,34,249,8,121,154,121,230,147,181,238,80,169,160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,160,242,7,233,199,59,177,135,8,251,11,244,104,163,211,102,32,208,221,34,206,187,14,210,207,40,74,238,78,159,76,171,116,160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,237,241,191,95,245,122,254,177,59,217,104,113,158,186,29,72,37,251,245,115,26,221,239,162,181,52,55,93,68,35,105,186,0],[160,80,75,215,208,193,159,84,57,71,243,7,14,204,100,148,205,208,55,165,27,88,145,87,12,99,158,158,182,197,55,33,95,0],[160,76,180,250,234,22,207,36,13,201,139,0,120,72,139,180,238,156,185,62,97,200,44,188,159,187,99,106,94,147,15,25,20,0],[160,189,17,169,103,34,213,240,167,18,182,246,233,129,88,212,80,113,250,13,189,211,144,206,169,179,25,180,70,188,155,55,32,0],[160,32,220,255,83,236,6,9,125,247,185,224,139,47,190,49,98,219,131,56,50,131,152,150,81,107,126,7,163,202,127,91,164,0],[160,185,211,148,32,33,143,139,118,55,225,47,134,141,134,35,28,209,179,72,57,247,141,152,65,38,141,179,61,214,174,204,14,0],[160,107,106,58,227,233,173,248,116,152,133,228,250,245,205,196,226,135,107,65,132,233,139,78,59,136,248,255,241,150,83,160,5,0],[160,0,164,180,172,120,195,134,123,28,39,200,127,136,82,33,245,97,141,28,111,0,184,5,98,102,230,66,116,77,224,101,219,0],[160,248,105,172,225,53,1,157,135,194,244,188,254,17,122,124,197,196,99,49,56,111,8,165,230,145,108,189,38,207,45,75,50,0],[160,35,73,222,234,130,172,207,150,15,218,253,15,36,223,217,31,215,79,14,171,224,221,215,51,242,239,84,255,134,147,216,166,0],[160,240,32,244,239,11,87,72,174,41,33,118,196,147,56,102,122,208,41,160,96,186,168,111,141,93,215,31,104,139,17,215,242,0],[160,82,199,196,167,58,157,107,196,36,170,39,205,176,246,208,56,210,163,200,208,226,179,109,60,35,248,244,49,8,254,178,170,0],[160,141,24,238,114,43,222,174,44,184,58,223,201,88,244,96,167,243,134,249,54,83,108,9,224,208,38,13,102,112,245,138,117,0],[160,255,250,210,54,157,254,43,240,80,48,249,200,142,240,27,109,12,250,107,172,243,192,36,2,224,146,228,178,151,220,187,84,0],[160,231,83,108,124,37,12,66,134,242,2,97,130,128,110,222,91,65,238,211,219,127,83,155,247,57,160,84,71,36,68,143,249,0],[160,49,132,199,94,225,34,198,225,84,182,131,124,126,81,66,197,238,228,144,216,66,221,170,150,141,52,23,177,9,14,164,218,0],[160,119,192,211,22,95,58,240,144,240,37,172,65,97,91,255,225,107,12,151,189,7,88,0,51,192,124,155,194,253,5,143,142,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,80,75,215,208,193,159,84,57,71,243,7,14,204,100,148,205,208,55,165,27,88,145,87,12,99,158,158,182,197,55,33,95,160,76,180,250,234,22,207,36,13,201,139,0,120,72,139,180,238,156,185,62,97,200,44,188,159,187,99,106,94,147,15,25,20,160,189,17,169,103,34,213,240,167,18,182,246,233,129,88,212,80,113,250,13,189,211,144,206,169,179,25,180,70,188,155,55,32,160,32,220,255,83,236,6,9,125,247,185,224,139,47,190,49,98,219,131,56,50,131,152,150,81,107,126,7,163,202,127,91,164,160,185,211,148,32,33,143,139,118,55,225,47,134,141,134,35,28,209,179,72,57,247,141,152,65,38,141,179,61,214,174,204,14,160,107,106,58,227,233,173,248,116,152,133,228,250,245,205,196,226,135,107,65,132,233,139,78,59,136,248,255,241,150,83,160,5,160,0,164,180,172,120,195,134,123,28,39,200,127,136,82,33,245,97,141,28,111,0,184,5,98,102,230,66,116,77,224,101,219,160,248,105,172,225,53,1,157,135,194,244,188,254,17,122,124,197,196,99,49,56,111,8,165,230,145,108,189,38,207,45,75,50,160,35,73,222,234,130,172,207,150,15,218,253,15,36,223,217,31,215,79,14,171,224,221,215,51,242,239,84,255,134,147,216,166,160,240,32,244,239,11,87,72,174,41,33,118,196,147,56,102,122,208,41,160,96,186,168,111,141,93,215,31,104,139,17,215,242,160,82,199,196,167,58,157,107,196,36,170,39,205,176,246,208,56,210,163,200,208,226,179,109,60,35,248,244,49,8,254,178,170,160,141,24,238,114,43,222,174,44,184,58,223,201,88,244,96,167,243,134,249,54,83,108,9,224,208,38,13,102,112,245,138,117,160,255,250,210,54,157,254,43,240,80,48,249,200,142,240,27,109,12,250,107,172,243,192,36,2,224,146,228,178,151,220,187,84,160,231,83,108,124,37,12,66,134,242,2,97,130,128,110,222,91,65,238,211,219,127,83,155,247,57,160,84,71,36,68,143,249,160,49,132,199,94,225,34,198,225,84,182,131,124,126,81,66,197,238,228,144,216,66,221,170,150,141,52,23,177,9,14,164,218,160,119,192,211,22,95,58,240,144,240,37,172,65,97,91,255,225,107,12,151,189,7,88,0,51,192,124,155,194,253,5,143,142,128],[249,2,17,160,80,75,215,208,193,159,84,57,71,243,7,14,204,100,148,205,208,55,165,27,88,145,87,12,99,158,158,182,197,55,33,95,160,76,180,250,234,22,207,36,13,201,139,0,120,72,139,180,238,156,185,62,97,200,44,188,159,187,99,106,94,147,15,25,20,160,189,17,169,103,34,213,240,167,18,182,246,233,129,88,212,80,113,250,13,189,211,144,206,169,179,25,180,70,188,155,55,32,160,32,220,255,83,236,6,9,125,247,185,224,139,47,190,49,98,219,131,56,50,131,152,150,81,107,126,7,163,202,127,91,164,160,185,211,148,32,33,143,139,118,55,225,47,134,141,134,35,28,209,179,72,57,247,141,152,65,38,141,179,61,214,174,204,14,160,107,106,58,227,233,173,248,116,152,133,228,250,245,205,196,226,135,107,65,132,233,139,78,59,136,248,255,241,150,83,160,5,160,0,164,180,172,120,195,134,123,28,39,200,127,136,82,33,245,97,141,28,111,0,184,5,98,102,230,66,116,77,224,101,219,160,248,105,172,225,53,1,157,135,194,244,188,254,17,122,124,197,196,99,49,56,111,8,165,230,145,108,189,38,207,45,75,50,160,35,73,222,234,130,172,207,150,15,218,253,15,36,223,217,31,215,79,14,171,224,221,215,51,242,239,84,255,134,147,216,166,160,240,32,244,239,11,87,72,174,41,33,118,196,147,56,102,122,208,41,160,96,186,168,111,141,93,215,31,104,139,17,215,242,160,82,199,196,167,58,157,107,196,36,170,39,205,176,246,208,56,210,163,200,208,226,179,109,60,35,248,244,49,8,254,178,170,160,237,241,191,95,245,122,254,177,59,217,104,113,158,186,29,72,37,251,245,115,26,221,239,162,181,52,55,93,68,35,105,186,160,255,250,210,54,157,254,43,240,80,48,249,200,142,240,27,109,12,250,107,172,243,192,36,2,224,146,228,178,151,220,187,84,160,231,83,108,124,37,12,66,134,242,2,97,130,128,110,222,91,65,238,211,219,127,83,155,247,57,160,84,71,36,68,143,249,160,49,132,199,94,225,34,198,225,84,182,131,124,126,81,66,197,238,228,144,216,66,221,170,150,141,52,23,177,9,14,164,218,160,119,192,211,22,95,58,240,144,240,37,172,65,97,91,255,225,107,12,151,189,7,88,0,51,192,124,155,194,253,5,143,142,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,174,143,30,138,160,119,22,182,136,98,36,171,1,125,207,242,224,48,59,124,91,75,91,95,121,114,212,67,25,57,185,133,0],[160,135,19,64,207,217,223,201,245,3,114,121,32,66,43,57,133,252,55,82,116,223,71,100,149,122,243,45,28,63,150,204,110,0],[160,210,120,212,210,151,79,221,51,232,80,80,186,46,159,194,233,203,46,201,120,35,213,101,124,0,8,177,219,68,14,121,240,0],[160,7,114,2,237,174,156,12,217,41,80,207,22,255,39,79,29,172,209,87,195,37,188,55,186,206,78,97,11,87,224,72,236,0],[160,22,29,249,121,177,221,199,134,231,204,178,150,90,71,228,195,117,255,255,223,21,95,194,251,151,149,22,131,234,12,148,141,0],[160,154,130,254,249,64,180,76,29,52,23,185,183,92,39,79,57,58,81,220,159,7,224,15,179,212,252,51,109,150,166,138,123,0],[160,191,184,181,142,36,247,244,175,48,46,160,172,131,40,126,16,142,50,208,215,51,119,231,93,236,238,227,222,169,47,110,125,0],[160,63,16,188,230,177,90,174,250,172,232,195,227,33,146,180,160,216,2,248,221,210,179,93,60,27,200,22,229,211,119,190,115,0],[160,231,179,177,242,26,188,159,51,188,156,22,150,126,87,205,8,167,108,243,82,117,45,140,143,7,150,144,93,59,6,102,220,0],[160,178,157,0,28,65,106,227,88,84,22,69,42,75,101,149,62,86,45,11,59,216,93,0,97,209,124,70,114,145,152,73,213,0],[160,80,176,142,247,234,92,148,168,17,76,79,72,211,136,9,251,173,156,52,47,222,75,47,99,175,39,37,242,43,103,246,104,0],[160,220,42,251,8,22,8,115,225,127,17,184,13,248,242,7,12,82,192,44,74,62,147,117,10,57,158,59,179,221,195,212,185,0],[160,73,210,235,92,4,27,119,189,211,244,21,130,213,183,166,10,118,148,51,106,35,39,41,16,212,32,33,30,232,202,253,127,0],[160,45,234,125,167,138,171,111,217,200,71,109,44,151,79,202,136,227,21,63,196,251,135,189,172,157,97,199,5,92,103,113,208,0],[160,32,136,102,148,196,136,37,163,51,96,178,15,175,37,129,190,72,46,102,165,57,108,199,41,1,153,217,87,99,246,185,134,0],[160,195,142,65,38,53,73,58,93,254,20,214,13,99,184,121,102,237,111,202,60,113,233,229,157,72,243,233,231,38,188,161,198,0],[160,29,13,42,118,4,81,208,108,222,61,121,232,127,152,172,231,68,36,11,214,122,155,128,182,146,21,101,238,226,237,167,149,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,135,19,64,207,217,223,201,245,3,114,121,32,66,43,57,133,252,55,82,116,223,71,100,149,122,243,45,28,63,150,204,110,160,210,120,212,210,151,79,221,51,232,80,80,186,46,159,194,233,203,46,201,120,35,213,101,124,0,8,177,219,68,14,121,240,160,7,114,2,237,174,156,12,217,41,80,207,22,255,39,79,29,172,209,87,195,37,188,55,186,206,78,97,11,87,224,72,236,160,22,29,249,121,177,221,199,134,231,204,178,150,90,71,228,195,117,255,255,223,21,95,194,251,151,149,22,131,234,12,148,141,160,154,130,254,249,64,180,76,29,52,23,185,183,92,39,79,57,58,81,220,159,7,224,15,179,212,252,51,109,150,166,138,123,160,191,184,181,142,36,247,244,175,48,46,160,172,131,40,126,16,142,50,208,215,51,119,231,93,236,238,227,222,169,47,110,125,160,63,16,188,230,177,90,174,250,172,232,195,227,33,146,180,160,216,2,248,221,210,179,93,60,27,200,22,229,211,119,190,115,160,231,179,177,242,26,188,159,51,188,156,22,150,126,87,205,8,167,108,243,82,117,45,140,143,7,150,144,93,59,6,102,220,160,178,157,0,28,65,106,227,88,84,22,69,42,75,101,149,62,86,45,11,59,216,93,0,97,209,124,70,114,145,152,73,213,160,80,176,142,247,234,92,148,168,17,76,79,72,211,136,9,251,173,156,52,47,222,75,47,99,175,39,37,242,43,103,246,104,160,220,42,251,8,22,8,115,225,127,17,184,13,248,242,7,12,82,192,44,74,62,147,117,10,57,158,59,179,221,195,212,185,160,73,210,235,92,4,27,119,189,211,244,21,130,213,183,166,10,118,148,51,106,35,39,41,16,212,32,33,30,232,202,253,127,160,45,234,125,167,138,171,111,217,200,71,109,44,151,79,202,136,227,21,63,196,251,135,189,172,157,97,199,5,92,103,113,208,160,32,136,102,148,196,136,37,163,51,96,178,15,175,37,129,190,72,46,102,165,57,108,199,41,1,153,217,87,99,246,185,134,160,195,142,65,38,53,73,58,93,254,20,214,13,99,184,121,102,237,111,202,60,113,233,229,157,72,243,233,231,38,188,161,198,160,29,13,42,118,4,81,208,108,222,61,121,232,127,152,172,231,68,36,11,214,122,155,128,182,146,21,101,238,226,237,167,149,128],[249,2,17,160,135,19,64,207,217,223,201,245,3,114,121,32,66,43,57,133,252,55,82,116,223,71,100,149,122,243,45,28,63,150,204,110,160,210,120,212,210,151,79,221,51,232,80,80,186,46,159,194,233,203,46,201,120,35,213,101,124,0,8,177,219,68,14,121,240,160,7,114,2,237,174,156,12,217,41,80,207,22,255,39,79,29,172,209,87,195,37,188,55,186,206,78,97,11,87,224,72,236,160,22,29,249,121,177,221,199,134,231,204,178,150,90,71,228,195,117,255,255,223,21,95,194,251,151,149,22,131,234,12,148,141,160,154,130,254,249,64,180,76,29,52,23,185,183,92,39,79,57,58,81,220,159,7,224,15,179,212,252,51,109,150,166,138,123,160,191,184,181,142,36,247,244,175,48,46,160,172,131,40,126,16,142,50,208,215,51,119,231,93,236,238,227,222,169,47,110,125,160,63,16,188,230,177,90,174,250,172,232,195,227,33,146,180,160,216,2,248,221,210,179,93,60,27,200,22,229,211,119,190,115,160,174,143,30,138,160,119,22,182,136,98,36,171,1,125,207,242,224,48,59,124,91,75,91,95,121,114,212,67,25,57,185,133,160,178,157,0,28,65,106,227,88,84,22,69,42,75,101,149,62,86,45,11,59,216,93,0,97,209,124,70,114,145,152,73,213,160,80,176,142,247,234,92,148,168,17,76,79,72,211,136,9,251,173,156,52,47,222,75,47,99,175,39,37,242,43,103,246,104,160,220,42,251,8,22,8,115,225,127,17,184,13,248,242,7,12,82,192,44,74,62,147,117,10,57,158,59,179,221,195,212,185,160,73,210,235,92,4,27,119,189,211,244,21,130,213,183,166,10,118,148,51,106,35,39,41,16,212,32,33,30,232,202,253,127,160,45,234,125,167,138,171,111,217,200,71,109,44,151,79,202,136,227,21,63,196,251,135,189,172,157,97,199,5,92,103,113,208,160,32,136,102,148,196,136,37,163,51,96,178,15,175,37,129,190,72,46,102,165,57,108,199,41,1,153,217,87,99,246,185,134,160,195,142,65,38,53,73,58,93,254,20,214,13,99,184,121,102,237,111,202,60,113,233,229,157,72,243,233,231,38,188,161,198,160,29,13,42,118,4,81,208,108,222,61,121,232,127,152,172,231,68,36,11,214,122,155,128,182,146,21,101,238,226,237,167,149,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,234,89,194,245,207,148,211,72,213,81,75,100,132,141,197,53,15,215,245,22,160,33,194,203,115,191,24,119,189,187,229,81,0],[160,133,167,189,133,123,193,191,222,89,216,35,78,93,7,66,131,149,42,249,152,66,106,244,232,140,225,53,159,56,146,232,23,0],[160,252,122,28,104,215,195,210,194,90,68,41,241,5,233,121,31,111,39,40,44,8,54,98,144,203,206,196,168,223,212,246,221,0],[160,108,140,134,51,36,35,162,155,179,219,212,248,1,165,39,162,65,235,79,21,5,180,1,119,15,51,58,169,249,106,94,169,0],[160,254,76,95,71,155,26,54,113,106,54,108,164,206,63,247,247,91,164,234,52,148,14,43,211,132,137,64,194,118,82,194,177,0],[160,14,185,41,78,52,126,90,218,79,124,126,55,116,181,121,241,185,238,44,135,0,49,233,24,87,231,76,225,31,130,200,18,0],[160,184,203,50,205,70,164,135,3,71,89,95,190,248,113,62,67,78,182,14,228,178,180,2,161,165,175,67,60,73,23,173,123,0],[160,144,195,48,89,145,149,182,147,85,15,69,184,79,146,224,36,71,69,131,22,233,191,131,250,24,98,82,185,178,33,37,178,0],[160,103,13,127,211,234,63,148,126,213,126,127,233,179,188,239,177,163,141,165,207,149,48,253,223,158,89,76,162,21,6,208,123,0],[160,60,30,137,167,221,156,12,2,111,77,132,147,40,151,60,202,47,85,195,64,141,50,215,66,51,129,199,36,184,203,150,136,0],[160,47,92,105,177,160,255,212,105,132,109,28,120,118,228,101,197,3,61,151,81,126,86,140,26,92,137,116,150,66,142,148,133,0],[160,188,123,142,119,144,241,30,96,104,247,77,149,203,234,218,50,166,117,17,238,216,103,24,146,142,202,126,58,34,229,213,98,0],[160,79,221,60,218,196,71,70,119,145,25,123,243,16,101,75,62,20,134,78,48,105,16,31,74,70,55,29,138,247,165,131,2,0],[160,10,81,148,85,182,179,4,213,104,8,18,186,104,176,241,146,55,220,243,205,207,90,175,2,120,133,99,27,67,103,37,137,0],[160,92,135,250,214,119,219,245,233,65,207,198,41,62,154,6,183,119,86,175,138,217,145,8,75,217,202,166,21,201,199,183,160,0],[160,178,118,164,136,184,196,235,68,1,208,226,214,129,93,154,28,118,79,39,37,41,21,31,157,175,140,26,16,206,117,245,161,0],[160,166,122,17,151,156,67,20,33,110,157,14,75,253,205,253,90,57,76,61,99,70,105,124,243,136,52,164,181,121,236,236,70,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,133,167,189,133,123,193,191,222,89,216,35,78,93,7,66,131,149,42,249,152,66,106,244,232,140,225,53,159,56,146,232,23,160,252,122,28,104,215,195,210,194,90,68,41,241,5,233,121,31,111,39,40,44,8,54,98,144,203,206,196,168,223,212,246,221,160,108,140,134,51,36,35,162,155,179,219,212,248,1,165,39,162,65,235,79,21,5,180,1,119,15,51,58,169,249,106,94,169,160,254,76,95,71,155,26,54,113,106,54,108,164,206,63,247,247,91,164,234,52,148,14,43,211,132,137,64,194,118,82,194,177,160,14,185,41,78,52,126,90,218,79,124,126,55,116,181,121,241,185,238,44,135,0,49,233,24,87,231,76,225,31,130,200,18,160,184,203,50,205,70,164,135,3,71,89,95,190,248,113,62,67,78,182,14,228,178,180,2,161,165,175,67,60,73,23,173,123,160,144,195,48,89,145,149,182,147,85,15,69,184,79,146,224,36,71,69,131,22,233,191,131,250,24,98,82,185,178,33,37,178,160,103,13,127,211,234,63,148,126,213,126,127,233,179,188,239,177,163,141,165,207,149,48,253,223,158,89,76,162,21,6,208,123,160,60,30,137,167,221,156,12,2,111,77,132,147,40,151,60,202,47,85,195,64,141,50,215,66,51,129,199,36,184,203,150,136,160,47,92,105,177,160,255,212,105,132,109,28,120,118,228,101,197,3,61,151,81,126,86,140,26,92,137,116,150,66,142,148,133,160,188,123,142,119,144,241,30,96,104,247,77,149,203,234,218,50,166,117,17,238,216,103,24,146,142,202,126,58,34,229,213,98,160,79,221,60,218,196,71,70,119,145,25,123,243,16,101,75,62,20,134,78,48,105,16,31,74,70,55,29,138,247,165,131,2,160,10,81,148,85,182,179,4,213,104,8,18,186,104,176,241,146,55,220,243,205,207,90,175,2,120,133,99,27,67,103,37,137,160,92,135,250,214,119,219,245,233,65,207,198,41,62,154,6,183,119,86,175,138,217,145,8,75,217,202,166,21,201,199,183,160,160,178,118,164,136,184,196,235,68,1,208,226,214,129,93,154,28,118,79,39,37,41,21,31,157,175,140,26,16,206,117,245,161,160,166,122,17,151,156,67,20,33,110,157,14,75,253,205,253,90,57,76,61,99,70,105,124,243,136,52,164,181,121,236,236,70,128],[249,2,17,160,133,167,189,133,123,193,191,222,89,216,35,78,93,7,66,131,149,42,249,152,66,106,244,232,140,225,53,159,56,146,232,23,160,252,122,28,104,215,195,210,194,90,68,41,241,5,233,121,31,111,39,40,44,8,54,98,144,203,206,196,168,223,212,246,221,160,108,140,134,51,36,35,162,155,179,219,212,248,1,165,39,162,65,235,79,21,5,180,1,119,15,51,58,169,249,106,94,169,160,254,76,95,71,155,26,54,113,106,54,108,164,206,63,247,247,91,164,234,52,148,14,43,211,132,137,64,194,118,82,194,177,160,14,185,41,78,52,126,90,218,79,124,126,55,116,181,121,241,185,238,44,135,0,49,233,24,87,231,76,225,31,130,200,18,160,184,203,50,205,70,164,135,3,71,89,95,190,248,113,62,67,78,182,14,228,178,180,2,161,165,175,67,60,73,23,173,123,160,144,195,48,89,145,149,182,147,85,15,69,184,79,146,224,36,71,69,131,22,233,191,131,250,24,98,82,185,178,33,37,178,160,103,13,127,211,234,63,148,126,213,126,127,233,179,188,239,177,163,141,165,207,149,48,253,223,158,89,76,162,21,6,208,123,160,60,30,137,167,221,156,12,2,111,77,132,147,40,151,60,202,47,85,195,64,141,50,215,66,51,129,199,36,184,203,150,136,160,47,92,105,177,160,255,212,105,132,109,28,120,118,228,101,197,3,61,151,81,126,86,140,26,92,137,116,150,66,142,148,133,160,188,123,142,119,144,241,30,96,104,247,77,149,203,234,218,50,166,117,17,238,216,103,24,146,142,202,126,58,34,229,213,98,160,234,89,194,245,207,148,211,72,213,81,75,100,132,141,197,53,15,215,245,22,160,33,194,203,115,191,24,119,189,187,229,81,160,10,81,148,85,182,179,4,213,104,8,18,186,104,176,241,146,55,220,243,205,207,90,175,2,120,133,99,27,67,103,37,137,160,92,135,250,214,119,219,245,233,65,207,198,41,62,154,6,183,119,86,175,138,217,145,8,75,217,202,166,21,201,199,183,160,160,178,118,164,136,184,196,235,68,1,208,226,214,129,93,154,28,118,79,39,37,41,21,31,157,175,140,26,16,206,117,245,161,160,166,122,17,151,156,67,20,33,110,157,14,75,253,205,253,90,57,76,61,99,70,105,124,243,136,52,164,181,121,236,236,70,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,42,153,105,37,217,118,198,14,191,156,138,130,228,51,193,176,61,209,120,26,47,206,80,244,109,190,78,213,180,29,81,117,0],[160,148,96,233,169,14,90,134,113,124,248,170,233,105,200,185,209,37,170,23,12,53,121,255,207,171,140,58,155,240,245,176,148,0],[160,44,47,217,201,92,122,132,137,66,226,149,169,177,49,235,62,79,6,38,116,120,55,195,24,55,197,51,169,64,4,70,173,0],[160,239,47,98,216,238,2,166,46,89,15,56,7,5,196,196,62,67,249,253,235,20,235,102,134,142,200,26,17,214,152,1,145,0],[160,197,17,178,32,200,66,202,234,188,218,127,181,8,17,4,30,61,47,57,234,58,255,120,204,181,237,168,202,28,76,105,234,0],[160,63,229,58,247,19,93,67,185,34,164,106,81,163,92,222,25,161,27,40,212,121,191,185,203,236,130,187,73,151,69,189,185,0],[160,254,144,109,156,81,221,79,66,253,183,145,54,58,41,16,116,249,56,61,32,1,181,98,101,217,110,246,137,185,35,129,215,0],[160,42,32,250,190,187,193,176,158,238,99,10,152,135,244,177,201,170,90,140,94,31,244,155,240,210,136,149,233,93,37,48,191,0],[160,118,66,191,63,107,139,75,185,177,16,55,71,250,178,39,177,243,220,32,186,59,17,33,53,251,250,65,62,15,114,252,5,0],[160,81,76,82,36,53,180,76,100,114,1,16,17,231,143,16,128,224,130,54,29,129,30,175,141,192,31,129,54,103,40,235,30,0],[160,91,241,99,220,108,63,125,225,150,80,223,253,107,254,87,177,201,91,21,251,24,233,244,246,13,134,68,64,146,212,100,133,0],[160,236,116,61,181,70,202,25,127,58,207,72,50,66,207,22,152,197,203,167,193,92,102,153,213,59,137,65,153,49,136,57,215,0],[160,216,2,120,95,255,84,108,99,100,122,21,213,206,229,80,63,183,191,6,12,87,234,21,174,229,146,63,113,77,198,240,39,0],[160,190,218,104,114,65,143,16,76,171,187,221,133,224,217,179,164,222,126,10,33,35,71,63,53,163,111,199,211,228,164,124,223,0],[160,213,170,112,202,127,64,210,139,189,213,55,20,144,252,240,46,126,109,109,74,135,136,15,128,192,99,16,67,173,97,168,61,0],[160,147,75,172,163,178,143,148,112,133,47,43,229,251,14,130,192,253,59,110,111,147,43,65,57,213,172,199,179,154,184,206,56,0],[160,164,223,28,174,107,173,96,167,56,249,242,213,153,166,239,188,30,37,226,19,250,193,152,99,72,192,45,227,39,220,80,199,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,148,96,233,169,14,90,134,113,124,248,170,233,105,200,185,209,37,170,23,12,53,121,255,207,171,140,58,155,240,245,176,148,160,44,47,217,201,92,122,132,137,66,226,149,169,177,49,235,62,79,6,38,116,120,55,195,24,55,197,51,169,64,4,70,173,160,239,47,98,216,238,2,166,46,89,15,56,7,5,196,196,62,67,249,253,235,20,235,102,134,142,200,26,17,214,152,1,145,160,197,17,178,32,200,66,202,234,188,218,127,181,8,17,4,30,61,47,57,234,58,255,120,204,181,237,168,202,28,76,105,234,160,63,229,58,247,19,93,67,185,34,164,106,81,163,92,222,25,161,27,40,212,121,191,185,203,236,130,187,73,151,69,189,185,160,254,144,109,156,81,221,79,66,253,183,145,54,58,41,16,116,249,56,61,32,1,181,98,101,217,110,246,137,185,35,129,215,160,42,32,250,190,187,193,176,158,238,99,10,152,135,244,177,201,170,90,140,94,31,244,155,240,210,136,149,233,93,37,48,191,160,118,66,191,63,107,139,75,185,177,16,55,71,250,178,39,177,243,220,32,186,59,17,33,53,251,250,65,62,15,114,252,5,160,81,76,82,36,53,180,76,100,114,1,16,17,231,143,16,128,224,130,54,29,129,30,175,141,192,31,129,54,103,40,235,30,160,91,241,99,220,108,63,125,225,150,80,223,253,107,254,87,177,201,91,21,251,24,233,244,246,13,134,68,64,146,212,100,133,160,236,116,61,181,70,202,25,127,58,207,72,50,66,207,22,152,197,203,167,193,92,102,153,213,59,137,65,153,49,136,57,215,160,216,2,120,95,255,84,108,99,100,122,21,213,206,229,80,63,183,191,6,12,87,234,21,174,229,146,63,113,77,198,240,39,160,190,218,104,114,65,143,16,76,171,187,221,133,224,217,179,164,222,126,10,33,35,71,63,53,163,111,199,211,228,164,124,223,160,213,170,112,202,127,64,210,139,189,213,55,20,144,252,240,46,126,109,109,74,135,136,15,128,192,99,16,67,173,97,168,61,160,147,75,172,163,178,143,148,112,133,47,43,229,251,14,130,192,253,59,110,111,147,43,65,57,213,172,199,179,154,184,206,56,160,164,223,28,174,107,173,96,167,56,249,242,213,153,166,239,188,30,37,226,19,250,193,152,99,72,192,45,227,39,220,80,199,128],[249,2,17,160,148,96,233,169,14,90,134,113,124,248,170,233,105,200,185,209,37,170,23,12,53,121,255,207,171,140,58,155,240,245,176,148,160,44,47,217,201,92,122,132,137,66,226,149,169,177,49,235,62,79,6,38,116,120,55,195,24,55,197,51,169,64,4,70,173,160,239,47,98,216,238,2,166,46,89,15,56,7,5,196,196,62,67,249,253,235,20,235,102,134,142,200,26,17,214,152,1,145,160,197,17,178,32,200,66,202,234,188,218,127,181,8,17,4,30,61,47,57,234,58,255,120,204,181,237,168,202,28,76,105,234,160,63,229,58,247,19,93,67,185,34,164,106,81,163,92,222,25,161,27,40,212,121,191,185,203,236,130,187,73,151,69,189,185,160,254,144,109,156,81,221,79,66,253,183,145,54,58,41,16,116,249,56,61,32,1,181,98,101,217,110,246,137,185,35,129,215,160,42,32,250,190,187,193,176,158,238,99,10,152,135,244,177,201,170,90,140,94,31,244,155,240,210,136,149,233,93,37,48,191,160,42,153,105,37,217,118,198,14,191,156,138,130,228,51,193,176,61,209,120,26,47,206,80,244,109,190,78,213,180,29,81,117,160,81,76,82,36,53,180,76,100,114,1,16,17,231,143,16,128,224,130,54,29,129,30,175,141,192,31,129,54,103,40,235,30,160,91,241,99,220,108,63,125,225,150,80,223,253,107,254,87,177,201,91,21,251,24,233,244,246,13,134,68,64,146,212,100,133,160,236,116,61,181,70,202,25,127,58,207,72,50,66,207,22,152,197,203,167,193,92,102,153,213,59,137,65,153,49,136,57,215,160,216,2,120,95,255,84,108,99,100,122,21,213,206,229,80,63,183,191,6,12,87,234,21,174,229,146,63,113,77,198,240,39,160,190,218,104,114,65,143,16,76,171,187,221,133,224,217,179,164,222,126,10,33,35,71,63,53,163,111,199,211,228,164,124,223,160,213,170,112,202,127,64,210,139,189,213,55,20,144,252,240,46,126,109,109,74,135,136,15,128,192,99,16,67,173,97,168,61,160,147,75,172,163,178,143,148,112,133,47,43,229,251,14,130,192,253,59,110,111,147,43,65,57,213,172,199,179,154,184,206,56,160,164,223,28,174,107,173,96,167,56,249,242,213,153,166,239,188,30,37,226,19,250,193,152,99,72,192,45,227,39,220,80,199,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,59,92,38,206,253,143,94,39,161,228,231,133,241,216,35,22,37,214,41,147,64,181,85,96,115,45,225,230,33,202,16,228,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,30,165,12,148,60,73,75,129,99,22,189,179,165,212,97,30,70,252,178,141,82,212,205,86,33,189,64,225,155,151,44,228,0],[160,143,165,150,220,29,213,132,61,84,146,177,121,240,70,49,108,193,141,238,104,187,31,65,67,198,42,160,132,145,244,195,47,0],[160,249,206,148,243,175,9,54,64,123,62,84,79,56,2,167,180,229,57,141,60,57,230,39,198,161,165,104,120,15,27,210,19,0],[160,35,2,113,27,174,138,111,47,143,63,131,219,176,187,151,237,202,89,0,243,6,15,2,56,30,196,6,32,30,28,90,37,0],[160,58,236,215,25,102,10,91,61,145,178,196,158,128,97,75,40,167,190,55,63,190,206,1,214,162,90,94,106,14,98,57,150,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,192,147,56,216,166,204,38,22,236,116,212,187,163,46,244,70,243,70,187,207,2,165,214,141,45,103,210,194,66,11,69,179,0],[160,46,227,224,172,92,16,233,112,65,86,64,9,110,41,37,88,180,141,214,137,206,239,177,96,218,245,24,217,91,147,215,9,0],[160,241,188,52,165,71,42,145,44,6,13,51,116,50,101,11,21,41,174,213,101,6,12,243,195,47,91,175,49,28,99,33,190,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,128,160,30,165,12,148,60,73,75,129,99,22,189,179,165,212,97,30,70,252,178,141,82,212,205,86,33,189,64,225,155,151,44,228,160,143,165,150,220,29,213,132,61,84,146,177,121,240,70,49,108,193,141,238,104,187,31,65,67,198,42,160,132,145,244,195,47,160,249,206,148,243,175,9,54,64,123,62,84,79,56,2,167,180,229,57,141,60,57,230,39,198,161,165,104,120,15,27,210,19,160,35,2,113,27,174,138,111,47,143,63,131,219,176,187,151,237,202,89,0,243,6,15,2,56,30,196,6,32,30,28,90,37,160,58,236,215,25,102,10,91,61,145,178,196,158,128,97,75,40,167,190,55,63,190,206,1,214,162,90,94,106,14,98,57,150,128,128,128,128,160,192,147,56,216,166,204,38,22,236,116,212,187,163,46,244,70,243,70,187,207,2,165,214,141,45,103,210,194,66,11,69,179,160,46,227,224,172,92,16,233,112,65,86,64,9,110,41,37,88,180,141,214,137,206,239,177,96,218,245,24,217,91,147,215,9,160,241,188,52,165,71,42,145,44,6,13,51,116,50,101,11,21,41,174,213,101,6,12,243,195,47,91,175,49,28,99,33,190,128,128,128,128],[249,1,17,128,160,30,165,12,148,60,73,75,129,99,22,189,179,165,212,97,30,70,252,178,141,82,212,205,86,33,189,64,225,155,151,44,228,160,143,165,150,220,29,213,132,61,84,146,177,121,240,70,49,108,193,141,238,104,187,31,65,67,198,42,160,132,145,244,195,47,160,249,206,148,243,175,9,54,64,123,62,84,79,56,2,167,180,229,57,141,60,57,230,39,198,161,165,104,120,15,27,210,19,160,35,2,113,27,174,138,111,47,143,63,131,219,176,187,151,237,202,89,0,243,6,15,2,56,30,196,6,32,30,28,90,37,160,58,236,215,25,102,10,91,61,145,178,196,158,128,97,75,40,167,190,55,63,190,206,1,214,162,90,94,106,14,98,57,150,128,128,128,128,160,192,147,56,216,166,204,38,22,236,116,212,187,163,46,244,70,243,70,187,207,2,165,214,141,45,103,210,194,66,11,69,179,160,59,92,38,206,253,143,94,39,161,228,231,133,241,216,35,22,37,214,41,147,64,181,85,96,115,45,225,230,33,202,16,228,160,241,188,52,165,71,42,145,44,6,13,51,116,50,101,11,21,41,174,213,101,6,12,243,195,47,91,175,49,28,99,33,190,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,251,239,33,80,129,140,50,179,108,87,149,114,38,223,78,36,235,129,201],"key":[190,183,183,180,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,0,0,0,0],[157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,170,98,87,96,10,34,239,241,153,129,22,218,11,176,39,223,129,90,191,172,56,19,203,75,13,162,195,147,147,111,234,12,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,107,66,160,73,24,192,107,78,25,22,48,143,106,15,166,238,63,162,10,119,178,190,55,73,50,165,204,131,172,64,178,223,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,0,0,0,0]],"keccak_data":[[248,102,157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,184,70,248,68,128,128,160,170,98,87,96,10,34,239,241,153,129,22,218,11,176,39,223,129,90,191,172,56,19,203,75,13,162,195,147,147,111,234,12,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,184,70,248,68,128,128,160,107,66,160,73,24,192,107,78,25,22,48,143,106,15,166,238,63,162,10,119,178,190,55,73,50,165,204,131,172,64,178,223,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,251,239,33,80,129,140,50,179,108,87,149,114,38,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,229,241,95,67,22,1,68,249,77,155,245,201,52,96,11,253,224,73,52,66,44,214,91,145,103,214,85,143,146,196,53,123,0],[160,149,22,30,35,236,215,163,225,55,184,47,255,16,249,153,166,118,62,70,74,142,164,20,231,176,121,213,128,225,145,133,241,0],[160,190,216,174,145,240,177,249,211,11,84,193,187,64,24,230,41,167,176,224,108,124,197,109,65,104,179,24,40,197,24,182,166,0],[160,110,102,122,118,71,7,121,128,227,83,191,183,158,34,77,230,62,36,52,166,185,130,48,141,0,110,4,88,36,232,93,217,0],[160,107,149,71,221,170,146,238,87,132,136,238,45,116,162,103,102,43,180,155,161,45,130,225,106,223,13,185,241,221,75,162,22,0],[160,54,97,193,124,78,5,255,224,210,32,136,173,234,21,58,1,67,228,225,172,248,12,21,215,39,10,74,95,146,52,69,208,0],[160,9,132,153,157,61,32,222,35,3,37,148,169,254,248,14,131,119,131,214,96,161,94,233,60,201,221,217,166,75,5,146,167,0],[160,159,32,184,78,111,130,155,150,74,17,66,92,46,189,186,102,108,28,132,252,175,226,216,0,68,191,229,74,92,209,241,88,0],[160,156,231,209,127,11,57,217,209,239,123,37,6,100,194,112,238,59,113,151,105,231,229,39,41,34,177,62,5,97,63,28,233,0],[160,158,183,112,42,70,159,4,150,82,184,28,78,132,51,238,108,15,154,228,218,238,204,175,56,152,6,13,118,60,85,222,132,0],[160,153,1,174,170,129,1,147,243,135,240,191,8,199,206,59,21,139,149,128,74,72,89,174,24,42,193,156,163,156,110,235,235,0],[160,62,104,164,15,180,50,50,61,249,232,7,161,238,216,142,152,174,66,250,74,124,247,4,81,212,62,253,178,87,83,65,177,0],[160,181,19,227,218,23,113,138,40,36,61,150,84,110,202,49,126,117,119,122,116,62,254,116,101,182,208,100,248,213,146,69,244,0],[160,202,220,246,109,233,106,229,74,72,166,186,162,229,122,168,131,146,115,144,23,49,45,25,140,126,27,232,253,194,76,149,15,0],[160,102,158,39,10,51,55,84,84,213,237,155,213,237,51,66,85,115,40,107,8,89,176,20,27,201,12,250,212,88,97,178,133,0],[160,153,109,223,161,227,17,236,75,74,8,241,213,67,138,39,213,78,59,143,122,155,209,20,3,57,242,92,160,34,50,89,215,0],[160,183,229,229,81,73,164,167,6,153,118,14,33,221,101,220,106,179,228,150,95,192,173,247,19,166,16,105,238,216,219,159,37,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,149,22,30,35,236,215,163,225,55,184,47,255,16,249,153,166,118,62,70,74,142,164,20,231,176,121,213,128,225,145,133,241,160,190,216,174,145,240,177,249,211,11,84,193,187,64,24,230,41,167,176,224,108,124,197,109,65,104,179,24,40,197,24,182,166,160,110,102,122,118,71,7,121,128,227,83,191,183,158,34,77,230,62,36,52,166,185,130,48,141,0,110,4,88,36,232,93,217,160,107,149,71,221,170,146,238,87,132,136,238,45,116,162,103,102,43,180,155,161,45,130,225,106,223,13,185,241,221,75,162,22,160,54,97,193,124,78,5,255,224,210,32,136,173,234,21,58,1,67,228,225,172,248,12,21,215,39,10,74,95,146,52,69,208,160,9,132,153,157,61,32,222,35,3,37,148,169,254,248,14,131,119,131,214,96,161,94,233,60,201,221,217,166,75,5,146,167,160,159,32,184,78,111,130,155,150,74,17,66,92,46,189,186,102,108,28,132,252,175,226,216,0,68,191,229,74,92,209,241,88,160,156,231,209,127,11,57,217,209,239,123,37,6,100,194,112,238,59,113,151,105,231,229,39,41,34,177,62,5,97,63,28,233,160,158,183,112,42,70,159,4,150,82,184,28,78,132,51,238,108,15,154,228,218,238,204,175,56,152,6,13,118,60,85,222,132,160,153,1,174,170,129,1,147,243,135,240,191,8,199,206,59,21,139,149,128,74,72,89,174,24,42,193,156,163,156,110,235,235,160,62,104,164,15,180,50,50,61,249,232,7,161,238,216,142,152,174,66,250,74,124,247,4,81,212,62,253,178,87,83,65,177,160,181,19,227,218,23,113,138,40,36,61,150,84,110,202,49,126,117,119,122,116,62,254,116,101,182,208,100,248,213,146,69,244,160,202,220,246,109,233,106,229,74,72,166,186,162,229,122,168,131,146,115,144,23,49,45,25,140,126,27,232,253,194,76,149,15,160,102,158,39,10,51,55,84,84,213,237,155,213,237,51,66,85,115,40,107,8,89,176,20,27,201,12,250,212,88,97,178,133,160,153,109,223,161,227,17,236,75,74,8,241,213,67,138,39,213,78,59,143,122,155,209,20,3,57,242,92,160,34,50,89,215,160,183,229,229,81,73,164,167,6,153,118,14,33,221,101,220,106,179,228,150,95,192,173,247,19,166,16,105,238,216,219,159,37,128],[249,2,17,160,149,22,30,35,236,215,163,225,55,184,47,255,16,249,153,166,118,62,70,74,142,164,20,231,176,121,213,128,225,145,133,241,160,190,216,174,145,240,177,249,211,11,84,193,187,64,24,230,41,167,176,224,108,124,197,109,65,104,179,24,40,197,24,182,166,160,110,102,122,118,71,7,121,128,227,83,191,183,158,34,77,230,62,36,52,166,185,130,48,141,0,110,4,88,36,232,93,217,160,107,149,71,221,170,146,238,87,132,136,238,45,116,162,103,102,43,180,155,161,45,130,225,106,223,13,185,241,221,75,162,22,160,54,97,193,124,78,5,255,224,210,32,136,173,234,21,58,1,67,228,225,172,248,12,21,215,39,10,74,95,146,52,69,208,160,9,132,153,157,61,32,222,35,3,37,148,169,254,248,14,131,119,131,214,96,161,94,233,60,201,221,217,166,75,5,146,167,160,159,32,184,78,111,130,155,150,74,17,66,92,46,189,186,102,108,28,132,252,175,226,216,0,68,191,229,74,92,209,241,88,160,156,231,209,127,11,57,217,209,239,123,37,6,100,194,112,238,59,113,151,105,231,229,39,41,34,177,62,5,97,63,28,233,160,158,183,112,42,70,159,4,150,82,184,28,78,132,51,238,108,15,154,228,218,238,204,175,56,152,6,13,118,60,85,222,132,160,153,1,174,170,129,1,147,243,135,240,191,8,199,206,59,21,139,149,128,74,72,89,174,24,42,193,156,163,156,110,235,235,160,229,241,95,67,22,1,68,249,77,155,245,201,52,96,11,253,224,73,52,66,44,214,91,145,103,214,85,143,146,196,53,123,160,181,19,227,218,23,113,138,40,36,61,150,84,110,202,49,126,117,119,122,116,62,254,116,101,182,208,100,248,213,146,69,244,160,202,220,246,109,233,106,229,74,72,166,186,162,229,122,168,131,146,115,144,23,49,45,25,140,126,27,232,253,194,76,149,15,160,102,158,39,10,51,55,84,84,213,237,155,213,237,51,66,85,115,40,107,8,89,176,20,27,201,12,250,212,88,97,178,133,160,153,109,223,161,227,17,236,75,74,8,241,213,67,138,39,213,78,59,143,122,155,209,20,3,57,242,92,160,34,50,89,215,160,183,229,229,81,73,164,167,6,153,118,14,33,221,101,220,106,179,228,150,95,192,173,247,19,166,16,105,238,216,219,159,37,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,213,17,219,144,37,154,95,47,207,244,149,187,66,212,157,125,64,202,217,83,49,204,213,179,171,108,193,17,108,31,175,70,0],[160,206,147,153,238,233,177,254,214,162,192,6,41,99,235,189,63,77,194,209,92,215,253,45,69,28,96,49,252,253,150,199,198,0],[160,130,195,48,207,4,39,183,130,93,133,33,51,24,85,109,223,200,117,27,143,102,105,89,62,113,165,59,85,64,5,221,90,0],[160,198,216,36,131,141,153,71,181,71,43,115,191,131,63,147,71,120,112,44,189,134,233,180,33,82,255,81,215,194,19,55,100,0],[160,206,25,55,20,146,60,214,18,12,167,17,203,54,69,68,252,237,135,36,127,167,28,47,198,144,44,79,154,184,240,137,52,0],[160,197,4,19,211,67,150,7,37,20,138,74,167,242,220,142,188,2,55,127,112,161,202,110,158,223,190,211,136,33,65,15,184,0],[160,196,8,80,100,153,2,7,170,81,45,165,171,238,25,90,204,233,162,53,150,33,147,169,174,192,177,128,99,26,149,239,143,0],[160,132,119,21,52,21,62,74,197,52,231,139,83,237,217,120,123,75,100,186,124,111,129,254,225,204,82,186,213,166,56,84,75,0],[160,112,13,238,148,70,240,186,202,13,221,180,174,186,115,194,209,132,143,68,98,75,72,126,46,218,248,44,235,208,116,201,102,0],[160,243,206,192,239,64,99,13,81,166,177,20,144,103,34,139,175,235,197,91,53,76,216,197,71,61,204,142,227,126,128,232,104,0],[160,238,168,57,214,12,203,71,227,222,95,120,180,59,185,161,195,136,160,116,107,26,125,207,74,230,168,102,27,205,128,62,218,0],[160,212,76,166,21,247,198,254,9,142,155,246,184,242,185,224,241,226,96,112,54,65,52,213,208,163,7,71,44,99,35,185,223,0],[160,225,67,171,100,211,168,26,72,25,178,70,20,88,42,70,121,64,118,247,6,189,199,111,91,69,253,250,233,160,218,175,109,0],[160,228,9,140,231,204,59,191,210,153,103,229,96,66,95,205,105,31,72,40,100,82,49,170,250,108,6,75,193,124,69,5,209,0],[160,117,152,142,42,173,67,31,177,235,86,231,243,27,94,203,178,209,82,80,66,133,249,211,59,208,88,64,76,227,222,152,58,0],[160,196,209,10,11,203,198,224,14,121,23,120,141,125,30,79,228,142,109,253,71,249,143,150,168,49,211,211,67,226,157,8,28,0],[160,210,238,238,194,77,71,114,122,71,239,124,178,219,200,167,116,143,64,223,227,10,191,123,25,13,77,19,142,39,114,50,5,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,206,147,153,238,233,177,254,214,162,192,6,41,99,235,189,63,77,194,209,92,215,253,45,69,28,96,49,252,253,150,199,198,160,130,195,48,207,4,39,183,130,93,133,33,51,24,85,109,223,200,117,27,143,102,105,89,62,113,165,59,85,64,5,221,90,160,198,216,36,131,141,153,71,181,71,43,115,191,131,63,147,71,120,112,44,189,134,233,180,33,82,255,81,215,194,19,55,100,160,206,25,55,20,146,60,214,18,12,167,17,203,54,69,68,252,237,135,36,127,167,28,47,198,144,44,79,154,184,240,137,52,160,197,4,19,211,67,150,7,37,20,138,74,167,242,220,142,188,2,55,127,112,161,202,110,158,223,190,211,136,33,65,15,184,160,196,8,80,100,153,2,7,170,81,45,165,171,238,25,90,204,233,162,53,150,33,147,169,174,192,177,128,99,26,149,239,143,160,132,119,21,52,21,62,74,197,52,231,139,83,237,217,120,123,75,100,186,124,111,129,254,225,204,82,186,213,166,56,84,75,160,112,13,238,148,70,240,186,202,13,221,180,174,186,115,194,209,132,143,68,98,75,72,126,46,218,248,44,235,208,116,201,102,160,243,206,192,239,64,99,13,81,166,177,20,144,103,34,139,175,235,197,91,53,76,216,197,71,61,204,142,227,126,128,232,104,160,238,168,57,214,12,203,71,227,222,95,120,180,59,185,161,195,136,160,116,107,26,125,207,74,230,168,102,27,205,128,62,218,160,212,76,166,21,247,198,254,9,142,155,246,184,242,185,224,241,226,96,112,54,65,52,213,208,163,7,71,44,99,35,185,223,160,225,67,171,100,211,168,26,72,25,178,70,20,88,42,70,121,64,118,247,6,189,199,111,91,69,253,250,233,160,218,175,109,160,228,9,140,231,204,59,191,210,153,103,229,96,66,95,205,105,31,72,40,100,82,49,170,250,108,6,75,193,124,69,5,209,160,117,152,142,42,173,67,31,177,235,86,231,243,27,94,203,178,209,82,80,66,133,249,211,59,208,88,64,76,227,222,152,58,160,196,209,10,11,203,198,224,14,121,23,120,141,125,30,79,228,142,109,253,71,249,143,150,168,49,211,211,67,226,157,8,28,160,210,238,238,194,77,71,114,122,71,239,124,178,219,200,167,116,143,64,223,227,10,191,123,25,13,77,19,142,39,114,50,5,128],[249,2,17,160,206,147,153,238,233,177,254,214,162,192,6,41,99,235,189,63,77,194,209,92,215,253,45,69,28,96,49,252,253,150,199,198,160,130,195,48,207,4,39,183,130,93,133,33,51,24,85,109,223,200,117,27,143,102,105,89,62,113,165,59,85,64,5,221,90,160,198,216,36,131,141,153,71,181,71,43,115,191,131,63,147,71,120,112,44,189,134,233,180,33,82,255,81,215,194,19,55,100,160,206,25,55,20,146,60,214,18,12,167,17,203,54,69,68,252,237,135,36,127,167,28,47,198,144,44,79,154,184,240,137,52,160,213,17,219,144,37,154,95,47,207,244,149,187,66,212,157,125,64,202,217,83,49,204,213,179,171,108,193,17,108,31,175,70,160,196,8,80,100,153,2,7,170,81,45,165,171,238,25,90,204,233,162,53,150,33,147,169,174,192,177,128,99,26,149,239,143,160,132,119,21,52,21,62,74,197,52,231,139,83,237,217,120,123,75,100,186,124,111,129,254,225,204,82,186,213,166,56,84,75,160,112,13,238,148,70,240,186,202,13,221,180,174,186,115,194,209,132,143,68,98,75,72,126,46,218,248,44,235,208,116,201,102,160,243,206,192,239,64,99,13,81,166,177,20,144,103,34,139,175,235,197,91,53,76,216,197,71,61,204,142,227,126,128,232,104,160,238,168,57,214,12,203,71,227,222,95,120,180,59,185,161,195,136,160,116,107,26,125,207,74,230,168,102,27,205,128,62,218,160,212,76,166,21,247,198,254,9,142,155,246,184,242,185,224,241,226,96,112,54,65,52,213,208,163,7,71,44,99,35,185,223,160,225,67,171,100,211,168,26,72,25,178,70,20,88,42,70,121,64,118,247,6,189,199,111,91,69,253,250,233,160,218,175,109,160,228,9,140,231,204,59,191,210,153,103,229,96,66,95,205,105,31,72,40,100,82,49,170,250,108,6,75,193,124,69,5,209,160,117,152,142,42,173,67,31,177,235,86,231,243,27,94,203,178,209,82,80,66,133,249,211,59,208,88,64,76,227,222,152,58,160,196,209,10,11,203,198,224,14,121,23,120,141,125,30,79,228,142,109,253,71,249,143,150,168,49,211,211,67,226,157,8,28,160,210,238,238,194,77,71,114,122,71,239,124,178,219,200,167,116,143,64,223,227,10,191,123,25,13,77,19,142,39,114,50,5,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,98,246,49,222,4,0,66,38,162,85,170,44,25,6,9,97,136,61,108,171,74,80,239,178,173,178,116,224,255,31,249,57,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,161,229,37,217,126,181,68,217,9,116,233,74,254,95,44,9,245,211,185,191,144,59,89,169,56,133,111,195,18,163,254,73,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,238,173,29,39,104,215,76,171,160,76,242,192,29,147,89,208,198,225,190,0,15,200,154,36,250,128,239,167,73,218,105,155,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,160,161,229,37,217,126,181,68,217,9,116,233,74,254,95,44,9,245,211,185,191,144,59,89,169,56,133,111,195,18,163,254,73,128,128,128,128,128,128,128,128,128,160,238,173,29,39,104,215,76,171,160,76,242,192,29,147,89,208,198,225,190,0,15,200,154,36,250,128,239,167,73,218,105,155,128,128,128,128,128],[248,81,128,160,98,246,49,222,4,0,66,38,162,85,170,44,25,6,9,97,136,61,108,171,74,80,239,178,173,178,116,224,255,31,249,57,128,128,128,128,128,128,128,128,128,160,238,173,29,39,104,215,76,171,160,76,242,192,29,147,89,208,198,225,190,0,15,200,154,36,250,128,239,167,73,218,105,155,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[false,true],"extension":{"list_rlp_bytes":[228]},"branch":{"modified_index":2,"drifted_index":5,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,159,15,247,43,218,211,193,35,130,157,141,196,137,109,36,115,54,64,179,211,106,138,29,158,213,195,195,148,125,20,93,149,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,159,15,247,43,218,211,193,35,130,157,141,196,137,109,36,115,54,64,179,211,106,138,29,158,213,195,195,148,125,20,93,149,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,243,31,69,208,16,22,226,247,232,151,237,185,83,172,203,208,250,241,4,31,115,43,37,31,57,54,253,184,19,41,26,5,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[130,0,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,215,121,207,40,14,160,149,115,175,222,139,45,208,88,81,65,226,190,111,191,208,252,147,90,105,163,154,4,132,52,204,121,0],[0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,215,121,207,40,14,160,149,115,175,222,139,45,208,88,81,65,226,190,111,191,208,252,147,90,105,163,154,4,132,52,204,121,0]],"keccak_data":[[248,81,128,128,160,159,15,247,43,218,211,193,35,130,157,141,196,137,109,36,115,54,64,179,211,106,138,29,158,213,195,195,148,125,20,93,149,128,128,160,243,31,69,208,16,22,226,247,232,151,237,185,83,172,203,208,250,241,4,31,115,43,37,31,57,54,253,184,19,41,26,5,128,128,128,128,128,128,128,128,128,128,128],[248,81,128,128,160,159,15,247,43,218,211,193,35,130,157,141,196,137,109,36,115,54,64,179,211,106,138,29,158,213,195,195,148,125,20,93,149,128,128,160,243,31,69,208,16,22,226,247,232,151,237,185,83,172,203,208,250,241,4,31,115,43,37,31,57,54,253,184,19,41,26,5,128,128,128,128,128,128,128,128,128,128,128],[228,130,0,150,160,215,121,207,40,14,160,149,115,175,222,139,45,208,88,81,65,226,190,111,191,208,252,147,90,105,163,154,4,132,52,204,121],[228,130,0,150,160,215,121,207,40,14,160,149,115,175,222,139,45,208,88,81,65,226,190,111,191,208,252,147,90,105,163,154,4,132,52,204,121]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,167,114],"key":[164,25,98,246,246,19,240,98,5,150,229,5,150,96,180,21,9,65,218,20,213,215,50,192,129,14,3,147,169,124,32,122],"list_rlp_bytes":[[227],[228]],"value_rlp_bytes":[[131],[131]],"drifted_rlp_bytes":[227],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[158,32,246,246,19,240,98,5,150,229,5,150,96,180,21,9,65,218,20,213,215,50,192,129,14,3,147,169,124,32,122,0,0,0],[130,3,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,57,101,26,129,33,55,93,150,117,9,236,45,35,57,3,15,215,78,192,68,214,120,223,182,158,207,180,81,16,87,50,0,0],[130,2,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[158,32,26,129,33,55,93,150,117,9,236,45,35,57,3,15,215,78,192,68,214,120,223,182,158,207,180,81,16,87,50,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[227,158,32,246,246,19,240,98,5,150,229,5,150,96,180,21,9,65,218,20,213,215,50,192,129,14,3,147,169,124,32,122,131,130,3,5],[228,159,57,101,26,129,33,55,93,150,117,9,236,45,35,57,3,15,215,78,192,68,214,120,223,182,158,207,180,81,16,87,50,131,130,2,22],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,167,114],[227,158,32,26,129,33,55,93,150,117,9,236,45,35,57,3,15,215,78,192,68,214,120,223,182,158,207,180,81,16,87,50,131,130,2,22]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ExtensionInFirstStorageLevel.json b/zkevm-circuits/src/mpt_circuit/tests/ExtensionInFirstStorageLevel.json new file mode 100644 index 0000000000..f3f1af5d29 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ExtensionInFirstStorageLevel.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,130,220,52,226,229,58,175,125,146,179,7,22,105,12,161,13,189,189,97,155,6,206,120,69,142,89,29,32,107,136,180,210,0],[160,225,146,89,188,14,174,111,196,199,208,6,118,158,237,205,154,30,187,75,162,40,200,158,87,39,190,175,192,235,166,54,232,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,247,229,169,205,198,187,161,200,100,250,134,59,44,234,182,217,216,159,214,2,185,223,181,82,39,52,48,8,178,120,2,207,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,200,180,173,211,238,246,128,243,150,102,146,241,57,138,50,5,174,111,177,248,244,130,243,194,171,74,196,121,76,152,123,191,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,200,180,173,211,238,246,128,243,150,102,146,241,57,138,50,5,174,111,177,248,244,130,243,194,171,74,196,121,76,152,123,191,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,247,229,169,205,198,187,161,200,100,250,134,59,44,234,182,217,216,159,214,2,185,223,181,82,39,52,48,8,178,120,2,207,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,235,247,17,181,80,5,134,30,8,58,55,18,67,157,90,153,193,144,21,230,110,53,66,251,156,75,189,86,220,14,190,189,0],[160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,0],[160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,0],[160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,0],[160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,0],[160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,0],[160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,0],[160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,0],[160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,0],[160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,0],[160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,0],[160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,0],[160,128,173,60,145,248,253,133,144,179,124,61,33,232,140,5,252,151,234,86,121,34,249,8,121,154,121,230,147,181,238,80,169,0],[160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,0],[160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,0],[160,129,18,74,167,191,38,199,19,113,139,168,117,112,148,49,38,216,121,247,251,3,93,67,138,116,196,4,140,41,100,39,48,0],[160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,160,128,173,60,145,248,253,133,144,179,124,61,33,232,140,5,252,151,234,86,121,34,249,8,121,154,121,230,147,181,238,80,169,160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,160,129,18,74,167,191,38,199,19,113,139,168,117,112,148,49,38,216,121,247,251,3,93,67,138,116,196,4,140,41,100,39,48,160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,128],[249,2,17,160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,160,128,173,60,145,248,253,133,144,179,124,61,33,232,140,5,252,151,234,86,121,34,249,8,121,154,121,230,147,181,238,80,169,160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,160,235,247,17,181,80,5,134,30,8,58,55,18,67,157,90,153,193,144,21,230,110,53,66,251,156,75,189,86,220,14,190,189,160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,155,169,195,186,250,111,131,107,54,181,4,69,213,35,165,158,162,157,189,184,211,178,93,135,59,46,26,52,16,127,255,171,0],[160,80,75,215,208,193,159,84,57,71,243,7,14,204,100,148,205,208,55,165,27,88,145,87,12,99,158,158,182,197,55,33,95,0],[160,76,180,250,234,22,207,36,13,201,139,0,120,72,139,180,238,156,185,62,97,200,44,188,159,187,99,106,94,147,15,25,20,0],[160,189,17,169,103,34,213,240,167,18,182,246,233,129,88,212,80,113,250,13,189,211,144,206,169,179,25,180,70,188,155,55,32,0],[160,32,220,255,83,236,6,9,125,247,185,224,139,47,190,49,98,219,131,56,50,131,152,150,81,107,126,7,163,202,127,91,164,0],[160,185,211,148,32,33,143,139,118,55,225,47,134,141,134,35,28,209,179,72,57,247,141,152,65,38,141,179,61,214,174,204,14,0],[160,107,106,58,227,233,173,248,116,152,133,228,250,245,205,196,226,135,107,65,132,233,139,78,59,136,248,255,241,150,83,160,5,0],[160,0,164,180,172,120,195,134,123,28,39,200,127,136,82,33,245,97,141,28,111,0,184,5,98,102,230,66,116,77,224,101,219,0],[160,248,105,172,225,53,1,157,135,194,244,188,254,17,122,124,197,196,99,49,56,111,8,165,230,145,108,189,38,207,45,75,50,0],[160,35,73,222,234,130,172,207,150,15,218,253,15,36,223,217,31,215,79,14,171,224,221,215,51,242,239,84,255,134,147,216,166,0],[160,240,32,244,239,11,87,72,174,41,33,118,196,147,56,102,122,208,41,160,96,186,168,111,141,93,215,31,104,139,17,215,242,0],[160,82,199,196,167,58,157,107,196,36,170,39,205,176,246,208,56,210,163,200,208,226,179,109,60,35,248,244,49,8,254,178,170,0],[160,150,143,142,35,91,85,80,184,128,204,205,125,194,122,237,246,164,90,130,44,51,120,136,232,91,6,160,142,158,106,69,26,0],[160,255,250,210,54,157,254,43,240,80,48,249,200,142,240,27,109,12,250,107,172,243,192,36,2,224,146,228,178,151,220,187,84,0],[160,231,83,108,124,37,12,66,134,242,2,97,130,128,110,222,91,65,238,211,219,127,83,155,247,57,160,84,71,36,68,143,249,0],[160,49,132,199,94,225,34,198,225,84,182,131,124,126,81,66,197,238,228,144,216,66,221,170,150,141,52,23,177,9,14,164,218,0],[160,119,192,211,22,95,58,240,144,240,37,172,65,97,91,255,225,107,12,151,189,7,88,0,51,192,124,155,194,253,5,143,142,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,80,75,215,208,193,159,84,57,71,243,7,14,204,100,148,205,208,55,165,27,88,145,87,12,99,158,158,182,197,55,33,95,160,76,180,250,234,22,207,36,13,201,139,0,120,72,139,180,238,156,185,62,97,200,44,188,159,187,99,106,94,147,15,25,20,160,189,17,169,103,34,213,240,167,18,182,246,233,129,88,212,80,113,250,13,189,211,144,206,169,179,25,180,70,188,155,55,32,160,32,220,255,83,236,6,9,125,247,185,224,139,47,190,49,98,219,131,56,50,131,152,150,81,107,126,7,163,202,127,91,164,160,185,211,148,32,33,143,139,118,55,225,47,134,141,134,35,28,209,179,72,57,247,141,152,65,38,141,179,61,214,174,204,14,160,107,106,58,227,233,173,248,116,152,133,228,250,245,205,196,226,135,107,65,132,233,139,78,59,136,248,255,241,150,83,160,5,160,0,164,180,172,120,195,134,123,28,39,200,127,136,82,33,245,97,141,28,111,0,184,5,98,102,230,66,116,77,224,101,219,160,248,105,172,225,53,1,157,135,194,244,188,254,17,122,124,197,196,99,49,56,111,8,165,230,145,108,189,38,207,45,75,50,160,35,73,222,234,130,172,207,150,15,218,253,15,36,223,217,31,215,79,14,171,224,221,215,51,242,239,84,255,134,147,216,166,160,240,32,244,239,11,87,72,174,41,33,118,196,147,56,102,122,208,41,160,96,186,168,111,141,93,215,31,104,139,17,215,242,160,82,199,196,167,58,157,107,196,36,170,39,205,176,246,208,56,210,163,200,208,226,179,109,60,35,248,244,49,8,254,178,170,160,150,143,142,35,91,85,80,184,128,204,205,125,194,122,237,246,164,90,130,44,51,120,136,232,91,6,160,142,158,106,69,26,160,255,250,210,54,157,254,43,240,80,48,249,200,142,240,27,109,12,250,107,172,243,192,36,2,224,146,228,178,151,220,187,84,160,231,83,108,124,37,12,66,134,242,2,97,130,128,110,222,91,65,238,211,219,127,83,155,247,57,160,84,71,36,68,143,249,160,49,132,199,94,225,34,198,225,84,182,131,124,126,81,66,197,238,228,144,216,66,221,170,150,141,52,23,177,9,14,164,218,160,119,192,211,22,95,58,240,144,240,37,172,65,97,91,255,225,107,12,151,189,7,88,0,51,192,124,155,194,253,5,143,142,128],[249,2,17,160,80,75,215,208,193,159,84,57,71,243,7,14,204,100,148,205,208,55,165,27,88,145,87,12,99,158,158,182,197,55,33,95,160,76,180,250,234,22,207,36,13,201,139,0,120,72,139,180,238,156,185,62,97,200,44,188,159,187,99,106,94,147,15,25,20,160,189,17,169,103,34,213,240,167,18,182,246,233,129,88,212,80,113,250,13,189,211,144,206,169,179,25,180,70,188,155,55,32,160,32,220,255,83,236,6,9,125,247,185,224,139,47,190,49,98,219,131,56,50,131,152,150,81,107,126,7,163,202,127,91,164,160,185,211,148,32,33,143,139,118,55,225,47,134,141,134,35,28,209,179,72,57,247,141,152,65,38,141,179,61,214,174,204,14,160,107,106,58,227,233,173,248,116,152,133,228,250,245,205,196,226,135,107,65,132,233,139,78,59,136,248,255,241,150,83,160,5,160,0,164,180,172,120,195,134,123,28,39,200,127,136,82,33,245,97,141,28,111,0,184,5,98,102,230,66,116,77,224,101,219,160,248,105,172,225,53,1,157,135,194,244,188,254,17,122,124,197,196,99,49,56,111,8,165,230,145,108,189,38,207,45,75,50,160,35,73,222,234,130,172,207,150,15,218,253,15,36,223,217,31,215,79,14,171,224,221,215,51,242,239,84,255,134,147,216,166,160,240,32,244,239,11,87,72,174,41,33,118,196,147,56,102,122,208,41,160,96,186,168,111,141,93,215,31,104,139,17,215,242,160,82,199,196,167,58,157,107,196,36,170,39,205,176,246,208,56,210,163,200,208,226,179,109,60,35,248,244,49,8,254,178,170,160,155,169,195,186,250,111,131,107,54,181,4,69,213,35,165,158,162,157,189,184,211,178,93,135,59,46,26,52,16,127,255,171,160,255,250,210,54,157,254,43,240,80,48,249,200,142,240,27,109,12,250,107,172,243,192,36,2,224,146,228,178,151,220,187,84,160,231,83,108,124,37,12,66,134,242,2,97,130,128,110,222,91,65,238,211,219,127,83,155,247,57,160,84,71,36,68,143,249,160,49,132,199,94,225,34,198,225,84,182,131,124,126,81,66,197,238,228,144,216,66,221,170,150,141,52,23,177,9,14,164,218,160,119,192,211,22,95,58,240,144,240,37,172,65,97,91,255,225,107,12,151,189,7,88,0,51,192,124,155,194,253,5,143,142,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,151,201,200,112,112,118,169,108,242,151,229,43,70,130,68,110,10,46,145,211,70,137,159,81,164,170,234,152,188,165,160,250,0],[160,135,19,64,207,217,223,201,245,3,114,121,32,66,43,57,133,252,55,82,116,223,71,100,149,122,243,45,28,63,150,204,110,0],[160,210,120,212,210,151,79,221,51,232,80,80,186,46,159,194,233,203,46,201,120,35,213,101,124,0,8,177,219,68,14,121,240,0],[160,7,114,2,237,174,156,12,217,41,80,207,22,255,39,79,29,172,209,87,195,37,188,55,186,206,78,97,11,87,224,72,236,0],[160,22,29,249,121,177,221,199,134,231,204,178,150,90,71,228,195,117,255,255,223,21,95,194,251,151,149,22,131,234,12,148,141,0],[160,154,130,254,249,64,180,76,29,52,23,185,183,92,39,79,57,58,81,220,159,7,224,15,179,212,252,51,109,150,166,138,123,0],[160,191,184,181,142,36,247,244,175,48,46,160,172,131,40,126,16,142,50,208,215,51,119,231,93,236,238,227,222,169,47,110,125,0],[160,63,16,188,230,177,90,174,250,172,232,195,227,33,146,180,160,216,2,248,221,210,179,93,60,27,200,22,229,211,119,190,115,0],[160,217,2,9,35,127,83,89,33,239,124,182,121,241,157,78,35,1,208,17,175,239,103,211,20,57,33,100,43,225,88,220,106,0],[160,178,157,0,28,65,106,227,88,84,22,69,42,75,101,149,62,86,45,11,59,216,93,0,97,209,124,70,114,145,152,73,213,0],[160,80,176,142,247,234,92,148,168,17,76,79,72,211,136,9,251,173,156,52,47,222,75,47,99,175,39,37,242,43,103,246,104,0],[160,220,42,251,8,22,8,115,225,127,17,184,13,248,242,7,12,82,192,44,74,62,147,117,10,57,158,59,179,221,195,212,185,0],[160,73,210,235,92,4,27,119,189,211,244,21,130,213,183,166,10,118,148,51,106,35,39,41,16,212,32,33,30,232,202,253,127,0],[160,45,234,125,167,138,171,111,217,200,71,109,44,151,79,202,136,227,21,63,196,251,135,189,172,157,97,199,5,92,103,113,208,0],[160,32,136,102,148,196,136,37,163,51,96,178,15,175,37,129,190,72,46,102,165,57,108,199,41,1,153,217,87,99,246,185,134,0],[160,195,142,65,38,53,73,58,93,254,20,214,13,99,184,121,102,237,111,202,60,113,233,229,157,72,243,233,231,38,188,161,198,0],[160,29,13,42,118,4,81,208,108,222,61,121,232,127,152,172,231,68,36,11,214,122,155,128,182,146,21,101,238,226,237,167,149,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,135,19,64,207,217,223,201,245,3,114,121,32,66,43,57,133,252,55,82,116,223,71,100,149,122,243,45,28,63,150,204,110,160,210,120,212,210,151,79,221,51,232,80,80,186,46,159,194,233,203,46,201,120,35,213,101,124,0,8,177,219,68,14,121,240,160,7,114,2,237,174,156,12,217,41,80,207,22,255,39,79,29,172,209,87,195,37,188,55,186,206,78,97,11,87,224,72,236,160,22,29,249,121,177,221,199,134,231,204,178,150,90,71,228,195,117,255,255,223,21,95,194,251,151,149,22,131,234,12,148,141,160,154,130,254,249,64,180,76,29,52,23,185,183,92,39,79,57,58,81,220,159,7,224,15,179,212,252,51,109,150,166,138,123,160,191,184,181,142,36,247,244,175,48,46,160,172,131,40,126,16,142,50,208,215,51,119,231,93,236,238,227,222,169,47,110,125,160,63,16,188,230,177,90,174,250,172,232,195,227,33,146,180,160,216,2,248,221,210,179,93,60,27,200,22,229,211,119,190,115,160,217,2,9,35,127,83,89,33,239,124,182,121,241,157,78,35,1,208,17,175,239,103,211,20,57,33,100,43,225,88,220,106,160,178,157,0,28,65,106,227,88,84,22,69,42,75,101,149,62,86,45,11,59,216,93,0,97,209,124,70,114,145,152,73,213,160,80,176,142,247,234,92,148,168,17,76,79,72,211,136,9,251,173,156,52,47,222,75,47,99,175,39,37,242,43,103,246,104,160,220,42,251,8,22,8,115,225,127,17,184,13,248,242,7,12,82,192,44,74,62,147,117,10,57,158,59,179,221,195,212,185,160,73,210,235,92,4,27,119,189,211,244,21,130,213,183,166,10,118,148,51,106,35,39,41,16,212,32,33,30,232,202,253,127,160,45,234,125,167,138,171,111,217,200,71,109,44,151,79,202,136,227,21,63,196,251,135,189,172,157,97,199,5,92,103,113,208,160,32,136,102,148,196,136,37,163,51,96,178,15,175,37,129,190,72,46,102,165,57,108,199,41,1,153,217,87,99,246,185,134,160,195,142,65,38,53,73,58,93,254,20,214,13,99,184,121,102,237,111,202,60,113,233,229,157,72,243,233,231,38,188,161,198,160,29,13,42,118,4,81,208,108,222,61,121,232,127,152,172,231,68,36,11,214,122,155,128,182,146,21,101,238,226,237,167,149,128],[249,2,17,160,135,19,64,207,217,223,201,245,3,114,121,32,66,43,57,133,252,55,82,116,223,71,100,149,122,243,45,28,63,150,204,110,160,210,120,212,210,151,79,221,51,232,80,80,186,46,159,194,233,203,46,201,120,35,213,101,124,0,8,177,219,68,14,121,240,160,7,114,2,237,174,156,12,217,41,80,207,22,255,39,79,29,172,209,87,195,37,188,55,186,206,78,97,11,87,224,72,236,160,22,29,249,121,177,221,199,134,231,204,178,150,90,71,228,195,117,255,255,223,21,95,194,251,151,149,22,131,234,12,148,141,160,154,130,254,249,64,180,76,29,52,23,185,183,92,39,79,57,58,81,220,159,7,224,15,179,212,252,51,109,150,166,138,123,160,191,184,181,142,36,247,244,175,48,46,160,172,131,40,126,16,142,50,208,215,51,119,231,93,236,238,227,222,169,47,110,125,160,63,16,188,230,177,90,174,250,172,232,195,227,33,146,180,160,216,2,248,221,210,179,93,60,27,200,22,229,211,119,190,115,160,151,201,200,112,112,118,169,108,242,151,229,43,70,130,68,110,10,46,145,211,70,137,159,81,164,170,234,152,188,165,160,250,160,178,157,0,28,65,106,227,88,84,22,69,42,75,101,149,62,86,45,11,59,216,93,0,97,209,124,70,114,145,152,73,213,160,80,176,142,247,234,92,148,168,17,76,79,72,211,136,9,251,173,156,52,47,222,75,47,99,175,39,37,242,43,103,246,104,160,220,42,251,8,22,8,115,225,127,17,184,13,248,242,7,12,82,192,44,74,62,147,117,10,57,158,59,179,221,195,212,185,160,73,210,235,92,4,27,119,189,211,244,21,130,213,183,166,10,118,148,51,106,35,39,41,16,212,32,33,30,232,202,253,127,160,45,234,125,167,138,171,111,217,200,71,109,44,151,79,202,136,227,21,63,196,251,135,189,172,157,97,199,5,92,103,113,208,160,32,136,102,148,196,136,37,163,51,96,178,15,175,37,129,190,72,46,102,165,57,108,199,41,1,153,217,87,99,246,185,134,160,195,142,65,38,53,73,58,93,254,20,214,13,99,184,121,102,237,111,202,60,113,233,229,157,72,243,233,231,38,188,161,198,160,29,13,42,118,4,81,208,108,222,61,121,232,127,152,172,231,68,36,11,214,122,155,128,182,146,21,101,238,226,237,167,149,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,239,1,157,141,180,56,160,249,62,39,130,61,117,62,36,201,0,145,76,87,89,28,23,1,232,230,90,64,14,104,53,92,0],[160,133,167,189,133,123,193,191,222,89,216,35,78,93,7,66,131,149,42,249,152,66,106,244,232,140,225,53,159,56,146,232,23,0],[160,252,122,28,104,215,195,210,194,90,68,41,241,5,233,121,31,111,39,40,44,8,54,98,144,203,206,196,168,223,212,246,221,0],[160,108,140,134,51,36,35,162,155,179,219,212,248,1,165,39,162,65,235,79,21,5,180,1,119,15,51,58,169,249,106,94,169,0],[160,254,76,95,71,155,26,54,113,106,54,108,164,206,63,247,247,91,164,234,52,148,14,43,211,132,137,64,194,118,82,194,177,0],[160,14,185,41,78,52,126,90,218,79,124,126,55,116,181,121,241,185,238,44,135,0,49,233,24,87,231,76,225,31,130,200,18,0],[160,184,203,50,205,70,164,135,3,71,89,95,190,248,113,62,67,78,182,14,228,178,180,2,161,165,175,67,60,73,23,173,123,0],[160,144,195,48,89,145,149,182,147,85,15,69,184,79,146,224,36,71,69,131,22,233,191,131,250,24,98,82,185,178,33,37,178,0],[160,103,13,127,211,234,63,148,126,213,126,127,233,179,188,239,177,163,141,165,207,149,48,253,223,158,89,76,162,21,6,208,123,0],[160,60,30,137,167,221,156,12,2,111,77,132,147,40,151,60,202,47,85,195,64,141,50,215,66,51,129,199,36,184,203,150,136,0],[160,47,92,105,177,160,255,212,105,132,109,28,120,118,228,101,197,3,61,151,81,126,86,140,26,92,137,116,150,66,142,148,133,0],[160,188,123,142,119,144,241,30,96,104,247,77,149,203,234,218,50,166,117,17,238,216,103,24,146,142,202,126,58,34,229,213,98,0],[160,253,195,79,57,98,237,87,58,37,244,105,157,26,247,26,212,157,250,250,139,188,13,219,23,15,248,237,31,192,3,249,167,0],[160,10,81,148,85,182,179,4,213,104,8,18,186,104,176,241,146,55,220,243,205,207,90,175,2,120,133,99,27,67,103,37,137,0],[160,92,135,250,214,119,219,245,233,65,207,198,41,62,154,6,183,119,86,175,138,217,145,8,75,217,202,166,21,201,199,183,160,0],[160,178,118,164,136,184,196,235,68,1,208,226,214,129,93,154,28,118,79,39,37,41,21,31,157,175,140,26,16,206,117,245,161,0],[160,166,122,17,151,156,67,20,33,110,157,14,75,253,205,253,90,57,76,61,99,70,105,124,243,136,52,164,181,121,236,236,70,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,133,167,189,133,123,193,191,222,89,216,35,78,93,7,66,131,149,42,249,152,66,106,244,232,140,225,53,159,56,146,232,23,160,252,122,28,104,215,195,210,194,90,68,41,241,5,233,121,31,111,39,40,44,8,54,98,144,203,206,196,168,223,212,246,221,160,108,140,134,51,36,35,162,155,179,219,212,248,1,165,39,162,65,235,79,21,5,180,1,119,15,51,58,169,249,106,94,169,160,254,76,95,71,155,26,54,113,106,54,108,164,206,63,247,247,91,164,234,52,148,14,43,211,132,137,64,194,118,82,194,177,160,14,185,41,78,52,126,90,218,79,124,126,55,116,181,121,241,185,238,44,135,0,49,233,24,87,231,76,225,31,130,200,18,160,184,203,50,205,70,164,135,3,71,89,95,190,248,113,62,67,78,182,14,228,178,180,2,161,165,175,67,60,73,23,173,123,160,144,195,48,89,145,149,182,147,85,15,69,184,79,146,224,36,71,69,131,22,233,191,131,250,24,98,82,185,178,33,37,178,160,103,13,127,211,234,63,148,126,213,126,127,233,179,188,239,177,163,141,165,207,149,48,253,223,158,89,76,162,21,6,208,123,160,60,30,137,167,221,156,12,2,111,77,132,147,40,151,60,202,47,85,195,64,141,50,215,66,51,129,199,36,184,203,150,136,160,47,92,105,177,160,255,212,105,132,109,28,120,118,228,101,197,3,61,151,81,126,86,140,26,92,137,116,150,66,142,148,133,160,188,123,142,119,144,241,30,96,104,247,77,149,203,234,218,50,166,117,17,238,216,103,24,146,142,202,126,58,34,229,213,98,160,253,195,79,57,98,237,87,58,37,244,105,157,26,247,26,212,157,250,250,139,188,13,219,23,15,248,237,31,192,3,249,167,160,10,81,148,85,182,179,4,213,104,8,18,186,104,176,241,146,55,220,243,205,207,90,175,2,120,133,99,27,67,103,37,137,160,92,135,250,214,119,219,245,233,65,207,198,41,62,154,6,183,119,86,175,138,217,145,8,75,217,202,166,21,201,199,183,160,160,178,118,164,136,184,196,235,68,1,208,226,214,129,93,154,28,118,79,39,37,41,21,31,157,175,140,26,16,206,117,245,161,160,166,122,17,151,156,67,20,33,110,157,14,75,253,205,253,90,57,76,61,99,70,105,124,243,136,52,164,181,121,236,236,70,128],[249,2,17,160,133,167,189,133,123,193,191,222,89,216,35,78,93,7,66,131,149,42,249,152,66,106,244,232,140,225,53,159,56,146,232,23,160,252,122,28,104,215,195,210,194,90,68,41,241,5,233,121,31,111,39,40,44,8,54,98,144,203,206,196,168,223,212,246,221,160,108,140,134,51,36,35,162,155,179,219,212,248,1,165,39,162,65,235,79,21,5,180,1,119,15,51,58,169,249,106,94,169,160,254,76,95,71,155,26,54,113,106,54,108,164,206,63,247,247,91,164,234,52,148,14,43,211,132,137,64,194,118,82,194,177,160,14,185,41,78,52,126,90,218,79,124,126,55,116,181,121,241,185,238,44,135,0,49,233,24,87,231,76,225,31,130,200,18,160,184,203,50,205,70,164,135,3,71,89,95,190,248,113,62,67,78,182,14,228,178,180,2,161,165,175,67,60,73,23,173,123,160,144,195,48,89,145,149,182,147,85,15,69,184,79,146,224,36,71,69,131,22,233,191,131,250,24,98,82,185,178,33,37,178,160,103,13,127,211,234,63,148,126,213,126,127,233,179,188,239,177,163,141,165,207,149,48,253,223,158,89,76,162,21,6,208,123,160,60,30,137,167,221,156,12,2,111,77,132,147,40,151,60,202,47,85,195,64,141,50,215,66,51,129,199,36,184,203,150,136,160,47,92,105,177,160,255,212,105,132,109,28,120,118,228,101,197,3,61,151,81,126,86,140,26,92,137,116,150,66,142,148,133,160,188,123,142,119,144,241,30,96,104,247,77,149,203,234,218,50,166,117,17,238,216,103,24,146,142,202,126,58,34,229,213,98,160,239,1,157,141,180,56,160,249,62,39,130,61,117,62,36,201,0,145,76,87,89,28,23,1,232,230,90,64,14,104,53,92,160,10,81,148,85,182,179,4,213,104,8,18,186,104,176,241,146,55,220,243,205,207,90,175,2,120,133,99,27,67,103,37,137,160,92,135,250,214,119,219,245,233,65,207,198,41,62,154,6,183,119,86,175,138,217,145,8,75,217,202,166,21,201,199,183,160,160,178,118,164,136,184,196,235,68,1,208,226,214,129,93,154,28,118,79,39,37,41,21,31,157,175,140,26,16,206,117,245,161,160,166,122,17,151,156,67,20,33,110,157,14,75,253,205,253,90,57,76,61,99,70,105,124,243,136,52,164,181,121,236,236,70,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,201,27,226,119,240,27,254,230,42,21,210,71,51,3,178,164,159,59,113,136,59,158,70,83,175,227,238,78,75,219,139,177,0],[160,148,96,233,169,14,90,134,113,124,248,170,233,105,200,185,209,37,170,23,12,53,121,255,207,171,140,58,155,240,245,176,148,0],[160,44,47,217,201,92,122,132,137,66,226,149,169,177,49,235,62,79,6,38,116,120,55,195,24,55,197,51,169,64,4,70,173,0],[160,239,47,98,216,238,2,166,46,89,15,56,7,5,196,196,62,67,249,253,235,20,235,102,134,142,200,26,17,214,152,1,145,0],[160,197,17,178,32,200,66,202,234,188,218,127,181,8,17,4,30,61,47,57,234,58,255,120,204,181,237,168,202,28,76,105,234,0],[160,63,229,58,247,19,93,67,185,34,164,106,81,163,92,222,25,161,27,40,212,121,191,185,203,236,130,187,73,151,69,189,185,0],[160,254,144,109,156,81,221,79,66,253,183,145,54,58,41,16,116,249,56,61,32,1,181,98,101,217,110,246,137,185,35,129,215,0],[160,42,32,250,190,187,193,176,158,238,99,10,152,135,244,177,201,170,90,140,94,31,244,155,240,210,136,149,233,93,37,48,191,0],[160,24,24,41,40,95,44,210,103,180,225,195,201,180,201,70,78,251,48,44,96,132,24,191,74,59,164,162,83,72,119,98,153,0],[160,81,76,82,36,53,180,76,100,114,1,16,17,231,143,16,128,224,130,54,29,129,30,175,141,192,31,129,54,103,40,235,30,0],[160,91,241,99,220,108,63,125,225,150,80,223,253,107,254,87,177,201,91,21,251,24,233,244,246,13,134,68,64,146,212,100,133,0],[160,236,116,61,181,70,202,25,127,58,207,72,50,66,207,22,152,197,203,167,193,92,102,153,213,59,137,65,153,49,136,57,215,0],[160,216,2,120,95,255,84,108,99,100,122,21,213,206,229,80,63,183,191,6,12,87,234,21,174,229,146,63,113,77,198,240,39,0],[160,190,218,104,114,65,143,16,76,171,187,221,133,224,217,179,164,222,126,10,33,35,71,63,53,163,111,199,211,228,164,124,223,0],[160,213,170,112,202,127,64,210,139,189,213,55,20,144,252,240,46,126,109,109,74,135,136,15,128,192,99,16,67,173,97,168,61,0],[160,147,75,172,163,178,143,148,112,133,47,43,229,251,14,130,192,253,59,110,111,147,43,65,57,213,172,199,179,154,184,206,56,0],[160,164,223,28,174,107,173,96,167,56,249,242,213,153,166,239,188,30,37,226,19,250,193,152,99,72,192,45,227,39,220,80,199,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,148,96,233,169,14,90,134,113,124,248,170,233,105,200,185,209,37,170,23,12,53,121,255,207,171,140,58,155,240,245,176,148,160,44,47,217,201,92,122,132,137,66,226,149,169,177,49,235,62,79,6,38,116,120,55,195,24,55,197,51,169,64,4,70,173,160,239,47,98,216,238,2,166,46,89,15,56,7,5,196,196,62,67,249,253,235,20,235,102,134,142,200,26,17,214,152,1,145,160,197,17,178,32,200,66,202,234,188,218,127,181,8,17,4,30,61,47,57,234,58,255,120,204,181,237,168,202,28,76,105,234,160,63,229,58,247,19,93,67,185,34,164,106,81,163,92,222,25,161,27,40,212,121,191,185,203,236,130,187,73,151,69,189,185,160,254,144,109,156,81,221,79,66,253,183,145,54,58,41,16,116,249,56,61,32,1,181,98,101,217,110,246,137,185,35,129,215,160,42,32,250,190,187,193,176,158,238,99,10,152,135,244,177,201,170,90,140,94,31,244,155,240,210,136,149,233,93,37,48,191,160,24,24,41,40,95,44,210,103,180,225,195,201,180,201,70,78,251,48,44,96,132,24,191,74,59,164,162,83,72,119,98,153,160,81,76,82,36,53,180,76,100,114,1,16,17,231,143,16,128,224,130,54,29,129,30,175,141,192,31,129,54,103,40,235,30,160,91,241,99,220,108,63,125,225,150,80,223,253,107,254,87,177,201,91,21,251,24,233,244,246,13,134,68,64,146,212,100,133,160,236,116,61,181,70,202,25,127,58,207,72,50,66,207,22,152,197,203,167,193,92,102,153,213,59,137,65,153,49,136,57,215,160,216,2,120,95,255,84,108,99,100,122,21,213,206,229,80,63,183,191,6,12,87,234,21,174,229,146,63,113,77,198,240,39,160,190,218,104,114,65,143,16,76,171,187,221,133,224,217,179,164,222,126,10,33,35,71,63,53,163,111,199,211,228,164,124,223,160,213,170,112,202,127,64,210,139,189,213,55,20,144,252,240,46,126,109,109,74,135,136,15,128,192,99,16,67,173,97,168,61,160,147,75,172,163,178,143,148,112,133,47,43,229,251,14,130,192,253,59,110,111,147,43,65,57,213,172,199,179,154,184,206,56,160,164,223,28,174,107,173,96,167,56,249,242,213,153,166,239,188,30,37,226,19,250,193,152,99,72,192,45,227,39,220,80,199,128],[249,2,17,160,148,96,233,169,14,90,134,113,124,248,170,233,105,200,185,209,37,170,23,12,53,121,255,207,171,140,58,155,240,245,176,148,160,44,47,217,201,92,122,132,137,66,226,149,169,177,49,235,62,79,6,38,116,120,55,195,24,55,197,51,169,64,4,70,173,160,239,47,98,216,238,2,166,46,89,15,56,7,5,196,196,62,67,249,253,235,20,235,102,134,142,200,26,17,214,152,1,145,160,197,17,178,32,200,66,202,234,188,218,127,181,8,17,4,30,61,47,57,234,58,255,120,204,181,237,168,202,28,76,105,234,160,63,229,58,247,19,93,67,185,34,164,106,81,163,92,222,25,161,27,40,212,121,191,185,203,236,130,187,73,151,69,189,185,160,254,144,109,156,81,221,79,66,253,183,145,54,58,41,16,116,249,56,61,32,1,181,98,101,217,110,246,137,185,35,129,215,160,42,32,250,190,187,193,176,158,238,99,10,152,135,244,177,201,170,90,140,94,31,244,155,240,210,136,149,233,93,37,48,191,160,201,27,226,119,240,27,254,230,42,21,210,71,51,3,178,164,159,59,113,136,59,158,70,83,175,227,238,78,75,219,139,177,160,81,76,82,36,53,180,76,100,114,1,16,17,231,143,16,128,224,130,54,29,129,30,175,141,192,31,129,54,103,40,235,30,160,91,241,99,220,108,63,125,225,150,80,223,253,107,254,87,177,201,91,21,251,24,233,244,246,13,134,68,64,146,212,100,133,160,236,116,61,181,70,202,25,127,58,207,72,50,66,207,22,152,197,203,167,193,92,102,153,213,59,137,65,153,49,136,57,215,160,216,2,120,95,255,84,108,99,100,122,21,213,206,229,80,63,183,191,6,12,87,234,21,174,229,146,63,113,77,198,240,39,160,190,218,104,114,65,143,16,76,171,187,221,133,224,217,179,164,222,126,10,33,35,71,63,53,163,111,199,211,228,164,124,223,160,213,170,112,202,127,64,210,139,189,213,55,20,144,252,240,46,126,109,109,74,135,136,15,128,192,99,16,67,173,97,168,61,160,147,75,172,163,178,143,148,112,133,47,43,229,251,14,130,192,253,59,110,111,147,43,65,57,213,172,199,179,154,184,206,56,160,164,223,28,174,107,173,96,167,56,249,242,213,153,166,239,188,30,37,226,19,250,193,152,99,72,192,45,227,39,220,80,199,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,173,53,68,87,95,49,73,52,172,242,180,234,14,74,113,163,21,19,59,91,0,197,85,38,105,134,82,37,233,77,208,141,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,30,165,12,148,60,73,75,129,99,22,189,179,165,212,97,30,70,252,178,141,82,212,205,86,33,189,64,225,155,151,44,228,0],[160,143,165,150,220,29,213,132,61,84,146,177,121,240,70,49,108,193,141,238,104,187,31,65,67,198,42,160,132,145,244,195,47,0],[160,249,206,148,243,175,9,54,64,123,62,84,79,56,2,167,180,229,57,141,60,57,230,39,198,161,165,104,120,15,27,210,19,0],[160,35,2,113,27,174,138,111,47,143,63,131,219,176,187,151,237,202,89,0,243,6,15,2,56,30,196,6,32,30,28,90,37,0],[160,58,236,215,25,102,10,91,61,145,178,196,158,128,97,75,40,167,190,55,63,190,206,1,214,162,90,94,106,14,98,57,150,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,192,147,56,216,166,204,38,22,236,116,212,187,163,46,244,70,243,70,187,207,2,165,214,141,45,103,210,194,66,11,69,179,0],[160,164,94,199,52,38,22,170,61,154,239,35,82,186,221,205,225,111,45,82,57,220,117,105,181,68,98,207,144,119,216,23,168,0],[160,241,188,52,165,71,42,145,44,6,13,51,116,50,101,11,21,41,174,213,101,6,12,243,195,47,91,175,49,28,99,33,190,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,128,160,30,165,12,148,60,73,75,129,99,22,189,179,165,212,97,30,70,252,178,141,82,212,205,86,33,189,64,225,155,151,44,228,160,143,165,150,220,29,213,132,61,84,146,177,121,240,70,49,108,193,141,238,104,187,31,65,67,198,42,160,132,145,244,195,47,160,249,206,148,243,175,9,54,64,123,62,84,79,56,2,167,180,229,57,141,60,57,230,39,198,161,165,104,120,15,27,210,19,160,35,2,113,27,174,138,111,47,143,63,131,219,176,187,151,237,202,89,0,243,6,15,2,56,30,196,6,32,30,28,90,37,160,58,236,215,25,102,10,91,61,145,178,196,158,128,97,75,40,167,190,55,63,190,206,1,214,162,90,94,106,14,98,57,150,128,128,128,128,160,192,147,56,216,166,204,38,22,236,116,212,187,163,46,244,70,243,70,187,207,2,165,214,141,45,103,210,194,66,11,69,179,160,164,94,199,52,38,22,170,61,154,239,35,82,186,221,205,225,111,45,82,57,220,117,105,181,68,98,207,144,119,216,23,168,160,241,188,52,165,71,42,145,44,6,13,51,116,50,101,11,21,41,174,213,101,6,12,243,195,47,91,175,49,28,99,33,190,128,128,128,128],[249,1,17,128,160,30,165,12,148,60,73,75,129,99,22,189,179,165,212,97,30,70,252,178,141,82,212,205,86,33,189,64,225,155,151,44,228,160,143,165,150,220,29,213,132,61,84,146,177,121,240,70,49,108,193,141,238,104,187,31,65,67,198,42,160,132,145,244,195,47,160,249,206,148,243,175,9,54,64,123,62,84,79,56,2,167,180,229,57,141,60,57,230,39,198,161,165,104,120,15,27,210,19,160,35,2,113,27,174,138,111,47,143,63,131,219,176,187,151,237,202,89,0,243,6,15,2,56,30,196,6,32,30,28,90,37,160,58,236,215,25,102,10,91,61,145,178,196,158,128,97,75,40,167,190,55,63,190,206,1,214,162,90,94,106,14,98,57,150,128,128,128,128,160,192,147,56,216,166,204,38,22,236,116,212,187,163,46,244,70,243,70,187,207,2,165,214,141,45,103,210,194,66,11,69,179,160,173,53,68,87,95,49,73,52,172,242,180,234,14,74,113,163,21,19,59,91,0,197,85,38,105,134,82,37,233,77,208,141,160,241,188,52,165,71,42,145,44,6,13,51,116,50,101,11,21,41,174,213,101,6,12,243,195,47,91,175,49,28,99,33,190,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,251,239,33,80,129,140,50,179,108,87,149,114,38,223,78,36,235,129,201],"key":[190,183,183,180,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,0,0,0,0],[157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,80,188,42,110,128,107,70,96,72,66,175,83,243,27,65,71,70,51,57,124,37,94,207,79,85,151,115,140,197,1,172,228,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,103,155,219,103,170,109,204,52,56,174,102,222,102,212,252,0,122,76,121,98,133,56,122,100,106,70,21,123,172,137,1,56,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,0,0,0,0]],"keccak_data":[[248,102,157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,184,70,248,68,128,128,160,80,188,42,110,128,107,70,96,72,66,175,83,243,27,65,71,70,51,57,124,37,94,207,79,85,151,115,140,197,1,172,228,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,184,70,248,68,128,128,160,103,155,219,103,170,109,204,52,56,174,102,222,102,212,252,0,122,76,121,98,133,56,122,100,106,70,21,123,172,137,1,56,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,251,239,33,80,129,140,50,179,108,87,149,114,38,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,1,49],[249,1,49]]}},"account":null,"storage":null,"values":[[160,217,126,56,112,222,29,194,80,17,187,144,67,169,202,198,186,147,107,226,126,75,125,32,62,50,189,225,43,23,89,132,168,0],[160,46,160,233,239,98,153,97,209,97,81,68,131,26,125,244,151,235,197,196,52,185,235,143,51,224,203,73,29,30,160,30,73,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,78,145,139,118,190,81,190,47,2,223,10,198,25,30,194,118,93,64,29,34,41,228,114,145,128,104,21,218,117,95,91,94,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,63,57,215,191,75,232,103,123,45,125,184,249,68,230,24,56,12,68,62,118,21,173,221,210,155,76,186,117,29,122,205,197,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,94,114,243,139,127,182,152,232,9,123,177,241,121,159,80,195,59,247,132,39,115,54,191,77,255,51,144,107,204,221,28,128,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,125,4,130,177,215,162,225,69,232,107,191,173,195,116,193,186,249,235,222,129,111,135,78,90,49,68,175,90,142,57,183,86,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,56,128,221,108,72,35,159,82,140,75,200,125,181,12,184,252,99,200,65,251,219,163,244,163,201,145,119,83,43,254,139,163,0],[160,149,185,80,248,247,35,226,34,184,73,183,111,19,58,144,113,243,13,124,189,17,225,138,196,141,53,102,127,204,164,17,130,0],[160,245,34,61,113,131,204,182,51,19,5,161,158,145,192,140,253,184,22,10,65,57,234,175,148,217,111,169,62,89,113,9,26,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,116,183,11,237,68,65,147,86,168,220,228,44,204,86,247,168,145,140,11,51,82,106,214,149,101,214,103,43,7,219,42,18,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,49,160,46,160,233,239,98,153,97,209,97,81,68,131,26,125,244,151,235,197,196,52,185,235,143,51,224,203,73,29,30,160,30,73,128,160,78,145,139,118,190,81,190,47,2,223,10,198,25,30,194,118,93,64,29,34,41,228,114,145,128,104,21,218,117,95,91,94,128,160,63,57,215,191,75,232,103,123,45,125,184,249,68,230,24,56,12,68,62,118,21,173,221,210,155,76,186,117,29,122,205,197,128,160,94,114,243,139,127,182,152,232,9,123,177,241,121,159,80,195,59,247,132,39,115,54,191,77,255,51,144,107,204,221,28,128,128,160,125,4,130,177,215,162,225,69,232,107,191,173,195,116,193,186,249,235,222,129,111,135,78,90,49,68,175,90,142,57,183,86,128,160,56,128,221,108,72,35,159,82,140,75,200,125,181,12,184,252,99,200,65,251,219,163,244,163,201,145,119,83,43,254,139,163,160,149,185,80,248,247,35,226,34,184,73,183,111,19,58,144,113,243,13,124,189,17,225,138,196,141,53,102,127,204,164,17,130,160,245,34,61,113,131,204,182,51,19,5,161,158,145,192,140,253,184,22,10,65,57,234,175,148,217,111,169,62,89,113,9,26,128,128,160,116,183,11,237,68,65,147,86,168,220,228,44,204,86,247,168,145,140,11,51,82,106,214,149,101,214,103,43,7,219,42,18,128],[249,1,49,160,46,160,233,239,98,153,97,209,97,81,68,131,26,125,244,151,235,197,196,52,185,235,143,51,224,203,73,29,30,160,30,73,128,160,78,145,139,118,190,81,190,47,2,223,10,198,25,30,194,118,93,64,29,34,41,228,114,145,128,104,21,218,117,95,91,94,128,160,63,57,215,191,75,232,103,123,45,125,184,249,68,230,24,56,12,68,62,118,21,173,221,210,155,76,186,117,29,122,205,197,128,160,94,114,243,139,127,182,152,232,9,123,177,241,121,159,80,195,59,247,132,39,115,54,191,77,255,51,144,107,204,221,28,128,128,160,125,4,130,177,215,162,225,69,232,107,191,173,195,116,193,186,249,235,222,129,111,135,78,90,49,68,175,90,142,57,183,86,128,160,56,128,221,108,72,35,159,82,140,75,200,125,181,12,184,252,99,200,65,251,219,163,244,163,201,145,119,83,43,254,139,163,160,217,126,56,112,222,29,194,80,17,187,144,67,169,202,198,186,147,107,226,126,75,125,32,62,50,189,225,43,23,89,132,168,160,245,34,61,113,131,204,182,51,19,5,161,158,145,192,140,253,184,22,10,65,57,234,175,148,217,111,169,62,89,113,9,26,128,128,160,116,183,11,237,68,65,147,86,168,220,228,44,204,86,247,168,145,140,11,51,82,106,214,149,101,214,103,43,7,219,42,18,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,80,90,222,110,109,11,60,70,62,54,96,68,136,32,251,73,11,145,37,204,201,177,59,4,177,45,197,186,81,171,201,54,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,165,8,167,242,244,161,70,136,59,248,134,16,54,128,55,246,31,98,17,247,207,13,124,77,120,23,1,104,193,243,106,174,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,117,254,248,169,140,212,202,48,190,248,66,108,226,49,13,176,213,221,44,93,158,12,29,42,13,71,21,208,116,159,193,173,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,160,165,8,167,242,244,161,70,136,59,248,134,16,54,128,55,246,31,98,17,247,207,13,124,77,120,23,1,104,193,243,106,174,128,128,128,128,128,128,128,128,128,160,117,254,248,169,140,212,202,48,190,248,66,108,226,49,13,176,213,221,44,93,158,12,29,42,13,71,21,208,116,159,193,173,128,128,128,128,128],[248,81,128,160,80,90,222,110,109,11,60,70,62,54,96,68,136,32,251,73,11,145,37,204,201,177,59,4,177,45,197,186,81,171,201,54,128,128,128,128,128,128,128,128,128,160,117,254,248,169,140,212,202,48,190,248,66,108,226,49,13,176,213,221,44,93,158,12,29,42,13,71,21,208,116,159,193,173,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],"key":[177,14,45,82,118,18,7,59,38,238,205,253,113,126,106,50,12,244,75,74,250,194,176,115,45,159,203,226,183,250,12,246],"list_rlp_bytes":[[226],[226]],"value_rlp_bytes":[[3],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,32,14,45,82,118,18,7,59,38,238,205,253,113,126,106,50,12,244,75,74,250,194,176,115,45,159,203,226,183,250,12,246,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,14,45,82,118,18,7,59,38,238,205,253,113,126,106,50,12,244,75,74,250,194,176,115,45,159,203,226,183,250,12,246,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[226,160,32,14,45,82,118,18,7,59,38,238,205,253,113,126,106,50,12,244,75,74,250,194,176,115,45,159,203,226,183,250,12,246,3],[226,160,32,14,45,82,118,18,7,59,38,238,205,253,113,126,106,50,12,244,75,74,250,194,176,115,45,159,203,226,183,250,12,246,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ExtensionInFirstStorageLevelOneKeyByte.json b/zkevm-circuits/src/mpt_circuit/tests/ExtensionInFirstStorageLevelOneKeyByte.json new file mode 100644 index 0000000000..d60e3eea45 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ExtensionInFirstStorageLevelOneKeyByte.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,124,231,136,102,183,251,69,23,24,161,116,146,248,119,28,228,121,52,114,185,253,81,8,13,237,205,137,88,115,105,84,228,0],[160,37,34,234,18,21,213,199,151,55,56,71,97,141,132,147,29,245,89,166,167,28,253,151,151,184,228,239,85,42,79,172,110,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,208,11,7,160,57,118,105,130,12,148,160,224,101,79,108,119,75,73,27,251,23,112,202,194,98,232,67,35,41,20,109,227,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,126,191,152,20,62,71,44,132,121,37,141,73,58,182,255,235,252,82,207,173,42,110,33,241,211,242,104,95,252,103,209,89,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,126,191,152,20,62,71,44,132,121,37,141,73,58,182,255,235,252,82,207,173,42,110,33,241,211,242,104,95,252,103,209,89,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,208,11,7,160,57,118,105,130,12,148,160,224,101,79,108,119,75,73,27,251,23,112,202,194,98,232,67,35,41,20,109,227,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,156,207,34,126,96,200,143,86,98,67,48,239,210,146,94,107,198,11,34,45,151,240,146,143,132,124,18,87,19,78,100,125,0],[160,8,82,228,160,236,167,211,34,103,186,143,82,159,227,56,83,90,137,189,168,42,104,95,52,183,148,255,215,136,52,73,231,0],[160,84,120,210,249,75,139,182,38,44,242,80,181,2,165,43,146,17,155,131,187,29,254,176,179,119,232,197,70,165,227,43,64,0],[160,194,12,142,1,144,174,252,71,147,52,115,101,189,153,208,184,182,11,61,226,102,6,152,102,88,19,198,73,12,11,50,155,0],[160,59,143,74,53,247,240,239,138,121,223,75,218,127,28,117,171,91,193,129,250,204,248,51,157,35,23,2,179,196,54,170,46,0],[160,157,90,51,248,241,223,224,87,67,255,188,60,98,138,52,58,248,0,103,191,25,93,87,196,48,17,193,91,196,174,84,68,0],[160,37,36,38,176,196,202,58,86,76,239,236,180,113,34,151,66,223,175,221,244,2,135,167,81,134,210,144,189,210,100,169,46,0],[160,246,249,160,14,73,156,38,98,129,209,255,124,122,147,16,52,200,78,213,139,162,204,164,40,13,165,111,148,15,31,205,20,0],[160,196,63,137,26,203,165,150,154,136,200,90,27,244,146,124,13,112,147,170,137,82,86,194,212,83,213,250,77,122,235,81,108,0],[160,23,72,191,114,109,241,153,152,28,181,114,222,27,12,163,170,167,243,68,76,13,193,8,43,209,0,251,139,245,110,12,200,0],[160,162,242,12,159,239,231,230,109,155,112,235,20,28,190,163,94,48,238,186,27,192,248,95,119,246,213,205,3,106,83,34,57,0],[160,98,128,143,73,77,78,229,115,157,26,53,223,153,171,114,69,45,174,24,124,45,42,137,236,225,137,107,235,241,54,22,248,0],[160,28,67,53,54,154,2,91,141,228,22,200,27,178,90,210,209,195,121,126,22,72,172,98,207,112,253,149,202,240,32,170,32,0],[160,77,183,169,108,222,80,160,149,46,20,80,223,164,78,82,196,134,47,182,103,106,44,118,54,158,56,222,196,13,46,87,30,0],[160,105,251,188,224,72,188,242,142,5,202,96,164,238,163,221,166,92,66,41,9,240,19,219,203,186,100,64,23,163,241,100,34,0],[160,192,86,211,84,48,194,81,148,248,209,175,126,122,172,80,176,186,213,19,20,125,109,49,12,170,236,73,244,180,218,98,218,0],[160,70,28,143,53,189,11,148,71,98,61,108,214,101,187,1,240,58,157,104,142,179,155,185,249,28,6,177,21,81,199,24,148,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,8,82,228,160,236,167,211,34,103,186,143,82,159,227,56,83,90,137,189,168,42,104,95,52,183,148,255,215,136,52,73,231,160,84,120,210,249,75,139,182,38,44,242,80,181,2,165,43,146,17,155,131,187,29,254,176,179,119,232,197,70,165,227,43,64,160,194,12,142,1,144,174,252,71,147,52,115,101,189,153,208,184,182,11,61,226,102,6,152,102,88,19,198,73,12,11,50,155,160,59,143,74,53,247,240,239,138,121,223,75,218,127,28,117,171,91,193,129,250,204,248,51,157,35,23,2,179,196,54,170,46,160,157,90,51,248,241,223,224,87,67,255,188,60,98,138,52,58,248,0,103,191,25,93,87,196,48,17,193,91,196,174,84,68,160,37,36,38,176,196,202,58,86,76,239,236,180,113,34,151,66,223,175,221,244,2,135,167,81,134,210,144,189,210,100,169,46,160,246,249,160,14,73,156,38,98,129,209,255,124,122,147,16,52,200,78,213,139,162,204,164,40,13,165,111,148,15,31,205,20,160,196,63,137,26,203,165,150,154,136,200,90,27,244,146,124,13,112,147,170,137,82,86,194,212,83,213,250,77,122,235,81,108,160,23,72,191,114,109,241,153,152,28,181,114,222,27,12,163,170,167,243,68,76,13,193,8,43,209,0,251,139,245,110,12,200,160,162,242,12,159,239,231,230,109,155,112,235,20,28,190,163,94,48,238,186,27,192,248,95,119,246,213,205,3,106,83,34,57,160,98,128,143,73,77,78,229,115,157,26,53,223,153,171,114,69,45,174,24,124,45,42,137,236,225,137,107,235,241,54,22,248,160,28,67,53,54,154,2,91,141,228,22,200,27,178,90,210,209,195,121,126,22,72,172,98,207,112,253,149,202,240,32,170,32,160,77,183,169,108,222,80,160,149,46,20,80,223,164,78,82,196,134,47,182,103,106,44,118,54,158,56,222,196,13,46,87,30,160,105,251,188,224,72,188,242,142,5,202,96,164,238,163,221,166,92,66,41,9,240,19,219,203,186,100,64,23,163,241,100,34,160,192,86,211,84,48,194,81,148,248,209,175,126,122,172,80,176,186,213,19,20,125,109,49,12,170,236,73,244,180,218,98,218,160,70,28,143,53,189,11,148,71,98,61,108,214,101,187,1,240,58,157,104,142,179,155,185,249,28,6,177,21,81,199,24,148,128],[249,2,17,160,8,82,228,160,236,167,211,34,103,186,143,82,159,227,56,83,90,137,189,168,42,104,95,52,183,148,255,215,136,52,73,231,160,84,120,210,249,75,139,182,38,44,242,80,181,2,165,43,146,17,155,131,187,29,254,176,179,119,232,197,70,165,227,43,64,160,194,12,142,1,144,174,252,71,147,52,115,101,189,153,208,184,182,11,61,226,102,6,152,102,88,19,198,73,12,11,50,155,160,59,143,74,53,247,240,239,138,121,223,75,218,127,28,117,171,91,193,129,250,204,248,51,157,35,23,2,179,196,54,170,46,160,157,90,51,248,241,223,224,87,67,255,188,60,98,138,52,58,248,0,103,191,25,93,87,196,48,17,193,91,196,174,84,68,160,37,36,38,176,196,202,58,86,76,239,236,180,113,34,151,66,223,175,221,244,2,135,167,81,134,210,144,189,210,100,169,46,160,246,249,160,14,73,156,38,98,129,209,255,124,122,147,16,52,200,78,213,139,162,204,164,40,13,165,111,148,15,31,205,20,160,196,63,137,26,203,165,150,154,136,200,90,27,244,146,124,13,112,147,170,137,82,86,194,212,83,213,250,77,122,235,81,108,160,23,72,191,114,109,241,153,152,28,181,114,222,27,12,163,170,167,243,68,76,13,193,8,43,209,0,251,139,245,110,12,200,160,162,242,12,159,239,231,230,109,155,112,235,20,28,190,163,94,48,238,186,27,192,248,95,119,246,213,205,3,106,83,34,57,160,98,128,143,73,77,78,229,115,157,26,53,223,153,171,114,69,45,174,24,124,45,42,137,236,225,137,107,235,241,54,22,248,160,28,67,53,54,154,2,91,141,228,22,200,27,178,90,210,209,195,121,126,22,72,172,98,207,112,253,149,202,240,32,170,32,160,77,183,169,108,222,80,160,149,46,20,80,223,164,78,82,196,134,47,182,103,106,44,118,54,158,56,222,196,13,46,87,30,160,105,251,188,224,72,188,242,142,5,202,96,164,238,163,221,166,92,66,41,9,240,19,219,203,186,100,64,23,163,241,100,34,160,156,207,34,126,96,200,143,86,98,67,48,239,210,146,94,107,198,11,34,45,151,240,146,143,132,124,18,87,19,78,100,125,160,70,28,143,53,189,11,148,71,98,61,108,214,101,187,1,240,58,157,104,142,179,155,185,249,28,6,177,21,81,199,24,148,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,139,236,208,88,153,113,82,137,105,145,232,206,194,251,94,134,60,159,209,170,140,223,189,13,150,246,4,251,15,48,51,104,0],[160,28,181,216,79,148,37,18,33,67,109,190,5,141,78,14,125,126,101,243,129,183,164,252,246,188,222,123,209,72,162,91,222,0],[160,127,197,158,74,119,72,230,12,125,176,108,3,178,158,78,4,13,240,18,19,137,90,52,126,5,105,198,181,219,43,179,65,0],[160,46,9,75,129,71,206,112,222,185,139,165,36,36,211,46,89,3,55,130,67,49,169,124,254,145,239,59,68,181,39,14,11,0],[160,195,204,36,121,188,76,85,107,153,228,243,120,219,164,214,149,84,154,93,6,211,138,212,126,99,0,69,93,78,143,107,125,0],[160,24,229,27,106,208,179,138,207,189,75,247,237,254,184,165,211,163,77,102,247,171,142,38,241,105,73,81,97,179,89,41,94,0],[160,69,128,196,179,31,166,62,236,4,126,133,123,72,78,7,98,91,97,202,41,213,219,83,161,250,44,62,218,202,202,95,85,0],[160,122,138,244,235,222,164,181,224,94,192,101,250,2,159,226,141,139,49,161,182,189,7,58,131,181,174,22,234,166,219,45,89,0],[160,90,3,122,78,112,37,39,146,55,180,1,246,17,226,228,124,128,43,223,119,159,164,56,180,13,93,158,246,104,22,244,48,0],[160,44,69,190,86,52,17,185,107,193,188,16,167,86,61,125,177,50,240,102,96,66,255,44,165,212,175,229,245,163,179,105,42,0],[160,236,64,240,32,156,40,69,140,109,160,30,103,177,225,161,137,199,148,118,155,53,110,110,30,88,113,102,249,146,51,146,64,0],[160,13,42,32,122,82,79,121,74,202,120,184,186,33,169,210,46,107,49,203,217,253,81,204,72,172,54,254,232,169,31,66,180,0],[160,249,124,106,89,244,190,54,102,66,217,238,184,69,54,42,49,217,172,209,72,171,109,172,162,227,248,91,39,84,60,12,50,0],[160,71,37,113,174,70,115,139,170,17,161,226,89,54,206,220,216,124,175,149,45,37,207,232,200,177,22,55,13,211,27,128,159,0],[160,230,15,33,183,4,214,67,103,40,12,190,159,2,136,107,119,218,240,254,147,196,64,54,80,160,212,123,210,158,221,177,79,0],[160,81,251,139,38,98,234,236,80,109,218,180,81,152,102,115,99,187,67,51,108,50,176,183,19,208,120,5,0,187,173,25,231,0],[160,91,147,3,93,139,16,136,76,22,19,70,240,73,156,182,34,44,29,125,2,237,83,117,238,18,211,207,207,135,137,154,42,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,28,181,216,79,148,37,18,33,67,109,190,5,141,78,14,125,126,101,243,129,183,164,252,246,188,222,123,209,72,162,91,222,160,127,197,158,74,119,72,230,12,125,176,108,3,178,158,78,4,13,240,18,19,137,90,52,126,5,105,198,181,219,43,179,65,160,46,9,75,129,71,206,112,222,185,139,165,36,36,211,46,89,3,55,130,67,49,169,124,254,145,239,59,68,181,39,14,11,160,195,204,36,121,188,76,85,107,153,228,243,120,219,164,214,149,84,154,93,6,211,138,212,126,99,0,69,93,78,143,107,125,160,24,229,27,106,208,179,138,207,189,75,247,237,254,184,165,211,163,77,102,247,171,142,38,241,105,73,81,97,179,89,41,94,160,69,128,196,179,31,166,62,236,4,126,133,123,72,78,7,98,91,97,202,41,213,219,83,161,250,44,62,218,202,202,95,85,160,122,138,244,235,222,164,181,224,94,192,101,250,2,159,226,141,139,49,161,182,189,7,58,131,181,174,22,234,166,219,45,89,160,90,3,122,78,112,37,39,146,55,180,1,246,17,226,228,124,128,43,223,119,159,164,56,180,13,93,158,246,104,22,244,48,160,44,69,190,86,52,17,185,107,193,188,16,167,86,61,125,177,50,240,102,96,66,255,44,165,212,175,229,245,163,179,105,42,160,236,64,240,32,156,40,69,140,109,160,30,103,177,225,161,137,199,148,118,155,53,110,110,30,88,113,102,249,146,51,146,64,160,13,42,32,122,82,79,121,74,202,120,184,186,33,169,210,46,107,49,203,217,253,81,204,72,172,54,254,232,169,31,66,180,160,249,124,106,89,244,190,54,102,66,217,238,184,69,54,42,49,217,172,209,72,171,109,172,162,227,248,91,39,84,60,12,50,160,71,37,113,174,70,115,139,170,17,161,226,89,54,206,220,216,124,175,149,45,37,207,232,200,177,22,55,13,211,27,128,159,160,230,15,33,183,4,214,67,103,40,12,190,159,2,136,107,119,218,240,254,147,196,64,54,80,160,212,123,210,158,221,177,79,160,81,251,139,38,98,234,236,80,109,218,180,81,152,102,115,99,187,67,51,108,50,176,183,19,208,120,5,0,187,173,25,231,160,91,147,3,93,139,16,136,76,22,19,70,240,73,156,182,34,44,29,125,2,237,83,117,238,18,211,207,207,135,137,154,42,128],[249,2,17,160,28,181,216,79,148,37,18,33,67,109,190,5,141,78,14,125,126,101,243,129,183,164,252,246,188,222,123,209,72,162,91,222,160,127,197,158,74,119,72,230,12,125,176,108,3,178,158,78,4,13,240,18,19,137,90,52,126,5,105,198,181,219,43,179,65,160,46,9,75,129,71,206,112,222,185,139,165,36,36,211,46,89,3,55,130,67,49,169,124,254,145,239,59,68,181,39,14,11,160,195,204,36,121,188,76,85,107,153,228,243,120,219,164,214,149,84,154,93,6,211,138,212,126,99,0,69,93,78,143,107,125,160,24,229,27,106,208,179,138,207,189,75,247,237,254,184,165,211,163,77,102,247,171,142,38,241,105,73,81,97,179,89,41,94,160,69,128,196,179,31,166,62,236,4,126,133,123,72,78,7,98,91,97,202,41,213,219,83,161,250,44,62,218,202,202,95,85,160,122,138,244,235,222,164,181,224,94,192,101,250,2,159,226,141,139,49,161,182,189,7,58,131,181,174,22,234,166,219,45,89,160,139,236,208,88,153,113,82,137,105,145,232,206,194,251,94,134,60,159,209,170,140,223,189,13,150,246,4,251,15,48,51,104,160,44,69,190,86,52,17,185,107,193,188,16,167,86,61,125,177,50,240,102,96,66,255,44,165,212,175,229,245,163,179,105,42,160,236,64,240,32,156,40,69,140,109,160,30,103,177,225,161,137,199,148,118,155,53,110,110,30,88,113,102,249,146,51,146,64,160,13,42,32,122,82,79,121,74,202,120,184,186,33,169,210,46,107,49,203,217,253,81,204,72,172,54,254,232,169,31,66,180,160,249,124,106,89,244,190,54,102,66,217,238,184,69,54,42,49,217,172,209,72,171,109,172,162,227,248,91,39,84,60,12,50,160,71,37,113,174,70,115,139,170,17,161,226,89,54,206,220,216,124,175,149,45,37,207,232,200,177,22,55,13,211,27,128,159,160,230,15,33,183,4,214,67,103,40,12,190,159,2,136,107,119,218,240,254,147,196,64,54,80,160,212,123,210,158,221,177,79,160,81,251,139,38,98,234,236,80,109,218,180,81,152,102,115,99,187,67,51,108,50,176,183,19,208,120,5,0,187,173,25,231,160,91,147,3,93,139,16,136,76,22,19,70,240,73,156,182,34,44,29,125,2,237,83,117,238,18,211,207,207,135,137,154,42,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,159,130,229,165,212,147,78,44,146,124,254,74,180,62,107,231,41,115,95,72,27,6,25,183,104,151,116,137,84,204,53,189,0],[160,69,240,19,94,201,88,43,0,240,10,245,154,168,230,212,225,91,127,174,54,14,224,25,37,243,187,212,166,69,13,214,210,0],[160,177,114,250,165,145,160,168,147,73,120,43,40,134,214,183,54,244,101,72,160,70,135,200,49,243,43,70,171,72,51,232,228,0],[160,90,126,11,244,198,223,145,243,175,101,108,33,157,37,38,154,185,230,186,210,117,24,108,72,19,80,181,127,12,80,114,155,0],[160,78,180,178,103,237,5,128,118,135,163,125,238,136,63,98,140,254,188,122,80,58,140,165,170,224,23,27,182,205,122,170,222,0],[160,147,155,221,36,17,65,128,167,31,175,127,179,216,23,237,245,34,236,18,107,89,51,94,106,56,12,20,74,110,149,105,207,0],[160,15,28,106,136,34,61,58,29,173,134,221,145,72,139,220,37,191,242,241,153,92,130,98,238,20,55,147,180,1,187,72,252,0],[160,101,28,170,8,68,246,158,179,253,114,81,91,184,162,73,227,249,57,19,194,215,111,218,79,13,14,253,173,39,152,43,12,0],[160,101,42,250,164,65,159,130,225,36,154,115,39,124,11,13,239,251,223,52,197,47,222,172,222,166,233,67,63,237,150,142,147,0],[160,134,159,238,181,244,146,85,201,200,247,194,188,4,58,155,60,168,165,249,119,88,232,251,3,10,102,159,100,85,145,79,135,0],[160,207,152,180,142,136,28,103,23,207,112,171,22,117,189,204,168,205,65,250,82,77,7,189,224,17,6,107,65,153,196,51,115,0],[160,236,88,60,30,32,14,250,185,46,86,72,75,128,6,144,52,126,176,244,75,144,130,37,202,71,232,43,210,154,98,86,223,0],[160,96,182,165,136,194,214,172,207,177,61,121,19,192,171,159,135,101,154,232,237,19,245,224,68,199,165,13,58,252,78,199,233,0],[160,12,4,159,3,157,220,175,164,62,180,206,33,25,128,18,219,176,112,152,50,85,173,6,36,29,160,252,251,57,179,108,55,0],[160,178,76,4,254,107,101,118,101,72,242,165,126,184,251,148,195,179,2,253,197,81,175,197,164,92,27,185,14,251,174,58,27,0],[160,22,172,44,183,17,252,57,28,189,212,135,200,167,233,149,136,217,169,139,57,170,76,181,203,160,31,77,109,109,107,10,90,0],[160,129,79,119,239,14,8,139,99,226,197,245,208,38,121,249,69,188,180,205,60,221,179,140,56,207,45,139,57,243,129,240,114,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,69,240,19,94,201,88,43,0,240,10,245,154,168,230,212,225,91,127,174,54,14,224,25,37,243,187,212,166,69,13,214,210,160,177,114,250,165,145,160,168,147,73,120,43,40,134,214,183,54,244,101,72,160,70,135,200,49,243,43,70,171,72,51,232,228,160,90,126,11,244,198,223,145,243,175,101,108,33,157,37,38,154,185,230,186,210,117,24,108,72,19,80,181,127,12,80,114,155,160,78,180,178,103,237,5,128,118,135,163,125,238,136,63,98,140,254,188,122,80,58,140,165,170,224,23,27,182,205,122,170,222,160,147,155,221,36,17,65,128,167,31,175,127,179,216,23,237,245,34,236,18,107,89,51,94,106,56,12,20,74,110,149,105,207,160,15,28,106,136,34,61,58,29,173,134,221,145,72,139,220,37,191,242,241,153,92,130,98,238,20,55,147,180,1,187,72,252,160,101,28,170,8,68,246,158,179,253,114,81,91,184,162,73,227,249,57,19,194,215,111,218,79,13,14,253,173,39,152,43,12,160,101,42,250,164,65,159,130,225,36,154,115,39,124,11,13,239,251,223,52,197,47,222,172,222,166,233,67,63,237,150,142,147,160,134,159,238,181,244,146,85,201,200,247,194,188,4,58,155,60,168,165,249,119,88,232,251,3,10,102,159,100,85,145,79,135,160,207,152,180,142,136,28,103,23,207,112,171,22,117,189,204,168,205,65,250,82,77,7,189,224,17,6,107,65,153,196,51,115,160,236,88,60,30,32,14,250,185,46,86,72,75,128,6,144,52,126,176,244,75,144,130,37,202,71,232,43,210,154,98,86,223,160,96,182,165,136,194,214,172,207,177,61,121,19,192,171,159,135,101,154,232,237,19,245,224,68,199,165,13,58,252,78,199,233,160,12,4,159,3,157,220,175,164,62,180,206,33,25,128,18,219,176,112,152,50,85,173,6,36,29,160,252,251,57,179,108,55,160,178,76,4,254,107,101,118,101,72,242,165,126,184,251,148,195,179,2,253,197,81,175,197,164,92,27,185,14,251,174,58,27,160,22,172,44,183,17,252,57,28,189,212,135,200,167,233,149,136,217,169,139,57,170,76,181,203,160,31,77,109,109,107,10,90,160,129,79,119,239,14,8,139,99,226,197,245,208,38,121,249,69,188,180,205,60,221,179,140,56,207,45,139,57,243,129,240,114,128],[249,2,17,160,69,240,19,94,201,88,43,0,240,10,245,154,168,230,212,225,91,127,174,54,14,224,25,37,243,187,212,166,69,13,214,210,160,177,114,250,165,145,160,168,147,73,120,43,40,134,214,183,54,244,101,72,160,70,135,200,49,243,43,70,171,72,51,232,228,160,90,126,11,244,198,223,145,243,175,101,108,33,157,37,38,154,185,230,186,210,117,24,108,72,19,80,181,127,12,80,114,155,160,78,180,178,103,237,5,128,118,135,163,125,238,136,63,98,140,254,188,122,80,58,140,165,170,224,23,27,182,205,122,170,222,160,147,155,221,36,17,65,128,167,31,175,127,179,216,23,237,245,34,236,18,107,89,51,94,106,56,12,20,74,110,149,105,207,160,15,28,106,136,34,61,58,29,173,134,221,145,72,139,220,37,191,242,241,153,92,130,98,238,20,55,147,180,1,187,72,252,160,101,28,170,8,68,246,158,179,253,114,81,91,184,162,73,227,249,57,19,194,215,111,218,79,13,14,253,173,39,152,43,12,160,101,42,250,164,65,159,130,225,36,154,115,39,124,11,13,239,251,223,52,197,47,222,172,222,166,233,67,63,237,150,142,147,160,159,130,229,165,212,147,78,44,146,124,254,74,180,62,107,231,41,115,95,72,27,6,25,183,104,151,116,137,84,204,53,189,160,207,152,180,142,136,28,103,23,207,112,171,22,117,189,204,168,205,65,250,82,77,7,189,224,17,6,107,65,153,196,51,115,160,236,88,60,30,32,14,250,185,46,86,72,75,128,6,144,52,126,176,244,75,144,130,37,202,71,232,43,210,154,98,86,223,160,96,182,165,136,194,214,172,207,177,61,121,19,192,171,159,135,101,154,232,237,19,245,224,68,199,165,13,58,252,78,199,233,160,12,4,159,3,157,220,175,164,62,180,206,33,25,128,18,219,176,112,152,50,85,173,6,36,29,160,252,251,57,179,108,55,160,178,76,4,254,107,101,118,101,72,242,165,126,184,251,148,195,179,2,253,197,81,175,197,164,92,27,185,14,251,174,58,27,160,22,172,44,183,17,252,57,28,189,212,135,200,167,233,149,136,217,169,139,57,170,76,181,203,160,31,77,109,109,107,10,90,160,129,79,119,239,14,8,139,99,226,197,245,208,38,121,249,69,188,180,205,60,221,179,140,56,207,45,139,57,243,129,240,114,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,225,182,145,67,235,152,171,67,1,124,207,170,15,83,123,246,240,168,176,148,142,233,231,8,186,38,93,151,133,95,66,9,0],[160,135,143,213,43,63,194,224,22,73,85,234,57,32,136,196,138,144,25,14,53,225,60,238,148,1,160,19,151,227,159,49,183,0],[160,2,29,173,25,96,174,9,182,182,173,122,125,236,76,251,176,5,245,88,46,126,30,246,22,125,175,153,67,210,235,64,8,0],[160,28,189,158,3,1,129,244,212,210,46,30,196,172,161,20,195,243,158,211,25,117,74,30,254,41,187,49,138,192,150,52,17,0],[160,239,95,253,44,136,34,194,144,153,28,242,248,222,215,110,46,230,231,27,170,229,101,3,204,99,204,208,118,114,93,83,110,0],[160,7,159,235,95,194,73,95,243,22,246,19,38,251,43,141,128,8,190,255,67,153,158,211,166,139,252,168,40,63,188,205,95,0],[160,238,34,57,54,115,74,242,131,214,151,182,44,143,250,245,22,211,176,245,204,227,75,151,108,89,28,167,182,144,17,21,92,0],[160,110,82,232,2,216,240,70,229,147,241,71,82,114,9,73,189,84,16,27,151,65,30,46,28,117,225,27,149,182,208,51,159,0],[160,155,189,91,3,70,25,27,41,10,49,193,196,22,63,42,36,133,91,199,238,35,240,242,161,252,0,183,96,230,193,68,235,0],[160,254,225,94,214,235,151,75,30,231,42,49,211,232,190,3,200,245,38,113,10,27,249,194,216,43,216,49,187,170,57,95,202,0],[160,46,121,163,72,94,105,150,192,89,117,100,231,44,8,94,84,224,173,10,128,89,76,114,29,254,213,243,87,146,33,249,173,0],[160,182,172,93,250,183,64,112,173,6,173,19,151,175,126,144,31,75,142,43,92,76,129,21,185,125,95,55,38,17,68,4,54,0],[160,101,105,235,77,175,160,222,72,81,15,175,2,24,88,227,4,106,202,82,46,144,46,234,120,227,124,28,91,186,48,175,127,0],[160,107,199,179,225,2,21,145,210,96,156,115,9,90,72,224,6,92,117,170,140,51,4,185,247,179,137,241,5,125,9,215,216,0],[160,174,1,41,24,170,64,96,231,200,121,39,32,55,169,45,50,38,91,148,155,128,81,65,213,115,175,165,99,88,151,50,116,0],[160,175,48,34,68,54,34,13,191,110,96,44,135,10,240,213,61,134,176,37,129,8,182,235,41,95,208,183,87,202,245,167,238,0],[160,209,68,173,130,179,23,241,93,169,146,232,142,51,218,156,248,211,66,190,117,229,249,32,12,13,97,26,156,177,34,111,29,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,135,143,213,43,63,194,224,22,73,85,234,57,32,136,196,138,144,25,14,53,225,60,238,148,1,160,19,151,227,159,49,183,160,2,29,173,25,96,174,9,182,182,173,122,125,236,76,251,176,5,245,88,46,126,30,246,22,125,175,153,67,210,235,64,8,160,28,189,158,3,1,129,244,212,210,46,30,196,172,161,20,195,243,158,211,25,117,74,30,254,41,187,49,138,192,150,52,17,160,239,95,253,44,136,34,194,144,153,28,242,248,222,215,110,46,230,231,27,170,229,101,3,204,99,204,208,118,114,93,83,110,160,7,159,235,95,194,73,95,243,22,246,19,38,251,43,141,128,8,190,255,67,153,158,211,166,139,252,168,40,63,188,205,95,160,238,34,57,54,115,74,242,131,214,151,182,44,143,250,245,22,211,176,245,204,227,75,151,108,89,28,167,182,144,17,21,92,160,110,82,232,2,216,240,70,229,147,241,71,82,114,9,73,189,84,16,27,151,65,30,46,28,117,225,27,149,182,208,51,159,160,155,189,91,3,70,25,27,41,10,49,193,196,22,63,42,36,133,91,199,238,35,240,242,161,252,0,183,96,230,193,68,235,160,254,225,94,214,235,151,75,30,231,42,49,211,232,190,3,200,245,38,113,10,27,249,194,216,43,216,49,187,170,57,95,202,160,46,121,163,72,94,105,150,192,89,117,100,231,44,8,94,84,224,173,10,128,89,76,114,29,254,213,243,87,146,33,249,173,160,182,172,93,250,183,64,112,173,6,173,19,151,175,126,144,31,75,142,43,92,76,129,21,185,125,95,55,38,17,68,4,54,160,101,105,235,77,175,160,222,72,81,15,175,2,24,88,227,4,106,202,82,46,144,46,234,120,227,124,28,91,186,48,175,127,160,107,199,179,225,2,21,145,210,96,156,115,9,90,72,224,6,92,117,170,140,51,4,185,247,179,137,241,5,125,9,215,216,160,174,1,41,24,170,64,96,231,200,121,39,32,55,169,45,50,38,91,148,155,128,81,65,213,115,175,165,99,88,151,50,116,160,175,48,34,68,54,34,13,191,110,96,44,135,10,240,213,61,134,176,37,129,8,182,235,41,95,208,183,87,202,245,167,238,160,209,68,173,130,179,23,241,93,169,146,232,142,51,218,156,248,211,66,190,117,229,249,32,12,13,97,26,156,177,34,111,29,128],[249,2,17,160,135,143,213,43,63,194,224,22,73,85,234,57,32,136,196,138,144,25,14,53,225,60,238,148,1,160,19,151,227,159,49,183,160,2,29,173,25,96,174,9,182,182,173,122,125,236,76,251,176,5,245,88,46,126,30,246,22,125,175,153,67,210,235,64,8,160,28,189,158,3,1,129,244,212,210,46,30,196,172,161,20,195,243,158,211,25,117,74,30,254,41,187,49,138,192,150,52,17,160,239,95,253,44,136,34,194,144,153,28,242,248,222,215,110,46,230,231,27,170,229,101,3,204,99,204,208,118,114,93,83,110,160,7,159,235,95,194,73,95,243,22,246,19,38,251,43,141,128,8,190,255,67,153,158,211,166,139,252,168,40,63,188,205,95,160,238,34,57,54,115,74,242,131,214,151,182,44,143,250,245,22,211,176,245,204,227,75,151,108,89,28,167,182,144,17,21,92,160,110,82,232,2,216,240,70,229,147,241,71,82,114,9,73,189,84,16,27,151,65,30,46,28,117,225,27,149,182,208,51,159,160,155,189,91,3,70,25,27,41,10,49,193,196,22,63,42,36,133,91,199,238,35,240,242,161,252,0,183,96,230,193,68,235,160,254,225,94,214,235,151,75,30,231,42,49,211,232,190,3,200,245,38,113,10,27,249,194,216,43,216,49,187,170,57,95,202,160,46,121,163,72,94,105,150,192,89,117,100,231,44,8,94,84,224,173,10,128,89,76,114,29,254,213,243,87,146,33,249,173,160,182,172,93,250,183,64,112,173,6,173,19,151,175,126,144,31,75,142,43,92,76,129,21,185,125,95,55,38,17,68,4,54,160,101,105,235,77,175,160,222,72,81,15,175,2,24,88,227,4,106,202,82,46,144,46,234,120,227,124,28,91,186,48,175,127,160,107,199,179,225,2,21,145,210,96,156,115,9,90,72,224,6,92,117,170,140,51,4,185,247,179,137,241,5,125,9,215,216,160,174,1,41,24,170,64,96,231,200,121,39,32,55,169,45,50,38,91,148,155,128,81,65,213,115,175,165,99,88,151,50,116,160,175,48,34,68,54,34,13,191,110,96,44,135,10,240,213,61,134,176,37,129,8,182,235,41,95,208,183,87,202,245,167,238,160,225,182,145,67,235,152,171,67,1,124,207,170,15,83,123,246,240,168,176,148,142,233,231,8,186,38,93,151,133,95,66,9,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":6,"drifted_index":6,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,238,209,87,174,135,247,247,71,46,224,121,112,26,122,57,36,89,211,219,49,155,106,201,99,199,252,111,215,11,255,165,213,0],[160,240,112,44,72,20,92,16,226,238,153,16,125,149,130,241,10,60,36,30,150,251,167,132,127,195,28,146,162,13,131,27,104,0],[160,138,1,235,206,4,16,156,100,75,197,42,86,62,127,48,60,191,73,198,101,215,247,43,217,243,100,129,241,204,220,255,148,0],[160,236,7,15,200,76,214,175,181,111,16,213,238,208,13,129,154,34,238,224,26,140,170,215,20,77,216,157,80,95,241,66,5,0],[160,111,209,247,4,184,241,13,91,12,184,243,229,45,164,245,146,134,164,11,3,131,241,44,248,165,88,52,99,193,196,218,253,0],[160,229,51,62,185,89,4,163,95,20,136,220,188,187,42,151,97,47,27,99,112,96,146,185,113,108,59,23,95,91,242,168,231,0],[160,225,30,140,67,250,53,232,133,42,214,15,162,35,11,145,22,0,220,112,181,254,56,69,155,136,93,110,187,205,140,249,25,0],[160,237,149,224,43,30,29,238,190,226,52,58,68,19,110,179,193,228,211,86,175,118,29,37,114,148,117,84,210,181,204,36,27,0],[160,70,32,6,139,201,80,250,209,245,47,57,130,174,10,207,204,234,130,173,235,16,22,234,52,196,221,80,211,111,246,11,181,0],[160,53,254,22,227,103,204,187,138,101,229,227,171,9,232,13,105,208,170,117,193,81,106,4,200,93,89,129,132,160,158,41,161,0],[160,186,224,186,141,73,213,194,212,99,82,80,83,63,102,245,177,171,65,255,49,96,123,226,247,84,252,59,154,66,254,96,67,0],[160,228,118,98,158,169,240,61,44,106,136,219,101,77,16,63,14,204,240,38,190,219,80,247,204,97,190,78,228,105,224,67,95,0],[160,191,245,233,165,127,57,224,124,150,65,148,214,187,48,38,122,66,30,227,50,65,101,40,51,58,89,7,228,45,27,112,166,0],[160,47,164,236,183,87,115,134,179,223,254,239,90,133,214,85,54,22,167,1,92,153,195,176,38,176,219,172,7,191,23,55,122,0],[160,215,6,239,231,6,41,80,135,222,236,3,134,0,18,22,209,211,166,221,135,184,73,179,164,230,223,10,101,145,99,150,96,0],[160,63,103,2,71,244,232,117,254,117,119,209,72,224,148,116,41,203,106,207,131,104,246,110,140,246,162,32,29,20,147,74,227,0],[160,235,217,213,36,97,57,33,70,140,131,115,203,161,172,152,58,3,51,31,34,188,42,244,174,85,218,174,183,39,13,100,120,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,240,112,44,72,20,92,16,226,238,153,16,125,149,130,241,10,60,36,30,150,251,167,132,127,195,28,146,162,13,131,27,104,160,138,1,235,206,4,16,156,100,75,197,42,86,62,127,48,60,191,73,198,101,215,247,43,217,243,100,129,241,204,220,255,148,160,236,7,15,200,76,214,175,181,111,16,213,238,208,13,129,154,34,238,224,26,140,170,215,20,77,216,157,80,95,241,66,5,160,111,209,247,4,184,241,13,91,12,184,243,229,45,164,245,146,134,164,11,3,131,241,44,248,165,88,52,99,193,196,218,253,160,229,51,62,185,89,4,163,95,20,136,220,188,187,42,151,97,47,27,99,112,96,146,185,113,108,59,23,95,91,242,168,231,160,225,30,140,67,250,53,232,133,42,214,15,162,35,11,145,22,0,220,112,181,254,56,69,155,136,93,110,187,205,140,249,25,160,237,149,224,43,30,29,238,190,226,52,58,68,19,110,179,193,228,211,86,175,118,29,37,114,148,117,84,210,181,204,36,27,160,70,32,6,139,201,80,250,209,245,47,57,130,174,10,207,204,234,130,173,235,16,22,234,52,196,221,80,211,111,246,11,181,160,53,254,22,227,103,204,187,138,101,229,227,171,9,232,13,105,208,170,117,193,81,106,4,200,93,89,129,132,160,158,41,161,160,186,224,186,141,73,213,194,212,99,82,80,83,63,102,245,177,171,65,255,49,96,123,226,247,84,252,59,154,66,254,96,67,160,228,118,98,158,169,240,61,44,106,136,219,101,77,16,63,14,204,240,38,190,219,80,247,204,97,190,78,228,105,224,67,95,160,191,245,233,165,127,57,224,124,150,65,148,214,187,48,38,122,66,30,227,50,65,101,40,51,58,89,7,228,45,27,112,166,160,47,164,236,183,87,115,134,179,223,254,239,90,133,214,85,54,22,167,1,92,153,195,176,38,176,219,172,7,191,23,55,122,160,215,6,239,231,6,41,80,135,222,236,3,134,0,18,22,209,211,166,221,135,184,73,179,164,230,223,10,101,145,99,150,96,160,63,103,2,71,244,232,117,254,117,119,209,72,224,148,116,41,203,106,207,131,104,246,110,140,246,162,32,29,20,147,74,227,160,235,217,213,36,97,57,33,70,140,131,115,203,161,172,152,58,3,51,31,34,188,42,244,174,85,218,174,183,39,13,100,120,128],[249,2,17,160,240,112,44,72,20,92,16,226,238,153,16,125,149,130,241,10,60,36,30,150,251,167,132,127,195,28,146,162,13,131,27,104,160,138,1,235,206,4,16,156,100,75,197,42,86,62,127,48,60,191,73,198,101,215,247,43,217,243,100,129,241,204,220,255,148,160,236,7,15,200,76,214,175,181,111,16,213,238,208,13,129,154,34,238,224,26,140,170,215,20,77,216,157,80,95,241,66,5,160,111,209,247,4,184,241,13,91,12,184,243,229,45,164,245,146,134,164,11,3,131,241,44,248,165,88,52,99,193,196,218,253,160,229,51,62,185,89,4,163,95,20,136,220,188,187,42,151,97,47,27,99,112,96,146,185,113,108,59,23,95,91,242,168,231,160,225,30,140,67,250,53,232,133,42,214,15,162,35,11,145,22,0,220,112,181,254,56,69,155,136,93,110,187,205,140,249,25,160,238,209,87,174,135,247,247,71,46,224,121,112,26,122,57,36,89,211,219,49,155,106,201,99,199,252,111,215,11,255,165,213,160,70,32,6,139,201,80,250,209,245,47,57,130,174,10,207,204,234,130,173,235,16,22,234,52,196,221,80,211,111,246,11,181,160,53,254,22,227,103,204,187,138,101,229,227,171,9,232,13,105,208,170,117,193,81,106,4,200,93,89,129,132,160,158,41,161,160,186,224,186,141,73,213,194,212,99,82,80,83,63,102,245,177,171,65,255,49,96,123,226,247,84,252,59,154,66,254,96,67,160,228,118,98,158,169,240,61,44,106,136,219,101,77,16,63,14,204,240,38,190,219,80,247,204,97,190,78,228,105,224,67,95,160,191,245,233,165,127,57,224,124,150,65,148,214,187,48,38,122,66,30,227,50,65,101,40,51,58,89,7,228,45,27,112,166,160,47,164,236,183,87,115,134,179,223,254,239,90,133,214,85,54,22,167,1,92,153,195,176,38,176,219,172,7,191,23,55,122,160,215,6,239,231,6,41,80,135,222,236,3,134,0,18,22,209,211,166,221,135,184,73,179,164,230,223,10,101,145,99,150,96,160,63,103,2,71,244,232,117,254,117,119,209,72,224,148,116,41,203,106,207,131,104,246,110,140,246,162,32,29,20,147,74,227,160,235,217,213,36,97,57,33,70,140,131,115,203,161,172,152,58,3,51,31,34,188,42,244,174,85,218,174,183,39,13,100,120,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[248,145],[248,145]]}},"account":null,"storage":null,"values":[[160,165,116,158,139,247,254,49,170,68,15,91,162,161,62,160,6,249,129,106,178,2,115,9,14,142,62,53,170,127,136,53,246,0],[160,73,208,126,64,185,124,226,254,200,156,38,73,116,28,98,39,159,197,2,205,192,137,219,133,250,225,251,164,26,205,18,81,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,4,223,126,85,68,106,50,147,247,249,222,159,87,179,121,227,15,254,85,49,250,43,16,96,127,220,135,236,178,131,92,58,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,169,218,39,137,48,68,179,36,77,176,168,185,84,5,147,255,34,50,153,185,72,181,252,119,197,87,41,147,59,43,45,74,0],[160,1,162,74,47,57,45,87,11,81,221,83,234,28,100,214,43,52,204,21,204,51,217,33,45,57,156,224,74,233,176,82,221,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,145,160,73,208,126,64,185,124,226,254,200,156,38,73,116,28,98,39,159,197,2,205,192,137,219,133,250,225,251,164,26,205,18,81,128,128,160,4,223,126,85,68,106,50,147,247,249,222,159,87,179,121,227,15,254,85,49,250,43,16,96,127,220,135,236,178,131,92,58,128,128,128,128,128,128,128,160,169,218,39,137,48,68,179,36,77,176,168,185,84,5,147,255,34,50,153,185,72,181,252,119,197,87,41,147,59,43,45,74,160,1,162,74,47,57,45,87,11,81,221,83,234,28,100,214,43,52,204,21,204,51,217,33,45,57,156,224,74,233,176,82,221,128,128,128,128],[248,145,160,73,208,126,64,185,124,226,254,200,156,38,73,116,28,98,39,159,197,2,205,192,137,219,133,250,225,251,164,26,205,18,81,128,128,160,4,223,126,85,68,106,50,147,247,249,222,159,87,179,121,227,15,254,85,49,250,43,16,96,127,220,135,236,178,131,92,58,128,128,128,128,128,128,128,160,165,116,158,139,247,254,49,170,68,15,91,162,161,62,160,6,249,129,106,178,2,115,9,14,142,62,53,170,127,136,53,246,160,1,162,74,47,57,45,87,11,81,221,83,234,28,100,214,43,52,204,21,204,51,217,33,45,57,156,224,74,233,176,82,221,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,74,22,132,110,223,6,51,194,83,209,210,85,189,59,23,107,148,190,32,50,163,100,142,104,242,185,109,43,71,122,110,67,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,222,170,68,108,117,176,212,174,211,39,185,133,117,19,156,115,206,166,217,135,198,124,199,163,157,194,82,167,202,167,62,219,0],[160,115,62,146,128,170,11,1,38,139,18,153,130,107,8,181,100,118,210,73,34,219,252,167,228,98,167,65,157,63,246,54,85,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,160,222,170,68,108,117,176,212,174,211,39,185,133,117,19,156,115,206,166,217,135,198,124,199,163,157,194,82,167,202,167,62,219,160,115,62,146,128,170,11,1,38,139,18,153,130,107,8,181,100,118,210,73,34,219,252,167,228,98,167,65,157,63,246,54,85,128,128,128,128,128,128,128,128],[248,81,128,128,128,128,128,128,128,160,222,170,68,108,117,176,212,174,211,39,185,133,117,19,156,115,206,166,217,135,198,124,199,163,157,194,82,167,202,167,62,219,160,74,22,132,110,223,6,51,194,83,209,210,85,189,59,23,107,148,190,32,50,163,100,142,104,242,185,109,43,71,122,110,67,128,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,141,100,78,113,237,145,113,89,70,14,78,206,48,14,80,218,70,221,199,79,174,60,220,107,96,144,43,18,51,135,218,126,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,160,9,113,129,125,176,108,165,204,52,73,31,120,48,145,70,180,84,104,164,114,187,197,135,250,222,46,181,93,217,99,207,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,90,201,155,52,41,92,241,145,115,198,62,239,36,93,195,58,7,245,152,172,23,67,9,134,143,19,156,78,147,101,80,2,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,160,160,9,113,129,125,176,108,165,204,52,73,31,120,48,145,70,180,84,104,164,114,187,197,135,250,222,46,181,93,217,99,207,128,128,128,160,90,201,155,52,41,92,241,145,115,198,62,239,36,93,195,58,7,245,152,172,23,67,9,134,143,19,156,78,147,101,80,2,128,128,128,128],[248,81,128,128,128,128,128,128,128,128,160,160,9,113,129,125,176,108,165,204,52,73,31,120,48,145,70,180,84,104,164,114,187,197,135,250,222,46,181,93,217,99,207,128,128,128,160,141,100,78,113,237,145,113,89,70,14,78,206,48,14,80,218,70,221,199,79,174,60,220,107,96,144,43,18,51,135,218,126,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[80,239,191,18,88,1,56,188,98,60,149,117,114,134,223,78,36,235,129,201],"key":[222,120,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184],"list_rlp_bytes":[[248,101],[248,101]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,101]},"storage":null,"values":[[156,54,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,0,0,0,0,0],[156,54,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,125,254,107,37,94,91,57,97,105,180,26,39,38,196,66,224,235,81,238,153,184,87,179,206,88,140,181,255,19,38,86,172,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,188,110,180,112,46,228,183,149,153,213,233,172,60,165,192,142,95,173,66,254,53,126,194,240,94,145,108,77,127,201,225,185,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[156,54,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,0,0,0,0,0]],"keccak_data":[[248,101,156,54,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,184,70,248,68,128,128,160,125,254,107,37,94,91,57,97,105,180,26,39,38,196,66,224,235,81,238,153,184,87,179,206,88,140,181,255,19,38,86,172,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,101,156,54,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,184,70,248,68,128,128,160,188,110,180,112,46,228,183,149,153,213,233,172,60,165,192,142,95,173,66,254,53,126,194,240,94,145,108,77,127,201,225,185,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[80,239,191,18,88,1,56,188,98,60,149,117,114,134,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[226]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,80,90,222,110,109,11,60,70,62,54,96,68,136,32,251,73,11,145,37,204,201,177,59,4,177,45,197,186,81,171,201,54,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,150,69,94,225,216,87,199,7,148,97,118,250,90,6,55,217,74,2,146,116,204,17,76,170,51,133,23,237,110,94,224,94,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,117,254,248,169,140,212,202,48,190,248,66,108,226,49,13,176,213,221,44,93,158,12,29,42,13,71,21,208,116,159,193,173,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,221,201,203,168,157,78,183,36,187,128,74,31,157,245,231,146,14,85,81,158,154,225,119,239,34,214,95,87,78,245,32,116,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,217,126,56,112,222,29,194,80,17,187,144,67,169,202,198,186,147,107,226,126,75,125,32,62,50,189,225,43,23,89,132,168,0]],"keccak_data":[[248,81,128,160,150,69,94,225,216,87,199,7,148,97,118,250,90,6,55,217,74,2,146,116,204,17,76,170,51,133,23,237,110,94,224,94,128,128,128,128,128,128,128,128,128,160,117,254,248,169,140,212,202,48,190,248,66,108,226,49,13,176,213,221,44,93,158,12,29,42,13,71,21,208,116,159,193,173,128,128,128,128,128],[248,81,128,160,80,90,222,110,109,11,60,70,62,54,96,68,136,32,251,73,11,145,37,204,201,177,59,4,177,45,197,186,81,171,201,54,128,128,128,128,128,128,128,128,128,160,117,254,248,169,140,212,202,48,190,248,66,108,226,49,13,176,213,221,44,93,158,12,29,42,13,71,21,208,116,159,193,173,128,128,128,128,128],[226,27,160,221,201,203,168,157,78,183,36,187,128,74,31,157,245,231,146,14,85,81,158,154,225,119,239,34,214,95,87,78,245,32,116],[226,27,160,217,126,56,112,222,29,194,80,17,187,144,67,169,202,198,186,147,107,226,126,75,125,32,62,50,189,225,43,23,89,132,168]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],"key":[177,14,45,82,118,18,7,59,38,238,205,253,113,126,106,50,12,244,75,74,250,194,176,115,45,159,203,226,183,250,12,246],"list_rlp_bytes":[[226],[226]],"value_rlp_bytes":[[1],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,32,14,45,82,118,18,7,59,38,238,205,253,113,126,106,50,12,244,75,74,250,194,176,115,45,159,203,226,183,250,12,246,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,14,45,82,118,18,7,59,38,238,205,253,113,126,106,50,12,244,75,74,250,194,176,115,45,159,203,226,183,250,12,246,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[226,160,32,14,45,82,118,18,7,59,38,238,205,253,113,126,106,50,12,244,75,74,250,194,176,115,45,159,203,226,183,250,12,246,1],[226,160,32,14,45,82,118,18,7,59,38,238,205,253,113,126,106,50,12,244,75,74,250,194,176,115,45,159,203,226,183,250,12,246,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ExtensionInFirstStorageLevelTwoKeyBytes.json b/zkevm-circuits/src/mpt_circuit/tests/ExtensionInFirstStorageLevelTwoKeyBytes.json new file mode 100644 index 0000000000..67b9d2b223 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ExtensionInFirstStorageLevelTwoKeyBytes.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,83,133,184,17,40,148,35,33,230,20,164,132,2,207,174,215,248,233,236,46,28,80,79,126,219,226,228,179,153,198,77,186,0],[160,89,7,180,75,136,8,120,157,122,186,173,74,195,46,132,19,92,54,117,231,243,122,67,108,249,209,165,114,55,76,189,184,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,145,125,74,244,114,233,77,220,247,135,137,35,148,135,244,230,102,212,61,254,221,136,54,253,190,239,213,40,188,185,152,221,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,134,236,78,176,135,44,27,253,244,148,91,27,39,208,14,62,111,103,88,144,35,103,197,91,36,74,88,189,175,193,173,210,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,134,236,78,176,135,44,27,253,244,148,91,27,39,208,14,62,111,103,88,144,35,103,197,91,36,74,88,189,175,193,173,210,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,145,125,74,244,114,233,77,220,247,135,137,35,148,135,244,230,102,212,61,254,221,136,54,253,190,239,213,40,188,185,152,221,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,221,163,6,21,15,108,170,33,138,75,86,31,112,86,89,173,237,222,205,163,168,23,11,28,200,82,240,55,6,218,97,187,0],[160,8,82,228,160,236,167,211,34,103,186,143,82,159,227,56,83,90,137,189,168,42,104,95,52,183,148,255,215,136,52,73,231,0],[160,84,120,210,249,75,139,182,38,44,242,80,181,2,165,43,146,17,155,131,187,29,254,176,179,119,232,197,70,165,227,43,64,0],[160,194,12,142,1,144,174,252,71,147,52,115,101,189,153,208,184,182,11,61,226,102,6,152,102,88,19,198,73,12,11,50,155,0],[160,59,143,74,53,247,240,239,138,121,223,75,218,127,28,117,171,91,193,129,250,204,248,51,157,35,23,2,179,196,54,170,46,0],[160,157,90,51,248,241,223,224,87,67,255,188,60,98,138,52,58,248,0,103,191,25,93,87,196,48,17,193,91,196,174,84,68,0],[160,37,36,38,176,196,202,58,86,76,239,236,180,113,34,151,66,223,175,221,244,2,135,167,81,134,210,144,189,210,100,169,46,0],[160,246,249,160,14,73,156,38,98,129,209,255,124,122,147,16,52,200,78,213,139,162,204,164,40,13,165,111,148,15,31,205,20,0],[160,196,63,137,26,203,165,150,154,136,200,90,27,244,146,124,13,112,147,170,137,82,86,194,212,83,213,250,77,122,235,81,108,0],[160,23,72,191,114,109,241,153,152,28,181,114,222,27,12,163,170,167,243,68,76,13,193,8,43,209,0,251,139,245,110,12,200,0],[160,162,242,12,159,239,231,230,109,155,112,235,20,28,190,163,94,48,238,186,27,192,248,95,119,246,213,205,3,106,83,34,57,0],[160,98,128,143,73,77,78,229,115,157,26,53,223,153,171,114,69,45,174,24,124,45,42,137,236,225,137,107,235,241,54,22,248,0],[160,28,67,53,54,154,2,91,141,228,22,200,27,178,90,210,209,195,121,126,22,72,172,98,207,112,253,149,202,240,32,170,32,0],[160,77,183,169,108,222,80,160,149,46,20,80,223,164,78,82,196,134,47,182,103,106,44,118,54,158,56,222,196,13,46,87,30,0],[160,105,251,188,224,72,188,242,142,5,202,96,164,238,163,221,166,92,66,41,9,240,19,219,203,186,100,64,23,163,241,100,34,0],[160,200,57,109,211,251,194,152,130,38,5,78,203,231,83,219,74,5,175,92,33,107,169,100,213,179,9,169,52,231,46,199,95,0],[160,70,28,143,53,189,11,148,71,98,61,108,214,101,187,1,240,58,157,104,142,179,155,185,249,28,6,177,21,81,199,24,148,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,8,82,228,160,236,167,211,34,103,186,143,82,159,227,56,83,90,137,189,168,42,104,95,52,183,148,255,215,136,52,73,231,160,84,120,210,249,75,139,182,38,44,242,80,181,2,165,43,146,17,155,131,187,29,254,176,179,119,232,197,70,165,227,43,64,160,194,12,142,1,144,174,252,71,147,52,115,101,189,153,208,184,182,11,61,226,102,6,152,102,88,19,198,73,12,11,50,155,160,59,143,74,53,247,240,239,138,121,223,75,218,127,28,117,171,91,193,129,250,204,248,51,157,35,23,2,179,196,54,170,46,160,157,90,51,248,241,223,224,87,67,255,188,60,98,138,52,58,248,0,103,191,25,93,87,196,48,17,193,91,196,174,84,68,160,37,36,38,176,196,202,58,86,76,239,236,180,113,34,151,66,223,175,221,244,2,135,167,81,134,210,144,189,210,100,169,46,160,246,249,160,14,73,156,38,98,129,209,255,124,122,147,16,52,200,78,213,139,162,204,164,40,13,165,111,148,15,31,205,20,160,196,63,137,26,203,165,150,154,136,200,90,27,244,146,124,13,112,147,170,137,82,86,194,212,83,213,250,77,122,235,81,108,160,23,72,191,114,109,241,153,152,28,181,114,222,27,12,163,170,167,243,68,76,13,193,8,43,209,0,251,139,245,110,12,200,160,162,242,12,159,239,231,230,109,155,112,235,20,28,190,163,94,48,238,186,27,192,248,95,119,246,213,205,3,106,83,34,57,160,98,128,143,73,77,78,229,115,157,26,53,223,153,171,114,69,45,174,24,124,45,42,137,236,225,137,107,235,241,54,22,248,160,28,67,53,54,154,2,91,141,228,22,200,27,178,90,210,209,195,121,126,22,72,172,98,207,112,253,149,202,240,32,170,32,160,77,183,169,108,222,80,160,149,46,20,80,223,164,78,82,196,134,47,182,103,106,44,118,54,158,56,222,196,13,46,87,30,160,105,251,188,224,72,188,242,142,5,202,96,164,238,163,221,166,92,66,41,9,240,19,219,203,186,100,64,23,163,241,100,34,160,200,57,109,211,251,194,152,130,38,5,78,203,231,83,219,74,5,175,92,33,107,169,100,213,179,9,169,52,231,46,199,95,160,70,28,143,53,189,11,148,71,98,61,108,214,101,187,1,240,58,157,104,142,179,155,185,249,28,6,177,21,81,199,24,148,128],[249,2,17,160,8,82,228,160,236,167,211,34,103,186,143,82,159,227,56,83,90,137,189,168,42,104,95,52,183,148,255,215,136,52,73,231,160,84,120,210,249,75,139,182,38,44,242,80,181,2,165,43,146,17,155,131,187,29,254,176,179,119,232,197,70,165,227,43,64,160,194,12,142,1,144,174,252,71,147,52,115,101,189,153,208,184,182,11,61,226,102,6,152,102,88,19,198,73,12,11,50,155,160,59,143,74,53,247,240,239,138,121,223,75,218,127,28,117,171,91,193,129,250,204,248,51,157,35,23,2,179,196,54,170,46,160,157,90,51,248,241,223,224,87,67,255,188,60,98,138,52,58,248,0,103,191,25,93,87,196,48,17,193,91,196,174,84,68,160,37,36,38,176,196,202,58,86,76,239,236,180,113,34,151,66,223,175,221,244,2,135,167,81,134,210,144,189,210,100,169,46,160,246,249,160,14,73,156,38,98,129,209,255,124,122,147,16,52,200,78,213,139,162,204,164,40,13,165,111,148,15,31,205,20,160,196,63,137,26,203,165,150,154,136,200,90,27,244,146,124,13,112,147,170,137,82,86,194,212,83,213,250,77,122,235,81,108,160,23,72,191,114,109,241,153,152,28,181,114,222,27,12,163,170,167,243,68,76,13,193,8,43,209,0,251,139,245,110,12,200,160,162,242,12,159,239,231,230,109,155,112,235,20,28,190,163,94,48,238,186,27,192,248,95,119,246,213,205,3,106,83,34,57,160,98,128,143,73,77,78,229,115,157,26,53,223,153,171,114,69,45,174,24,124,45,42,137,236,225,137,107,235,241,54,22,248,160,28,67,53,54,154,2,91,141,228,22,200,27,178,90,210,209,195,121,126,22,72,172,98,207,112,253,149,202,240,32,170,32,160,77,183,169,108,222,80,160,149,46,20,80,223,164,78,82,196,134,47,182,103,106,44,118,54,158,56,222,196,13,46,87,30,160,105,251,188,224,72,188,242,142,5,202,96,164,238,163,221,166,92,66,41,9,240,19,219,203,186,100,64,23,163,241,100,34,160,221,163,6,21,15,108,170,33,138,75,86,31,112,86,89,173,237,222,205,163,168,23,11,28,200,82,240,55,6,218,97,187,160,70,28,143,53,189,11,148,71,98,61,108,214,101,187,1,240,58,157,104,142,179,155,185,249,28,6,177,21,81,199,24,148,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,1,12,123,52,160,159,55,231,98,183,186,183,79,202,34,17,42,27,114,166,12,169,62,20,223,4,56,234,172,169,157,169,0],[160,28,181,216,79,148,37,18,33,67,109,190,5,141,78,14,125,126,101,243,129,183,164,252,246,188,222,123,209,72,162,91,222,0],[160,127,197,158,74,119,72,230,12,125,176,108,3,178,158,78,4,13,240,18,19,137,90,52,126,5,105,198,181,219,43,179,65,0],[160,46,9,75,129,71,206,112,222,185,139,165,36,36,211,46,89,3,55,130,67,49,169,124,254,145,239,59,68,181,39,14,11,0],[160,195,204,36,121,188,76,85,107,153,228,243,120,219,164,214,149,84,154,93,6,211,138,212,126,99,0,69,93,78,143,107,125,0],[160,24,229,27,106,208,179,138,207,189,75,247,237,254,184,165,211,163,77,102,247,171,142,38,241,105,73,81,97,179,89,41,94,0],[160,69,128,196,179,31,166,62,236,4,126,133,123,72,78,7,98,91,97,202,41,213,219,83,161,250,44,62,218,202,202,95,85,0],[160,122,138,244,235,222,164,181,224,94,192,101,250,2,159,226,141,139,49,161,182,189,7,58,131,181,174,22,234,166,219,45,89,0],[160,90,223,153,77,90,68,178,77,115,86,3,87,250,70,172,169,25,6,207,47,77,106,144,156,63,235,216,148,76,231,70,128,0],[160,44,69,190,86,52,17,185,107,193,188,16,167,86,61,125,177,50,240,102,96,66,255,44,165,212,175,229,245,163,179,105,42,0],[160,236,64,240,32,156,40,69,140,109,160,30,103,177,225,161,137,199,148,118,155,53,110,110,30,88,113,102,249,146,51,146,64,0],[160,13,42,32,122,82,79,121,74,202,120,184,186,33,169,210,46,107,49,203,217,253,81,204,72,172,54,254,232,169,31,66,180,0],[160,249,124,106,89,244,190,54,102,66,217,238,184,69,54,42,49,217,172,209,72,171,109,172,162,227,248,91,39,84,60,12,50,0],[160,71,37,113,174,70,115,139,170,17,161,226,89,54,206,220,216,124,175,149,45,37,207,232,200,177,22,55,13,211,27,128,159,0],[160,230,15,33,183,4,214,67,103,40,12,190,159,2,136,107,119,218,240,254,147,196,64,54,80,160,212,123,210,158,221,177,79,0],[160,81,251,139,38,98,234,236,80,109,218,180,81,152,102,115,99,187,67,51,108,50,176,183,19,208,120,5,0,187,173,25,231,0],[160,91,147,3,93,139,16,136,76,22,19,70,240,73,156,182,34,44,29,125,2,237,83,117,238,18,211,207,207,135,137,154,42,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,28,181,216,79,148,37,18,33,67,109,190,5,141,78,14,125,126,101,243,129,183,164,252,246,188,222,123,209,72,162,91,222,160,127,197,158,74,119,72,230,12,125,176,108,3,178,158,78,4,13,240,18,19,137,90,52,126,5,105,198,181,219,43,179,65,160,46,9,75,129,71,206,112,222,185,139,165,36,36,211,46,89,3,55,130,67,49,169,124,254,145,239,59,68,181,39,14,11,160,195,204,36,121,188,76,85,107,153,228,243,120,219,164,214,149,84,154,93,6,211,138,212,126,99,0,69,93,78,143,107,125,160,24,229,27,106,208,179,138,207,189,75,247,237,254,184,165,211,163,77,102,247,171,142,38,241,105,73,81,97,179,89,41,94,160,69,128,196,179,31,166,62,236,4,126,133,123,72,78,7,98,91,97,202,41,213,219,83,161,250,44,62,218,202,202,95,85,160,122,138,244,235,222,164,181,224,94,192,101,250,2,159,226,141,139,49,161,182,189,7,58,131,181,174,22,234,166,219,45,89,160,90,223,153,77,90,68,178,77,115,86,3,87,250,70,172,169,25,6,207,47,77,106,144,156,63,235,216,148,76,231,70,128,160,44,69,190,86,52,17,185,107,193,188,16,167,86,61,125,177,50,240,102,96,66,255,44,165,212,175,229,245,163,179,105,42,160,236,64,240,32,156,40,69,140,109,160,30,103,177,225,161,137,199,148,118,155,53,110,110,30,88,113,102,249,146,51,146,64,160,13,42,32,122,82,79,121,74,202,120,184,186,33,169,210,46,107,49,203,217,253,81,204,72,172,54,254,232,169,31,66,180,160,249,124,106,89,244,190,54,102,66,217,238,184,69,54,42,49,217,172,209,72,171,109,172,162,227,248,91,39,84,60,12,50,160,71,37,113,174,70,115,139,170,17,161,226,89,54,206,220,216,124,175,149,45,37,207,232,200,177,22,55,13,211,27,128,159,160,230,15,33,183,4,214,67,103,40,12,190,159,2,136,107,119,218,240,254,147,196,64,54,80,160,212,123,210,158,221,177,79,160,81,251,139,38,98,234,236,80,109,218,180,81,152,102,115,99,187,67,51,108,50,176,183,19,208,120,5,0,187,173,25,231,160,91,147,3,93,139,16,136,76,22,19,70,240,73,156,182,34,44,29,125,2,237,83,117,238,18,211,207,207,135,137,154,42,128],[249,2,17,160,28,181,216,79,148,37,18,33,67,109,190,5,141,78,14,125,126,101,243,129,183,164,252,246,188,222,123,209,72,162,91,222,160,127,197,158,74,119,72,230,12,125,176,108,3,178,158,78,4,13,240,18,19,137,90,52,126,5,105,198,181,219,43,179,65,160,46,9,75,129,71,206,112,222,185,139,165,36,36,211,46,89,3,55,130,67,49,169,124,254,145,239,59,68,181,39,14,11,160,195,204,36,121,188,76,85,107,153,228,243,120,219,164,214,149,84,154,93,6,211,138,212,126,99,0,69,93,78,143,107,125,160,24,229,27,106,208,179,138,207,189,75,247,237,254,184,165,211,163,77,102,247,171,142,38,241,105,73,81,97,179,89,41,94,160,69,128,196,179,31,166,62,236,4,126,133,123,72,78,7,98,91,97,202,41,213,219,83,161,250,44,62,218,202,202,95,85,160,122,138,244,235,222,164,181,224,94,192,101,250,2,159,226,141,139,49,161,182,189,7,58,131,181,174,22,234,166,219,45,89,160,1,12,123,52,160,159,55,231,98,183,186,183,79,202,34,17,42,27,114,166,12,169,62,20,223,4,56,234,172,169,157,169,160,44,69,190,86,52,17,185,107,193,188,16,167,86,61,125,177,50,240,102,96,66,255,44,165,212,175,229,245,163,179,105,42,160,236,64,240,32,156,40,69,140,109,160,30,103,177,225,161,137,199,148,118,155,53,110,110,30,88,113,102,249,146,51,146,64,160,13,42,32,122,82,79,121,74,202,120,184,186,33,169,210,46,107,49,203,217,253,81,204,72,172,54,254,232,169,31,66,180,160,249,124,106,89,244,190,54,102,66,217,238,184,69,54,42,49,217,172,209,72,171,109,172,162,227,248,91,39,84,60,12,50,160,71,37,113,174,70,115,139,170,17,161,226,89,54,206,220,216,124,175,149,45,37,207,232,200,177,22,55,13,211,27,128,159,160,230,15,33,183,4,214,67,103,40,12,190,159,2,136,107,119,218,240,254,147,196,64,54,80,160,212,123,210,158,221,177,79,160,81,251,139,38,98,234,236,80,109,218,180,81,152,102,115,99,187,67,51,108,50,176,183,19,208,120,5,0,187,173,25,231,160,91,147,3,93,139,16,136,76,22,19,70,240,73,156,182,34,44,29,125,2,237,83,117,238,18,211,207,207,135,137,154,42,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,236,63,211,221,226,199,170,147,207,30,5,241,158,151,170,140,16,104,103,99,205,4,84,150,203,180,81,25,82,255,220,105,0],[160,69,240,19,94,201,88,43,0,240,10,245,154,168,230,212,225,91,127,174,54,14,224,25,37,243,187,212,166,69,13,214,210,0],[160,177,114,250,165,145,160,168,147,73,120,43,40,134,214,183,54,244,101,72,160,70,135,200,49,243,43,70,171,72,51,232,228,0],[160,90,126,11,244,198,223,145,243,175,101,108,33,157,37,38,154,185,230,186,210,117,24,108,72,19,80,181,127,12,80,114,155,0],[160,78,180,178,103,237,5,128,118,135,163,125,238,136,63,98,140,254,188,122,80,58,140,165,170,224,23,27,182,205,122,170,222,0],[160,147,155,221,36,17,65,128,167,31,175,127,179,216,23,237,245,34,236,18,107,89,51,94,106,56,12,20,74,110,149,105,207,0],[160,15,28,106,136,34,61,58,29,173,134,221,145,72,139,220,37,191,242,241,153,92,130,98,238,20,55,147,180,1,187,72,252,0],[160,101,28,170,8,68,246,158,179,253,114,81,91,184,162,73,227,249,57,19,194,215,111,218,79,13,14,253,173,39,152,43,12,0],[160,101,42,250,164,65,159,130,225,36,154,115,39,124,11,13,239,251,223,52,197,47,222,172,222,166,233,67,63,237,150,142,147,0],[160,104,37,14,24,168,110,72,152,214,237,103,191,137,205,219,55,164,88,150,133,174,120,4,237,245,50,43,151,58,169,184,68,0],[160,207,152,180,142,136,28,103,23,207,112,171,22,117,189,204,168,205,65,250,82,77,7,189,224,17,6,107,65,153,196,51,115,0],[160,236,88,60,30,32,14,250,185,46,86,72,75,128,6,144,52,126,176,244,75,144,130,37,202,71,232,43,210,154,98,86,223,0],[160,96,182,165,136,194,214,172,207,177,61,121,19,192,171,159,135,101,154,232,237,19,245,224,68,199,165,13,58,252,78,199,233,0],[160,12,4,159,3,157,220,175,164,62,180,206,33,25,128,18,219,176,112,152,50,85,173,6,36,29,160,252,251,57,179,108,55,0],[160,178,76,4,254,107,101,118,101,72,242,165,126,184,251,148,195,179,2,253,197,81,175,197,164,92,27,185,14,251,174,58,27,0],[160,22,172,44,183,17,252,57,28,189,212,135,200,167,233,149,136,217,169,139,57,170,76,181,203,160,31,77,109,109,107,10,90,0],[160,129,79,119,239,14,8,139,99,226,197,245,208,38,121,249,69,188,180,205,60,221,179,140,56,207,45,139,57,243,129,240,114,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,69,240,19,94,201,88,43,0,240,10,245,154,168,230,212,225,91,127,174,54,14,224,25,37,243,187,212,166,69,13,214,210,160,177,114,250,165,145,160,168,147,73,120,43,40,134,214,183,54,244,101,72,160,70,135,200,49,243,43,70,171,72,51,232,228,160,90,126,11,244,198,223,145,243,175,101,108,33,157,37,38,154,185,230,186,210,117,24,108,72,19,80,181,127,12,80,114,155,160,78,180,178,103,237,5,128,118,135,163,125,238,136,63,98,140,254,188,122,80,58,140,165,170,224,23,27,182,205,122,170,222,160,147,155,221,36,17,65,128,167,31,175,127,179,216,23,237,245,34,236,18,107,89,51,94,106,56,12,20,74,110,149,105,207,160,15,28,106,136,34,61,58,29,173,134,221,145,72,139,220,37,191,242,241,153,92,130,98,238,20,55,147,180,1,187,72,252,160,101,28,170,8,68,246,158,179,253,114,81,91,184,162,73,227,249,57,19,194,215,111,218,79,13,14,253,173,39,152,43,12,160,101,42,250,164,65,159,130,225,36,154,115,39,124,11,13,239,251,223,52,197,47,222,172,222,166,233,67,63,237,150,142,147,160,104,37,14,24,168,110,72,152,214,237,103,191,137,205,219,55,164,88,150,133,174,120,4,237,245,50,43,151,58,169,184,68,160,207,152,180,142,136,28,103,23,207,112,171,22,117,189,204,168,205,65,250,82,77,7,189,224,17,6,107,65,153,196,51,115,160,236,88,60,30,32,14,250,185,46,86,72,75,128,6,144,52,126,176,244,75,144,130,37,202,71,232,43,210,154,98,86,223,160,96,182,165,136,194,214,172,207,177,61,121,19,192,171,159,135,101,154,232,237,19,245,224,68,199,165,13,58,252,78,199,233,160,12,4,159,3,157,220,175,164,62,180,206,33,25,128,18,219,176,112,152,50,85,173,6,36,29,160,252,251,57,179,108,55,160,178,76,4,254,107,101,118,101,72,242,165,126,184,251,148,195,179,2,253,197,81,175,197,164,92,27,185,14,251,174,58,27,160,22,172,44,183,17,252,57,28,189,212,135,200,167,233,149,136,217,169,139,57,170,76,181,203,160,31,77,109,109,107,10,90,160,129,79,119,239,14,8,139,99,226,197,245,208,38,121,249,69,188,180,205,60,221,179,140,56,207,45,139,57,243,129,240,114,128],[249,2,17,160,69,240,19,94,201,88,43,0,240,10,245,154,168,230,212,225,91,127,174,54,14,224,25,37,243,187,212,166,69,13,214,210,160,177,114,250,165,145,160,168,147,73,120,43,40,134,214,183,54,244,101,72,160,70,135,200,49,243,43,70,171,72,51,232,228,160,90,126,11,244,198,223,145,243,175,101,108,33,157,37,38,154,185,230,186,210,117,24,108,72,19,80,181,127,12,80,114,155,160,78,180,178,103,237,5,128,118,135,163,125,238,136,63,98,140,254,188,122,80,58,140,165,170,224,23,27,182,205,122,170,222,160,147,155,221,36,17,65,128,167,31,175,127,179,216,23,237,245,34,236,18,107,89,51,94,106,56,12,20,74,110,149,105,207,160,15,28,106,136,34,61,58,29,173,134,221,145,72,139,220,37,191,242,241,153,92,130,98,238,20,55,147,180,1,187,72,252,160,101,28,170,8,68,246,158,179,253,114,81,91,184,162,73,227,249,57,19,194,215,111,218,79,13,14,253,173,39,152,43,12,160,101,42,250,164,65,159,130,225,36,154,115,39,124,11,13,239,251,223,52,197,47,222,172,222,166,233,67,63,237,150,142,147,160,236,63,211,221,226,199,170,147,207,30,5,241,158,151,170,140,16,104,103,99,205,4,84,150,203,180,81,25,82,255,220,105,160,207,152,180,142,136,28,103,23,207,112,171,22,117,189,204,168,205,65,250,82,77,7,189,224,17,6,107,65,153,196,51,115,160,236,88,60,30,32,14,250,185,46,86,72,75,128,6,144,52,126,176,244,75,144,130,37,202,71,232,43,210,154,98,86,223,160,96,182,165,136,194,214,172,207,177,61,121,19,192,171,159,135,101,154,232,237,19,245,224,68,199,165,13,58,252,78,199,233,160,12,4,159,3,157,220,175,164,62,180,206,33,25,128,18,219,176,112,152,50,85,173,6,36,29,160,252,251,57,179,108,55,160,178,76,4,254,107,101,118,101,72,242,165,126,184,251,148,195,179,2,253,197,81,175,197,164,92,27,185,14,251,174,58,27,160,22,172,44,183,17,252,57,28,189,212,135,200,167,233,149,136,217,169,139,57,170,76,181,203,160,31,77,109,109,107,10,90,160,129,79,119,239,14,8,139,99,226,197,245,208,38,121,249,69,188,180,205,60,221,179,140,56,207,45,139,57,243,129,240,114,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,54,165,246,154,218,58,185,16,225,248,199,35,10,192,160,52,223,206,226,45,44,15,30,135,89,91,217,251,163,125,153,130,0],[160,135,143,213,43,63,194,224,22,73,85,234,57,32,136,196,138,144,25,14,53,225,60,238,148,1,160,19,151,227,159,49,183,0],[160,2,29,173,25,96,174,9,182,182,173,122,125,236,76,251,176,5,245,88,46,126,30,246,22,125,175,153,67,210,235,64,8,0],[160,28,189,158,3,1,129,244,212,210,46,30,196,172,161,20,195,243,158,211,25,117,74,30,254,41,187,49,138,192,150,52,17,0],[160,239,95,253,44,136,34,194,144,153,28,242,248,222,215,110,46,230,231,27,170,229,101,3,204,99,204,208,118,114,93,83,110,0],[160,7,159,235,95,194,73,95,243,22,246,19,38,251,43,141,128,8,190,255,67,153,158,211,166,139,252,168,40,63,188,205,95,0],[160,238,34,57,54,115,74,242,131,214,151,182,44,143,250,245,22,211,176,245,204,227,75,151,108,89,28,167,182,144,17,21,92,0],[160,110,82,232,2,216,240,70,229,147,241,71,82,114,9,73,189,84,16,27,151,65,30,46,28,117,225,27,149,182,208,51,159,0],[160,155,189,91,3,70,25,27,41,10,49,193,196,22,63,42,36,133,91,199,238,35,240,242,161,252,0,183,96,230,193,68,235,0],[160,254,225,94,214,235,151,75,30,231,42,49,211,232,190,3,200,245,38,113,10,27,249,194,216,43,216,49,187,170,57,95,202,0],[160,46,121,163,72,94,105,150,192,89,117,100,231,44,8,94,84,224,173,10,128,89,76,114,29,254,213,243,87,146,33,249,173,0],[160,182,172,93,250,183,64,112,173,6,173,19,151,175,126,144,31,75,142,43,92,76,129,21,185,125,95,55,38,17,68,4,54,0],[160,101,105,235,77,175,160,222,72,81,15,175,2,24,88,227,4,106,202,82,46,144,46,234,120,227,124,28,91,186,48,175,127,0],[160,107,199,179,225,2,21,145,210,96,156,115,9,90,72,224,6,92,117,170,140,51,4,185,247,179,137,241,5,125,9,215,216,0],[160,174,1,41,24,170,64,96,231,200,121,39,32,55,169,45,50,38,91,148,155,128,81,65,213,115,175,165,99,88,151,50,116,0],[160,175,48,34,68,54,34,13,191,110,96,44,135,10,240,213,61,134,176,37,129,8,182,235,41,95,208,183,87,202,245,167,238,0],[160,153,251,46,103,133,108,220,6,159,146,110,14,54,12,65,230,17,107,15,225,244,12,165,14,185,174,159,7,244,122,210,71,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,135,143,213,43,63,194,224,22,73,85,234,57,32,136,196,138,144,25,14,53,225,60,238,148,1,160,19,151,227,159,49,183,160,2,29,173,25,96,174,9,182,182,173,122,125,236,76,251,176,5,245,88,46,126,30,246,22,125,175,153,67,210,235,64,8,160,28,189,158,3,1,129,244,212,210,46,30,196,172,161,20,195,243,158,211,25,117,74,30,254,41,187,49,138,192,150,52,17,160,239,95,253,44,136,34,194,144,153,28,242,248,222,215,110,46,230,231,27,170,229,101,3,204,99,204,208,118,114,93,83,110,160,7,159,235,95,194,73,95,243,22,246,19,38,251,43,141,128,8,190,255,67,153,158,211,166,139,252,168,40,63,188,205,95,160,238,34,57,54,115,74,242,131,214,151,182,44,143,250,245,22,211,176,245,204,227,75,151,108,89,28,167,182,144,17,21,92,160,110,82,232,2,216,240,70,229,147,241,71,82,114,9,73,189,84,16,27,151,65,30,46,28,117,225,27,149,182,208,51,159,160,155,189,91,3,70,25,27,41,10,49,193,196,22,63,42,36,133,91,199,238,35,240,242,161,252,0,183,96,230,193,68,235,160,254,225,94,214,235,151,75,30,231,42,49,211,232,190,3,200,245,38,113,10,27,249,194,216,43,216,49,187,170,57,95,202,160,46,121,163,72,94,105,150,192,89,117,100,231,44,8,94,84,224,173,10,128,89,76,114,29,254,213,243,87,146,33,249,173,160,182,172,93,250,183,64,112,173,6,173,19,151,175,126,144,31,75,142,43,92,76,129,21,185,125,95,55,38,17,68,4,54,160,101,105,235,77,175,160,222,72,81,15,175,2,24,88,227,4,106,202,82,46,144,46,234,120,227,124,28,91,186,48,175,127,160,107,199,179,225,2,21,145,210,96,156,115,9,90,72,224,6,92,117,170,140,51,4,185,247,179,137,241,5,125,9,215,216,160,174,1,41,24,170,64,96,231,200,121,39,32,55,169,45,50,38,91,148,155,128,81,65,213,115,175,165,99,88,151,50,116,160,175,48,34,68,54,34,13,191,110,96,44,135,10,240,213,61,134,176,37,129,8,182,235,41,95,208,183,87,202,245,167,238,160,153,251,46,103,133,108,220,6,159,146,110,14,54,12,65,230,17,107,15,225,244,12,165,14,185,174,159,7,244,122,210,71,128],[249,2,17,160,135,143,213,43,63,194,224,22,73,85,234,57,32,136,196,138,144,25,14,53,225,60,238,148,1,160,19,151,227,159,49,183,160,2,29,173,25,96,174,9,182,182,173,122,125,236,76,251,176,5,245,88,46,126,30,246,22,125,175,153,67,210,235,64,8,160,28,189,158,3,1,129,244,212,210,46,30,196,172,161,20,195,243,158,211,25,117,74,30,254,41,187,49,138,192,150,52,17,160,239,95,253,44,136,34,194,144,153,28,242,248,222,215,110,46,230,231,27,170,229,101,3,204,99,204,208,118,114,93,83,110,160,7,159,235,95,194,73,95,243,22,246,19,38,251,43,141,128,8,190,255,67,153,158,211,166,139,252,168,40,63,188,205,95,160,238,34,57,54,115,74,242,131,214,151,182,44,143,250,245,22,211,176,245,204,227,75,151,108,89,28,167,182,144,17,21,92,160,110,82,232,2,216,240,70,229,147,241,71,82,114,9,73,189,84,16,27,151,65,30,46,28,117,225,27,149,182,208,51,159,160,155,189,91,3,70,25,27,41,10,49,193,196,22,63,42,36,133,91,199,238,35,240,242,161,252,0,183,96,230,193,68,235,160,254,225,94,214,235,151,75,30,231,42,49,211,232,190,3,200,245,38,113,10,27,249,194,216,43,216,49,187,170,57,95,202,160,46,121,163,72,94,105,150,192,89,117,100,231,44,8,94,84,224,173,10,128,89,76,114,29,254,213,243,87,146,33,249,173,160,182,172,93,250,183,64,112,173,6,173,19,151,175,126,144,31,75,142,43,92,76,129,21,185,125,95,55,38,17,68,4,54,160,101,105,235,77,175,160,222,72,81,15,175,2,24,88,227,4,106,202,82,46,144,46,234,120,227,124,28,91,186,48,175,127,160,107,199,179,225,2,21,145,210,96,156,115,9,90,72,224,6,92,117,170,140,51,4,185,247,179,137,241,5,125,9,215,216,160,174,1,41,24,170,64,96,231,200,121,39,32,55,169,45,50,38,91,148,155,128,81,65,213,115,175,165,99,88,151,50,116,160,175,48,34,68,54,34,13,191,110,96,44,135,10,240,213,61,134,176,37,129,8,182,235,41,95,208,183,87,202,245,167,238,160,54,165,246,154,218,58,185,16,225,248,199,35,10,192,160,52,223,206,226,45,44,15,30,135,89,91,217,251,163,125,153,130,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":6,"drifted_index":6,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,114,73,211,201,14,114,33,179,85,207,51,103,155,44,206,152,219,27,73,139,199,212,85,24,36,99,123,46,238,162,152,3,0],[160,240,112,44,72,20,92,16,226,238,153,16,125,149,130,241,10,60,36,30,150,251,167,132,127,195,28,146,162,13,131,27,104,0],[160,138,1,235,206,4,16,156,100,75,197,42,86,62,127,48,60,191,73,198,101,215,247,43,217,243,100,129,241,204,220,255,148,0],[160,236,7,15,200,76,214,175,181,111,16,213,238,208,13,129,154,34,238,224,26,140,170,215,20,77,216,157,80,95,241,66,5,0],[160,111,209,247,4,184,241,13,91,12,184,243,229,45,164,245,146,134,164,11,3,131,241,44,248,165,88,52,99,193,196,218,253,0],[160,229,51,62,185,89,4,163,95,20,136,220,188,187,42,151,97,47,27,99,112,96,146,185,113,108,59,23,95,91,242,168,231,0],[160,225,30,140,67,250,53,232,133,42,214,15,162,35,11,145,22,0,220,112,181,254,56,69,155,136,93,110,187,205,140,249,25,0],[160,190,131,167,187,39,106,252,113,103,20,241,150,132,209,36,232,221,22,222,63,47,42,112,75,79,47,71,58,16,235,38,220,0],[160,70,32,6,139,201,80,250,209,245,47,57,130,174,10,207,204,234,130,173,235,16,22,234,52,196,221,80,211,111,246,11,181,0],[160,53,254,22,227,103,204,187,138,101,229,227,171,9,232,13,105,208,170,117,193,81,106,4,200,93,89,129,132,160,158,41,161,0],[160,186,224,186,141,73,213,194,212,99,82,80,83,63,102,245,177,171,65,255,49,96,123,226,247,84,252,59,154,66,254,96,67,0],[160,228,118,98,158,169,240,61,44,106,136,219,101,77,16,63,14,204,240,38,190,219,80,247,204,97,190,78,228,105,224,67,95,0],[160,191,245,233,165,127,57,224,124,150,65,148,214,187,48,38,122,66,30,227,50,65,101,40,51,58,89,7,228,45,27,112,166,0],[160,47,164,236,183,87,115,134,179,223,254,239,90,133,214,85,54,22,167,1,92,153,195,176,38,176,219,172,7,191,23,55,122,0],[160,215,6,239,231,6,41,80,135,222,236,3,134,0,18,22,209,211,166,221,135,184,73,179,164,230,223,10,101,145,99,150,96,0],[160,63,103,2,71,244,232,117,254,117,119,209,72,224,148,116,41,203,106,207,131,104,246,110,140,246,162,32,29,20,147,74,227,0],[160,235,217,213,36,97,57,33,70,140,131,115,203,161,172,152,58,3,51,31,34,188,42,244,174,85,218,174,183,39,13,100,120,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,240,112,44,72,20,92,16,226,238,153,16,125,149,130,241,10,60,36,30,150,251,167,132,127,195,28,146,162,13,131,27,104,160,138,1,235,206,4,16,156,100,75,197,42,86,62,127,48,60,191,73,198,101,215,247,43,217,243,100,129,241,204,220,255,148,160,236,7,15,200,76,214,175,181,111,16,213,238,208,13,129,154,34,238,224,26,140,170,215,20,77,216,157,80,95,241,66,5,160,111,209,247,4,184,241,13,91,12,184,243,229,45,164,245,146,134,164,11,3,131,241,44,248,165,88,52,99,193,196,218,253,160,229,51,62,185,89,4,163,95,20,136,220,188,187,42,151,97,47,27,99,112,96,146,185,113,108,59,23,95,91,242,168,231,160,225,30,140,67,250,53,232,133,42,214,15,162,35,11,145,22,0,220,112,181,254,56,69,155,136,93,110,187,205,140,249,25,160,190,131,167,187,39,106,252,113,103,20,241,150,132,209,36,232,221,22,222,63,47,42,112,75,79,47,71,58,16,235,38,220,160,70,32,6,139,201,80,250,209,245,47,57,130,174,10,207,204,234,130,173,235,16,22,234,52,196,221,80,211,111,246,11,181,160,53,254,22,227,103,204,187,138,101,229,227,171,9,232,13,105,208,170,117,193,81,106,4,200,93,89,129,132,160,158,41,161,160,186,224,186,141,73,213,194,212,99,82,80,83,63,102,245,177,171,65,255,49,96,123,226,247,84,252,59,154,66,254,96,67,160,228,118,98,158,169,240,61,44,106,136,219,101,77,16,63,14,204,240,38,190,219,80,247,204,97,190,78,228,105,224,67,95,160,191,245,233,165,127,57,224,124,150,65,148,214,187,48,38,122,66,30,227,50,65,101,40,51,58,89,7,228,45,27,112,166,160,47,164,236,183,87,115,134,179,223,254,239,90,133,214,85,54,22,167,1,92,153,195,176,38,176,219,172,7,191,23,55,122,160,215,6,239,231,6,41,80,135,222,236,3,134,0,18,22,209,211,166,221,135,184,73,179,164,230,223,10,101,145,99,150,96,160,63,103,2,71,244,232,117,254,117,119,209,72,224,148,116,41,203,106,207,131,104,246,110,140,246,162,32,29,20,147,74,227,160,235,217,213,36,97,57,33,70,140,131,115,203,161,172,152,58,3,51,31,34,188,42,244,174,85,218,174,183,39,13,100,120,128],[249,2,17,160,240,112,44,72,20,92,16,226,238,153,16,125,149,130,241,10,60,36,30,150,251,167,132,127,195,28,146,162,13,131,27,104,160,138,1,235,206,4,16,156,100,75,197,42,86,62,127,48,60,191,73,198,101,215,247,43,217,243,100,129,241,204,220,255,148,160,236,7,15,200,76,214,175,181,111,16,213,238,208,13,129,154,34,238,224,26,140,170,215,20,77,216,157,80,95,241,66,5,160,111,209,247,4,184,241,13,91,12,184,243,229,45,164,245,146,134,164,11,3,131,241,44,248,165,88,52,99,193,196,218,253,160,229,51,62,185,89,4,163,95,20,136,220,188,187,42,151,97,47,27,99,112,96,146,185,113,108,59,23,95,91,242,168,231,160,225,30,140,67,250,53,232,133,42,214,15,162,35,11,145,22,0,220,112,181,254,56,69,155,136,93,110,187,205,140,249,25,160,114,73,211,201,14,114,33,179,85,207,51,103,155,44,206,152,219,27,73,139,199,212,85,24,36,99,123,46,238,162,152,3,160,70,32,6,139,201,80,250,209,245,47,57,130,174,10,207,204,234,130,173,235,16,22,234,52,196,221,80,211,111,246,11,181,160,53,254,22,227,103,204,187,138,101,229,227,171,9,232,13,105,208,170,117,193,81,106,4,200,93,89,129,132,160,158,41,161,160,186,224,186,141,73,213,194,212,99,82,80,83,63,102,245,177,171,65,255,49,96,123,226,247,84,252,59,154,66,254,96,67,160,228,118,98,158,169,240,61,44,106,136,219,101,77,16,63,14,204,240,38,190,219,80,247,204,97,190,78,228,105,224,67,95,160,191,245,233,165,127,57,224,124,150,65,148,214,187,48,38,122,66,30,227,50,65,101,40,51,58,89,7,228,45,27,112,166,160,47,164,236,183,87,115,134,179,223,254,239,90,133,214,85,54,22,167,1,92,153,195,176,38,176,219,172,7,191,23,55,122,160,215,6,239,231,6,41,80,135,222,236,3,134,0,18,22,209,211,166,221,135,184,73,179,164,230,223,10,101,145,99,150,96,160,63,103,2,71,244,232,117,254,117,119,209,72,224,148,116,41,203,106,207,131,104,246,110,140,246,162,32,29,20,147,74,227,160,235,217,213,36,97,57,33,70,140,131,115,203,161,172,152,58,3,51,31,34,188,42,244,174,85,218,174,183,39,13,100,120,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[248,145],[248,145]]}},"account":null,"storage":null,"values":[[160,222,142,59,34,234,176,247,14,92,67,83,246,96,242,111,166,241,147,73,210,94,29,222,21,95,2,38,153,128,81,200,235,0],[160,73,208,126,64,185,124,226,254,200,156,38,73,116,28,98,39,159,197,2,205,192,137,219,133,250,225,251,164,26,205,18,81,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,4,223,126,85,68,106,50,147,247,249,222,159,87,179,121,227,15,254,85,49,250,43,16,96,127,220,135,236,178,131,92,58,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,221,31,56,80,9,132,226,179,231,115,196,209,160,67,41,225,208,212,22,217,74,184,188,9,47,92,238,175,102,247,26,98,0],[160,1,162,74,47,57,45,87,11,81,221,83,234,28,100,214,43,52,204,21,204,51,217,33,45,57,156,224,74,233,176,82,221,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,145,160,73,208,126,64,185,124,226,254,200,156,38,73,116,28,98,39,159,197,2,205,192,137,219,133,250,225,251,164,26,205,18,81,128,128,160,4,223,126,85,68,106,50,147,247,249,222,159,87,179,121,227,15,254,85,49,250,43,16,96,127,220,135,236,178,131,92,58,128,128,128,128,128,128,128,160,221,31,56,80,9,132,226,179,231,115,196,209,160,67,41,225,208,212,22,217,74,184,188,9,47,92,238,175,102,247,26,98,160,1,162,74,47,57,45,87,11,81,221,83,234,28,100,214,43,52,204,21,204,51,217,33,45,57,156,224,74,233,176,82,221,128,128,128,128],[248,145,160,73,208,126,64,185,124,226,254,200,156,38,73,116,28,98,39,159,197,2,205,192,137,219,133,250,225,251,164,26,205,18,81,128,128,160,4,223,126,85,68,106,50,147,247,249,222,159,87,179,121,227,15,254,85,49,250,43,16,96,127,220,135,236,178,131,92,58,128,128,128,128,128,128,128,160,222,142,59,34,234,176,247,14,92,67,83,246,96,242,111,166,241,147,73,210,94,29,222,21,95,2,38,153,128,81,200,235,160,1,162,74,47,57,45,87,11,81,221,83,234,28,100,214,43,52,204,21,204,51,217,33,45,57,156,224,74,233,176,82,221,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,103,122,148,70,177,87,110,2,255,59,31,77,244,108,167,162,139,5,177,228,144,99,212,197,109,58,222,23,84,38,34,187,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,222,170,68,108,117,176,212,174,211,39,185,133,117,19,156,115,206,166,217,135,198,124,199,163,157,194,82,167,202,167,62,219,0],[160,222,54,44,32,137,0,165,70,241,79,22,20,243,70,98,239,178,120,43,34,80,146,119,200,66,72,170,16,183,157,17,15,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,160,222,170,68,108,117,176,212,174,211,39,185,133,117,19,156,115,206,166,217,135,198,124,199,163,157,194,82,167,202,167,62,219,160,222,54,44,32,137,0,165,70,241,79,22,20,243,70,98,239,178,120,43,34,80,146,119,200,66,72,170,16,183,157,17,15,128,128,128,128,128,128,128,128],[248,81,128,128,128,128,128,128,128,160,222,170,68,108,117,176,212,174,211,39,185,133,117,19,156,115,206,166,217,135,198,124,199,163,157,194,82,167,202,167,62,219,160,103,122,148,70,177,87,110,2,255,59,31,77,244,108,167,162,139,5,177,228,144,99,212,197,109,58,222,23,84,38,34,187,128,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,104,144,3,62,215,117,61,85,192,37,206,95,217,184,64,1,33,195,44,43,108,85,151,60,62,182,155,186,96,110,253,86,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,160,9,113,129,125,176,108,165,204,52,73,31,120,48,145,70,180,84,104,164,114,187,197,135,250,222,46,181,93,217,99,207,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,57,149,45,247,227,245,92,180,112,180,56,163,123,25,239,156,88,6,66,15,233,5,70,174,42,191,192,207,221,141,6,44,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,160,160,9,113,129,125,176,108,165,204,52,73,31,120,48,145,70,180,84,104,164,114,187,197,135,250,222,46,181,93,217,99,207,128,128,128,160,57,149,45,247,227,245,92,180,112,180,56,163,123,25,239,156,88,6,66,15,233,5,70,174,42,191,192,207,221,141,6,44,128,128,128,128],[248,81,128,128,128,128,128,128,128,128,160,160,9,113,129,125,176,108,165,204,52,73,31,120,48,145,70,180,84,104,164,114,187,197,135,250,222,46,181,93,217,99,207,128,128,128,160,104,144,3,62,215,117,61,85,192,37,206,95,217,184,64,1,33,195,44,43,108,85,151,60,62,182,155,186,96,110,253,86,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[80,239,191,18,88,1,56,188,98,60,149,117,114,134,223,78,36,235,129,201],"key":[222,120,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184],"list_rlp_bytes":[[248,101],[248,101]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,101]},"storage":null,"values":[[156,54,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,0,0,0,0,0],[156,54,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,70,133,52,172,233,246,196,18,60,201,110,46,22,128,209,107,210,76,221,70,71,255,193,122,215,12,141,162,157,205,190,189,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,219,94,222,16,150,29,26,206,217,173,230,43,6,17,160,176,223,206,181,7,25,106,59,84,10,68,170,155,41,216,82,32,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[156,54,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,0,0,0,0,0]],"keccak_data":[[248,101,156,54,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,184,70,248,68,128,128,160,70,133,52,172,233,246,196,18,60,201,110,46,22,128,209,107,210,76,221,70,71,255,193,122,215,12,141,162,157,205,190,189,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,101,156,54,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,184,70,248,68,128,128,160,219,94,222,16,150,29,26,206,217,173,230,43,6,17,160,176,223,206,181,7,25,106,59,84,10,68,170,155,41,216,82,32,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[80,239,191,18,88,1,56,188,98,60,149,117,114,134,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[228]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,45,44,178,216,107,168,176,16,200,242,96,217,111,104,159,205,242,134,146,134,148,209,20,211,178,13,147,148,102,1,216,53,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,55,247,200,94,165,79,147,170,238,142,124,219,14,65,176,63,15,70,30,112,65,159,247,49,254,91,192,179,176,84,191,145,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,133,235,9,147,31,174,193,15,130,252,231,142,0,184,141,143,232,88,61,84,117,220,50,63,26,125,0,69,227,41,12,216,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[130,0,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,111,29,117,223,136,129,118,207,33,69,250,161,140,110,251,106,90,211,255,249,170,187,100,182,253,230,38,233,56,62,55,245,0],[0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,179,70,42,74,68,248,70,154,159,254,198,16,84,28,168,129,18,102,199,16,62,160,232,168,84,32,88,134,119,86,119,223,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,160,55,247,200,94,165,79,147,170,238,142,124,219,14,65,176,63,15,70,30,112,65,159,247,49,254,91,192,179,176,84,191,145,128,128,128,128,160,133,235,9,147,31,174,193,15,130,252,231,142,0,184,141,143,232,88,61,84,117,220,50,63,26,125,0,69,227,41,12,216,128,128,128],[248,81,128,128,128,128,128,128,128,128,160,55,247,200,94,165,79,147,170,238,142,124,219,14,65,176,63,15,70,30,112,65,159,247,49,254,91,192,179,176,84,191,145,128,128,128,128,160,45,44,178,216,107,168,176,16,200,242,96,217,111,104,159,205,242,134,146,134,148,209,20,211,178,13,147,148,102,1,216,53,128,128,128],[228,130,0,187,160,111,29,117,223,136,129,118,207,33,69,250,161,140,110,251,106,90,211,255,249,170,187,100,182,253,230,38,233,56,62,55,245],[228,130,0,187,160,179,70,42,74,68,248,70,154,159,254,198,16,84,28,168,129,18,102,199,16,62,160,232,168,84,32,88,134,119,86,119,223]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,23],"key":[187,217,202,166,137,33,122,83,73,216,229,46,7,115,79,144,111,158,157,172,49,186,14,102,85,114,140,190,31,237,244,152],"list_rlp_bytes":[[225],[225]],"value_rlp_bytes":[[1],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[159,57,202,166,137,33,122,83,73,216,229,46,7,115,79,144,111,158,157,172,49,186,14,102,85,114,140,190,31,237,244,152,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,57,202,166,137,33,122,83,73,216,229,46,7,115,79,144,111,158,157,172,49,186,14,102,85,114,140,190,31,237,244,152,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[225,159,57,202,166,137,33,122,83,73,216,229,46,7,115,79,144,111,158,157,172,49,186,14,102,85,114,140,190,31,237,244,152,1],[225,159,57,202,166,137,33,122,83,73,216,229,46,7,115,79,144,111,158,157,172,49,186,14,102,85,114,140,190,31,237,244,152,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,23]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ExtensionOneKeyByteSel1.json b/zkevm-circuits/src/mpt_circuit/tests/ExtensionOneKeyByteSel1.json new file mode 100644 index 0000000000..b44234dd17 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ExtensionOneKeyByteSel1.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,67,177,24,185,47,128,41,141,148,134,170,164,48,253,206,3,241,39,97,79,6,93,37,66,241,129,192,188,242,206,229,16,0],[160,233,201,173,245,251,141,58,186,173,195,254,113,66,92,201,245,176,4,2,100,72,121,53,6,170,151,69,79,33,222,223,113,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,68,197,113,53,16,83,128,53,28,195,11,109,162,89,16,83,240,148,4,167,44,20,101,209,164,198,161,63,168,46,201,239,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,133,45,111,23,48,144,41,236,69,116,88,140,121,144,119,129,149,67,114,131,115,234,203,41,49,88,28,186,119,193,106,36,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,133,45,111,23,48,144,41,236,69,116,88,140,121,144,119,129,149,67,114,131,115,234,203,41,49,88,28,186,119,193,106,36,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,68,197,113,53,16,83,128,53,28,195,11,109,162,89,16,83,240,148,4,167,44,20,101,209,164,198,161,63,168,46,201,239,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,210,235,8,162,101,233,71,109,33,158,163,251,76,93,141,146,181,67,62,12,32,126,125,130,165,253,113,86,112,4,159,101,0],[160,8,82,228,160,236,167,211,34,103,186,143,82,159,227,56,83,90,137,189,168,42,104,95,52,183,148,255,215,136,52,73,231,0],[160,131,91,127,212,39,182,115,49,62,60,195,31,177,192,168,194,164,42,106,134,88,252,255,223,238,54,219,248,206,165,42,52,0],[160,194,12,142,1,144,174,252,71,147,52,115,101,189,153,208,184,182,11,61,226,102,6,152,102,88,19,198,73,12,11,50,155,0],[160,59,143,74,53,247,240,239,138,121,223,75,218,127,28,117,171,91,193,129,250,204,248,51,157,35,23,2,179,196,54,170,46,0],[160,157,90,51,248,241,223,224,87,67,255,188,60,98,138,52,58,248,0,103,191,25,93,87,196,48,17,193,91,196,174,84,68,0],[160,37,36,38,176,196,202,58,86,76,239,236,180,113,34,151,66,223,175,221,244,2,135,167,81,134,210,144,189,210,100,169,46,0],[160,246,249,160,14,73,156,38,98,129,209,255,124,122,147,16,52,200,78,213,139,162,204,164,40,13,165,111,148,15,31,205,20,0],[160,196,63,137,26,203,165,150,154,136,200,90,27,244,146,124,13,112,147,170,137,82,86,194,212,83,213,250,77,122,235,81,108,0],[160,23,72,191,114,109,241,153,152,28,181,114,222,27,12,163,170,167,243,68,76,13,193,8,43,209,0,251,139,245,110,12,200,0],[160,162,242,12,159,239,231,230,109,155,112,235,20,28,190,163,94,48,238,186,27,192,248,95,119,246,213,205,3,106,83,34,57,0],[160,98,128,143,73,77,78,229,115,157,26,53,223,153,171,114,69,45,174,24,124,45,42,137,236,225,137,107,235,241,54,22,248,0],[160,28,67,53,54,154,2,91,141,228,22,200,27,178,90,210,209,195,121,126,22,72,172,98,207,112,253,149,202,240,32,170,32,0],[160,77,183,169,108,222,80,160,149,46,20,80,223,164,78,82,196,134,47,182,103,106,44,118,54,158,56,222,196,13,46,87,30,0],[160,105,251,188,224,72,188,242,142,5,202,96,164,238,163,221,166,92,66,41,9,240,19,219,203,186,100,64,23,163,241,100,34,0],[160,212,11,254,245,171,103,142,93,36,18,140,32,235,44,80,118,39,4,204,104,121,151,119,6,247,81,40,129,44,210,223,100,0],[160,70,28,143,53,189,11,148,71,98,61,108,214,101,187,1,240,58,157,104,142,179,155,185,249,28,6,177,21,81,199,24,148,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,8,82,228,160,236,167,211,34,103,186,143,82,159,227,56,83,90,137,189,168,42,104,95,52,183,148,255,215,136,52,73,231,160,131,91,127,212,39,182,115,49,62,60,195,31,177,192,168,194,164,42,106,134,88,252,255,223,238,54,219,248,206,165,42,52,160,194,12,142,1,144,174,252,71,147,52,115,101,189,153,208,184,182,11,61,226,102,6,152,102,88,19,198,73,12,11,50,155,160,59,143,74,53,247,240,239,138,121,223,75,218,127,28,117,171,91,193,129,250,204,248,51,157,35,23,2,179,196,54,170,46,160,157,90,51,248,241,223,224,87,67,255,188,60,98,138,52,58,248,0,103,191,25,93,87,196,48,17,193,91,196,174,84,68,160,37,36,38,176,196,202,58,86,76,239,236,180,113,34,151,66,223,175,221,244,2,135,167,81,134,210,144,189,210,100,169,46,160,246,249,160,14,73,156,38,98,129,209,255,124,122,147,16,52,200,78,213,139,162,204,164,40,13,165,111,148,15,31,205,20,160,196,63,137,26,203,165,150,154,136,200,90,27,244,146,124,13,112,147,170,137,82,86,194,212,83,213,250,77,122,235,81,108,160,23,72,191,114,109,241,153,152,28,181,114,222,27,12,163,170,167,243,68,76,13,193,8,43,209,0,251,139,245,110,12,200,160,162,242,12,159,239,231,230,109,155,112,235,20,28,190,163,94,48,238,186,27,192,248,95,119,246,213,205,3,106,83,34,57,160,98,128,143,73,77,78,229,115,157,26,53,223,153,171,114,69,45,174,24,124,45,42,137,236,225,137,107,235,241,54,22,248,160,28,67,53,54,154,2,91,141,228,22,200,27,178,90,210,209,195,121,126,22,72,172,98,207,112,253,149,202,240,32,170,32,160,77,183,169,108,222,80,160,149,46,20,80,223,164,78,82,196,134,47,182,103,106,44,118,54,158,56,222,196,13,46,87,30,160,105,251,188,224,72,188,242,142,5,202,96,164,238,163,221,166,92,66,41,9,240,19,219,203,186,100,64,23,163,241,100,34,160,212,11,254,245,171,103,142,93,36,18,140,32,235,44,80,118,39,4,204,104,121,151,119,6,247,81,40,129,44,210,223,100,160,70,28,143,53,189,11,148,71,98,61,108,214,101,187,1,240,58,157,104,142,179,155,185,249,28,6,177,21,81,199,24,148,128],[249,2,17,160,8,82,228,160,236,167,211,34,103,186,143,82,159,227,56,83,90,137,189,168,42,104,95,52,183,148,255,215,136,52,73,231,160,210,235,8,162,101,233,71,109,33,158,163,251,76,93,141,146,181,67,62,12,32,126,125,130,165,253,113,86,112,4,159,101,160,194,12,142,1,144,174,252,71,147,52,115,101,189,153,208,184,182,11,61,226,102,6,152,102,88,19,198,73,12,11,50,155,160,59,143,74,53,247,240,239,138,121,223,75,218,127,28,117,171,91,193,129,250,204,248,51,157,35,23,2,179,196,54,170,46,160,157,90,51,248,241,223,224,87,67,255,188,60,98,138,52,58,248,0,103,191,25,93,87,196,48,17,193,91,196,174,84,68,160,37,36,38,176,196,202,58,86,76,239,236,180,113,34,151,66,223,175,221,244,2,135,167,81,134,210,144,189,210,100,169,46,160,246,249,160,14,73,156,38,98,129,209,255,124,122,147,16,52,200,78,213,139,162,204,164,40,13,165,111,148,15,31,205,20,160,196,63,137,26,203,165,150,154,136,200,90,27,244,146,124,13,112,147,170,137,82,86,194,212,83,213,250,77,122,235,81,108,160,23,72,191,114,109,241,153,152,28,181,114,222,27,12,163,170,167,243,68,76,13,193,8,43,209,0,251,139,245,110,12,200,160,162,242,12,159,239,231,230,109,155,112,235,20,28,190,163,94,48,238,186,27,192,248,95,119,246,213,205,3,106,83,34,57,160,98,128,143,73,77,78,229,115,157,26,53,223,153,171,114,69,45,174,24,124,45,42,137,236,225,137,107,235,241,54,22,248,160,28,67,53,54,154,2,91,141,228,22,200,27,178,90,210,209,195,121,126,22,72,172,98,207,112,253,149,202,240,32,170,32,160,77,183,169,108,222,80,160,149,46,20,80,223,164,78,82,196,134,47,182,103,106,44,118,54,158,56,222,196,13,46,87,30,160,105,251,188,224,72,188,242,142,5,202,96,164,238,163,221,166,92,66,41,9,240,19,219,203,186,100,64,23,163,241,100,34,160,212,11,254,245,171,103,142,93,36,18,140,32,235,44,80,118,39,4,204,104,121,151,119,6,247,81,40,129,44,210,223,100,160,70,28,143,53,189,11,148,71,98,61,108,214,101,187,1,240,58,157,104,142,179,155,185,249,28,6,177,21,81,199,24,148,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,200,54,56,109,195,139,158,128,126,164,13,94,26,180,130,170,172,43,204,48,253,212,163,199,182,44,83,111,118,103,144,253,0],[160,16,10,199,196,82,70,114,207,241,137,252,115,72,235,241,12,200,184,38,70,167,12,215,12,241,91,65,28,139,175,130,201,0],[160,106,34,190,250,180,167,233,203,248,225,129,140,254,164,219,82,86,34,55,7,50,150,78,243,17,205,230,68,207,201,67,198,0],[160,23,33,31,199,21,178,232,124,248,20,157,167,56,141,168,113,28,89,227,97,22,107,23,55,202,65,66,106,60,113,96,176,0],[160,79,180,55,208,164,201,28,32,206,205,32,9,13,156,77,124,84,177,119,204,147,194,118,52,159,2,23,149,124,176,72,221,0],[160,2,84,11,251,123,198,133,201,87,132,179,219,84,116,137,7,190,165,200,5,24,42,221,26,67,55,22,25,111,102,221,245,0],[160,122,236,62,56,10,168,193,136,67,139,188,83,1,220,85,74,42,145,146,37,238,1,232,24,140,232,152,38,192,26,198,229,0],[160,242,211,107,131,169,189,78,220,241,34,165,3,57,83,116,161,238,28,119,72,128,235,18,192,204,227,73,30,143,42,254,41,0],[160,182,105,57,247,38,247,154,147,128,157,127,174,94,245,242,110,221,32,71,118,198,228,65,155,148,56,61,147,133,40,84,30,0],[160,204,106,126,7,172,44,143,150,161,28,110,112,160,48,254,171,61,179,114,93,240,165,152,22,10,246,152,24,44,30,151,69,0],[160,131,108,242,173,226,207,78,136,96,203,232,73,181,8,7,10,69,132,29,121,49,177,94,240,46,77,195,59,87,107,242,152,0],[160,66,157,127,194,67,4,232,98,188,21,27,40,171,201,115,88,204,111,103,165,228,135,56,214,30,3,169,83,42,208,153,90,0],[160,103,182,53,183,135,172,235,245,186,233,227,251,55,187,175,162,118,186,37,245,196,20,125,198,238,47,171,93,89,43,148,152,0],[160,86,66,178,63,185,104,242,223,205,118,73,136,8,212,168,171,196,23,136,209,147,15,20,247,183,70,79,56,230,201,165,166,0],[160,117,155,37,207,225,64,82,191,6,163,182,65,205,90,187,221,71,178,52,144,247,12,97,165,235,163,164,201,190,44,73,141,0],[160,234,151,242,155,147,37,67,255,150,25,66,248,115,241,56,206,192,13,80,46,6,157,235,198,60,91,197,73,252,160,192,183,0],[160,246,237,54,89,33,76,151,212,11,48,222,247,199,41,93,13,61,76,169,167,53,31,67,192,234,249,140,133,138,213,95,26,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,16,10,199,196,82,70,114,207,241,137,252,115,72,235,241,12,200,184,38,70,167,12,215,12,241,91,65,28,139,175,130,201,160,106,34,190,250,180,167,233,203,248,225,129,140,254,164,219,82,86,34,55,7,50,150,78,243,17,205,230,68,207,201,67,198,160,23,33,31,199,21,178,232,124,248,20,157,167,56,141,168,113,28,89,227,97,22,107,23,55,202,65,66,106,60,113,96,176,160,79,180,55,208,164,201,28,32,206,205,32,9,13,156,77,124,84,177,119,204,147,194,118,52,159,2,23,149,124,176,72,221,160,2,84,11,251,123,198,133,201,87,132,179,219,84,116,137,7,190,165,200,5,24,42,221,26,67,55,22,25,111,102,221,245,160,122,236,62,56,10,168,193,136,67,139,188,83,1,220,85,74,42,145,146,37,238,1,232,24,140,232,152,38,192,26,198,229,160,242,211,107,131,169,189,78,220,241,34,165,3,57,83,116,161,238,28,119,72,128,235,18,192,204,227,73,30,143,42,254,41,160,182,105,57,247,38,247,154,147,128,157,127,174,94,245,242,110,221,32,71,118,198,228,65,155,148,56,61,147,133,40,84,30,160,204,106,126,7,172,44,143,150,161,28,110,112,160,48,254,171,61,179,114,93,240,165,152,22,10,246,152,24,44,30,151,69,160,131,108,242,173,226,207,78,136,96,203,232,73,181,8,7,10,69,132,29,121,49,177,94,240,46,77,195,59,87,107,242,152,160,66,157,127,194,67,4,232,98,188,21,27,40,171,201,115,88,204,111,103,165,228,135,56,214,30,3,169,83,42,208,153,90,160,103,182,53,183,135,172,235,245,186,233,227,251,55,187,175,162,118,186,37,245,196,20,125,198,238,47,171,93,89,43,148,152,160,86,66,178,63,185,104,242,223,205,118,73,136,8,212,168,171,196,23,136,209,147,15,20,247,183,70,79,56,230,201,165,166,160,117,155,37,207,225,64,82,191,6,163,182,65,205,90,187,221,71,178,52,144,247,12,97,165,235,163,164,201,190,44,73,141,160,234,151,242,155,147,37,67,255,150,25,66,248,115,241,56,206,192,13,80,46,6,157,235,198,60,91,197,73,252,160,192,183,160,246,237,54,89,33,76,151,212,11,48,222,247,199,41,93,13,61,76,169,167,53,31,67,192,234,249,140,133,138,213,95,26,128],[249,2,17,160,16,10,199,196,82,70,114,207,241,137,252,115,72,235,241,12,200,184,38,70,167,12,215,12,241,91,65,28,139,175,130,201,160,106,34,190,250,180,167,233,203,248,225,129,140,254,164,219,82,86,34,55,7,50,150,78,243,17,205,230,68,207,201,67,198,160,23,33,31,199,21,178,232,124,248,20,157,167,56,141,168,113,28,89,227,97,22,107,23,55,202,65,66,106,60,113,96,176,160,200,54,56,109,195,139,158,128,126,164,13,94,26,180,130,170,172,43,204,48,253,212,163,199,182,44,83,111,118,103,144,253,160,2,84,11,251,123,198,133,201,87,132,179,219,84,116,137,7,190,165,200,5,24,42,221,26,67,55,22,25,111,102,221,245,160,122,236,62,56,10,168,193,136,67,139,188,83,1,220,85,74,42,145,146,37,238,1,232,24,140,232,152,38,192,26,198,229,160,242,211,107,131,169,189,78,220,241,34,165,3,57,83,116,161,238,28,119,72,128,235,18,192,204,227,73,30,143,42,254,41,160,182,105,57,247,38,247,154,147,128,157,127,174,94,245,242,110,221,32,71,118,198,228,65,155,148,56,61,147,133,40,84,30,160,204,106,126,7,172,44,143,150,161,28,110,112,160,48,254,171,61,179,114,93,240,165,152,22,10,246,152,24,44,30,151,69,160,131,108,242,173,226,207,78,136,96,203,232,73,181,8,7,10,69,132,29,121,49,177,94,240,46,77,195,59,87,107,242,152,160,66,157,127,194,67,4,232,98,188,21,27,40,171,201,115,88,204,111,103,165,228,135,56,214,30,3,169,83,42,208,153,90,160,103,182,53,183,135,172,235,245,186,233,227,251,55,187,175,162,118,186,37,245,196,20,125,198,238,47,171,93,89,43,148,152,160,86,66,178,63,185,104,242,223,205,118,73,136,8,212,168,171,196,23,136,209,147,15,20,247,183,70,79,56,230,201,165,166,160,117,155,37,207,225,64,82,191,6,163,182,65,205,90,187,221,71,178,52,144,247,12,97,165,235,163,164,201,190,44,73,141,160,234,151,242,155,147,37,67,255,150,25,66,248,115,241,56,206,192,13,80,46,6,157,235,198,60,91,197,73,252,160,192,183,160,246,237,54,89,33,76,151,212,11,48,222,247,199,41,93,13,61,76,169,167,53,31,67,192,234,249,140,133,138,213,95,26,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,99,104,20,157,39,82,68,74,62,189,45,207,64,104,243,0,124,83,84,102,15,31,140,74,125,179,216,135,42,78,27,162,0],[160,53,200,152,105,67,59,132,40,60,141,250,34,36,24,219,4,165,87,140,17,156,190,115,214,53,18,73,182,196,162,244,164,0],[160,162,135,75,150,46,140,137,192,51,94,159,35,55,70,229,238,188,223,9,189,42,102,18,58,201,173,180,99,192,7,235,41,0],[160,252,130,203,233,60,229,81,109,117,240,13,87,212,57,169,204,130,121,237,196,94,201,99,212,227,138,130,137,152,167,26,83,0],[160,37,133,29,230,27,182,51,17,195,237,207,229,5,42,138,46,42,84,27,152,3,240,15,12,14,90,120,239,149,177,195,212,0],[160,192,164,189,202,3,71,238,234,142,232,167,113,168,167,23,81,185,168,146,207,238,57,254,130,140,25,4,144,163,61,228,78,0],[160,28,208,218,100,212,48,98,49,17,45,69,237,119,3,114,122,57,152,83,143,78,72,236,48,14,83,84,201,217,246,238,118,0],[160,56,162,110,72,113,38,84,231,54,162,46,223,181,88,185,210,86,6,37,140,126,187,41,170,31,212,39,23,138,151,143,226,0],[160,21,65,231,179,182,208,63,30,227,98,41,136,75,111,20,168,85,6,38,245,153,46,24,22,157,94,84,173,92,143,236,18,0],[160,108,254,242,51,40,122,176,190,154,230,46,51,119,130,206,74,70,207,23,161,200,211,61,174,105,61,2,45,45,74,210,168,0],[160,180,124,136,219,213,85,224,196,84,251,213,154,29,129,84,133,117,97,93,75,169,111,175,252,253,181,236,29,31,235,212,136,0],[160,145,66,153,79,75,58,127,40,116,166,186,109,123,59,168,253,49,230,154,168,141,192,7,135,244,141,141,27,145,183,163,255,0],[160,244,206,34,126,138,154,199,69,158,195,50,253,216,223,136,217,252,88,41,252,142,59,172,195,190,184,76,69,34,57,154,225,0],[160,11,85,235,155,139,36,142,55,242,254,119,239,72,103,227,192,190,171,52,74,111,169,147,75,187,57,232,135,160,28,5,216,0],[160,221,255,17,232,105,231,25,97,193,106,39,48,221,205,190,98,88,140,92,154,178,52,10,226,240,136,99,160,254,102,99,20,0],[160,63,253,4,244,156,122,180,15,219,228,17,169,135,3,105,233,7,46,235,175,13,69,127,226,231,156,241,219,188,1,58,10,0],[160,39,79,238,23,126,99,249,27,158,53,68,164,13,36,66,206,153,74,47,45,73,32,193,36,181,245,221,153,0,110,176,84,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,53,200,152,105,67,59,132,40,60,141,250,34,36,24,219,4,165,87,140,17,156,190,115,214,53,18,73,182,196,162,244,164,160,162,135,75,150,46,140,137,192,51,94,159,35,55,70,229,238,188,223,9,189,42,102,18,58,201,173,180,99,192,7,235,41,160,252,130,203,233,60,229,81,109,117,240,13,87,212,57,169,204,130,121,237,196,94,201,99,212,227,138,130,137,152,167,26,83,160,37,133,29,230,27,182,51,17,195,237,207,229,5,42,138,46,42,84,27,152,3,240,15,12,14,90,120,239,149,177,195,212,160,192,164,189,202,3,71,238,234,142,232,167,113,168,167,23,81,185,168,146,207,238,57,254,130,140,25,4,144,163,61,228,78,160,28,208,218,100,212,48,98,49,17,45,69,237,119,3,114,122,57,152,83,143,78,72,236,48,14,83,84,201,217,246,238,118,160,56,162,110,72,113,38,84,231,54,162,46,223,181,88,185,210,86,6,37,140,126,187,41,170,31,212,39,23,138,151,143,226,160,21,65,231,179,182,208,63,30,227,98,41,136,75,111,20,168,85,6,38,245,153,46,24,22,157,94,84,173,92,143,236,18,160,108,254,242,51,40,122,176,190,154,230,46,51,119,130,206,74,70,207,23,161,200,211,61,174,105,61,2,45,45,74,210,168,160,180,124,136,219,213,85,224,196,84,251,213,154,29,129,84,133,117,97,93,75,169,111,175,252,253,181,236,29,31,235,212,136,160,145,66,153,79,75,58,127,40,116,166,186,109,123,59,168,253,49,230,154,168,141,192,7,135,244,141,141,27,145,183,163,255,160,244,206,34,126,138,154,199,69,158,195,50,253,216,223,136,217,252,88,41,252,142,59,172,195,190,184,76,69,34,57,154,225,160,11,85,235,155,139,36,142,55,242,254,119,239,72,103,227,192,190,171,52,74,111,169,147,75,187,57,232,135,160,28,5,216,160,221,255,17,232,105,231,25,97,193,106,39,48,221,205,190,98,88,140,92,154,178,52,10,226,240,136,99,160,254,102,99,20,160,63,253,4,244,156,122,180,15,219,228,17,169,135,3,105,233,7,46,235,175,13,69,127,226,231,156,241,219,188,1,58,10,160,39,79,238,23,126,99,249,27,158,53,68,164,13,36,66,206,153,74,47,45,73,32,193,36,181,245,221,153,0,110,176,84,128],[249,2,17,160,53,200,152,105,67,59,132,40,60,141,250,34,36,24,219,4,165,87,140,17,156,190,115,214,53,18,73,182,196,162,244,164,160,99,104,20,157,39,82,68,74,62,189,45,207,64,104,243,0,124,83,84,102,15,31,140,74,125,179,216,135,42,78,27,162,160,252,130,203,233,60,229,81,109,117,240,13,87,212,57,169,204,130,121,237,196,94,201,99,212,227,138,130,137,152,167,26,83,160,37,133,29,230,27,182,51,17,195,237,207,229,5,42,138,46,42,84,27,152,3,240,15,12,14,90,120,239,149,177,195,212,160,192,164,189,202,3,71,238,234,142,232,167,113,168,167,23,81,185,168,146,207,238,57,254,130,140,25,4,144,163,61,228,78,160,28,208,218,100,212,48,98,49,17,45,69,237,119,3,114,122,57,152,83,143,78,72,236,48,14,83,84,201,217,246,238,118,160,56,162,110,72,113,38,84,231,54,162,46,223,181,88,185,210,86,6,37,140,126,187,41,170,31,212,39,23,138,151,143,226,160,21,65,231,179,182,208,63,30,227,98,41,136,75,111,20,168,85,6,38,245,153,46,24,22,157,94,84,173,92,143,236,18,160,108,254,242,51,40,122,176,190,154,230,46,51,119,130,206,74,70,207,23,161,200,211,61,174,105,61,2,45,45,74,210,168,160,180,124,136,219,213,85,224,196,84,251,213,154,29,129,84,133,117,97,93,75,169,111,175,252,253,181,236,29,31,235,212,136,160,145,66,153,79,75,58,127,40,116,166,186,109,123,59,168,253,49,230,154,168,141,192,7,135,244,141,141,27,145,183,163,255,160,244,206,34,126,138,154,199,69,158,195,50,253,216,223,136,217,252,88,41,252,142,59,172,195,190,184,76,69,34,57,154,225,160,11,85,235,155,139,36,142,55,242,254,119,239,72,103,227,192,190,171,52,74,111,169,147,75,187,57,232,135,160,28,5,216,160,221,255,17,232,105,231,25,97,193,106,39,48,221,205,190,98,88,140,92,154,178,52,10,226,240,136,99,160,254,102,99,20,160,63,253,4,244,156,122,180,15,219,228,17,169,135,3,105,233,7,46,235,175,13,69,127,226,231,156,241,219,188,1,58,10,160,39,79,238,23,126,99,249,27,158,53,68,164,13,36,66,206,153,74,47,45,73,32,193,36,181,245,221,153,0,110,176,84,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,203,101,60,153,114,76,52,7,145,117,4,173,157,85,121,89,167,142,183,79,25,198,6,95,8,80,142,42,187,207,85,252,0],[160,99,81,57,145,22,32,16,237,159,176,240,132,218,186,105,131,186,101,223,64,134,114,229,246,73,116,223,254,169,20,93,13,0],[160,223,188,69,180,148,23,187,138,175,140,102,207,12,132,79,214,240,188,243,233,120,106,251,53,83,31,233,17,95,111,104,194,0],[160,43,80,165,214,162,253,48,191,9,185,217,207,232,243,171,148,21,113,82,72,154,186,65,12,88,77,227,219,6,155,32,51,0],[160,130,248,216,152,57,90,244,117,98,87,224,199,145,88,213,175,237,21,154,129,90,157,13,9,204,171,202,117,92,150,2,169,0],[160,131,200,164,254,147,247,248,75,195,238,110,199,248,141,242,213,227,220,24,30,61,117,173,78,81,140,238,241,15,175,164,90,0],[160,167,90,19,137,221,108,64,16,57,149,100,15,177,7,73,15,228,80,174,8,161,179,24,156,23,234,122,18,147,118,112,18,0],[160,150,176,37,98,14,239,113,45,194,247,75,223,71,126,22,116,181,34,174,226,104,75,207,148,44,253,51,116,141,48,92,157,0],[160,212,81,146,92,58,213,101,118,210,177,37,158,206,12,247,162,33,152,127,56,203,87,135,64,111,54,169,206,206,246,240,219,0],[160,134,131,144,150,208,162,121,150,125,105,254,241,225,227,20,77,66,207,111,185,140,111,37,171,155,150,109,251,126,254,215,183,0],[160,217,255,49,108,91,7,38,188,97,202,126,164,173,191,142,201,18,136,221,83,96,194,233,244,71,247,45,68,80,48,194,233,0],[160,241,114,88,178,103,177,76,16,188,135,224,61,205,170,47,181,238,50,30,49,32,59,101,88,83,31,34,63,237,11,122,229,0],[160,175,53,220,30,49,100,116,223,105,50,113,53,248,181,190,201,26,40,25,41,148,91,10,88,101,255,6,101,232,28,185,170,0],[160,241,128,204,224,68,205,5,46,175,253,220,145,201,14,104,224,225,194,155,85,20,233,63,173,171,238,87,250,27,87,231,38,0],[160,58,141,138,172,125,89,145,94,9,27,8,75,89,185,205,47,169,212,97,239,68,4,193,85,136,163,150,251,83,93,16,168,0],[160,91,82,249,62,4,4,125,6,55,113,254,159,124,184,212,130,95,203,20,139,0,67,11,153,149,79,60,16,112,253,24,210,0],[160,108,191,0,250,116,5,145,9,129,10,203,230,240,17,121,36,58,146,191,25,22,228,187,28,111,1,214,224,158,191,78,182,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,99,81,57,145,22,32,16,237,159,176,240,132,218,186,105,131,186,101,223,64,134,114,229,246,73,116,223,254,169,20,93,13,160,223,188,69,180,148,23,187,138,175,140,102,207,12,132,79,214,240,188,243,233,120,106,251,53,83,31,233,17,95,111,104,194,160,43,80,165,214,162,253,48,191,9,185,217,207,232,243,171,148,21,113,82,72,154,186,65,12,88,77,227,219,6,155,32,51,160,130,248,216,152,57,90,244,117,98,87,224,199,145,88,213,175,237,21,154,129,90,157,13,9,204,171,202,117,92,150,2,169,160,131,200,164,254,147,247,248,75,195,238,110,199,248,141,242,213,227,220,24,30,61,117,173,78,81,140,238,241,15,175,164,90,160,167,90,19,137,221,108,64,16,57,149,100,15,177,7,73,15,228,80,174,8,161,179,24,156,23,234,122,18,147,118,112,18,160,150,176,37,98,14,239,113,45,194,247,75,223,71,126,22,116,181,34,174,226,104,75,207,148,44,253,51,116,141,48,92,157,160,212,81,146,92,58,213,101,118,210,177,37,158,206,12,247,162,33,152,127,56,203,87,135,64,111,54,169,206,206,246,240,219,160,134,131,144,150,208,162,121,150,125,105,254,241,225,227,20,77,66,207,111,185,140,111,37,171,155,150,109,251,126,254,215,183,160,217,255,49,108,91,7,38,188,97,202,126,164,173,191,142,201,18,136,221,83,96,194,233,244,71,247,45,68,80,48,194,233,160,241,114,88,178,103,177,76,16,188,135,224,61,205,170,47,181,238,50,30,49,32,59,101,88,83,31,34,63,237,11,122,229,160,175,53,220,30,49,100,116,223,105,50,113,53,248,181,190,201,26,40,25,41,148,91,10,88,101,255,6,101,232,28,185,170,160,241,128,204,224,68,205,5,46,175,253,220,145,201,14,104,224,225,194,155,85,20,233,63,173,171,238,87,250,27,87,231,38,160,58,141,138,172,125,89,145,94,9,27,8,75,89,185,205,47,169,212,97,239,68,4,193,85,136,163,150,251,83,93,16,168,160,91,82,249,62,4,4,125,6,55,113,254,159,124,184,212,130,95,203,20,139,0,67,11,153,149,79,60,16,112,253,24,210,160,108,191,0,250,116,5,145,9,129,10,203,230,240,17,121,36,58,146,191,25,22,228,187,28,111,1,214,224,158,191,78,182,128],[249,2,17,160,99,81,57,145,22,32,16,237,159,176,240,132,218,186,105,131,186,101,223,64,134,114,229,246,73,116,223,254,169,20,93,13,160,223,188,69,180,148,23,187,138,175,140,102,207,12,132,79,214,240,188,243,233,120,106,251,53,83,31,233,17,95,111,104,194,160,43,80,165,214,162,253,48,191,9,185,217,207,232,243,171,148,21,113,82,72,154,186,65,12,88,77,227,219,6,155,32,51,160,130,248,216,152,57,90,244,117,98,87,224,199,145,88,213,175,237,21,154,129,90,157,13,9,204,171,202,117,92,150,2,169,160,131,200,164,254,147,247,248,75,195,238,110,199,248,141,242,213,227,220,24,30,61,117,173,78,81,140,238,241,15,175,164,90,160,167,90,19,137,221,108,64,16,57,149,100,15,177,7,73,15,228,80,174,8,161,179,24,156,23,234,122,18,147,118,112,18,160,150,176,37,98,14,239,113,45,194,247,75,223,71,126,22,116,181,34,174,226,104,75,207,148,44,253,51,116,141,48,92,157,160,203,101,60,153,114,76,52,7,145,117,4,173,157,85,121,89,167,142,183,79,25,198,6,95,8,80,142,42,187,207,85,252,160,134,131,144,150,208,162,121,150,125,105,254,241,225,227,20,77,66,207,111,185,140,111,37,171,155,150,109,251,126,254,215,183,160,217,255,49,108,91,7,38,188,97,202,126,164,173,191,142,201,18,136,221,83,96,194,233,244,71,247,45,68,80,48,194,233,160,241,114,88,178,103,177,76,16,188,135,224,61,205,170,47,181,238,50,30,49,32,59,101,88,83,31,34,63,237,11,122,229,160,175,53,220,30,49,100,116,223,105,50,113,53,248,181,190,201,26,40,25,41,148,91,10,88,101,255,6,101,232,28,185,170,160,241,128,204,224,68,205,5,46,175,253,220,145,201,14,104,224,225,194,155,85,20,233,63,173,171,238,87,250,27,87,231,38,160,58,141,138,172,125,89,145,94,9,27,8,75,89,185,205,47,169,212,97,239,68,4,193,85,136,163,150,251,83,93,16,168,160,91,82,249,62,4,4,125,6,55,113,254,159,124,184,212,130,95,203,20,139,0,67,11,153,149,79,60,16,112,253,24,210,160,108,191,0,250,116,5,145,9,129,10,203,230,240,17,121,36,58,146,191,25,22,228,187,28,111,1,214,224,158,191,78,182,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,173,77,0,88,52,77,218,183,93,138,234,1,13,193,240,131,11,213,238,61,220,43,212,218,225,139,87,22,125,119,182,45,0],[160,109,222,119,190,224,61,243,65,34,30,206,106,161,224,207,207,66,71,4,6,114,22,232,170,9,193,15,219,228,66,251,8,0],[160,198,235,191,55,99,224,254,190,103,167,104,188,167,111,165,98,164,214,56,147,166,171,128,59,62,5,221,135,195,67,225,198,0],[160,154,157,51,71,112,222,223,143,159,123,223,246,103,213,201,192,226,156,171,8,210,16,98,209,37,238,213,211,164,47,64,109,0],[160,90,233,245,123,230,165,63,187,199,211,181,9,242,188,120,48,161,155,130,157,116,36,1,49,205,102,150,184,25,155,49,77,0],[160,7,132,4,240,93,14,187,247,160,219,126,25,251,248,225,103,42,106,144,63,86,214,193,199,186,8,109,136,93,57,217,230,0],[160,207,152,116,48,9,8,91,103,17,15,206,27,176,2,85,57,161,181,66,20,14,49,90,48,206,22,237,210,25,161,74,136,0],[160,73,59,181,228,10,54,19,252,219,0,117,25,251,196,139,11,124,63,94,87,66,244,84,150,103,130,139,250,175,65,72,112,0],[160,241,198,154,252,95,13,146,68,236,132,187,148,172,4,41,86,219,173,196,24,184,72,37,84,163,82,60,14,159,87,79,75,0],[160,58,240,134,217,44,76,219,13,127,91,25,138,6,27,234,78,188,163,120,110,22,151,224,111,52,127,153,142,171,244,13,40,0],[160,153,39,52,108,5,150,212,210,156,59,248,20,53,26,39,211,186,49,96,41,155,240,204,176,112,16,92,193,56,115,32,211,0],[160,89,182,75,245,67,107,169,65,252,110,218,142,228,69,162,83,9,85,115,241,206,190,21,240,246,217,155,5,186,171,149,73,0],[160,9,154,116,13,26,181,155,42,180,250,126,216,144,142,181,98,96,135,29,247,33,35,235,95,118,45,153,161,219,95,149,68,0],[160,152,148,242,238,116,132,1,153,242,32,158,27,98,206,59,16,242,169,215,106,2,163,7,245,13,112,80,21,93,236,113,79,0],[160,169,248,192,42,42,39,228,145,72,15,14,103,23,235,33,231,44,252,157,136,103,106,119,208,7,82,236,66,119,47,105,48,0],[160,232,5,170,188,150,99,27,65,67,174,183,196,178,237,99,129,5,211,25,202,85,53,45,89,127,198,18,36,88,192,185,85,0],[160,51,119,173,104,178,48,110,29,10,245,165,140,76,66,163,16,75,40,116,214,156,126,235,39,20,141,52,141,150,154,168,67,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,109,222,119,190,224,61,243,65,34,30,206,106,161,224,207,207,66,71,4,6,114,22,232,170,9,193,15,219,228,66,251,8,160,198,235,191,55,99,224,254,190,103,167,104,188,167,111,165,98,164,214,56,147,166,171,128,59,62,5,221,135,195,67,225,198,160,154,157,51,71,112,222,223,143,159,123,223,246,103,213,201,192,226,156,171,8,210,16,98,209,37,238,213,211,164,47,64,109,160,90,233,245,123,230,165,63,187,199,211,181,9,242,188,120,48,161,155,130,157,116,36,1,49,205,102,150,184,25,155,49,77,160,7,132,4,240,93,14,187,247,160,219,126,25,251,248,225,103,42,106,144,63,86,214,193,199,186,8,109,136,93,57,217,230,160,207,152,116,48,9,8,91,103,17,15,206,27,176,2,85,57,161,181,66,20,14,49,90,48,206,22,237,210,25,161,74,136,160,73,59,181,228,10,54,19,252,219,0,117,25,251,196,139,11,124,63,94,87,66,244,84,150,103,130,139,250,175,65,72,112,160,241,198,154,252,95,13,146,68,236,132,187,148,172,4,41,86,219,173,196,24,184,72,37,84,163,82,60,14,159,87,79,75,160,58,240,134,217,44,76,219,13,127,91,25,138,6,27,234,78,188,163,120,110,22,151,224,111,52,127,153,142,171,244,13,40,160,153,39,52,108,5,150,212,210,156,59,248,20,53,26,39,211,186,49,96,41,155,240,204,176,112,16,92,193,56,115,32,211,160,89,182,75,245,67,107,169,65,252,110,218,142,228,69,162,83,9,85,115,241,206,190,21,240,246,217,155,5,186,171,149,73,160,9,154,116,13,26,181,155,42,180,250,126,216,144,142,181,98,96,135,29,247,33,35,235,95,118,45,153,161,219,95,149,68,160,152,148,242,238,116,132,1,153,242,32,158,27,98,206,59,16,242,169,215,106,2,163,7,245,13,112,80,21,93,236,113,79,160,169,248,192,42,42,39,228,145,72,15,14,103,23,235,33,231,44,252,157,136,103,106,119,208,7,82,236,66,119,47,105,48,160,232,5,170,188,150,99,27,65,67,174,183,196,178,237,99,129,5,211,25,202,85,53,45,89,127,198,18,36,88,192,185,85,160,51,119,173,104,178,48,110,29,10,245,165,140,76,66,163,16,75,40,116,214,156,126,235,39,20,141,52,141,150,154,168,67,128],[249,2,17,160,109,222,119,190,224,61,243,65,34,30,206,106,161,224,207,207,66,71,4,6,114,22,232,170,9,193,15,219,228,66,251,8,160,198,235,191,55,99,224,254,190,103,167,104,188,167,111,165,98,164,214,56,147,166,171,128,59,62,5,221,135,195,67,225,198,160,154,157,51,71,112,222,223,143,159,123,223,246,103,213,201,192,226,156,171,8,210,16,98,209,37,238,213,211,164,47,64,109,160,90,233,245,123,230,165,63,187,199,211,181,9,242,188,120,48,161,155,130,157,116,36,1,49,205,102,150,184,25,155,49,77,160,7,132,4,240,93,14,187,247,160,219,126,25,251,248,225,103,42,106,144,63,86,214,193,199,186,8,109,136,93,57,217,230,160,207,152,116,48,9,8,91,103,17,15,206,27,176,2,85,57,161,181,66,20,14,49,90,48,206,22,237,210,25,161,74,136,160,73,59,181,228,10,54,19,252,219,0,117,25,251,196,139,11,124,63,94,87,66,244,84,150,103,130,139,250,175,65,72,112,160,241,198,154,252,95,13,146,68,236,132,187,148,172,4,41,86,219,173,196,24,184,72,37,84,163,82,60,14,159,87,79,75,160,58,240,134,217,44,76,219,13,127,91,25,138,6,27,234,78,188,163,120,110,22,151,224,111,52,127,153,142,171,244,13,40,160,153,39,52,108,5,150,212,210,156,59,248,20,53,26,39,211,186,49,96,41,155,240,204,176,112,16,92,193,56,115,32,211,160,89,182,75,245,67,107,169,65,252,110,218,142,228,69,162,83,9,85,115,241,206,190,21,240,246,217,155,5,186,171,149,73,160,9,154,116,13,26,181,155,42,180,250,126,216,144,142,181,98,96,135,29,247,33,35,235,95,118,45,153,161,219,95,149,68,160,152,148,242,238,116,132,1,153,242,32,158,27,98,206,59,16,242,169,215,106,2,163,7,245,13,112,80,21,93,236,113,79,160,173,77,0,88,52,77,218,183,93,138,234,1,13,193,240,131,11,213,238,61,220,43,212,218,225,139,87,22,125,119,182,45,160,232,5,170,188,150,99,27,65,67,174,183,196,178,237,99,129,5,211,25,202,85,53,45,89,127,198,18,36,88,192,185,85,160,51,119,173,104,178,48,110,29,10,245,165,140,76,66,163,16,75,40,116,214,156,126,235,39,20,141,52,141,150,154,168,67,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[248,209],[248,209]]}},"account":null,"storage":null,"values":[[160,106,221,193,188,93,127,150,55,228,48,220,247,181,198,146,236,84,178,69,225,67,186,103,206,206,251,89,165,109,6,219,79,0],[160,249,106,58,189,76,35,27,92,144,238,228,49,229,35,245,122,52,236,45,191,198,211,47,226,193,68,21,87,136,171,68,113,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,210,4,215,96,67,88,156,141,228,215,51,148,114,240,225,138,222,198,174,112,247,79,118,197,80,143,142,116,115,157,224,55,0],[160,143,91,232,196,160,185,23,154,151,27,154,175,166,106,147,106,46,161,219,19,187,254,18,27,128,132,156,124,244,137,81,91,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,151,77,179,161,157,67,153,236,254,150,78,65,248,154,213,7,129,159,109,87,98,58,86,40,16,222,202,252,213,113,229,146,0],[160,110,226,218,188,169,146,193,99,73,154,48,126,4,221,69,243,169,81,13,206,205,212,83,67,41,228,104,221,219,55,246,164,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,153,39,180,158,24,35,3,114,153,226,127,153,192,119,29,73,173,131,131,176,223,32,234,177,41,202,201,225,30,83,239,1,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,209,160,249,106,58,189,76,35,27,92,144,238,228,49,229,35,245,122,52,236,45,191,198,211,47,226,193,68,21,87,136,171,68,113,128,128,128,160,210,4,215,96,67,88,156,141,228,215,51,148,114,240,225,138,222,198,174,112,247,79,118,197,80,143,142,116,115,157,224,55,160,143,91,232,196,160,185,23,154,151,27,154,175,166,106,147,106,46,161,219,19,187,254,18,27,128,132,156,124,244,137,81,91,128,128,160,151,77,179,161,157,67,153,236,254,150,78,65,248,154,213,7,129,159,109,87,98,58,86,40,16,222,202,252,213,113,229,146,160,110,226,218,188,169,146,193,99,73,154,48,126,4,221,69,243,169,81,13,206,205,212,83,67,41,228,104,221,219,55,246,164,128,128,160,153,39,180,158,24,35,3,114,153,226,127,153,192,119,29,73,173,131,131,176,223,32,234,177,41,202,201,225,30,83,239,1,128,128,128,128],[248,209,160,249,106,58,189,76,35,27,92,144,238,228,49,229,35,245,122,52,236,45,191,198,211,47,226,193,68,21,87,136,171,68,113,128,128,128,160,210,4,215,96,67,88,156,141,228,215,51,148,114,240,225,138,222,198,174,112,247,79,118,197,80,143,142,116,115,157,224,55,160,106,221,193,188,93,127,150,55,228,48,220,247,181,198,146,236,84,178,69,225,67,186,103,206,206,251,89,165,109,6,219,79,128,128,160,151,77,179,161,157,67,153,236,254,150,78,65,248,154,213,7,129,159,109,87,98,58,86,40,16,222,202,252,213,113,229,146,160,110,226,218,188,169,146,193,99,73,154,48,126,4,221,69,243,169,81,13,206,205,212,83,67,41,228,104,221,219,55,246,164,128,128,160,153,39,180,158,24,35,3,114,153,226,127,153,192,119,29,73,173,131,131,176,223,32,234,177,41,202,201,225,30,83,239,1,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,251,239,33,80,129,131,194,182,60,87,149,120,38,223,78,36,235,129,201],"key":[209,49,125,95,178,176,146,242,11,155,148,162,43,11,65,251,19,109,154,99,60,23,37,17,112,125,232,238,100,190,182,181],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,63,178,176,146,242,11,155,148,162,43,11,65,251,19,109,154,99,60,23,37,17,112,125,232,238,100,190,182,181,0,0,0,0],[157,63,178,176,146,242,11,155,148,162,43,11,65,251,19,109,154,99,60,23,37,17,112,125,232,238,100,190,182,181,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,236,190,103,242,243,153,13,197,228,255,239,243,229,16,134,47,205,11,164,131,132,165,141,107,241,23,225,152,230,12,18,138,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,164,243,246,110,59,75,187,132,138,45,198,39,69,10,77,28,226,194,180,158,203,154,37,59,160,169,54,113,155,37,47,65,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,63,178,176,146,242,11,155,148,162,43,11,65,251,19,109,154,99,60,23,37,17,112,125,232,238,100,190,182,181,0,0,0,0]],"keccak_data":[[248,102,157,63,178,176,146,242,11,155,148,162,43,11,65,251,19,109,154,99,60,23,37,17,112,125,232,238,100,190,182,181,184,70,248,68,128,128,160,236,190,103,242,243,153,13,197,228,255,239,243,229,16,134,47,205,11,164,131,132,165,141,107,241,23,225,152,230,12,18,138,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,63,178,176,146,242,11,155,148,162,43,11,65,251,19,109,154,99,60,23,37,17,112,125,232,238,100,190,182,181,184,70,248,68,128,128,160,164,243,246,110,59,75,187,132,138,45,198,39,69,10,77,28,226,194,180,158,203,154,37,59,160,169,54,113,155,37,47,65,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,251,239,33,80,129,131,194,182,60,87,149,120,38,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,1,177],[249,1,177]]}},"account":null,"storage":null,"values":[[160,30,94,178,197,109,105,152,92,42,148,67,98,233,126,91,17,202,80,78,166,13,86,103,196,108,61,40,62,12,108,243,194,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,103,86,38,45,18,209,202,240,178,167,20,214,192,218,98,9,175,165,51,173,58,104,39,96,212,140,47,107,29,100,8,77,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,83,46,124,39,53,182,96,42,203,117,106,63,122,138,13,52,237,146,164,136,224,212,68,107,41,11,119,117,15,215,154,0],[160,23,102,52,200,98,114,38,122,83,233,98,204,252,71,26,231,118,138,45,84,252,163,193,168,190,0,84,147,204,1,122,51,0],[160,7,177,110,245,167,89,126,150,180,194,238,186,23,49,39,251,177,80,25,57,108,211,51,78,232,203,183,217,157,171,199,87,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,30,226,64,64,16,102,209,46,134,98,120,190,3,129,231,254,139,39,0,216,144,238,73,202,82,122,246,9,172,127,49,90,0],[160,68,215,44,186,123,54,237,130,82,183,133,8,40,13,69,37,77,83,215,31,113,184,132,16,11,15,183,36,181,221,159,2,0],[160,62,181,184,192,67,70,231,207,152,153,67,194,159,201,227,248,212,1,122,168,208,226,13,237,230,139,167,136,130,142,13,81,0],[160,148,85,143,77,133,75,185,121,254,42,231,1,254,211,192,42,11,93,73,59,161,116,151,99,197,159,163,155,218,77,241,221,0],[160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,0],[160,96,242,147,143,176,102,155,77,27,72,218,168,186,127,97,177,49,222,211,177,38,17,128,125,69,10,167,170,203,79,212,42,0],[160,14,157,93,24,139,9,6,107,64,34,108,132,96,238,76,184,55,4,8,131,218,232,3,113,188,147,127,198,179,185,12,107,0],[160,10,26,22,160,6,153,127,42,213,128,136,180,110,56,205,186,208,25,224,221,226,133,62,154,83,249,139,28,74,74,22,16,0],[160,158,187,142,14,223,29,147,80,109,131,97,213,8,154,74,77,91,245,254,185,234,90,138,240,17,14,1,238,151,171,165,235,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,177,128,160,103,86,38,45,18,209,202,240,178,167,20,214,192,218,98,9,175,165,51,173,58,104,39,96,212,140,47,107,29,100,8,77,128,160,0,83,46,124,39,53,182,96,42,203,117,106,63,122,138,13,52,237,146,164,136,224,212,68,107,41,11,119,117,15,215,154,160,23,102,52,200,98,114,38,122,83,233,98,204,252,71,26,231,118,138,45,84,252,163,193,168,190,0,84,147,204,1,122,51,160,7,177,110,245,167,89,126,150,180,194,238,186,23,49,39,251,177,80,25,57,108,211,51,78,232,203,183,217,157,171,199,87,128,160,30,226,64,64,16,102,209,46,134,98,120,190,3,129,231,254,139,39,0,216,144,238,73,202,82,122,246,9,172,127,49,90,160,68,215,44,186,123,54,237,130,82,183,133,8,40,13,69,37,77,83,215,31,113,184,132,16,11,15,183,36,181,221,159,2,160,62,181,184,192,67,70,231,207,152,153,67,194,159,201,227,248,212,1,122,168,208,226,13,237,230,139,167,136,130,142,13,81,160,148,85,143,77,133,75,185,121,254,42,231,1,254,211,192,42,11,93,73,59,161,116,151,99,197,159,163,155,218,77,241,221,160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,160,96,242,147,143,176,102,155,77,27,72,218,168,186,127,97,177,49,222,211,177,38,17,128,125,69,10,167,170,203,79,212,42,160,14,157,93,24,139,9,6,107,64,34,108,132,96,238,76,184,55,4,8,131,218,232,3,113,188,147,127,198,179,185,12,107,160,10,26,22,160,6,153,127,42,213,128,136,180,110,56,205,186,208,25,224,221,226,133,62,154,83,249,139,28,74,74,22,16,160,158,187,142,14,223,29,147,80,109,131,97,213,8,154,74,77,91,245,254,185,234,90,138,240,17,14,1,238,151,171,165,235,128],[249,1,177,128,160,103,86,38,45,18,209,202,240,178,167,20,214,192,218,98,9,175,165,51,173,58,104,39,96,212,140,47,107,29,100,8,77,128,160,0,83,46,124,39,53,182,96,42,203,117,106,63,122,138,13,52,237,146,164,136,224,212,68,107,41,11,119,117,15,215,154,160,23,102,52,200,98,114,38,122,83,233,98,204,252,71,26,231,118,138,45,84,252,163,193,168,190,0,84,147,204,1,122,51,160,7,177,110,245,167,89,126,150,180,194,238,186,23,49,39,251,177,80,25,57,108,211,51,78,232,203,183,217,157,171,199,87,128,160,30,226,64,64,16,102,209,46,134,98,120,190,3,129,231,254,139,39,0,216,144,238,73,202,82,122,246,9,172,127,49,90,160,68,215,44,186,123,54,237,130,82,183,133,8,40,13,69,37,77,83,215,31,113,184,132,16,11,15,183,36,181,221,159,2,160,62,181,184,192,67,70,231,207,152,153,67,194,159,201,227,248,212,1,122,168,208,226,13,237,230,139,167,136,130,142,13,81,160,148,85,143,77,133,75,185,121,254,42,231,1,254,211,192,42,11,93,73,59,161,116,151,99,197,159,163,155,218,77,241,221,160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,160,96,242,147,143,176,102,155,77,27,72,218,168,186,127,97,177,49,222,211,177,38,17,128,125,69,10,167,170,203,79,212,42,160,14,157,93,24,139,9,6,107,64,34,108,132,96,238,76,184,55,4,8,131,218,232,3,113,188,147,127,198,179,185,12,107,160,10,26,22,160,6,153,127,42,213,128,136,180,110,56,205,186,208,25,224,221,226,133,62,154,83,249,139,28,74,74,22,16,160,30,94,178,197,109,105,152,92,42,148,67,98,233,126,91,17,202,80,78,166,13,86,103,196,108,61,40,62,12,108,243,194,128]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[226]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,255,153,127,253,189,106,79,64,234,173,180,2,221,50,191,217,252,158,56,31,44,151,85,153,234,148,225,185,234,146,49,81,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,212,173,36,244,71,83,248,199,226,80,120,201,229,122,7,181,246,202,35,39,44,183,120,4,253,181,251,195,139,230,9,206,0],[160,111,36,57,170,6,218,93,172,193,213,246,95,229,193,119,136,235,105,26,147,224,78,125,80,136,120,34,207,101,212,150,140,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,172,105,123,92,68,72,245,18,94,83,115,181,24,162,144,213,165,208,153,115,15,186,54,218,34,201,201,189,65,43,16,64,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,197,167,189,182,202,143,72,218,156,79,159,112,208,113,176,251,7,38,203,160,154,245,157,40,46,78,181,165,145,188,139,12,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,128,128,128,128,128,160,212,173,36,244,71,83,248,199,226,80,120,201,229,122,7,181,246,202,35,39,44,183,120,4,253,181,251,195,139,230,9,206,160,111,36,57,170,6,218,93,172,193,213,246,95,229,193,119,136,235,105,26,147,224,78,125,80,136,120,34,207,101,212,150,140,128,128],[248,81,128,128,128,128,128,128,128,128,128,128,128,128,128,160,212,173,36,244,71,83,248,199,226,80,120,201,229,122,7,181,246,202,35,39,44,183,120,4,253,181,251,195,139,230,9,206,160,255,153,127,253,189,106,79,64,234,173,180,2,221,50,191,217,252,158,56,31,44,151,85,153,234,148,225,185,234,146,49,81,128,128],[226,16,160,172,105,123,92,68,72,245,18,94,83,115,181,24,162,144,213,165,208,153,115,15,186,54,218,34,201,201,189,65,43,16,64],[226,16,160,197,167,189,182,202,143,72,218,156,79,159,112,208,113,176,251,7,38,203,160,154,245,157,40,46,78,181,165,145,188,139,12]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97],"key":[240,236,183,93,209,130,8,68,197,123,103,98,35,61,78,38,133,59,58,123,129,87,187,217,244,31,40,10,15,28,238,155],"list_rlp_bytes":[[225],[225]],"value_rlp_bytes":[[28],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[159,60,183,93,209,130,8,68,197,123,103,98,35,61,78,38,133,59,58,123,129,87,187,217,244,31,40,10,15,28,238,155,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,60,183,93,209,130,8,68,197,123,103,98,35,61,78,38,133,59,58,123,129,87,187,217,244,31,40,10,15,28,238,155,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[225,159,60,183,93,209,130,8,68,197,123,103,98,35,61,78,38,133,59,58,123,129,87,187,217,244,31,40,10,15,28,238,155,28],[225,159,60,183,93,209,130,8,68,197,123,103,98,35,61,78,38,133,59,58,123,129,87,187,217,244,31,40,10,15,28,238,155,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ExtensionOneKeyByteSel2.json b/zkevm-circuits/src/mpt_circuit/tests/ExtensionOneKeyByteSel2.json new file mode 100644 index 0000000000..1b5cd24353 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ExtensionOneKeyByteSel2.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,54,179,159,61,164,213,56,141,247,227,214,100,112,69,236,156,81,36,31,223,151,41,91,157,37,94,195,199,193,213,211,252,0],[160,84,223,48,23,250,220,164,145,21,248,253,141,153,181,185,64,213,46,57,236,51,32,58,124,135,92,248,123,249,57,126,15,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,250,181,151,10,164,88,200,148,9,23,153,250,80,11,137,76,15,66,103,222,79,160,248,20,100,7,113,228,3,147,235,119,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,167,151,5,29,17,227,112,120,220,76,167,5,31,48,238,42,218,44,123,4,251,93,145,48,164,12,97,186,166,146,187,56,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,167,151,5,29,17,227,112,120,220,76,167,5,31,48,238,42,218,44,123,4,251,93,145,48,164,12,97,186,166,146,187,56,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,250,181,151,10,164,88,200,148,9,23,153,250,80,11,137,76,15,66,103,222,79,160,248,20,100,7,113,228,3,147,235,119,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,95,1,11,74,249,59,44,16,126,232,246,252,143,212,53,224,163,175,86,197,35,160,3,52,68,119,214,79,133,222,203,250,0],[160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,0],[160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,0],[160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,0],[160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,0],[160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,0],[160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,0],[160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,0],[160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,0],[160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,0],[160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,0],[160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,0],[160,128,173,60,145,248,253,133,144,179,124,61,33,232,140,5,252,151,234,86,121,34,249,8,121,154,121,230,147,181,238,80,169,0],[160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,0],[160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,0],[160,108,100,16,239,143,223,176,117,172,111,57,10,135,153,27,63,77,11,170,247,58,37,188,185,60,51,247,73,236,253,169,33,0],[160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,160,128,173,60,145,248,253,133,144,179,124,61,33,232,140,5,252,151,234,86,121,34,249,8,121,154,121,230,147,181,238,80,169,160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,160,108,100,16,239,143,223,176,117,172,111,57,10,135,153,27,63,77,11,170,247,58,37,188,185,60,51,247,73,236,253,169,33,160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,128],[249,2,17,160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,160,128,173,60,145,248,253,133,144,179,124,61,33,232,140,5,252,151,234,86,121,34,249,8,121,154,121,230,147,181,238,80,169,160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,160,95,1,11,74,249,59,44,16,126,232,246,252,143,212,53,224,163,175,86,197,35,160,3,52,68,119,214,79,133,222,203,250,160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,122,114,237,140,219,94,139,155,152,190,200,182,53,246,93,74,213,214,219,98,101,109,78,214,10,215,41,29,155,146,63,187,0],[160,80,75,215,208,193,159,84,57,71,243,7,14,204,100,148,205,208,55,165,27,88,145,87,12,99,158,158,182,197,55,33,95,0],[160,76,180,250,234,22,207,36,13,201,139,0,120,72,139,180,238,156,185,62,97,200,44,188,159,187,99,106,94,147,15,25,20,0],[160,189,17,169,103,34,213,240,167,18,182,246,233,129,88,212,80,113,250,13,189,211,144,206,169,179,25,180,70,188,155,55,32,0],[160,32,220,255,83,236,6,9,125,247,185,224,139,47,190,49,98,219,131,56,50,131,152,150,81,107,126,7,163,202,127,91,164,0],[160,185,211,148,32,33,143,139,118,55,225,47,134,141,134,35,28,209,179,72,57,247,141,152,65,38,141,179,61,214,174,204,14,0],[160,107,106,58,227,233,173,248,116,152,133,228,250,245,205,196,226,135,107,65,132,233,139,78,59,136,248,255,241,150,83,160,5,0],[160,0,164,180,172,120,195,134,123,28,39,200,127,136,82,33,245,97,141,28,111,0,184,5,98,102,230,66,116,77,224,101,219,0],[160,248,105,172,225,53,1,157,135,194,244,188,254,17,122,124,197,196,99,49,56,111,8,165,230,145,108,189,38,207,45,75,50,0],[160,35,73,222,234,130,172,207,150,15,218,253,15,36,223,217,31,215,79,14,171,224,221,215,51,242,239,84,255,134,147,216,166,0],[160,240,32,244,239,11,87,72,174,41,33,118,196,147,56,102,122,208,41,160,96,186,168,111,141,93,215,31,104,139,17,215,242,0],[160,82,199,196,167,58,157,107,196,36,170,39,205,176,246,208,56,210,163,200,208,226,179,109,60,35,248,244,49,8,254,178,170,0],[160,41,120,139,152,77,177,209,163,251,86,56,110,91,133,48,219,84,61,35,168,197,183,209,12,192,6,94,59,173,60,160,174,0],[160,255,250,210,54,157,254,43,240,80,48,249,200,142,240,27,109,12,250,107,172,243,192,36,2,224,146,228,178,151,220,187,84,0],[160,231,83,108,124,37,12,66,134,242,2,97,130,128,110,222,91,65,238,211,219,127,83,155,247,57,160,84,71,36,68,143,249,0],[160,49,132,199,94,225,34,198,225,84,182,131,124,126,81,66,197,238,228,144,216,66,221,170,150,141,52,23,177,9,14,164,218,0],[160,119,192,211,22,95,58,240,144,240,37,172,65,97,91,255,225,107,12,151,189,7,88,0,51,192,124,155,194,253,5,143,142,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,80,75,215,208,193,159,84,57,71,243,7,14,204,100,148,205,208,55,165,27,88,145,87,12,99,158,158,182,197,55,33,95,160,76,180,250,234,22,207,36,13,201,139,0,120,72,139,180,238,156,185,62,97,200,44,188,159,187,99,106,94,147,15,25,20,160,189,17,169,103,34,213,240,167,18,182,246,233,129,88,212,80,113,250,13,189,211,144,206,169,179,25,180,70,188,155,55,32,160,32,220,255,83,236,6,9,125,247,185,224,139,47,190,49,98,219,131,56,50,131,152,150,81,107,126,7,163,202,127,91,164,160,185,211,148,32,33,143,139,118,55,225,47,134,141,134,35,28,209,179,72,57,247,141,152,65,38,141,179,61,214,174,204,14,160,107,106,58,227,233,173,248,116,152,133,228,250,245,205,196,226,135,107,65,132,233,139,78,59,136,248,255,241,150,83,160,5,160,0,164,180,172,120,195,134,123,28,39,200,127,136,82,33,245,97,141,28,111,0,184,5,98,102,230,66,116,77,224,101,219,160,248,105,172,225,53,1,157,135,194,244,188,254,17,122,124,197,196,99,49,56,111,8,165,230,145,108,189,38,207,45,75,50,160,35,73,222,234,130,172,207,150,15,218,253,15,36,223,217,31,215,79,14,171,224,221,215,51,242,239,84,255,134,147,216,166,160,240,32,244,239,11,87,72,174,41,33,118,196,147,56,102,122,208,41,160,96,186,168,111,141,93,215,31,104,139,17,215,242,160,82,199,196,167,58,157,107,196,36,170,39,205,176,246,208,56,210,163,200,208,226,179,109,60,35,248,244,49,8,254,178,170,160,41,120,139,152,77,177,209,163,251,86,56,110,91,133,48,219,84,61,35,168,197,183,209,12,192,6,94,59,173,60,160,174,160,255,250,210,54,157,254,43,240,80,48,249,200,142,240,27,109,12,250,107,172,243,192,36,2,224,146,228,178,151,220,187,84,160,231,83,108,124,37,12,66,134,242,2,97,130,128,110,222,91,65,238,211,219,127,83,155,247,57,160,84,71,36,68,143,249,160,49,132,199,94,225,34,198,225,84,182,131,124,126,81,66,197,238,228,144,216,66,221,170,150,141,52,23,177,9,14,164,218,160,119,192,211,22,95,58,240,144,240,37,172,65,97,91,255,225,107,12,151,189,7,88,0,51,192,124,155,194,253,5,143,142,128],[249,2,17,160,80,75,215,208,193,159,84,57,71,243,7,14,204,100,148,205,208,55,165,27,88,145,87,12,99,158,158,182,197,55,33,95,160,76,180,250,234,22,207,36,13,201,139,0,120,72,139,180,238,156,185,62,97,200,44,188,159,187,99,106,94,147,15,25,20,160,189,17,169,103,34,213,240,167,18,182,246,233,129,88,212,80,113,250,13,189,211,144,206,169,179,25,180,70,188,155,55,32,160,32,220,255,83,236,6,9,125,247,185,224,139,47,190,49,98,219,131,56,50,131,152,150,81,107,126,7,163,202,127,91,164,160,185,211,148,32,33,143,139,118,55,225,47,134,141,134,35,28,209,179,72,57,247,141,152,65,38,141,179,61,214,174,204,14,160,107,106,58,227,233,173,248,116,152,133,228,250,245,205,196,226,135,107,65,132,233,139,78,59,136,248,255,241,150,83,160,5,160,0,164,180,172,120,195,134,123,28,39,200,127,136,82,33,245,97,141,28,111,0,184,5,98,102,230,66,116,77,224,101,219,160,248,105,172,225,53,1,157,135,194,244,188,254,17,122,124,197,196,99,49,56,111,8,165,230,145,108,189,38,207,45,75,50,160,35,73,222,234,130,172,207,150,15,218,253,15,36,223,217,31,215,79,14,171,224,221,215,51,242,239,84,255,134,147,216,166,160,240,32,244,239,11,87,72,174,41,33,118,196,147,56,102,122,208,41,160,96,186,168,111,141,93,215,31,104,139,17,215,242,160,82,199,196,167,58,157,107,196,36,170,39,205,176,246,208,56,210,163,200,208,226,179,109,60,35,248,244,49,8,254,178,170,160,122,114,237,140,219,94,139,155,152,190,200,182,53,246,93,74,213,214,219,98,101,109,78,214,10,215,41,29,155,146,63,187,160,255,250,210,54,157,254,43,240,80,48,249,200,142,240,27,109,12,250,107,172,243,192,36,2,224,146,228,178,151,220,187,84,160,231,83,108,124,37,12,66,134,242,2,97,130,128,110,222,91,65,238,211,219,127,83,155,247,57,160,84,71,36,68,143,249,160,49,132,199,94,225,34,198,225,84,182,131,124,126,81,66,197,238,228,144,216,66,221,170,150,141,52,23,177,9,14,164,218,160,119,192,211,22,95,58,240,144,240,37,172,65,97,91,255,225,107,12,151,189,7,88,0,51,192,124,155,194,253,5,143,142,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,125,246,171,192,17,80,203,33,221,12,33,73,218,233,59,119,89,71,34,197,166,74,69,176,110,133,114,227,54,143,26,151,0],[160,135,19,64,207,217,223,201,245,3,114,121,32,66,43,57,133,252,55,82,116,223,71,100,149,122,243,45,28,63,150,204,110,0],[160,210,120,212,210,151,79,221,51,232,80,80,186,46,159,194,233,203,46,201,120,35,213,101,124,0,8,177,219,68,14,121,240,0],[160,7,114,2,237,174,156,12,217,41,80,207,22,255,39,79,29,172,209,87,195,37,188,55,186,206,78,97,11,87,224,72,236,0],[160,22,29,249,121,177,221,199,134,231,204,178,150,90,71,228,195,117,255,255,223,21,95,194,251,151,149,22,131,234,12,148,141,0],[160,154,130,254,249,64,180,76,29,52,23,185,183,92,39,79,57,58,81,220,159,7,224,15,179,212,252,51,109,150,166,138,123,0],[160,191,184,181,142,36,247,244,175,48,46,160,172,131,40,126,16,142,50,208,215,51,119,231,93,236,238,227,222,169,47,110,125,0],[160,63,16,188,230,177,90,174,250,172,232,195,227,33,146,180,160,216,2,248,221,210,179,93,60,27,200,22,229,211,119,190,115,0],[160,53,84,133,174,116,94,41,6,85,129,119,229,230,193,188,123,41,20,118,167,127,74,171,217,108,64,156,67,204,33,116,201,0],[160,178,157,0,28,65,106,227,88,84,22,69,42,75,101,149,62,86,45,11,59,216,93,0,97,209,124,70,114,145,152,73,213,0],[160,80,176,142,247,234,92,148,168,17,76,79,72,211,136,9,251,173,156,52,47,222,75,47,99,175,39,37,242,43,103,246,104,0],[160,220,42,251,8,22,8,115,225,127,17,184,13,248,242,7,12,82,192,44,74,62,147,117,10,57,158,59,179,221,195,212,185,0],[160,73,210,235,92,4,27,119,189,211,244,21,130,213,183,166,10,118,148,51,106,35,39,41,16,212,32,33,30,232,202,253,127,0],[160,45,234,125,167,138,171,111,217,200,71,109,44,151,79,202,136,227,21,63,196,251,135,189,172,157,97,199,5,92,103,113,208,0],[160,32,136,102,148,196,136,37,163,51,96,178,15,175,37,129,190,72,46,102,165,57,108,199,41,1,153,217,87,99,246,185,134,0],[160,195,142,65,38,53,73,58,93,254,20,214,13,99,184,121,102,237,111,202,60,113,233,229,157,72,243,233,231,38,188,161,198,0],[160,29,13,42,118,4,81,208,108,222,61,121,232,127,152,172,231,68,36,11,214,122,155,128,182,146,21,101,238,226,237,167,149,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,135,19,64,207,217,223,201,245,3,114,121,32,66,43,57,133,252,55,82,116,223,71,100,149,122,243,45,28,63,150,204,110,160,210,120,212,210,151,79,221,51,232,80,80,186,46,159,194,233,203,46,201,120,35,213,101,124,0,8,177,219,68,14,121,240,160,7,114,2,237,174,156,12,217,41,80,207,22,255,39,79,29,172,209,87,195,37,188,55,186,206,78,97,11,87,224,72,236,160,22,29,249,121,177,221,199,134,231,204,178,150,90,71,228,195,117,255,255,223,21,95,194,251,151,149,22,131,234,12,148,141,160,154,130,254,249,64,180,76,29,52,23,185,183,92,39,79,57,58,81,220,159,7,224,15,179,212,252,51,109,150,166,138,123,160,191,184,181,142,36,247,244,175,48,46,160,172,131,40,126,16,142,50,208,215,51,119,231,93,236,238,227,222,169,47,110,125,160,63,16,188,230,177,90,174,250,172,232,195,227,33,146,180,160,216,2,248,221,210,179,93,60,27,200,22,229,211,119,190,115,160,53,84,133,174,116,94,41,6,85,129,119,229,230,193,188,123,41,20,118,167,127,74,171,217,108,64,156,67,204,33,116,201,160,178,157,0,28,65,106,227,88,84,22,69,42,75,101,149,62,86,45,11,59,216,93,0,97,209,124,70,114,145,152,73,213,160,80,176,142,247,234,92,148,168,17,76,79,72,211,136,9,251,173,156,52,47,222,75,47,99,175,39,37,242,43,103,246,104,160,220,42,251,8,22,8,115,225,127,17,184,13,248,242,7,12,82,192,44,74,62,147,117,10,57,158,59,179,221,195,212,185,160,73,210,235,92,4,27,119,189,211,244,21,130,213,183,166,10,118,148,51,106,35,39,41,16,212,32,33,30,232,202,253,127,160,45,234,125,167,138,171,111,217,200,71,109,44,151,79,202,136,227,21,63,196,251,135,189,172,157,97,199,5,92,103,113,208,160,32,136,102,148,196,136,37,163,51,96,178,15,175,37,129,190,72,46,102,165,57,108,199,41,1,153,217,87,99,246,185,134,160,195,142,65,38,53,73,58,93,254,20,214,13,99,184,121,102,237,111,202,60,113,233,229,157,72,243,233,231,38,188,161,198,160,29,13,42,118,4,81,208,108,222,61,121,232,127,152,172,231,68,36,11,214,122,155,128,182,146,21,101,238,226,237,167,149,128],[249,2,17,160,135,19,64,207,217,223,201,245,3,114,121,32,66,43,57,133,252,55,82,116,223,71,100,149,122,243,45,28,63,150,204,110,160,210,120,212,210,151,79,221,51,232,80,80,186,46,159,194,233,203,46,201,120,35,213,101,124,0,8,177,219,68,14,121,240,160,7,114,2,237,174,156,12,217,41,80,207,22,255,39,79,29,172,209,87,195,37,188,55,186,206,78,97,11,87,224,72,236,160,22,29,249,121,177,221,199,134,231,204,178,150,90,71,228,195,117,255,255,223,21,95,194,251,151,149,22,131,234,12,148,141,160,154,130,254,249,64,180,76,29,52,23,185,183,92,39,79,57,58,81,220,159,7,224,15,179,212,252,51,109,150,166,138,123,160,191,184,181,142,36,247,244,175,48,46,160,172,131,40,126,16,142,50,208,215,51,119,231,93,236,238,227,222,169,47,110,125,160,63,16,188,230,177,90,174,250,172,232,195,227,33,146,180,160,216,2,248,221,210,179,93,60,27,200,22,229,211,119,190,115,160,125,246,171,192,17,80,203,33,221,12,33,73,218,233,59,119,89,71,34,197,166,74,69,176,110,133,114,227,54,143,26,151,160,178,157,0,28,65,106,227,88,84,22,69,42,75,101,149,62,86,45,11,59,216,93,0,97,209,124,70,114,145,152,73,213,160,80,176,142,247,234,92,148,168,17,76,79,72,211,136,9,251,173,156,52,47,222,75,47,99,175,39,37,242,43,103,246,104,160,220,42,251,8,22,8,115,225,127,17,184,13,248,242,7,12,82,192,44,74,62,147,117,10,57,158,59,179,221,195,212,185,160,73,210,235,92,4,27,119,189,211,244,21,130,213,183,166,10,118,148,51,106,35,39,41,16,212,32,33,30,232,202,253,127,160,45,234,125,167,138,171,111,217,200,71,109,44,151,79,202,136,227,21,63,196,251,135,189,172,157,97,199,5,92,103,113,208,160,32,136,102,148,196,136,37,163,51,96,178,15,175,37,129,190,72,46,102,165,57,108,199,41,1,153,217,87,99,246,185,134,160,195,142,65,38,53,73,58,93,254,20,214,13,99,184,121,102,237,111,202,60,113,233,229,157,72,243,233,231,38,188,161,198,160,29,13,42,118,4,81,208,108,222,61,121,232,127,152,172,231,68,36,11,214,122,155,128,182,146,21,101,238,226,237,167,149,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,20,106,170,18,16,11,150,190,193,106,85,69,123,166,102,183,199,172,76,20,56,136,197,213,142,209,174,120,145,43,55,17,0],[160,133,167,189,133,123,193,191,222,89,216,35,78,93,7,66,131,149,42,249,152,66,106,244,232,140,225,53,159,56,146,232,23,0],[160,252,122,28,104,215,195,210,194,90,68,41,241,5,233,121,31,111,39,40,44,8,54,98,144,203,206,196,168,223,212,246,221,0],[160,108,140,134,51,36,35,162,155,179,219,212,248,1,165,39,162,65,235,79,21,5,180,1,119,15,51,58,169,249,106,94,169,0],[160,254,76,95,71,155,26,54,113,106,54,108,164,206,63,247,247,91,164,234,52,148,14,43,211,132,137,64,194,118,82,194,177,0],[160,14,185,41,78,52,126,90,218,79,124,126,55,116,181,121,241,185,238,44,135,0,49,233,24,87,231,76,225,31,130,200,18,0],[160,184,203,50,205,70,164,135,3,71,89,95,190,248,113,62,67,78,182,14,228,178,180,2,161,165,175,67,60,73,23,173,123,0],[160,144,195,48,89,145,149,182,147,85,15,69,184,79,146,224,36,71,69,131,22,233,191,131,250,24,98,82,185,178,33,37,178,0],[160,103,13,127,211,234,63,148,126,213,126,127,233,179,188,239,177,163,141,165,207,149,48,253,223,158,89,76,162,21,6,208,123,0],[160,60,30,137,167,221,156,12,2,111,77,132,147,40,151,60,202,47,85,195,64,141,50,215,66,51,129,199,36,184,203,150,136,0],[160,47,92,105,177,160,255,212,105,132,109,28,120,118,228,101,197,3,61,151,81,126,86,140,26,92,137,116,150,66,142,148,133,0],[160,188,123,142,119,144,241,30,96,104,247,77,149,203,234,218,50,166,117,17,238,216,103,24,146,142,202,126,58,34,229,213,98,0],[160,118,160,183,246,222,81,81,110,178,28,67,171,144,85,193,24,86,90,191,175,156,176,49,241,181,29,151,58,69,17,153,247,0],[160,10,81,148,85,182,179,4,213,104,8,18,186,104,176,241,146,55,220,243,205,207,90,175,2,120,133,99,27,67,103,37,137,0],[160,92,135,250,214,119,219,245,233,65,207,198,41,62,154,6,183,119,86,175,138,217,145,8,75,217,202,166,21,201,199,183,160,0],[160,178,118,164,136,184,196,235,68,1,208,226,214,129,93,154,28,118,79,39,37,41,21,31,157,175,140,26,16,206,117,245,161,0],[160,166,122,17,151,156,67,20,33,110,157,14,75,253,205,253,90,57,76,61,99,70,105,124,243,136,52,164,181,121,236,236,70,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,133,167,189,133,123,193,191,222,89,216,35,78,93,7,66,131,149,42,249,152,66,106,244,232,140,225,53,159,56,146,232,23,160,252,122,28,104,215,195,210,194,90,68,41,241,5,233,121,31,111,39,40,44,8,54,98,144,203,206,196,168,223,212,246,221,160,108,140,134,51,36,35,162,155,179,219,212,248,1,165,39,162,65,235,79,21,5,180,1,119,15,51,58,169,249,106,94,169,160,254,76,95,71,155,26,54,113,106,54,108,164,206,63,247,247,91,164,234,52,148,14,43,211,132,137,64,194,118,82,194,177,160,14,185,41,78,52,126,90,218,79,124,126,55,116,181,121,241,185,238,44,135,0,49,233,24,87,231,76,225,31,130,200,18,160,184,203,50,205,70,164,135,3,71,89,95,190,248,113,62,67,78,182,14,228,178,180,2,161,165,175,67,60,73,23,173,123,160,144,195,48,89,145,149,182,147,85,15,69,184,79,146,224,36,71,69,131,22,233,191,131,250,24,98,82,185,178,33,37,178,160,103,13,127,211,234,63,148,126,213,126,127,233,179,188,239,177,163,141,165,207,149,48,253,223,158,89,76,162,21,6,208,123,160,60,30,137,167,221,156,12,2,111,77,132,147,40,151,60,202,47,85,195,64,141,50,215,66,51,129,199,36,184,203,150,136,160,47,92,105,177,160,255,212,105,132,109,28,120,118,228,101,197,3,61,151,81,126,86,140,26,92,137,116,150,66,142,148,133,160,188,123,142,119,144,241,30,96,104,247,77,149,203,234,218,50,166,117,17,238,216,103,24,146,142,202,126,58,34,229,213,98,160,118,160,183,246,222,81,81,110,178,28,67,171,144,85,193,24,86,90,191,175,156,176,49,241,181,29,151,58,69,17,153,247,160,10,81,148,85,182,179,4,213,104,8,18,186,104,176,241,146,55,220,243,205,207,90,175,2,120,133,99,27,67,103,37,137,160,92,135,250,214,119,219,245,233,65,207,198,41,62,154,6,183,119,86,175,138,217,145,8,75,217,202,166,21,201,199,183,160,160,178,118,164,136,184,196,235,68,1,208,226,214,129,93,154,28,118,79,39,37,41,21,31,157,175,140,26,16,206,117,245,161,160,166,122,17,151,156,67,20,33,110,157,14,75,253,205,253,90,57,76,61,99,70,105,124,243,136,52,164,181,121,236,236,70,128],[249,2,17,160,133,167,189,133,123,193,191,222,89,216,35,78,93,7,66,131,149,42,249,152,66,106,244,232,140,225,53,159,56,146,232,23,160,252,122,28,104,215,195,210,194,90,68,41,241,5,233,121,31,111,39,40,44,8,54,98,144,203,206,196,168,223,212,246,221,160,108,140,134,51,36,35,162,155,179,219,212,248,1,165,39,162,65,235,79,21,5,180,1,119,15,51,58,169,249,106,94,169,160,254,76,95,71,155,26,54,113,106,54,108,164,206,63,247,247,91,164,234,52,148,14,43,211,132,137,64,194,118,82,194,177,160,14,185,41,78,52,126,90,218,79,124,126,55,116,181,121,241,185,238,44,135,0,49,233,24,87,231,76,225,31,130,200,18,160,184,203,50,205,70,164,135,3,71,89,95,190,248,113,62,67,78,182,14,228,178,180,2,161,165,175,67,60,73,23,173,123,160,144,195,48,89,145,149,182,147,85,15,69,184,79,146,224,36,71,69,131,22,233,191,131,250,24,98,82,185,178,33,37,178,160,103,13,127,211,234,63,148,126,213,126,127,233,179,188,239,177,163,141,165,207,149,48,253,223,158,89,76,162,21,6,208,123,160,60,30,137,167,221,156,12,2,111,77,132,147,40,151,60,202,47,85,195,64,141,50,215,66,51,129,199,36,184,203,150,136,160,47,92,105,177,160,255,212,105,132,109,28,120,118,228,101,197,3,61,151,81,126,86,140,26,92,137,116,150,66,142,148,133,160,188,123,142,119,144,241,30,96,104,247,77,149,203,234,218,50,166,117,17,238,216,103,24,146,142,202,126,58,34,229,213,98,160,20,106,170,18,16,11,150,190,193,106,85,69,123,166,102,183,199,172,76,20,56,136,197,213,142,209,174,120,145,43,55,17,160,10,81,148,85,182,179,4,213,104,8,18,186,104,176,241,146,55,220,243,205,207,90,175,2,120,133,99,27,67,103,37,137,160,92,135,250,214,119,219,245,233,65,207,198,41,62,154,6,183,119,86,175,138,217,145,8,75,217,202,166,21,201,199,183,160,160,178,118,164,136,184,196,235,68,1,208,226,214,129,93,154,28,118,79,39,37,41,21,31,157,175,140,26,16,206,117,245,161,160,166,122,17,151,156,67,20,33,110,157,14,75,253,205,253,90,57,76,61,99,70,105,124,243,136,52,164,181,121,236,236,70,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,61,251,181,242,140,20,239,76,239,243,233,9,110,80,177,88,254,63,242,219,97,183,117,223,33,215,103,204,233,68,47,7,0],[160,148,96,233,169,14,90,134,113,124,248,170,233,105,200,185,209,37,170,23,12,53,121,255,207,171,140,58,155,240,245,176,148,0],[160,44,47,217,201,92,122,132,137,66,226,149,169,177,49,235,62,79,6,38,116,120,55,195,24,55,197,51,169,64,4,70,173,0],[160,239,47,98,216,238,2,166,46,89,15,56,7,5,196,196,62,67,249,253,235,20,235,102,134,142,200,26,17,214,152,1,145,0],[160,197,17,178,32,200,66,202,234,188,218,127,181,8,17,4,30,61,47,57,234,58,255,120,204,181,237,168,202,28,76,105,234,0],[160,63,229,58,247,19,93,67,185,34,164,106,81,163,92,222,25,161,27,40,212,121,191,185,203,236,130,187,73,151,69,189,185,0],[160,254,144,109,156,81,221,79,66,253,183,145,54,58,41,16,116,249,56,61,32,1,181,98,101,217,110,246,137,185,35,129,215,0],[160,42,32,250,190,187,193,176,158,238,99,10,152,135,244,177,201,170,90,140,94,31,244,155,240,210,136,149,233,93,37,48,191,0],[160,61,109,224,56,165,245,64,137,152,181,215,104,250,196,136,153,125,159,66,122,124,73,180,198,62,12,247,125,2,26,120,32,0],[160,81,76,82,36,53,180,76,100,114,1,16,17,231,143,16,128,224,130,54,29,129,30,175,141,192,31,129,54,103,40,235,30,0],[160,91,241,99,220,108,63,125,225,150,80,223,253,107,254,87,177,201,91,21,251,24,233,244,246,13,134,68,64,146,212,100,133,0],[160,236,116,61,181,70,202,25,127,58,207,72,50,66,207,22,152,197,203,167,193,92,102,153,213,59,137,65,153,49,136,57,215,0],[160,216,2,120,95,255,84,108,99,100,122,21,213,206,229,80,63,183,191,6,12,87,234,21,174,229,146,63,113,77,198,240,39,0],[160,190,218,104,114,65,143,16,76,171,187,221,133,224,217,179,164,222,126,10,33,35,71,63,53,163,111,199,211,228,164,124,223,0],[160,213,170,112,202,127,64,210,139,189,213,55,20,144,252,240,46,126,109,109,74,135,136,15,128,192,99,16,67,173,97,168,61,0],[160,147,75,172,163,178,143,148,112,133,47,43,229,251,14,130,192,253,59,110,111,147,43,65,57,213,172,199,179,154,184,206,56,0],[160,164,223,28,174,107,173,96,167,56,249,242,213,153,166,239,188,30,37,226,19,250,193,152,99,72,192,45,227,39,220,80,199,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,148,96,233,169,14,90,134,113,124,248,170,233,105,200,185,209,37,170,23,12,53,121,255,207,171,140,58,155,240,245,176,148,160,44,47,217,201,92,122,132,137,66,226,149,169,177,49,235,62,79,6,38,116,120,55,195,24,55,197,51,169,64,4,70,173,160,239,47,98,216,238,2,166,46,89,15,56,7,5,196,196,62,67,249,253,235,20,235,102,134,142,200,26,17,214,152,1,145,160,197,17,178,32,200,66,202,234,188,218,127,181,8,17,4,30,61,47,57,234,58,255,120,204,181,237,168,202,28,76,105,234,160,63,229,58,247,19,93,67,185,34,164,106,81,163,92,222,25,161,27,40,212,121,191,185,203,236,130,187,73,151,69,189,185,160,254,144,109,156,81,221,79,66,253,183,145,54,58,41,16,116,249,56,61,32,1,181,98,101,217,110,246,137,185,35,129,215,160,42,32,250,190,187,193,176,158,238,99,10,152,135,244,177,201,170,90,140,94,31,244,155,240,210,136,149,233,93,37,48,191,160,61,109,224,56,165,245,64,137,152,181,215,104,250,196,136,153,125,159,66,122,124,73,180,198,62,12,247,125,2,26,120,32,160,81,76,82,36,53,180,76,100,114,1,16,17,231,143,16,128,224,130,54,29,129,30,175,141,192,31,129,54,103,40,235,30,160,91,241,99,220,108,63,125,225,150,80,223,253,107,254,87,177,201,91,21,251,24,233,244,246,13,134,68,64,146,212,100,133,160,236,116,61,181,70,202,25,127,58,207,72,50,66,207,22,152,197,203,167,193,92,102,153,213,59,137,65,153,49,136,57,215,160,216,2,120,95,255,84,108,99,100,122,21,213,206,229,80,63,183,191,6,12,87,234,21,174,229,146,63,113,77,198,240,39,160,190,218,104,114,65,143,16,76,171,187,221,133,224,217,179,164,222,126,10,33,35,71,63,53,163,111,199,211,228,164,124,223,160,213,170,112,202,127,64,210,139,189,213,55,20,144,252,240,46,126,109,109,74,135,136,15,128,192,99,16,67,173,97,168,61,160,147,75,172,163,178,143,148,112,133,47,43,229,251,14,130,192,253,59,110,111,147,43,65,57,213,172,199,179,154,184,206,56,160,164,223,28,174,107,173,96,167,56,249,242,213,153,166,239,188,30,37,226,19,250,193,152,99,72,192,45,227,39,220,80,199,128],[249,2,17,160,148,96,233,169,14,90,134,113,124,248,170,233,105,200,185,209,37,170,23,12,53,121,255,207,171,140,58,155,240,245,176,148,160,44,47,217,201,92,122,132,137,66,226,149,169,177,49,235,62,79,6,38,116,120,55,195,24,55,197,51,169,64,4,70,173,160,239,47,98,216,238,2,166,46,89,15,56,7,5,196,196,62,67,249,253,235,20,235,102,134,142,200,26,17,214,152,1,145,160,197,17,178,32,200,66,202,234,188,218,127,181,8,17,4,30,61,47,57,234,58,255,120,204,181,237,168,202,28,76,105,234,160,63,229,58,247,19,93,67,185,34,164,106,81,163,92,222,25,161,27,40,212,121,191,185,203,236,130,187,73,151,69,189,185,160,254,144,109,156,81,221,79,66,253,183,145,54,58,41,16,116,249,56,61,32,1,181,98,101,217,110,246,137,185,35,129,215,160,42,32,250,190,187,193,176,158,238,99,10,152,135,244,177,201,170,90,140,94,31,244,155,240,210,136,149,233,93,37,48,191,160,61,251,181,242,140,20,239,76,239,243,233,9,110,80,177,88,254,63,242,219,97,183,117,223,33,215,103,204,233,68,47,7,160,81,76,82,36,53,180,76,100,114,1,16,17,231,143,16,128,224,130,54,29,129,30,175,141,192,31,129,54,103,40,235,30,160,91,241,99,220,108,63,125,225,150,80,223,253,107,254,87,177,201,91,21,251,24,233,244,246,13,134,68,64,146,212,100,133,160,236,116,61,181,70,202,25,127,58,207,72,50,66,207,22,152,197,203,167,193,92,102,153,213,59,137,65,153,49,136,57,215,160,216,2,120,95,255,84,108,99,100,122,21,213,206,229,80,63,183,191,6,12,87,234,21,174,229,146,63,113,77,198,240,39,160,190,218,104,114,65,143,16,76,171,187,221,133,224,217,179,164,222,126,10,33,35,71,63,53,163,111,199,211,228,164,124,223,160,213,170,112,202,127,64,210,139,189,213,55,20,144,252,240,46,126,109,109,74,135,136,15,128,192,99,16,67,173,97,168,61,160,147,75,172,163,178,143,148,112,133,47,43,229,251,14,130,192,253,59,110,111,147,43,65,57,213,172,199,179,154,184,206,56,160,164,223,28,174,107,173,96,167,56,249,242,213,153,166,239,188,30,37,226,19,250,193,152,99,72,192,45,227,39,220,80,199,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,208,108,90,25,229,50,155,194,177,66,242,8,221,189,215,225,98,169,90,187,34,65,36,152,14,147,206,220,51,1,13,199,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,30,165,12,148,60,73,75,129,99,22,189,179,165,212,97,30,70,252,178,141,82,212,205,86,33,189,64,225,155,151,44,228,0],[160,143,165,150,220,29,213,132,61,84,146,177,121,240,70,49,108,193,141,238,104,187,31,65,67,198,42,160,132,145,244,195,47,0],[160,249,206,148,243,175,9,54,64,123,62,84,79,56,2,167,180,229,57,141,60,57,230,39,198,161,165,104,120,15,27,210,19,0],[160,35,2,113,27,174,138,111,47,143,63,131,219,176,187,151,237,202,89,0,243,6,15,2,56,30,196,6,32,30,28,90,37,0],[160,58,236,215,25,102,10,91,61,145,178,196,158,128,97,75,40,167,190,55,63,190,206,1,214,162,90,94,106,14,98,57,150,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,192,147,56,216,166,204,38,22,236,116,212,187,163,46,244,70,243,70,187,207,2,165,214,141,45,103,210,194,66,11,69,179,0],[160,53,121,2,248,88,112,144,252,89,104,248,103,3,186,223,144,16,249,254,171,166,207,57,215,153,238,158,125,169,169,8,144,0],[160,241,188,52,165,71,42,145,44,6,13,51,116,50,101,11,21,41,174,213,101,6,12,243,195,47,91,175,49,28,99,33,190,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,128,160,30,165,12,148,60,73,75,129,99,22,189,179,165,212,97,30,70,252,178,141,82,212,205,86,33,189,64,225,155,151,44,228,160,143,165,150,220,29,213,132,61,84,146,177,121,240,70,49,108,193,141,238,104,187,31,65,67,198,42,160,132,145,244,195,47,160,249,206,148,243,175,9,54,64,123,62,84,79,56,2,167,180,229,57,141,60,57,230,39,198,161,165,104,120,15,27,210,19,160,35,2,113,27,174,138,111,47,143,63,131,219,176,187,151,237,202,89,0,243,6,15,2,56,30,196,6,32,30,28,90,37,160,58,236,215,25,102,10,91,61,145,178,196,158,128,97,75,40,167,190,55,63,190,206,1,214,162,90,94,106,14,98,57,150,128,128,128,128,160,192,147,56,216,166,204,38,22,236,116,212,187,163,46,244,70,243,70,187,207,2,165,214,141,45,103,210,194,66,11,69,179,160,53,121,2,248,88,112,144,252,89,104,248,103,3,186,223,144,16,249,254,171,166,207,57,215,153,238,158,125,169,169,8,144,160,241,188,52,165,71,42,145,44,6,13,51,116,50,101,11,21,41,174,213,101,6,12,243,195,47,91,175,49,28,99,33,190,128,128,128,128],[249,1,17,128,160,30,165,12,148,60,73,75,129,99,22,189,179,165,212,97,30,70,252,178,141,82,212,205,86,33,189,64,225,155,151,44,228,160,143,165,150,220,29,213,132,61,84,146,177,121,240,70,49,108,193,141,238,104,187,31,65,67,198,42,160,132,145,244,195,47,160,249,206,148,243,175,9,54,64,123,62,84,79,56,2,167,180,229,57,141,60,57,230,39,198,161,165,104,120,15,27,210,19,160,35,2,113,27,174,138,111,47,143,63,131,219,176,187,151,237,202,89,0,243,6,15,2,56,30,196,6,32,30,28,90,37,160,58,236,215,25,102,10,91,61,145,178,196,158,128,97,75,40,167,190,55,63,190,206,1,214,162,90,94,106,14,98,57,150,128,128,128,128,160,192,147,56,216,166,204,38,22,236,116,212,187,163,46,244,70,243,70,187,207,2,165,214,141,45,103,210,194,66,11,69,179,160,208,108,90,25,229,50,155,194,177,66,242,8,221,189,215,225,98,169,90,187,34,65,36,152,14,147,206,220,51,1,13,199,160,241,188,52,165,71,42,145,44,6,13,51,116,50,101,11,21,41,174,213,101,6,12,243,195,47,91,175,49,28,99,33,190,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,251,239,33,80,129,140,50,179,108,87,149,114,38,223,78,36,235,129,201],"key":[190,183,183,180,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,0,0,0,0],[157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,15,108,88,107,194,189,15,82,236,209,78,97,30,50,118,96,132,240,202,106,51,130,176,90,228,193,49,184,47,232,39,159,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,124,26,120,82,131,157,164,127,56,228,104,250,50,95,18,167,8,39,184,168,244,151,16,77,146,185,44,203,229,2,221,236,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,0,0,0,0]],"keccak_data":[[248,102,157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,184,70,248,68,128,128,160,15,108,88,107,194,189,15,82,236,209,78,97,30,50,118,96,132,240,202,106,51,130,176,90,228,193,49,184,47,232,39,159,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,184,70,248,68,128,128,160,124,26,120,82,131,157,164,127,56,228,104,250,50,95,18,167,8,39,184,168,244,151,16,77,146,185,44,203,229,2,221,236,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,251,239,33,80,129,140,50,179,108,87,149,114,38,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,18,119,139,12,240,128,110,117,194,13,180,80,241,67,175,107,156,90,217,107,252,142,177,134,187,40,107,215,240,60,255,36,0],[160,199,7,37,185,37,91,182,45,165,122,208,185,90,144,11,45,139,168,225,124,74,246,60,201,187,119,135,221,233,18,191,221,0],[160,162,175,133,187,219,239,119,151,95,222,27,129,73,222,219,181,13,128,78,7,224,142,244,71,234,19,80,204,169,244,0,87,0],[160,58,60,54,149,3,205,76,32,114,171,130,231,241,27,85,217,154,210,18,227,106,225,149,84,154,52,148,232,21,66,116,31,0],[160,253,163,202,142,157,155,138,225,162,235,57,54,88,186,254,215,44,218,114,226,22,108,52,0,22,210,251,90,59,245,132,164,0],[160,88,253,168,183,167,24,59,71,66,2,138,202,246,220,159,159,205,204,132,25,74,204,132,126,11,108,227,31,33,134,168,54,0],[160,174,159,215,246,148,47,251,128,68,133,135,143,4,201,65,126,102,248,78,59,98,133,77,240,253,90,78,164,148,100,175,48,0],[160,221,79,222,160,107,166,177,105,81,79,147,190,19,10,157,79,207,51,221,79,73,38,80,3,91,93,204,94,10,153,56,72,0],[160,109,116,156,243,230,209,211,29,219,17,87,228,134,197,52,167,174,133,21,113,25,85,36,90,245,228,79,66,87,114,46,39,0],[160,234,85,204,14,74,84,96,216,235,139,169,174,188,79,111,92,209,207,167,162,47,138,27,77,220,119,93,56,197,196,12,159,0],[160,96,164,94,198,66,93,24,209,234,0,105,195,26,66,85,188,155,170,172,252,49,109,111,151,41,55,125,131,148,93,100,107,0],[160,102,169,82,198,144,176,62,55,232,164,14,215,234,58,4,98,107,114,203,112,99,172,101,218,151,140,23,163,68,122,182,9,0],[160,181,221,183,228,80,79,15,233,9,59,124,56,137,118,27,182,146,52,215,105,246,48,148,29,21,126,221,25,104,217,60,53,0],[160,128,15,176,199,139,63,103,195,229,91,52,59,211,65,89,64,79,179,139,132,57,156,21,28,21,42,161,182,22,124,38,233,0],[160,5,244,200,187,143,8,84,83,48,169,247,34,137,34,28,5,90,174,205,176,32,237,146,119,229,53,238,239,124,46,99,26,0],[160,151,124,238,145,179,177,25,87,187,254,224,157,186,53,78,237,65,4,242,28,27,232,57,35,54,116,143,141,142,222,173,47,0],[160,153,204,205,170,68,197,244,33,216,144,97,187,247,155,14,237,83,136,150,151,80,184,49,215,91,219,88,84,53,99,129,161,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,199,7,37,185,37,91,182,45,165,122,208,185,90,144,11,45,139,168,225,124,74,246,60,201,187,119,135,221,233,18,191,221,160,162,175,133,187,219,239,119,151,95,222,27,129,73,222,219,181,13,128,78,7,224,142,244,71,234,19,80,204,169,244,0,87,160,58,60,54,149,3,205,76,32,114,171,130,231,241,27,85,217,154,210,18,227,106,225,149,84,154,52,148,232,21,66,116,31,160,253,163,202,142,157,155,138,225,162,235,57,54,88,186,254,215,44,218,114,226,22,108,52,0,22,210,251,90,59,245,132,164,160,88,253,168,183,167,24,59,71,66,2,138,202,246,220,159,159,205,204,132,25,74,204,132,126,11,108,227,31,33,134,168,54,160,174,159,215,246,148,47,251,128,68,133,135,143,4,201,65,126,102,248,78,59,98,133,77,240,253,90,78,164,148,100,175,48,160,221,79,222,160,107,166,177,105,81,79,147,190,19,10,157,79,207,51,221,79,73,38,80,3,91,93,204,94,10,153,56,72,160,109,116,156,243,230,209,211,29,219,17,87,228,134,197,52,167,174,133,21,113,25,85,36,90,245,228,79,66,87,114,46,39,160,234,85,204,14,74,84,96,216,235,139,169,174,188,79,111,92,209,207,167,162,47,138,27,77,220,119,93,56,197,196,12,159,160,96,164,94,198,66,93,24,209,234,0,105,195,26,66,85,188,155,170,172,252,49,109,111,151,41,55,125,131,148,93,100,107,160,102,169,82,198,144,176,62,55,232,164,14,215,234,58,4,98,107,114,203,112,99,172,101,218,151,140,23,163,68,122,182,9,160,181,221,183,228,80,79,15,233,9,59,124,56,137,118,27,182,146,52,215,105,246,48,148,29,21,126,221,25,104,217,60,53,160,128,15,176,199,139,63,103,195,229,91,52,59,211,65,89,64,79,179,139,132,57,156,21,28,21,42,161,182,22,124,38,233,160,5,244,200,187,143,8,84,83,48,169,247,34,137,34,28,5,90,174,205,176,32,237,146,119,229,53,238,239,124,46,99,26,160,151,124,238,145,179,177,25,87,187,254,224,157,186,53,78,237,65,4,242,28,27,232,57,35,54,116,143,141,142,222,173,47,160,153,204,205,170,68,197,244,33,216,144,97,187,247,155,14,237,83,136,150,151,80,184,49,215,91,219,88,84,53,99,129,161,128],[249,2,17,160,199,7,37,185,37,91,182,45,165,122,208,185,90,144,11,45,139,168,225,124,74,246,60,201,187,119,135,221,233,18,191,221,160,162,175,133,187,219,239,119,151,95,222,27,129,73,222,219,181,13,128,78,7,224,142,244,71,234,19,80,204,169,244,0,87,160,58,60,54,149,3,205,76,32,114,171,130,231,241,27,85,217,154,210,18,227,106,225,149,84,154,52,148,232,21,66,116,31,160,253,163,202,142,157,155,138,225,162,235,57,54,88,186,254,215,44,218,114,226,22,108,52,0,22,210,251,90,59,245,132,164,160,88,253,168,183,167,24,59,71,66,2,138,202,246,220,159,159,205,204,132,25,74,204,132,126,11,108,227,31,33,134,168,54,160,174,159,215,246,148,47,251,128,68,133,135,143,4,201,65,126,102,248,78,59,98,133,77,240,253,90,78,164,148,100,175,48,160,221,79,222,160,107,166,177,105,81,79,147,190,19,10,157,79,207,51,221,79,73,38,80,3,91,93,204,94,10,153,56,72,160,109,116,156,243,230,209,211,29,219,17,87,228,134,197,52,167,174,133,21,113,25,85,36,90,245,228,79,66,87,114,46,39,160,234,85,204,14,74,84,96,216,235,139,169,174,188,79,111,92,209,207,167,162,47,138,27,77,220,119,93,56,197,196,12,159,160,96,164,94,198,66,93,24,209,234,0,105,195,26,66,85,188,155,170,172,252,49,109,111,151,41,55,125,131,148,93,100,107,160,18,119,139,12,240,128,110,117,194,13,180,80,241,67,175,107,156,90,217,107,252,142,177,134,187,40,107,215,240,60,255,36,160,181,221,183,228,80,79,15,233,9,59,124,56,137,118,27,182,146,52,215,105,246,48,148,29,21,126,221,25,104,217,60,53,160,128,15,176,199,139,63,103,195,229,91,52,59,211,65,89,64,79,179,139,132,57,156,21,28,21,42,161,182,22,124,38,233,160,5,244,200,187,143,8,84,83,48,169,247,34,137,34,28,5,90,174,205,176,32,237,146,119,229,53,238,239,124,46,99,26,160,151,124,238,145,179,177,25,87,187,254,224,157,186,53,78,237,65,4,242,28,27,232,57,35,54,116,143,141,142,222,173,47,160,153,204,205,170,68,197,244,33,216,144,97,187,247,155,14,237,83,136,150,151,80,184,49,215,91,219,88,84,53,99,129,161,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,136,206,75,241,0,165,169,149,117,68,90,58,147,15,137,166,35,167,185,73,111,111,1,1,224,141,52,122,148,13,249,4,0],[160,10,11,149,12,142,202,194,193,83,24,24,104,171,96,161,219,119,65,137,93,44,91,87,80,60,110,159,30,86,188,100,10,0],[160,39,121,230,39,167,161,129,53,122,169,245,140,52,23,2,36,165,188,119,4,45,196,106,160,65,112,91,107,79,132,116,69,0],[160,88,185,52,166,252,165,200,178,180,95,208,36,154,103,209,50,6,89,195,66,174,93,158,61,84,76,85,250,207,133,47,240,0],[160,213,56,164,23,6,58,156,182,33,182,7,204,68,61,175,98,92,118,160,197,33,115,111,122,107,128,91,161,33,6,92,45,0],[160,202,229,249,81,1,238,228,32,21,81,101,141,32,137,53,56,45,123,217,147,25,161,92,21,136,222,179,159,179,72,221,134,0],[160,201,122,133,107,231,72,116,35,25,99,12,164,48,114,64,245,167,84,164,45,115,146,165,202,133,239,107,149,81,13,134,245,0],[160,87,74,180,16,9,104,174,153,216,77,218,72,245,5,40,122,105,82,214,193,144,67,110,184,80,173,207,63,61,132,109,190,0],[160,166,32,30,7,57,227,117,143,123,252,126,139,162,83,233,9,244,31,101,60,140,116,90,216,231,11,180,90,7,219,55,197,0],[160,154,7,28,59,219,138,240,13,116,245,19,62,193,183,80,141,59,142,71,8,159,225,139,241,102,204,162,22,53,83,177,27,0],[160,66,157,164,229,190,190,234,127,138,65,178,206,129,97,252,116,91,153,125,45,178,214,153,145,25,34,42,100,35,67,168,163,0],[160,189,109,204,118,60,183,213,130,243,213,244,177,200,6,208,183,250,103,85,108,253,44,119,226,37,78,5,61,255,98,56,43,0],[160,226,205,145,71,162,229,17,220,159,79,102,59,146,46,141,196,50,199,6,111,103,207,136,90,253,2,218,84,150,191,222,40,0],[160,68,226,216,228,251,200,128,183,129,191,190,61,165,153,127,206,178,129,208,179,201,118,24,231,116,183,5,84,244,55,137,70,0],[160,53,253,129,135,137,7,110,91,48,159,136,47,210,40,105,124,20,137,53,163,88,15,219,11,222,189,127,93,212,239,229,80,0],[160,80,196,130,226,110,59,147,107,181,45,5,32,36,0,237,119,119,241,111,26,118,253,135,226,12,157,195,107,246,156,102,70,0],[160,97,63,230,41,76,222,85,238,51,105,73,255,26,35,32,204,38,127,237,83,222,99,57,216,142,26,203,127,252,16,25,160,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,10,11,149,12,142,202,194,193,83,24,24,104,171,96,161,219,119,65,137,93,44,91,87,80,60,110,159,30,86,188,100,10,160,39,121,230,39,167,161,129,53,122,169,245,140,52,23,2,36,165,188,119,4,45,196,106,160,65,112,91,107,79,132,116,69,160,88,185,52,166,252,165,200,178,180,95,208,36,154,103,209,50,6,89,195,66,174,93,158,61,84,76,85,250,207,133,47,240,160,213,56,164,23,6,58,156,182,33,182,7,204,68,61,175,98,92,118,160,197,33,115,111,122,107,128,91,161,33,6,92,45,160,202,229,249,81,1,238,228,32,21,81,101,141,32,137,53,56,45,123,217,147,25,161,92,21,136,222,179,159,179,72,221,134,160,201,122,133,107,231,72,116,35,25,99,12,164,48,114,64,245,167,84,164,45,115,146,165,202,133,239,107,149,81,13,134,245,160,87,74,180,16,9,104,174,153,216,77,218,72,245,5,40,122,105,82,214,193,144,67,110,184,80,173,207,63,61,132,109,190,160,166,32,30,7,57,227,117,143,123,252,126,139,162,83,233,9,244,31,101,60,140,116,90,216,231,11,180,90,7,219,55,197,160,154,7,28,59,219,138,240,13,116,245,19,62,193,183,80,141,59,142,71,8,159,225,139,241,102,204,162,22,53,83,177,27,160,66,157,164,229,190,190,234,127,138,65,178,206,129,97,252,116,91,153,125,45,178,214,153,145,25,34,42,100,35,67,168,163,160,189,109,204,118,60,183,213,130,243,213,244,177,200,6,208,183,250,103,85,108,253,44,119,226,37,78,5,61,255,98,56,43,160,226,205,145,71,162,229,17,220,159,79,102,59,146,46,141,196,50,199,6,111,103,207,136,90,253,2,218,84,150,191,222,40,160,68,226,216,228,251,200,128,183,129,191,190,61,165,153,127,206,178,129,208,179,201,118,24,231,116,183,5,84,244,55,137,70,160,53,253,129,135,137,7,110,91,48,159,136,47,210,40,105,124,20,137,53,163,88,15,219,11,222,189,127,93,212,239,229,80,160,80,196,130,226,110,59,147,107,181,45,5,32,36,0,237,119,119,241,111,26,118,253,135,226,12,157,195,107,246,156,102,70,160,97,63,230,41,76,222,85,238,51,105,73,255,26,35,32,204,38,127,237,83,222,99,57,216,142,26,203,127,252,16,25,160,128],[249,2,17,160,10,11,149,12,142,202,194,193,83,24,24,104,171,96,161,219,119,65,137,93,44,91,87,80,60,110,159,30,86,188,100,10,160,39,121,230,39,167,161,129,53,122,169,245,140,52,23,2,36,165,188,119,4,45,196,106,160,65,112,91,107,79,132,116,69,160,88,185,52,166,252,165,200,178,180,95,208,36,154,103,209,50,6,89,195,66,174,93,158,61,84,76,85,250,207,133,47,240,160,213,56,164,23,6,58,156,182,33,182,7,204,68,61,175,98,92,118,160,197,33,115,111,122,107,128,91,161,33,6,92,45,160,202,229,249,81,1,238,228,32,21,81,101,141,32,137,53,56,45,123,217,147,25,161,92,21,136,222,179,159,179,72,221,134,160,201,122,133,107,231,72,116,35,25,99,12,164,48,114,64,245,167,84,164,45,115,146,165,202,133,239,107,149,81,13,134,245,160,87,74,180,16,9,104,174,153,216,77,218,72,245,5,40,122,105,82,214,193,144,67,110,184,80,173,207,63,61,132,109,190,160,166,32,30,7,57,227,117,143,123,252,126,139,162,83,233,9,244,31,101,60,140,116,90,216,231,11,180,90,7,219,55,197,160,154,7,28,59,219,138,240,13,116,245,19,62,193,183,80,141,59,142,71,8,159,225,139,241,102,204,162,22,53,83,177,27,160,66,157,164,229,190,190,234,127,138,65,178,206,129,97,252,116,91,153,125,45,178,214,153,145,25,34,42,100,35,67,168,163,160,189,109,204,118,60,183,213,130,243,213,244,177,200,6,208,183,250,103,85,108,253,44,119,226,37,78,5,61,255,98,56,43,160,136,206,75,241,0,165,169,149,117,68,90,58,147,15,137,166,35,167,185,73,111,111,1,1,224,141,52,122,148,13,249,4,160,68,226,216,228,251,200,128,183,129,191,190,61,165,153,127,206,178,129,208,179,201,118,24,231,116,183,5,84,244,55,137,70,160,53,253,129,135,137,7,110,91,48,159,136,47,210,40,105,124,20,137,53,163,88,15,219,11,222,189,127,93,212,239,229,80,160,80,196,130,226,110,59,147,107,181,45,5,32,36,0,237,119,119,241,111,26,118,253,135,226,12,157,195,107,246,156,102,70,160,97,63,230,41,76,222,85,238,51,105,73,255,26,35,32,204,38,127,237,83,222,99,57,216,142,26,203,127,252,16,25,160,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[248,113],[248,113]]}},"account":null,"storage":null,"values":[[160,10,104,121,120,96,6,142,94,79,164,31,129,20,73,196,58,151,195,222,45,231,182,131,149,29,180,140,172,105,8,70,142,0],[160,60,80,140,101,244,4,77,149,17,207,109,243,185,27,241,96,205,177,239,22,0,195,169,22,184,150,243,12,212,246,2,222,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,43,18,36,196,118,46,248,92,235,12,107,111,221,183,28,61,72,129,61,66,149,22,75,46,79,128,52,90,28,242,79,159,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,249,11,221,110,180,103,29,12,225,173,122,7,115,205,15,36,44,225,3,76,172,102,80,84,169,252,251,117,62,71,3,220,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,113,160,60,80,140,101,244,4,77,149,17,207,109,243,185,27,241,96,205,177,239,22,0,195,169,22,184,150,243,12,212,246,2,222,128,128,128,160,43,18,36,196,118,46,248,92,235,12,107,111,221,183,28,61,72,129,61,66,149,22,75,46,79,128,52,90,28,242,79,159,128,128,128,160,249,11,221,110,180,103,29,12,225,173,122,7,115,205,15,36,44,225,3,76,172,102,80,84,169,252,251,117,62,71,3,220,128,128,128,128,128,128,128,128],[248,113,160,60,80,140,101,244,4,77,149,17,207,109,243,185,27,241,96,205,177,239,22,0,195,169,22,184,150,243,12,212,246,2,222,128,128,128,160,10,104,121,120,96,6,142,94,79,164,31,129,20,73,196,58,151,195,222,45,231,182,131,149,29,180,140,172,105,8,70,142,128,128,128,160,249,11,221,110,180,103,29,12,225,173,122,7,115,205,15,36,44,225,3,76,172,102,80,84,169,252,251,117,62,71,3,220,128,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[226]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,133,134,90,223,35,73,209,110,1,223,227,204,245,218,138,192,201,42,56,120,124,233,147,37,210,59,140,211,26,157,153,76,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,228,109,34,102,28,235,59,123,49,11,58,169,170,107,94,136,43,144,138,26,216,79,148,120,25,223,117,221,172,143,191,144,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,40,175,194,55,133,111,153,12,72,141,81,152,48,181,135,221,4,182,4,94,221,55,10,244,161,19,55,119,145,105,0,224,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,8,176,198,35,154,142,101,60,122,190,28,220,186,172,13,41,87,208,78,180,0,170,50,74,42,254,1,175,135,116,210,128,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,239,120,20,4,145,92,63,196,44,93,176,216,52,56,52,94,47,191,206,67,77,134,250,212,78,119,132,71,197,32,248,229,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,160,228,109,34,102,28,235,59,123,49,11,58,169,170,107,94,136,43,144,138,26,216,79,148,120,25,223,117,221,172,143,191,144,128,128,128,128,160,40,175,194,55,133,111,153,12,72,141,81,152,48,181,135,221,4,182,4,94,221,55,10,244,161,19,55,119,145,105,0,224,128,128,128,128],[248,81,128,128,128,128,128,128,128,160,133,134,90,223,35,73,209,110,1,223,227,204,245,218,138,192,201,42,56,120,124,233,147,37,210,59,140,211,26,157,153,76,128,128,128,128,160,40,175,194,55,133,111,153,12,72,141,81,152,48,181,135,221,4,182,4,94,221,55,10,244,161,19,55,119,145,105,0,224,128,128,128,128],[226,23,160,8,176,198,35,154,142,101,60,122,190,28,220,186,172,13,41,87,208,78,180,0,170,50,74,42,254,1,175,135,116,210,128],[226,23,160,239,120,20,4,145,92,63,196,44,93,176,216,52,56,52,94,47,191,206,67,77,134,250,212,78,119,132,71,197,32,248,229]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,166,68],"key":[171,71,114,101,111,62,204,197,79,253,187,249,55,237,203,119,129,118,111,30,207,108,4,216,19,202,228,181,220,226,52,159],"list_rlp_bytes":[[227],[224]],"value_rlp_bytes":[[131],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[158,50,101,111,62,204,197,79,253,187,249,55,237,203,119,129,118,111,30,207,108,4,216,19,202,228,181,220,226,52,159,0,0,0],[130,2,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[158,50,101,111,62,204,197,79,253,187,249,55,237,203,119,129,118,111,30,207,108,4,216,19,202,228,181,220,226,52,159,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[227,158,50,101,111,62,204,197,79,253,187,249,55,237,203,119,129,118,111,30,207,108,4,216,19,202,228,181,220,226,52,159,131,130,2,133],[224,158,50,101,111,62,204,197,79,253,187,249,55,237,203,119,129,118,111,30,207,108,4,216,19,202,228,181,220,226,52,159,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,166,68]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ExtensionThreeKeyBytes.json b/zkevm-circuits/src/mpt_circuit/tests/ExtensionThreeKeyBytes.json new file mode 100644 index 0000000000..fee3f5e395 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ExtensionThreeKeyBytes.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,83,105,177,251,235,15,239,220,202,145,227,144,20,223,4,227,242,63,180,249,236,25,194,148,197,107,54,188,205,55,119,222,0],[160,252,38,212,161,172,30,11,77,70,125,110,67,186,200,144,232,244,164,160,205,108,72,253,231,32,171,207,102,42,108,244,252,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,19,161,10,168,22,122,91,138,200,34,215,117,180,51,103,225,91,180,212,115,139,123,14,139,207,0,28,234,124,113,224,17,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,114,226,214,239,95,248,72,111,193,223,222,87,60,8,216,29,250,120,11,136,184,173,34,247,68,216,8,209,252,230,50,127,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,114,226,214,239,95,248,72,111,193,223,222,87,60,8,216,29,250,120,11,136,184,173,34,247,68,216,8,209,252,230,50,127,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,19,161,10,168,22,122,91,138,200,34,215,117,180,51,103,225,91,180,212,115,139,123,14,139,207,0,28,234,124,113,224,17,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,193,229,122,223,56,21,165,220,23,154,66,11,35,41,245,86,159,162,204,26,42,204,55,71,98,85,114,50,145,0,196,78,0],[160,66,240,98,61,241,242,157,237,39,164,122,213,215,18,26,202,21,217,180,126,117,207,35,155,26,97,204,152,161,0,78,246,0],[160,19,69,90,132,146,187,236,158,36,58,184,181,96,188,241,191,155,122,8,126,154,234,8,5,32,239,121,45,22,27,66,143,0],[160,47,185,68,149,137,218,55,101,103,197,195,184,106,222,107,209,67,160,23,166,157,52,240,182,60,159,73,148,167,104,13,7,0],[160,244,160,241,236,24,57,138,36,0,22,132,92,91,94,125,202,140,163,73,229,1,41,157,32,5,123,55,158,234,91,249,195,0],[160,118,94,17,19,255,147,54,185,4,181,29,153,10,16,53,77,71,153,38,142,114,26,112,56,213,151,28,158,89,223,96,110,0],[160,108,254,116,168,234,237,32,178,44,26,227,230,237,213,153,173,115,3,166,86,147,197,152,234,91,61,240,167,106,93,159,94,0],[160,77,197,98,247,214,30,52,52,32,140,106,187,222,88,245,219,38,99,55,56,246,71,17,158,254,125,15,194,203,19,237,194,0],[160,170,180,111,61,10,39,190,229,140,95,123,152,78,5,37,250,192,19,101,120,52,60,247,127,112,245,31,63,219,185,202,213,0],[160,232,46,163,88,249,212,62,121,89,57,230,54,194,100,250,115,76,172,138,139,99,75,102,148,50,121,60,93,158,33,25,31,0],[160,51,82,30,58,150,70,180,46,75,251,104,152,115,51,28,217,87,74,14,236,225,37,88,210,85,83,244,1,51,255,150,148,0],[160,6,189,10,143,149,52,91,233,50,15,171,119,240,36,208,26,108,75,237,220,100,206,240,136,241,8,109,186,48,41,218,38,0],[160,3,113,103,151,120,194,148,162,225,165,199,208,40,79,8,217,139,149,90,40,94,93,31,42,189,178,49,52,70,17,191,20,0],[160,132,198,11,55,228,143,69,71,56,22,104,55,135,230,141,36,124,243,233,65,228,62,85,32,62,199,21,95,133,180,196,44,0],[160,84,249,65,98,38,104,14,171,98,230,102,252,103,99,45,47,8,255,176,3,158,120,88,105,206,191,195,26,16,131,42,62,0],[160,206,203,127,59,8,54,30,157,29,109,190,245,88,248,18,162,22,220,31,90,194,248,20,184,222,48,96,23,174,255,10,233,0],[160,251,56,155,126,225,0,186,248,122,241,244,24,87,111,250,152,217,2,96,109,203,43,31,3,248,247,26,218,145,202,36,240,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,66,240,98,61,241,242,157,237,39,164,122,213,215,18,26,202,21,217,180,126,117,207,35,155,26,97,204,152,161,0,78,246,160,19,69,90,132,146,187,236,158,36,58,184,181,96,188,241,191,155,122,8,126,154,234,8,5,32,239,121,45,22,27,66,143,160,47,185,68,149,137,218,55,101,103,197,195,184,106,222,107,209,67,160,23,166,157,52,240,182,60,159,73,148,167,104,13,7,160,244,160,241,236,24,57,138,36,0,22,132,92,91,94,125,202,140,163,73,229,1,41,157,32,5,123,55,158,234,91,249,195,160,118,94,17,19,255,147,54,185,4,181,29,153,10,16,53,77,71,153,38,142,114,26,112,56,213,151,28,158,89,223,96,110,160,108,254,116,168,234,237,32,178,44,26,227,230,237,213,153,173,115,3,166,86,147,197,152,234,91,61,240,167,106,93,159,94,160,77,197,98,247,214,30,52,52,32,140,106,187,222,88,245,219,38,99,55,56,246,71,17,158,254,125,15,194,203,19,237,194,160,170,180,111,61,10,39,190,229,140,95,123,152,78,5,37,250,192,19,101,120,52,60,247,127,112,245,31,63,219,185,202,213,160,232,46,163,88,249,212,62,121,89,57,230,54,194,100,250,115,76,172,138,139,99,75,102,148,50,121,60,93,158,33,25,31,160,51,82,30,58,150,70,180,46,75,251,104,152,115,51,28,217,87,74,14,236,225,37,88,210,85,83,244,1,51,255,150,148,160,6,189,10,143,149,52,91,233,50,15,171,119,240,36,208,26,108,75,237,220,100,206,240,136,241,8,109,186,48,41,218,38,160,3,113,103,151,120,194,148,162,225,165,199,208,40,79,8,217,139,149,90,40,94,93,31,42,189,178,49,52,70,17,191,20,160,132,198,11,55,228,143,69,71,56,22,104,55,135,230,141,36,124,243,233,65,228,62,85,32,62,199,21,95,133,180,196,44,160,84,249,65,98,38,104,14,171,98,230,102,252,103,99,45,47,8,255,176,3,158,120,88,105,206,191,195,26,16,131,42,62,160,206,203,127,59,8,54,30,157,29,109,190,245,88,248,18,162,22,220,31,90,194,248,20,184,222,48,96,23,174,255,10,233,160,251,56,155,126,225,0,186,248,122,241,244,24,87,111,250,152,217,2,96,109,203,43,31,3,248,247,26,218,145,202,36,240,128],[249,2,17,160,66,240,98,61,241,242,157,237,39,164,122,213,215,18,26,202,21,217,180,126,117,207,35,155,26,97,204,152,161,0,78,246,160,19,69,90,132,146,187,236,158,36,58,184,181,96,188,241,191,155,122,8,126,154,234,8,5,32,239,121,45,22,27,66,143,160,47,185,68,149,137,218,55,101,103,197,195,184,106,222,107,209,67,160,23,166,157,52,240,182,60,159,73,148,167,104,13,7,160,244,160,241,236,24,57,138,36,0,22,132,92,91,94,125,202,140,163,73,229,1,41,157,32,5,123,55,158,234,91,249,195,160,193,229,122,223,56,21,165,220,23,154,66,11,35,41,245,86,159,162,204,26,42,204,55,71,98,85,114,50,145,0,196,78,160,108,254,116,168,234,237,32,178,44,26,227,230,237,213,153,173,115,3,166,86,147,197,152,234,91,61,240,167,106,93,159,94,160,77,197,98,247,214,30,52,52,32,140,106,187,222,88,245,219,38,99,55,56,246,71,17,158,254,125,15,194,203,19,237,194,160,170,180,111,61,10,39,190,229,140,95,123,152,78,5,37,250,192,19,101,120,52,60,247,127,112,245,31,63,219,185,202,213,160,232,46,163,88,249,212,62,121,89,57,230,54,194,100,250,115,76,172,138,139,99,75,102,148,50,121,60,93,158,33,25,31,160,51,82,30,58,150,70,180,46,75,251,104,152,115,51,28,217,87,74,14,236,225,37,88,210,85,83,244,1,51,255,150,148,160,6,189,10,143,149,52,91,233,50,15,171,119,240,36,208,26,108,75,237,220,100,206,240,136,241,8,109,186,48,41,218,38,160,3,113,103,151,120,194,148,162,225,165,199,208,40,79,8,217,139,149,90,40,94,93,31,42,189,178,49,52,70,17,191,20,160,132,198,11,55,228,143,69,71,56,22,104,55,135,230,141,36,124,243,233,65,228,62,85,32,62,199,21,95,133,180,196,44,160,84,249,65,98,38,104,14,171,98,230,102,252,103,99,45,47,8,255,176,3,158,120,88,105,206,191,195,26,16,131,42,62,160,206,203,127,59,8,54,30,157,29,109,190,245,88,248,18,162,22,220,31,90,194,248,20,184,222,48,96,23,174,255,10,233,160,251,56,155,126,225,0,186,248,122,241,244,24,87,111,250,152,217,2,96,109,203,43,31,3,248,247,26,218,145,202,36,240,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,92,79,210,183,49,95,158,225,32,208,230,250,3,8,83,216,9,214,118,158,66,8,25,49,138,26,18,249,85,111,250,35,0],[160,136,4,41,90,85,27,225,197,211,59,225,227,173,235,200,235,183,14,65,182,140,144,142,56,198,178,215,218,180,64,84,49,0],[160,158,225,7,253,217,103,211,242,222,245,243,138,193,19,86,106,155,53,208,185,49,111,121,6,62,46,93,50,169,188,141,239,0],[160,65,122,22,148,145,130,179,40,145,238,10,229,242,111,243,207,243,159,107,161,250,40,65,231,62,82,118,47,189,134,203,164,0],[160,1,140,31,59,76,219,194,223,240,231,225,203,205,113,59,250,31,160,57,21,16,151,215,129,17,21,211,183,59,245,155,81,0],[160,8,11,57,196,45,104,162,228,40,170,39,231,62,160,132,9,126,86,69,85,166,79,187,192,174,112,230,112,56,167,30,181,0],[160,48,88,72,65,22,112,111,112,6,149,67,243,3,88,70,185,219,36,163,210,202,16,152,247,230,13,170,137,81,249,132,59,0],[160,39,188,27,158,134,197,235,174,57,146,106,34,202,248,70,205,29,149,253,65,99,234,191,19,135,182,99,72,121,119,33,26,0],[160,253,32,84,75,184,201,8,54,117,74,68,160,84,238,208,49,73,37,221,87,129,105,126,5,46,8,184,38,211,163,215,154,0],[160,60,19,209,101,251,82,99,8,131,75,204,81,36,219,220,129,132,137,139,198,75,4,62,15,46,84,189,131,141,195,233,25,0],[160,183,160,32,14,0,238,178,163,239,155,151,15,161,58,159,0,150,148,252,249,33,73,133,167,11,72,228,184,230,89,49,237,0],[160,15,199,201,157,197,86,20,27,131,182,205,11,110,178,247,8,42,36,103,132,37,185,157,100,195,209,128,34,44,74,179,42,0],[160,221,193,188,193,15,68,50,45,188,169,173,7,135,8,249,152,229,211,151,109,239,52,63,40,70,232,60,219,197,127,213,145,0],[160,230,118,218,16,99,232,81,91,243,55,112,148,9,164,226,121,167,121,124,137,244,181,16,19,239,196,155,87,96,66,54,71,0],[160,184,144,225,138,173,21,9,23,80,46,45,182,3,213,232,17,93,48,224,188,58,165,137,167,211,188,115,107,85,134,217,147,0],[160,57,145,118,123,14,182,158,87,154,186,121,66,150,246,124,138,253,142,132,116,35,244,62,83,202,105,178,4,152,228,211,177,0],[160,133,178,128,172,81,77,211,127,227,101,138,244,183,104,180,75,26,47,117,202,121,146,47,8,233,100,217,138,59,69,198,76,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,136,4,41,90,85,27,225,197,211,59,225,227,173,235,200,235,183,14,65,182,140,144,142,56,198,178,215,218,180,64,84,49,160,158,225,7,253,217,103,211,242,222,245,243,138,193,19,86,106,155,53,208,185,49,111,121,6,62,46,93,50,169,188,141,239,160,65,122,22,148,145,130,179,40,145,238,10,229,242,111,243,207,243,159,107,161,250,40,65,231,62,82,118,47,189,134,203,164,160,1,140,31,59,76,219,194,223,240,231,225,203,205,113,59,250,31,160,57,21,16,151,215,129,17,21,211,183,59,245,155,81,160,8,11,57,196,45,104,162,228,40,170,39,231,62,160,132,9,126,86,69,85,166,79,187,192,174,112,230,112,56,167,30,181,160,48,88,72,65,22,112,111,112,6,149,67,243,3,88,70,185,219,36,163,210,202,16,152,247,230,13,170,137,81,249,132,59,160,39,188,27,158,134,197,235,174,57,146,106,34,202,248,70,205,29,149,253,65,99,234,191,19,135,182,99,72,121,119,33,26,160,253,32,84,75,184,201,8,54,117,74,68,160,84,238,208,49,73,37,221,87,129,105,126,5,46,8,184,38,211,163,215,154,160,60,19,209,101,251,82,99,8,131,75,204,81,36,219,220,129,132,137,139,198,75,4,62,15,46,84,189,131,141,195,233,25,160,183,160,32,14,0,238,178,163,239,155,151,15,161,58,159,0,150,148,252,249,33,73,133,167,11,72,228,184,230,89,49,237,160,15,199,201,157,197,86,20,27,131,182,205,11,110,178,247,8,42,36,103,132,37,185,157,100,195,209,128,34,44,74,179,42,160,221,193,188,193,15,68,50,45,188,169,173,7,135,8,249,152,229,211,151,109,239,52,63,40,70,232,60,219,197,127,213,145,160,230,118,218,16,99,232,81,91,243,55,112,148,9,164,226,121,167,121,124,137,244,181,16,19,239,196,155,87,96,66,54,71,160,184,144,225,138,173,21,9,23,80,46,45,182,3,213,232,17,93,48,224,188,58,165,137,167,211,188,115,107,85,134,217,147,160,57,145,118,123,14,182,158,87,154,186,121,66,150,246,124,138,253,142,132,116,35,244,62,83,202,105,178,4,152,228,211,177,160,133,178,128,172,81,77,211,127,227,101,138,244,183,104,180,75,26,47,117,202,121,146,47,8,233,100,217,138,59,69,198,76,128],[249,2,17,160,136,4,41,90,85,27,225,197,211,59,225,227,173,235,200,235,183,14,65,182,140,144,142,56,198,178,215,218,180,64,84,49,160,158,225,7,253,217,103,211,242,222,245,243,138,193,19,86,106,155,53,208,185,49,111,121,6,62,46,93,50,169,188,141,239,160,65,122,22,148,145,130,179,40,145,238,10,229,242,111,243,207,243,159,107,161,250,40,65,231,62,82,118,47,189,134,203,164,160,1,140,31,59,76,219,194,223,240,231,225,203,205,113,59,250,31,160,57,21,16,151,215,129,17,21,211,183,59,245,155,81,160,8,11,57,196,45,104,162,228,40,170,39,231,62,160,132,9,126,86,69,85,166,79,187,192,174,112,230,112,56,167,30,181,160,48,88,72,65,22,112,111,112,6,149,67,243,3,88,70,185,219,36,163,210,202,16,152,247,230,13,170,137,81,249,132,59,160,39,188,27,158,134,197,235,174,57,146,106,34,202,248,70,205,29,149,253,65,99,234,191,19,135,182,99,72,121,119,33,26,160,253,32,84,75,184,201,8,54,117,74,68,160,84,238,208,49,73,37,221,87,129,105,126,5,46,8,184,38,211,163,215,154,160,60,19,209,101,251,82,99,8,131,75,204,81,36,219,220,129,132,137,139,198,75,4,62,15,46,84,189,131,141,195,233,25,160,183,160,32,14,0,238,178,163,239,155,151,15,161,58,159,0,150,148,252,249,33,73,133,167,11,72,228,184,230,89,49,237,160,15,199,201,157,197,86,20,27,131,182,205,11,110,178,247,8,42,36,103,132,37,185,157,100,195,209,128,34,44,74,179,42,160,221,193,188,193,15,68,50,45,188,169,173,7,135,8,249,152,229,211,151,109,239,52,63,40,70,232,60,219,197,127,213,145,160,92,79,210,183,49,95,158,225,32,208,230,250,3,8,83,216,9,214,118,158,66,8,25,49,138,26,18,249,85,111,250,35,160,184,144,225,138,173,21,9,23,80,46,45,182,3,213,232,17,93,48,224,188,58,165,137,167,211,188,115,107,85,134,217,147,160,57,145,118,123,14,182,158,87,154,186,121,66,150,246,124,138,253,142,132,116,35,244,62,83,202,105,178,4,152,228,211,177,160,133,178,128,172,81,77,211,127,227,101,138,244,183,104,180,75,26,47,117,202,121,146,47,8,233,100,217,138,59,69,198,76,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,3,155,233,83,164,88,127,201,188,244,203,47,41,245,247,88,254,119,117,12,127,3,141,241,172,160,216,94,194,107,97,161,0],[160,80,111,39,192,57,71,205,150,91,47,32,151,87,105,195,226,11,169,139,170,26,65,212,78,175,51,167,239,15,49,146,20,0],[160,102,23,150,62,164,75,45,71,20,168,89,176,120,26,23,82,171,202,18,179,219,49,17,71,12,225,2,153,34,15,26,154,0],[160,155,204,180,22,163,205,99,47,25,99,66,241,239,105,167,143,157,217,251,219,138,137,183,72,18,180,142,42,224,32,220,234,0],[160,212,159,163,119,133,85,171,231,171,237,204,39,14,195,1,188,223,96,118,69,213,201,22,43,38,57,37,138,60,114,146,89,0],[160,67,156,214,40,57,148,31,139,227,148,165,77,54,40,164,62,104,94,217,161,245,146,252,12,193,6,14,98,180,133,155,24,0],[160,179,58,136,222,225,237,223,230,196,104,203,56,247,214,255,170,177,216,117,50,152,55,2,77,33,28,186,78,228,160,58,148,0],[160,91,178,80,246,177,91,95,45,0,214,11,208,168,155,186,21,34,85,199,116,77,29,103,78,152,222,138,137,40,88,201,43,0],[160,180,43,103,10,57,121,30,178,244,7,237,110,62,37,10,143,34,146,133,150,119,77,77,91,186,34,25,117,68,155,162,125,0],[160,2,138,96,230,64,24,164,74,12,96,210,155,221,197,71,147,55,187,54,143,7,201,27,80,163,175,249,156,85,100,12,167,0],[160,50,118,206,63,182,162,229,165,133,48,187,125,118,22,57,70,242,179,194,238,215,206,193,208,134,170,64,153,91,172,74,118,0],[160,240,213,192,63,242,149,234,58,181,32,128,190,172,96,114,121,240,184,248,99,129,31,19,145,4,103,189,206,150,170,114,132,0],[160,119,167,217,52,160,223,96,163,162,224,42,13,24,103,26,23,156,176,188,122,247,130,13,125,223,127,104,240,90,201,130,104,0],[160,69,89,27,67,248,61,252,230,190,129,90,230,245,138,209,87,25,197,21,6,45,92,164,204,201,68,249,211,14,32,152,173,0],[160,255,59,113,110,6,15,125,224,56,75,79,73,102,175,7,38,47,253,41,54,250,79,142,222,3,255,79,39,248,49,227,187,0],[160,137,166,168,139,215,143,200,226,94,38,139,82,160,24,69,124,78,116,14,172,208,128,115,160,63,153,180,229,177,232,63,84,0],[160,208,114,30,38,51,186,56,145,183,87,95,241,216,101,106,228,187,156,123,239,90,188,185,255,48,137,149,203,106,17,170,65,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,80,111,39,192,57,71,205,150,91,47,32,151,87,105,195,226,11,169,139,170,26,65,212,78,175,51,167,239,15,49,146,20,160,102,23,150,62,164,75,45,71,20,168,89,176,120,26,23,82,171,202,18,179,219,49,17,71,12,225,2,153,34,15,26,154,160,155,204,180,22,163,205,99,47,25,99,66,241,239,105,167,143,157,217,251,219,138,137,183,72,18,180,142,42,224,32,220,234,160,212,159,163,119,133,85,171,231,171,237,204,39,14,195,1,188,223,96,118,69,213,201,22,43,38,57,37,138,60,114,146,89,160,67,156,214,40,57,148,31,139,227,148,165,77,54,40,164,62,104,94,217,161,245,146,252,12,193,6,14,98,180,133,155,24,160,179,58,136,222,225,237,223,230,196,104,203,56,247,214,255,170,177,216,117,50,152,55,2,77,33,28,186,78,228,160,58,148,160,91,178,80,246,177,91,95,45,0,214,11,208,168,155,186,21,34,85,199,116,77,29,103,78,152,222,138,137,40,88,201,43,160,180,43,103,10,57,121,30,178,244,7,237,110,62,37,10,143,34,146,133,150,119,77,77,91,186,34,25,117,68,155,162,125,160,2,138,96,230,64,24,164,74,12,96,210,155,221,197,71,147,55,187,54,143,7,201,27,80,163,175,249,156,85,100,12,167,160,50,118,206,63,182,162,229,165,133,48,187,125,118,22,57,70,242,179,194,238,215,206,193,208,134,170,64,153,91,172,74,118,160,240,213,192,63,242,149,234,58,181,32,128,190,172,96,114,121,240,184,248,99,129,31,19,145,4,103,189,206,150,170,114,132,160,119,167,217,52,160,223,96,163,162,224,42,13,24,103,26,23,156,176,188,122,247,130,13,125,223,127,104,240,90,201,130,104,160,69,89,27,67,248,61,252,230,190,129,90,230,245,138,209,87,25,197,21,6,45,92,164,204,201,68,249,211,14,32,152,173,160,255,59,113,110,6,15,125,224,56,75,79,73,102,175,7,38,47,253,41,54,250,79,142,222,3,255,79,39,248,49,227,187,160,137,166,168,139,215,143,200,226,94,38,139,82,160,24,69,124,78,116,14,172,208,128,115,160,63,153,180,229,177,232,63,84,160,208,114,30,38,51,186,56,145,183,87,95,241,216,101,106,228,187,156,123,239,90,188,185,255,48,137,149,203,106,17,170,65,128],[249,2,17,160,3,155,233,83,164,88,127,201,188,244,203,47,41,245,247,88,254,119,117,12,127,3,141,241,172,160,216,94,194,107,97,161,160,102,23,150,62,164,75,45,71,20,168,89,176,120,26,23,82,171,202,18,179,219,49,17,71,12,225,2,153,34,15,26,154,160,155,204,180,22,163,205,99,47,25,99,66,241,239,105,167,143,157,217,251,219,138,137,183,72,18,180,142,42,224,32,220,234,160,212,159,163,119,133,85,171,231,171,237,204,39,14,195,1,188,223,96,118,69,213,201,22,43,38,57,37,138,60,114,146,89,160,67,156,214,40,57,148,31,139,227,148,165,77,54,40,164,62,104,94,217,161,245,146,252,12,193,6,14,98,180,133,155,24,160,179,58,136,222,225,237,223,230,196,104,203,56,247,214,255,170,177,216,117,50,152,55,2,77,33,28,186,78,228,160,58,148,160,91,178,80,246,177,91,95,45,0,214,11,208,168,155,186,21,34,85,199,116,77,29,103,78,152,222,138,137,40,88,201,43,160,180,43,103,10,57,121,30,178,244,7,237,110,62,37,10,143,34,146,133,150,119,77,77,91,186,34,25,117,68,155,162,125,160,2,138,96,230,64,24,164,74,12,96,210,155,221,197,71,147,55,187,54,143,7,201,27,80,163,175,249,156,85,100,12,167,160,50,118,206,63,182,162,229,165,133,48,187,125,118,22,57,70,242,179,194,238,215,206,193,208,134,170,64,153,91,172,74,118,160,240,213,192,63,242,149,234,58,181,32,128,190,172,96,114,121,240,184,248,99,129,31,19,145,4,103,189,206,150,170,114,132,160,119,167,217,52,160,223,96,163,162,224,42,13,24,103,26,23,156,176,188,122,247,130,13,125,223,127,104,240,90,201,130,104,160,69,89,27,67,248,61,252,230,190,129,90,230,245,138,209,87,25,197,21,6,45,92,164,204,201,68,249,211,14,32,152,173,160,255,59,113,110,6,15,125,224,56,75,79,73,102,175,7,38,47,253,41,54,250,79,142,222,3,255,79,39,248,49,227,187,160,137,166,168,139,215,143,200,226,94,38,139,82,160,24,69,124,78,116,14,172,208,128,115,160,63,153,180,229,177,232,63,84,160,208,114,30,38,51,186,56,145,183,87,95,241,216,101,106,228,187,156,123,239,90,188,185,255,48,137,149,203,106,17,170,65,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,36,192,217,188,159,110,176,125,244,57,86,134,94,233,33,102,98,135,70,93,220,68,179,212,65,6,57,250,85,211,70,69,0],[160,207,100,82,234,240,214,71,33,36,108,182,148,0,137,24,213,134,49,150,146,173,2,242,86,186,245,81,241,241,105,20,60,0],[160,149,140,167,213,25,80,78,203,127,44,128,235,77,210,68,37,233,208,178,22,240,207,35,127,160,54,87,142,208,37,32,39,0],[160,151,88,191,251,143,169,46,178,50,39,169,141,58,141,33,163,20,130,170,49,142,70,52,179,152,195,221,17,243,92,181,90,0],[160,185,93,236,74,50,12,95,206,176,169,166,93,83,18,190,75,217,77,233,36,27,230,165,0,13,169,32,2,9,104,238,34,0],[160,98,30,149,78,245,146,159,65,219,125,69,145,57,144,162,141,126,153,88,198,5,182,7,124,151,248,216,153,186,51,40,66,0],[160,94,115,232,35,140,182,181,11,110,16,58,178,154,153,208,158,218,240,173,247,31,217,75,135,83,0,170,164,9,36,91,183,0],[160,138,63,191,242,211,182,153,129,220,138,117,201,142,16,233,164,238,218,84,169,79,23,65,79,67,170,172,146,139,177,238,202,0],[160,16,2,8,30,155,41,188,123,122,224,85,0,17,110,233,73,61,62,175,252,198,232,91,7,128,189,234,80,36,46,52,177,0],[160,20,147,51,210,76,175,132,196,10,214,184,171,69,62,121,147,21,92,93,214,241,73,0,86,78,59,173,127,40,164,48,187,0],[160,245,56,39,186,240,101,101,19,193,46,125,76,220,141,71,81,227,251,172,181,122,202,119,157,218,236,1,126,11,217,127,80,0],[160,51,128,194,1,20,27,20,244,154,228,28,39,230,218,24,255,75,177,35,86,211,111,177,151,116,26,179,27,21,111,13,197,0],[160,37,68,106,68,211,6,157,225,103,91,18,140,149,194,233,182,89,223,42,131,185,253,100,0,93,59,133,247,159,230,208,249,0],[160,64,225,216,226,0,17,1,206,118,156,228,82,77,166,163,145,94,38,52,70,223,208,141,171,194,90,140,200,152,44,253,172,0],[160,146,48,234,62,172,183,213,148,172,44,120,127,193,196,230,222,182,183,162,67,227,29,224,42,225,215,6,243,194,31,223,9,0],[160,29,11,223,38,76,40,205,217,156,108,62,84,91,141,101,59,85,37,249,193,154,235,45,223,208,205,19,31,66,181,104,10,0],[160,111,99,254,106,175,247,0,21,118,230,107,204,136,13,41,195,78,66,12,246,129,239,16,117,87,124,21,105,109,140,20,33,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,207,100,82,234,240,214,71,33,36,108,182,148,0,137,24,213,134,49,150,146,173,2,242,86,186,245,81,241,241,105,20,60,160,149,140,167,213,25,80,78,203,127,44,128,235,77,210,68,37,233,208,178,22,240,207,35,127,160,54,87,142,208,37,32,39,160,151,88,191,251,143,169,46,178,50,39,169,141,58,141,33,163,20,130,170,49,142,70,52,179,152,195,221,17,243,92,181,90,160,185,93,236,74,50,12,95,206,176,169,166,93,83,18,190,75,217,77,233,36,27,230,165,0,13,169,32,2,9,104,238,34,160,98,30,149,78,245,146,159,65,219,125,69,145,57,144,162,141,126,153,88,198,5,182,7,124,151,248,216,153,186,51,40,66,160,94,115,232,35,140,182,181,11,110,16,58,178,154,153,208,158,218,240,173,247,31,217,75,135,83,0,170,164,9,36,91,183,160,138,63,191,242,211,182,153,129,220,138,117,201,142,16,233,164,238,218,84,169,79,23,65,79,67,170,172,146,139,177,238,202,160,16,2,8,30,155,41,188,123,122,224,85,0,17,110,233,73,61,62,175,252,198,232,91,7,128,189,234,80,36,46,52,177,160,20,147,51,210,76,175,132,196,10,214,184,171,69,62,121,147,21,92,93,214,241,73,0,86,78,59,173,127,40,164,48,187,160,245,56,39,186,240,101,101,19,193,46,125,76,220,141,71,81,227,251,172,181,122,202,119,157,218,236,1,126,11,217,127,80,160,51,128,194,1,20,27,20,244,154,228,28,39,230,218,24,255,75,177,35,86,211,111,177,151,116,26,179,27,21,111,13,197,160,37,68,106,68,211,6,157,225,103,91,18,140,149,194,233,182,89,223,42,131,185,253,100,0,93,59,133,247,159,230,208,249,160,64,225,216,226,0,17,1,206,118,156,228,82,77,166,163,145,94,38,52,70,223,208,141,171,194,90,140,200,152,44,253,172,160,146,48,234,62,172,183,213,148,172,44,120,127,193,196,230,222,182,183,162,67,227,29,224,42,225,215,6,243,194,31,223,9,160,29,11,223,38,76,40,205,217,156,108,62,84,91,141,101,59,85,37,249,193,154,235,45,223,208,205,19,31,66,181,104,10,160,111,99,254,106,175,247,0,21,118,230,107,204,136,13,41,195,78,66,12,246,129,239,16,117,87,124,21,105,109,140,20,33,128],[249,2,17,160,207,100,82,234,240,214,71,33,36,108,182,148,0,137,24,213,134,49,150,146,173,2,242,86,186,245,81,241,241,105,20,60,160,149,140,167,213,25,80,78,203,127,44,128,235,77,210,68,37,233,208,178,22,240,207,35,127,160,54,87,142,208,37,32,39,160,151,88,191,251,143,169,46,178,50,39,169,141,58,141,33,163,20,130,170,49,142,70,52,179,152,195,221,17,243,92,181,90,160,185,93,236,74,50,12,95,206,176,169,166,93,83,18,190,75,217,77,233,36,27,230,165,0,13,169,32,2,9,104,238,34,160,98,30,149,78,245,146,159,65,219,125,69,145,57,144,162,141,126,153,88,198,5,182,7,124,151,248,216,153,186,51,40,66,160,36,192,217,188,159,110,176,125,244,57,86,134,94,233,33,102,98,135,70,93,220,68,179,212,65,6,57,250,85,211,70,69,160,138,63,191,242,211,182,153,129,220,138,117,201,142,16,233,164,238,218,84,169,79,23,65,79,67,170,172,146,139,177,238,202,160,16,2,8,30,155,41,188,123,122,224,85,0,17,110,233,73,61,62,175,252,198,232,91,7,128,189,234,80,36,46,52,177,160,20,147,51,210,76,175,132,196,10,214,184,171,69,62,121,147,21,92,93,214,241,73,0,86,78,59,173,127,40,164,48,187,160,245,56,39,186,240,101,101,19,193,46,125,76,220,141,71,81,227,251,172,181,122,202,119,157,218,236,1,126,11,217,127,80,160,51,128,194,1,20,27,20,244,154,228,28,39,230,218,24,255,75,177,35,86,211,111,177,151,116,26,179,27,21,111,13,197,160,37,68,106,68,211,6,157,225,103,91,18,140,149,194,233,182,89,223,42,131,185,253,100,0,93,59,133,247,159,230,208,249,160,64,225,216,226,0,17,1,206,118,156,228,82,77,166,163,145,94,38,52,70,223,208,141,171,194,90,140,200,152,44,253,172,160,146,48,234,62,172,183,213,148,172,44,120,127,193,196,230,222,182,183,162,67,227,29,224,42,225,215,6,243,194,31,223,9,160,29,11,223,38,76,40,205,217,156,108,62,84,91,141,101,59,85,37,249,193,154,235,45,223,208,205,19,31,66,181,104,10,160,111,99,254,106,175,247,0,21,118,230,107,204,136,13,41,195,78,66,12,246,129,239,16,117,87,124,21,105,109,140,20,33,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,132,170,48,213,226,220,34,72,51,25,102,112,181,212,72,88,77,71,200,164,207,106,16,128,70,8,182,123,10,111,137,103,0],[160,62,113,94,197,221,22,152,46,12,48,147,231,12,189,10,21,206,96,163,20,65,238,184,127,118,109,39,35,201,195,91,172,0],[160,191,146,88,34,191,196,176,57,3,112,90,110,49,68,9,151,113,76,31,72,21,102,76,18,211,56,223,172,204,184,114,189,0],[160,169,126,69,70,84,63,209,85,155,52,32,238,250,194,147,46,110,181,149,132,98,5,191,249,58,22,210,219,9,219,178,28,0],[160,51,151,215,86,243,99,23,80,178,69,0,75,164,227,250,17,178,74,76,37,240,120,123,75,60,143,66,35,198,104,26,4,0],[160,163,6,25,4,221,176,56,243,208,110,128,195,94,104,191,147,106,206,24,57,218,89,92,12,124,170,101,152,205,12,23,119,0],[160,23,203,16,59,19,233,76,180,193,16,90,174,30,225,54,116,98,180,174,248,175,135,97,242,0,170,247,89,195,240,71,33,0],[160,77,121,20,180,179,21,169,15,79,226,30,227,216,134,163,213,232,155,128,96,198,17,165,171,57,70,20,15,150,179,23,187,0],[160,66,182,224,205,39,14,110,74,120,147,136,237,249,64,91,128,60,150,158,254,168,121,40,18,92,64,111,210,224,46,120,73,0],[160,230,142,17,81,205,141,43,35,4,48,43,137,113,27,125,85,42,95,61,46,149,91,229,165,16,95,184,135,173,155,56,54,0],[160,195,12,148,58,227,59,40,62,89,254,0,122,79,30,35,252,208,111,113,149,50,231,0,95,22,153,90,185,149,148,230,1,0],[160,44,67,113,159,218,49,37,239,229,213,217,202,103,132,11,237,82,182,161,2,116,250,212,160,106,50,56,205,135,16,218,221,0],[160,73,186,184,22,205,182,142,51,119,205,124,165,98,73,85,113,191,176,74,116,27,107,135,140,42,92,51,137,212,43,54,79,0],[160,93,172,77,82,77,96,128,97,103,184,201,247,155,229,151,110,29,236,92,69,206,134,20,240,239,109,169,110,236,171,68,105,0],[160,11,118,56,118,174,197,178,35,145,158,180,175,153,154,76,91,199,91,205,8,149,244,161,232,194,90,114,199,203,46,9,223,0],[160,144,119,154,99,105,202,198,156,82,157,12,252,128,91,254,72,233,56,55,62,250,186,127,40,115,106,100,11,108,155,67,60,0],[160,237,49,197,204,89,159,157,2,84,138,146,251,235,29,165,175,144,247,240,247,87,189,254,253,15,97,255,29,27,86,184,131,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,62,113,94,197,221,22,152,46,12,48,147,231,12,189,10,21,206,96,163,20,65,238,184,127,118,109,39,35,201,195,91,172,160,191,146,88,34,191,196,176,57,3,112,90,110,49,68,9,151,113,76,31,72,21,102,76,18,211,56,223,172,204,184,114,189,160,169,126,69,70,84,63,209,85,155,52,32,238,250,194,147,46,110,181,149,132,98,5,191,249,58,22,210,219,9,219,178,28,160,51,151,215,86,243,99,23,80,178,69,0,75,164,227,250,17,178,74,76,37,240,120,123,75,60,143,66,35,198,104,26,4,160,163,6,25,4,221,176,56,243,208,110,128,195,94,104,191,147,106,206,24,57,218,89,92,12,124,170,101,152,205,12,23,119,160,23,203,16,59,19,233,76,180,193,16,90,174,30,225,54,116,98,180,174,248,175,135,97,242,0,170,247,89,195,240,71,33,160,77,121,20,180,179,21,169,15,79,226,30,227,216,134,163,213,232,155,128,96,198,17,165,171,57,70,20,15,150,179,23,187,160,66,182,224,205,39,14,110,74,120,147,136,237,249,64,91,128,60,150,158,254,168,121,40,18,92,64,111,210,224,46,120,73,160,230,142,17,81,205,141,43,35,4,48,43,137,113,27,125,85,42,95,61,46,149,91,229,165,16,95,184,135,173,155,56,54,160,195,12,148,58,227,59,40,62,89,254,0,122,79,30,35,252,208,111,113,149,50,231,0,95,22,153,90,185,149,148,230,1,160,44,67,113,159,218,49,37,239,229,213,217,202,103,132,11,237,82,182,161,2,116,250,212,160,106,50,56,205,135,16,218,221,160,73,186,184,22,205,182,142,51,119,205,124,165,98,73,85,113,191,176,74,116,27,107,135,140,42,92,51,137,212,43,54,79,160,93,172,77,82,77,96,128,97,103,184,201,247,155,229,151,110,29,236,92,69,206,134,20,240,239,109,169,110,236,171,68,105,160,11,118,56,118,174,197,178,35,145,158,180,175,153,154,76,91,199,91,205,8,149,244,161,232,194,90,114,199,203,46,9,223,160,144,119,154,99,105,202,198,156,82,157,12,252,128,91,254,72,233,56,55,62,250,186,127,40,115,106,100,11,108,155,67,60,160,237,49,197,204,89,159,157,2,84,138,146,251,235,29,165,175,144,247,240,247,87,189,254,253,15,97,255,29,27,86,184,131,128],[249,2,17,160,132,170,48,213,226,220,34,72,51,25,102,112,181,212,72,88,77,71,200,164,207,106,16,128,70,8,182,123,10,111,137,103,160,191,146,88,34,191,196,176,57,3,112,90,110,49,68,9,151,113,76,31,72,21,102,76,18,211,56,223,172,204,184,114,189,160,169,126,69,70,84,63,209,85,155,52,32,238,250,194,147,46,110,181,149,132,98,5,191,249,58,22,210,219,9,219,178,28,160,51,151,215,86,243,99,23,80,178,69,0,75,164,227,250,17,178,74,76,37,240,120,123,75,60,143,66,35,198,104,26,4,160,163,6,25,4,221,176,56,243,208,110,128,195,94,104,191,147,106,206,24,57,218,89,92,12,124,170,101,152,205,12,23,119,160,23,203,16,59,19,233,76,180,193,16,90,174,30,225,54,116,98,180,174,248,175,135,97,242,0,170,247,89,195,240,71,33,160,77,121,20,180,179,21,169,15,79,226,30,227,216,134,163,213,232,155,128,96,198,17,165,171,57,70,20,15,150,179,23,187,160,66,182,224,205,39,14,110,74,120,147,136,237,249,64,91,128,60,150,158,254,168,121,40,18,92,64,111,210,224,46,120,73,160,230,142,17,81,205,141,43,35,4,48,43,137,113,27,125,85,42,95,61,46,149,91,229,165,16,95,184,135,173,155,56,54,160,195,12,148,58,227,59,40,62,89,254,0,122,79,30,35,252,208,111,113,149,50,231,0,95,22,153,90,185,149,148,230,1,160,44,67,113,159,218,49,37,239,229,213,217,202,103,132,11,237,82,182,161,2,116,250,212,160,106,50,56,205,135,16,218,221,160,73,186,184,22,205,182,142,51,119,205,124,165,98,73,85,113,191,176,74,116,27,107,135,140,42,92,51,137,212,43,54,79,160,93,172,77,82,77,96,128,97,103,184,201,247,155,229,151,110,29,236,92,69,206,134,20,240,239,109,169,110,236,171,68,105,160,11,118,56,118,174,197,178,35,145,158,180,175,153,154,76,91,199,91,205,8,149,244,161,232,194,90,114,199,203,46,9,223,160,144,119,154,99,105,202,198,156,82,157,12,252,128,91,254,72,233,56,55,62,250,186,127,40,115,106,100,11,108,155,67,60,160,237,49,197,204,89,159,157,2,84,138,146,251,235,29,165,175,144,247,240,247,87,189,254,253,15,97,255,29,27,86,184,131,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,34,114,198,233,144,107,12,103,7,9,133,12,114,63,107,64,89,89,79,199,51,43,224,46,42,225,169,117,70,50,87,248,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,218,96,42,214,110,239,205,119,68,252,71,70,252,208,136,156,10,147,144,65,80,250,119,210,207,217,27,212,68,2,139,154,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,168,128,164,248,86,92,138,198,88,78,74,201,146,23,70,155,189,234,208,46,68,188,235,201,47,117,153,228,168,152,11,61,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,158,227,78,34,25,130,135,199,17,147,65,91,122,37,3,44,2,12,23,80,77,190,71,221,100,75,231,28,158,120,237,74,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,42,156,70,197,167,49,201,101,214,138,244,214,55,143,240,127,220,162,158,7,81,213,150,17,120,150,19,236,101,146,65,158,0],[160,46,200,108,13,232,249,64,227,110,161,157,245,46,128,141,175,205,112,178,84,30,181,23,91,235,179,202,233,208,217,37,123,0],[160,31,131,61,247,62,201,13,194,183,127,96,241,235,91,126,171,222,132,208,131,51,183,123,14,37,131,230,128,179,177,46,162,0],[160,83,46,107,126,244,168,86,192,45,141,10,216,232,238,46,20,39,243,76,83,189,222,32,93,20,208,25,70,197,196,119,7,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,96,221,114,145,102,94,134,107,144,195,205,110,238,178,160,204,152,69,194,193,199,47,72,39,233,136,117,94,129,231,193,126,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,128,160,218,96,42,214,110,239,205,119,68,252,71,70,252,208,136,156,10,147,144,65,80,250,119,210,207,217,27,212,68,2,139,154,128,128,160,168,128,164,248,86,92,138,198,88,78,74,201,146,23,70,155,189,234,208,46,68,188,235,201,47,117,153,228,168,152,11,61,128,160,158,227,78,34,25,130,135,199,17,147,65,91,122,37,3,44,2,12,23,80,77,190,71,221,100,75,231,28,158,120,237,74,128,128,160,42,156,70,197,167,49,201,101,214,138,244,214,55,143,240,127,220,162,158,7,81,213,150,17,120,150,19,236,101,146,65,158,160,46,200,108,13,232,249,64,227,110,161,157,245,46,128,141,175,205,112,178,84,30,181,23,91,235,179,202,233,208,217,37,123,160,31,131,61,247,62,201,13,194,183,127,96,241,235,91,126,171,222,132,208,131,51,183,123,14,37,131,230,128,179,177,46,162,160,83,46,107,126,244,168,86,192,45,141,10,216,232,238,46,20,39,243,76,83,189,222,32,93,20,208,25,70,197,196,119,7,128,128,160,96,221,114,145,102,94,134,107,144,195,205,110,238,178,160,204,152,69,194,193,199,47,72,39,233,136,117,94,129,231,193,126,128],[249,1,17,128,160,218,96,42,214,110,239,205,119,68,252,71,70,252,208,136,156,10,147,144,65,80,250,119,210,207,217,27,212,68,2,139,154,128,128,160,168,128,164,248,86,92,138,198,88,78,74,201,146,23,70,155,189,234,208,46,68,188,235,201,47,117,153,228,168,152,11,61,128,160,158,227,78,34,25,130,135,199,17,147,65,91,122,37,3,44,2,12,23,80,77,190,71,221,100,75,231,28,158,120,237,74,128,128,160,42,156,70,197,167,49,201,101,214,138,244,214,55,143,240,127,220,162,158,7,81,213,150,17,120,150,19,236,101,146,65,158,160,46,200,108,13,232,249,64,227,110,161,157,245,46,128,141,175,205,112,178,84,30,181,23,91,235,179,202,233,208,217,37,123,160,34,114,198,233,144,107,12,103,7,9,133,12,114,63,107,64,89,89,79,199,51,43,224,46,42,225,169,117,70,50,87,248,160,83,46,107,126,244,168,86,192,45,141,10,216,232,238,46,20,39,243,76,83,189,222,32,93,20,208,25,70,197,196,119,7,128,128,160,96,221,114,145,102,94,134,107,144,195,205,110,238,178,160,204,152,69,194,193,199,47,72,39,233,136,117,94,129,231,193,126,128]]},{"start":null,"extension_branch":null,"account":{"address":[80,251,225,242,90,160,132,59,98,60,151,85,114,134,223,78,36,235,129,201],"key":[228,192,80,182,49,246,151,30,151,127,179,96,247,94,30,251,240,178,137,53,78,123,91,148,106,51,229,84,226,127,158,208],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,54,49,246,151,30,151,127,179,96,247,94,30,251,240,178,137,53,78,123,91,148,106,51,229,84,226,127,158,208,0,0,0,0],[157,54,49,246,151,30,151,127,179,96,247,94,30,251,240,178,137,53,78,123,91,148,106,51,229,84,226,127,158,208,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,205,69,29,222,188,116,0,200,112,125,13,229,154,251,45,113,238,151,15,16,37,114,130,183,158,221,125,65,8,145,172,187,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,21,140,195,78,49,253,90,22,115,223,163,104,142,203,224,95,235,35,132,182,149,90,249,248,37,127,173,100,203,12,70,143,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,54,49,246,151,30,151,127,179,96,247,94,30,251,240,178,137,53,78,123,91,148,106,51,229,84,226,127,158,208,0,0,0,0]],"keccak_data":[[248,102,157,54,49,246,151,30,151,127,179,96,247,94,30,251,240,178,137,53,78,123,91,148,106,51,229,84,226,127,158,208,184,70,248,68,128,128,160,205,69,29,222,188,116,0,200,112,125,13,229,154,251,45,113,238,151,15,16,37,114,130,183,158,221,125,65,8,145,172,187,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,54,49,246,151,30,151,127,179,96,247,94,30,251,240,178,137,53,78,123,91,148,106,51,229,84,226,127,158,208,184,70,248,68,128,128,160,21,140,195,78,49,253,90,22,115,223,163,104,142,203,224,95,235,35,132,182,149,90,249,248,37,127,173,100,203,12,70,143,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[80,251,225,242,90,160,132,59,98,60,151,85,114,134,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,63,111,163,58,104,39,122,79,147,228,39,159,102,147,231,160,189,92,108,64,44,66,137,63,150,109,55,92,29,54,15,251,0],[160,159,125,140,120,15,102,245,168,115,242,213,250,0,240,250,51,251,201,157,248,20,225,159,79,63,166,198,124,123,230,70,239,0],[160,216,250,133,207,103,70,102,112,157,38,139,195,244,216,0,243,176,211,125,130,123,144,150,46,213,158,175,18,100,24,20,142,0],[160,90,185,220,146,131,26,107,180,120,166,80,185,117,206,185,95,181,74,240,220,134,201,190,223,221,196,180,87,167,161,138,241,0],[160,60,117,223,116,149,203,31,93,128,150,179,214,72,243,254,86,163,223,45,99,15,196,252,79,71,87,13,255,211,2,46,178,0],[160,151,143,99,114,137,177,99,60,37,129,236,65,252,156,131,145,63,16,115,204,122,108,83,108,57,190,113,219,92,132,228,189,0],[160,8,114,61,118,129,243,150,40,14,81,39,52,108,86,168,85,252,220,146,137,164,219,229,128,114,34,243,140,54,151,128,121,0],[160,214,115,249,91,189,233,6,151,43,204,91,135,75,221,216,22,131,199,177,235,196,251,213,177,109,5,1,58,49,178,248,194,0],[160,48,250,68,174,197,211,248,151,255,106,177,147,85,33,167,158,112,87,186,136,92,173,137,54,125,66,192,41,125,83,250,184,0],[160,17,16,149,77,142,7,162,197,159,125,58,138,156,129,119,171,119,211,182,236,233,161,247,16,136,72,59,186,201,163,212,31,0],[160,22,96,43,148,64,252,253,33,48,174,128,249,54,39,134,9,253,35,25,203,240,201,161,226,143,74,159,119,227,129,127,144,0],[160,140,87,17,154,101,164,17,237,70,104,18,5,189,67,10,146,86,165,197,176,98,220,29,104,122,37,129,19,110,79,82,115,0],[160,101,218,158,228,235,182,159,28,195,134,90,174,140,179,169,200,108,244,51,240,250,255,72,59,23,77,108,57,246,0,144,124,0],[160,213,220,5,222,98,153,175,156,18,195,11,184,137,227,123,209,154,106,162,7,62,181,105,38,243,194,115,151,198,219,7,116,0],[160,160,253,24,85,174,121,73,222,134,196,33,111,103,104,36,34,45,126,39,116,122,180,111,211,232,172,168,241,221,175,240,216,0],[160,198,220,56,227,80,157,140,8,220,149,120,199,69,167,188,18,183,183,128,222,118,164,56,189,122,41,93,6,183,96,248,75,0],[160,131,152,238,66,241,61,76,175,86,5,45,140,181,194,115,105,232,64,112,39,251,140,163,204,48,62,198,25,76,237,228,55,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,159,125,140,120,15,102,245,168,115,242,213,250,0,240,250,51,251,201,157,248,20,225,159,79,63,166,198,124,123,230,70,239,160,216,250,133,207,103,70,102,112,157,38,139,195,244,216,0,243,176,211,125,130,123,144,150,46,213,158,175,18,100,24,20,142,160,90,185,220,146,131,26,107,180,120,166,80,185,117,206,185,95,181,74,240,220,134,201,190,223,221,196,180,87,167,161,138,241,160,60,117,223,116,149,203,31,93,128,150,179,214,72,243,254,86,163,223,45,99,15,196,252,79,71,87,13,255,211,2,46,178,160,151,143,99,114,137,177,99,60,37,129,236,65,252,156,131,145,63,16,115,204,122,108,83,108,57,190,113,219,92,132,228,189,160,8,114,61,118,129,243,150,40,14,81,39,52,108,86,168,85,252,220,146,137,164,219,229,128,114,34,243,140,54,151,128,121,160,214,115,249,91,189,233,6,151,43,204,91,135,75,221,216,22,131,199,177,235,196,251,213,177,109,5,1,58,49,178,248,194,160,48,250,68,174,197,211,248,151,255,106,177,147,85,33,167,158,112,87,186,136,92,173,137,54,125,66,192,41,125,83,250,184,160,17,16,149,77,142,7,162,197,159,125,58,138,156,129,119,171,119,211,182,236,233,161,247,16,136,72,59,186,201,163,212,31,160,22,96,43,148,64,252,253,33,48,174,128,249,54,39,134,9,253,35,25,203,240,201,161,226,143,74,159,119,227,129,127,144,160,140,87,17,154,101,164,17,237,70,104,18,5,189,67,10,146,86,165,197,176,98,220,29,104,122,37,129,19,110,79,82,115,160,101,218,158,228,235,182,159,28,195,134,90,174,140,179,169,200,108,244,51,240,250,255,72,59,23,77,108,57,246,0,144,124,160,213,220,5,222,98,153,175,156,18,195,11,184,137,227,123,209,154,106,162,7,62,181,105,38,243,194,115,151,198,219,7,116,160,160,253,24,85,174,121,73,222,134,196,33,111,103,104,36,34,45,126,39,116,122,180,111,211,232,172,168,241,221,175,240,216,160,198,220,56,227,80,157,140,8,220,149,120,199,69,167,188,18,183,183,128,222,118,164,56,189,122,41,93,6,183,96,248,75,160,131,152,238,66,241,61,76,175,86,5,45,140,181,194,115,105,232,64,112,39,251,140,163,204,48,62,198,25,76,237,228,55,128],[249,2,17,160,159,125,140,120,15,102,245,168,115,242,213,250,0,240,250,51,251,201,157,248,20,225,159,79,63,166,198,124,123,230,70,239,160,216,250,133,207,103,70,102,112,157,38,139,195,244,216,0,243,176,211,125,130,123,144,150,46,213,158,175,18,100,24,20,142,160,90,185,220,146,131,26,107,180,120,166,80,185,117,206,185,95,181,74,240,220,134,201,190,223,221,196,180,87,167,161,138,241,160,60,117,223,116,149,203,31,93,128,150,179,214,72,243,254,86,163,223,45,99,15,196,252,79,71,87,13,255,211,2,46,178,160,151,143,99,114,137,177,99,60,37,129,236,65,252,156,131,145,63,16,115,204,122,108,83,108,57,190,113,219,92,132,228,189,160,8,114,61,118,129,243,150,40,14,81,39,52,108,86,168,85,252,220,146,137,164,219,229,128,114,34,243,140,54,151,128,121,160,214,115,249,91,189,233,6,151,43,204,91,135,75,221,216,22,131,199,177,235,196,251,213,177,109,5,1,58,49,178,248,194,160,48,250,68,174,197,211,248,151,255,106,177,147,85,33,167,158,112,87,186,136,92,173,137,54,125,66,192,41,125,83,250,184,160,17,16,149,77,142,7,162,197,159,125,58,138,156,129,119,171,119,211,182,236,233,161,247,16,136,72,59,186,201,163,212,31,160,22,96,43,148,64,252,253,33,48,174,128,249,54,39,134,9,253,35,25,203,240,201,161,226,143,74,159,119,227,129,127,144,160,140,87,17,154,101,164,17,237,70,104,18,5,189,67,10,146,86,165,197,176,98,220,29,104,122,37,129,19,110,79,82,115,160,101,218,158,228,235,182,159,28,195,134,90,174,140,179,169,200,108,244,51,240,250,255,72,59,23,77,108,57,246,0,144,124,160,213,220,5,222,98,153,175,156,18,195,11,184,137,227,123,209,154,106,162,7,62,181,105,38,243,194,115,151,198,219,7,116,160,63,111,163,58,104,39,122,79,147,228,39,159,102,147,231,160,189,92,108,64,44,66,137,63,150,109,55,92,29,54,15,251,160,198,220,56,227,80,157,140,8,220,149,120,199,69,167,188,18,183,183,128,222,118,164,56,189,122,41,93,6,183,96,248,75,160,131,152,238,66,241,61,76,175,86,5,45,140,181,194,115,105,232,64,112,39,251,140,163,204,48,62,198,25,76,237,228,55,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,1,241],[249,1,241]]}},"account":null,"storage":null,"values":[[160,213,239,110,211,117,163,192,52,134,182,31,125,125,183,102,216,251,242,161,143,95,175,25,180,254,221,174,124,67,107,62,178,0],[160,215,86,109,166,170,96,177,90,72,112,90,139,25,190,14,19,42,84,114,238,233,67,169,183,214,19,194,231,66,234,59,7,0],[160,52,215,170,52,47,22,104,120,6,250,52,38,65,158,32,217,190,92,176,4,104,200,187,203,101,185,128,41,4,24,125,135,0],[160,218,68,40,152,119,31,82,132,201,47,99,145,119,138,118,233,134,168,6,56,24,73,159,200,143,195,249,177,66,87,218,22,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,114,85,217,209,197,76,222,212,229,163,215,2,79,170,14,63,103,79,113,115,152,4,135,94,73,223,133,190,216,139,74,26,0],[160,239,209,2,156,187,216,143,201,100,199,94,248,37,222,121,130,124,8,8,102,54,62,58,130,172,64,19,111,161,132,103,103,0],[160,116,139,247,142,89,213,35,85,246,52,208,90,181,107,220,34,7,221,128,55,3,216,142,224,53,62,130,31,49,201,190,2,0],[160,133,216,11,186,196,199,34,222,243,90,196,170,123,56,218,218,127,82,95,48,48,145,13,57,35,63,79,2,142,37,125,252,0],[160,185,226,250,177,230,21,187,80,43,21,152,134,173,111,36,188,155,23,178,89,122,69,70,36,41,72,15,42,137,57,189,220,0],[160,46,246,251,29,55,191,158,72,232,130,228,186,38,34,186,166,75,56,4,208,50,162,55,58,70,42,129,210,63,188,99,254,0],[160,102,67,92,13,42,173,78,46,205,26,181,3,252,214,178,83,44,139,250,18,143,24,253,173,198,61,194,247,250,224,15,170,0],[160,73,212,82,223,200,32,135,20,229,76,10,2,126,2,50,148,251,33,29,209,245,128,189,163,208,116,111,95,7,143,71,193,0],[160,167,97,173,219,2,52,119,204,88,75,113,89,160,228,50,156,209,84,22,149,154,120,115,142,197,209,65,49,97,163,72,134,0],[160,114,108,97,73,46,193,255,131,123,219,194,227,252,191,225,51,44,84,225,87,203,90,235,96,245,10,64,231,57,4,140,202,0],[160,75,199,14,118,134,212,215,241,115,146,157,59,204,52,226,245,197,60,63,122,127,134,119,21,88,116,58,102,202,149,198,85,0],[160,91,211,25,224,229,223,104,216,57,69,221,90,194,7,240,58,30,155,174,180,10,42,148,107,67,142,174,82,79,35,132,119,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,241,160,215,86,109,166,170,96,177,90,72,112,90,139,25,190,14,19,42,84,114,238,233,67,169,183,214,19,194,231,66,234,59,7,160,52,215,170,52,47,22,104,120,6,250,52,38,65,158,32,217,190,92,176,4,104,200,187,203,101,185,128,41,4,24,125,135,160,218,68,40,152,119,31,82,132,201,47,99,145,119,138,118,233,134,168,6,56,24,73,159,200,143,195,249,177,66,87,218,22,128,160,114,85,217,209,197,76,222,212,229,163,215,2,79,170,14,63,103,79,113,115,152,4,135,94,73,223,133,190,216,139,74,26,160,239,209,2,156,187,216,143,201,100,199,94,248,37,222,121,130,124,8,8,102,54,62,58,130,172,64,19,111,161,132,103,103,160,116,139,247,142,89,213,35,85,246,52,208,90,181,107,220,34,7,221,128,55,3,216,142,224,53,62,130,31,49,201,190,2,160,133,216,11,186,196,199,34,222,243,90,196,170,123,56,218,218,127,82,95,48,48,145,13,57,35,63,79,2,142,37,125,252,160,185,226,250,177,230,21,187,80,43,21,152,134,173,111,36,188,155,23,178,89,122,69,70,36,41,72,15,42,137,57,189,220,160,46,246,251,29,55,191,158,72,232,130,228,186,38,34,186,166,75,56,4,208,50,162,55,58,70,42,129,210,63,188,99,254,160,102,67,92,13,42,173,78,46,205,26,181,3,252,214,178,83,44,139,250,18,143,24,253,173,198,61,194,247,250,224,15,170,160,73,212,82,223,200,32,135,20,229,76,10,2,126,2,50,148,251,33,29,209,245,128,189,163,208,116,111,95,7,143,71,193,160,167,97,173,219,2,52,119,204,88,75,113,89,160,228,50,156,209,84,22,149,154,120,115,142,197,209,65,49,97,163,72,134,160,114,108,97,73,46,193,255,131,123,219,194,227,252,191,225,51,44,84,225,87,203,90,235,96,245,10,64,231,57,4,140,202,160,75,199,14,118,134,212,215,241,115,146,157,59,204,52,226,245,197,60,63,122,127,134,119,21,88,116,58,102,202,149,198,85,160,91,211,25,224,229,223,104,216,57,69,221,90,194,7,240,58,30,155,174,180,10,42,148,107,67,142,174,82,79,35,132,119,128],[249,1,241,160,215,86,109,166,170,96,177,90,72,112,90,139,25,190,14,19,42,84,114,238,233,67,169,183,214,19,194,231,66,234,59,7,160,52,215,170,52,47,22,104,120,6,250,52,38,65,158,32,217,190,92,176,4,104,200,187,203,101,185,128,41,4,24,125,135,160,218,68,40,152,119,31,82,132,201,47,99,145,119,138,118,233,134,168,6,56,24,73,159,200,143,195,249,177,66,87,218,22,128,160,114,85,217,209,197,76,222,212,229,163,215,2,79,170,14,63,103,79,113,115,152,4,135,94,73,223,133,190,216,139,74,26,160,213,239,110,211,117,163,192,52,134,182,31,125,125,183,102,216,251,242,161,143,95,175,25,180,254,221,174,124,67,107,62,178,160,116,139,247,142,89,213,35,85,246,52,208,90,181,107,220,34,7,221,128,55,3,216,142,224,53,62,130,31,49,201,190,2,160,133,216,11,186,196,199,34,222,243,90,196,170,123,56,218,218,127,82,95,48,48,145,13,57,35,63,79,2,142,37,125,252,160,185,226,250,177,230,21,187,80,43,21,152,134,173,111,36,188,155,23,178,89,122,69,70,36,41,72,15,42,137,57,189,220,160,46,246,251,29,55,191,158,72,232,130,228,186,38,34,186,166,75,56,4,208,50,162,55,58,70,42,129,210,63,188,99,254,160,102,67,92,13,42,173,78,46,205,26,181,3,252,214,178,83,44,139,250,18,143,24,253,173,198,61,194,247,250,224,15,170,160,73,212,82,223,200,32,135,20,229,76,10,2,126,2,50,148,251,33,29,209,245,128,189,163,208,116,111,95,7,143,71,193,160,167,97,173,219,2,52,119,204,88,75,113,89,160,228,50,156,209,84,22,149,154,120,115,142,197,209,65,49,97,163,72,134,160,114,108,97,73,46,193,255,131,123,219,194,227,252,191,225,51,44,84,225,87,203,90,235,96,245,10,64,231,57,4,140,202,160,75,199,14,118,134,212,215,241,115,146,157,59,204,52,226,245,197,60,63,122,127,134,119,21,88,116,58,102,202,149,198,85,160,91,211,25,224,229,223,104,216,57,69,221,90,194,7,240,58,30,155,174,180,10,42,148,107,67,142,174,82,79,35,132,119,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[248,113],[248,145]]}},"account":null,"storage":null,"values":[[160,69,146,78,218,71,94,162,185,1,71,206,242,93,206,37,208,20,192,240,225,140,98,109,147,99,126,80,13,28,77,53,144,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,163,119,173,15,33,10,166,188,56,31,192,117,157,8,133,158,150,199,179,47,40,229,70,233,89,39,150,186,185,44,134,250,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,124,62,90,127,8,75,148,171,188,202,184,87,107,178,146,172,41,198,43,39,162,154,6,96,144,214,28,229,57,101,189,141,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,100,70,202,240,151,114,108,6,117,82,63,217,35,182,235,138,30,10,55,30,228,206,155,207,26,206,127,246,91,83,251,63,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,113,128,128,128,128,128,128,128,160,163,119,173,15,33,10,166,188,56,31,192,117,157,8,133,158,150,199,179,47,40,229,70,233,89,39,150,186,185,44,134,250,128,128,128,128,128,160,124,62,90,127,8,75,148,171,188,202,184,87,107,178,146,172,41,198,43,39,162,154,6,96,144,214,28,229,57,101,189,141,128,160,100,70,202,240,151,114,108,6,117,82,63,217,35,182,235,138,30,10,55,30,228,206,155,207,26,206,127,246,91,83,251,63,128],[248,145,128,128,128,128,128,128,128,160,163,119,173,15,33,10,166,188,56,31,192,117,157,8,133,158,150,199,179,47,40,229,70,233,89,39,150,186,185,44,134,250,160,69,146,78,218,71,94,162,185,1,71,206,242,93,206,37,208,20,192,240,225,140,98,109,147,99,126,80,13,28,77,53,144,128,128,128,128,160,124,62,90,127,8,75,148,171,188,202,184,87,107,178,146,172,41,198,43,39,162,154,6,96,144,214,28,229,57,101,189,141,128,160,100,70,202,240,151,114,108,6,117,82,63,217,35,182,235,138,30,10,55,30,228,206,155,207,26,206,127,246,91,83,251,63,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,51],"key":[213,132,139,254,206,36,163,178,8,40,118,2,4,139,162,225,85,17,142,63,56,53,56,252,107,22,11,222,240,59,141,129],"list_rlp_bytes":[[225],[225]],"value_rlp_bytes":[[0],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[159,52,139,254,206,36,163,178,8,40,118,2,4,139,162,225,85,17,142,63,56,53,56,252,107,22,11,222,240,59,141,129,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,52,139,254,206,36,163,178,8,40,118,2,4,139,162,225,85,17,142,63,56,53,56,252,107,22,11,222,240,59,141,129,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[225,159,52,139,254,206,36,163,178,8,40,118,2,4,139,162,225,85,17,142,63,56,53,56,252,107,22,11,222,240,59,141,129,17],[225,159,52,139,254,206,36,163,178,8,40,118,2,4,139,162,225,85,17,142,63,56,53,56,252,107,22,11,222,240,59,141,129,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,51]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ExtensionThreeKeyBytesSel2.json b/zkevm-circuits/src/mpt_circuit/tests/ExtensionThreeKeyBytesSel2.json new file mode 100644 index 0000000000..6f6dce02df --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ExtensionThreeKeyBytesSel2.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,65,204,15,96,245,218,81,251,91,243,45,106,224,187,170,191,134,127,168,160,77,217,173,210,80,218,187,245,124,140,202,157,0],[160,104,1,209,52,44,171,85,216,38,82,214,170,70,31,178,225,151,65,5,116,232,229,207,232,117,108,105,16,17,234,57,192,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,65,70,98,147,197,159,21,0,119,137,194,198,115,71,147,249,40,199,184,154,16,126,252,173,173,104,131,165,24,63,62,14,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,196,44,227,224,205,196,249,179,76,162,33,210,124,247,41,170,109,53,21,225,145,36,149,221,99,41,109,41,102,237,150,106,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,196,44,227,224,205,196,249,179,76,162,33,210,124,247,41,170,109,53,21,225,145,36,149,221,99,41,109,41,102,237,150,106,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,65,70,98,147,197,159,21,0,119,137,194,198,115,71,147,249,40,199,184,154,16,126,252,173,173,104,131,165,24,63,62,14,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,38,180,40,52,192,186,187,64,105,123,105,72,131,31,56,72,124,77,107,44,183,203,139,146,10,154,131,246,3,253,128,88,0],[160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,0],[160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,0],[160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,0],[160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,0],[160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,0],[160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,0],[160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,0],[160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,0],[160,194,241,212,160,23,101,119,10,214,198,224,25,48,210,213,248,152,202,71,215,60,3,191,152,180,119,170,71,60,169,103,101,0],[160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,0],[160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,0],[160,227,33,91,131,11,140,204,127,36,52,192,187,51,9,224,190,228,17,100,163,82,196,205,244,33,26,240,245,139,112,116,56,0],[160,237,113,19,48,172,139,234,51,70,37,236,44,37,118,182,177,114,98,221,189,39,248,50,83,47,77,215,60,136,159,224,77,0],[160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,0],[160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,0],[160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,160,194,241,212,160,23,101,119,10,214,198,224,25,48,210,213,248,152,202,71,215,60,3,191,152,180,119,170,71,60,169,103,101,160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,160,227,33,91,131,11,140,204,127,36,52,192,187,51,9,224,190,228,17,100,163,82,196,205,244,33,26,240,245,139,112,116,56,160,237,113,19,48,172,139,234,51,70,37,236,44,37,118,182,177,114,98,221,189,39,248,50,83,47,77,215,60,136,159,224,77,160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,128],[249,2,17,160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,160,38,180,40,52,192,186,187,64,105,123,105,72,131,31,56,72,124,77,107,44,183,203,139,146,10,154,131,246,3,253,128,88,160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,160,227,33,91,131,11,140,204,127,36,52,192,187,51,9,224,190,228,17,100,163,82,196,205,244,33,26,240,245,139,112,116,56,160,237,113,19,48,172,139,234,51,70,37,236,44,37,118,182,177,114,98,221,189,39,248,50,83,47,77,215,60,136,159,224,77,160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,167,104,82,176,156,77,152,205,207,142,19,88,14,2,9,174,93,218,253,122,106,167,97,66,136,231,195,105,217,145,69,255,0],[160,92,168,67,167,114,22,27,217,14,103,239,246,29,105,8,65,48,222,155,27,169,254,122,26,44,121,201,21,98,92,78,169,0],[160,147,231,72,90,70,231,94,113,177,149,152,167,211,65,105,196,79,22,2,190,3,201,166,236,17,203,211,123,206,200,57,69,0],[160,79,214,34,60,184,209,156,75,4,50,151,6,46,63,82,233,116,124,161,43,81,210,175,30,190,47,93,162,235,27,42,212,0],[160,174,116,61,4,55,96,101,233,1,220,167,155,177,227,120,63,131,16,165,161,58,111,69,19,89,183,237,166,191,136,153,214,0],[160,234,103,229,226,180,118,226,42,119,106,8,68,122,148,115,208,43,247,208,33,184,113,34,130,253,94,171,190,224,175,178,149,0],[160,125,158,219,111,118,86,76,165,6,232,77,48,127,157,22,4,156,187,55,141,60,75,46,90,201,150,83,154,97,233,111,147,0],[160,159,153,110,67,208,55,108,119,133,186,244,219,97,123,42,57,77,198,67,101,143,21,81,203,232,95,55,175,57,10,141,17,0],[160,253,78,175,142,245,133,131,90,234,72,28,46,246,35,209,189,100,220,208,55,41,17,116,209,235,173,123,93,196,123,147,45,0],[160,25,51,42,32,156,80,212,230,221,248,211,17,155,60,199,224,99,234,112,249,155,63,89,26,253,95,0,38,107,160,60,49,0],[160,55,233,50,240,115,106,200,149,91,112,170,81,113,132,55,5,199,194,255,66,187,210,3,197,119,33,146,102,217,129,115,38,0],[160,112,154,58,83,111,210,116,192,71,120,152,185,215,113,63,78,224,149,162,179,187,158,41,175,40,73,231,24,66,243,78,152,0],[160,225,226,232,116,233,52,143,62,86,128,184,236,176,34,105,29,104,168,91,90,89,17,9,237,227,14,98,153,206,207,86,176,0],[160,148,120,183,48,28,252,97,156,9,151,71,9,58,158,163,211,10,158,80,13,200,188,124,124,135,250,19,35,0,49,94,241,0],[160,219,185,81,58,189,178,31,226,43,92,85,50,149,112,246,78,245,2,232,234,198,28,75,98,40,204,225,220,228,247,251,247,0],[160,44,15,94,183,58,251,85,52,218,221,167,27,84,128,112,235,31,234,65,19,117,17,83,124,42,165,186,33,116,183,63,90,0],[160,136,4,90,22,214,62,100,89,115,0,96,138,213,52,252,154,225,43,23,85,174,103,221,27,128,84,55,63,146,81,247,217,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,92,168,67,167,114,22,27,217,14,103,239,246,29,105,8,65,48,222,155,27,169,254,122,26,44,121,201,21,98,92,78,169,160,147,231,72,90,70,231,94,113,177,149,152,167,211,65,105,196,79,22,2,190,3,201,166,236,17,203,211,123,206,200,57,69,160,79,214,34,60,184,209,156,75,4,50,151,6,46,63,82,233,116,124,161,43,81,210,175,30,190,47,93,162,235,27,42,212,160,174,116,61,4,55,96,101,233,1,220,167,155,177,227,120,63,131,16,165,161,58,111,69,19,89,183,237,166,191,136,153,214,160,234,103,229,226,180,118,226,42,119,106,8,68,122,148,115,208,43,247,208,33,184,113,34,130,253,94,171,190,224,175,178,149,160,125,158,219,111,118,86,76,165,6,232,77,48,127,157,22,4,156,187,55,141,60,75,46,90,201,150,83,154,97,233,111,147,160,159,153,110,67,208,55,108,119,133,186,244,219,97,123,42,57,77,198,67,101,143,21,81,203,232,95,55,175,57,10,141,17,160,253,78,175,142,245,133,131,90,234,72,28,46,246,35,209,189,100,220,208,55,41,17,116,209,235,173,123,93,196,123,147,45,160,25,51,42,32,156,80,212,230,221,248,211,17,155,60,199,224,99,234,112,249,155,63,89,26,253,95,0,38,107,160,60,49,160,55,233,50,240,115,106,200,149,91,112,170,81,113,132,55,5,199,194,255,66,187,210,3,197,119,33,146,102,217,129,115,38,160,112,154,58,83,111,210,116,192,71,120,152,185,215,113,63,78,224,149,162,179,187,158,41,175,40,73,231,24,66,243,78,152,160,225,226,232,116,233,52,143,62,86,128,184,236,176,34,105,29,104,168,91,90,89,17,9,237,227,14,98,153,206,207,86,176,160,148,120,183,48,28,252,97,156,9,151,71,9,58,158,163,211,10,158,80,13,200,188,124,124,135,250,19,35,0,49,94,241,160,219,185,81,58,189,178,31,226,43,92,85,50,149,112,246,78,245,2,232,234,198,28,75,98,40,204,225,220,228,247,251,247,160,44,15,94,183,58,251,85,52,218,221,167,27,84,128,112,235,31,234,65,19,117,17,83,124,42,165,186,33,116,183,63,90,160,136,4,90,22,214,62,100,89,115,0,96,138,213,52,252,154,225,43,23,85,174,103,221,27,128,84,55,63,146,81,247,217,128],[249,2,17,160,92,168,67,167,114,22,27,217,14,103,239,246,29,105,8,65,48,222,155,27,169,254,122,26,44,121,201,21,98,92,78,169,160,147,231,72,90,70,231,94,113,177,149,152,167,211,65,105,196,79,22,2,190,3,201,166,236,17,203,211,123,206,200,57,69,160,79,214,34,60,184,209,156,75,4,50,151,6,46,63,82,233,116,124,161,43,81,210,175,30,190,47,93,162,235,27,42,212,160,174,116,61,4,55,96,101,233,1,220,167,155,177,227,120,63,131,16,165,161,58,111,69,19,89,183,237,166,191,136,153,214,160,234,103,229,226,180,118,226,42,119,106,8,68,122,148,115,208,43,247,208,33,184,113,34,130,253,94,171,190,224,175,178,149,160,125,158,219,111,118,86,76,165,6,232,77,48,127,157,22,4,156,187,55,141,60,75,46,90,201,150,83,154,97,233,111,147,160,159,153,110,67,208,55,108,119,133,186,244,219,97,123,42,57,77,198,67,101,143,21,81,203,232,95,55,175,57,10,141,17,160,253,78,175,142,245,133,131,90,234,72,28,46,246,35,209,189,100,220,208,55,41,17,116,209,235,173,123,93,196,123,147,45,160,167,104,82,176,156,77,152,205,207,142,19,88,14,2,9,174,93,218,253,122,106,167,97,66,136,231,195,105,217,145,69,255,160,55,233,50,240,115,106,200,149,91,112,170,81,113,132,55,5,199,194,255,66,187,210,3,197,119,33,146,102,217,129,115,38,160,112,154,58,83,111,210,116,192,71,120,152,185,215,113,63,78,224,149,162,179,187,158,41,175,40,73,231,24,66,243,78,152,160,225,226,232,116,233,52,143,62,86,128,184,236,176,34,105,29,104,168,91,90,89,17,9,237,227,14,98,153,206,207,86,176,160,148,120,183,48,28,252,97,156,9,151,71,9,58,158,163,211,10,158,80,13,200,188,124,124,135,250,19,35,0,49,94,241,160,219,185,81,58,189,178,31,226,43,92,85,50,149,112,246,78,245,2,232,234,198,28,75,98,40,204,225,220,228,247,251,247,160,44,15,94,183,58,251,85,52,218,221,167,27,84,128,112,235,31,234,65,19,117,17,83,124,42,165,186,33,116,183,63,90,160,136,4,90,22,214,62,100,89,115,0,96,138,213,52,252,154,225,43,23,85,174,103,221,27,128,84,55,63,146,81,247,217,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,9,185,94,242,158,18,37,143,15,131,23,73,103,63,182,170,191,126,217,186,20,18,91,229,64,156,203,111,22,213,159,143,0],[160,134,18,75,116,191,180,170,7,164,2,130,19,108,230,123,215,225,22,145,97,207,34,177,168,140,222,37,221,11,72,129,242,0],[160,78,47,202,223,147,142,0,183,20,7,218,89,25,105,43,56,236,60,188,219,128,33,39,149,112,185,247,50,217,133,87,225,0],[160,144,55,233,72,198,175,219,121,126,1,64,144,160,178,123,207,8,24,185,147,149,205,178,0,141,77,45,53,217,39,52,154,0],[160,145,133,86,119,88,110,78,222,182,116,93,169,20,223,243,251,8,128,182,102,75,187,164,93,133,132,8,21,142,238,33,127,0],[160,223,175,93,224,150,84,41,208,56,116,40,195,81,34,83,42,162,137,128,92,31,28,197,139,154,150,233,139,210,69,225,105,0],[160,164,223,222,68,23,136,197,25,123,9,133,30,52,39,239,219,116,181,199,208,139,79,113,33,132,23,102,145,93,122,66,138,0],[160,95,121,253,137,77,36,143,232,237,31,135,134,252,15,197,77,83,132,152,22,183,176,210,122,91,126,225,127,210,102,79,185,0],[160,106,29,87,118,248,25,198,229,240,5,186,130,27,32,24,169,15,213,67,215,45,200,195,221,119,145,154,223,127,129,121,148,0],[160,6,135,18,174,154,122,193,139,163,88,240,34,21,5,64,192,174,237,105,74,188,159,65,179,108,54,113,115,221,8,69,110,0],[160,116,84,145,214,88,243,186,151,248,41,219,115,26,39,173,51,147,147,233,241,158,106,143,170,92,92,216,23,2,103,69,80,0],[160,150,70,38,233,135,45,3,175,53,157,18,100,102,78,178,202,133,168,248,140,34,222,231,173,151,185,254,97,94,92,165,162,0],[160,179,200,169,0,94,240,4,87,147,61,52,36,179,172,16,166,200,148,253,73,182,201,201,248,223,10,198,198,247,184,123,131,0],[160,120,168,240,51,183,53,255,178,143,61,122,43,226,191,51,213,220,34,214,172,62,177,47,70,54,41,36,178,50,78,142,76,0],[160,219,168,214,111,42,214,74,148,23,52,48,82,236,216,67,250,16,95,149,205,130,130,231,122,98,17,117,83,173,251,163,56,0],[160,124,156,154,170,36,23,227,152,201,50,24,110,233,199,142,162,242,124,224,249,59,58,68,123,16,24,28,227,103,103,146,174,0],[160,85,145,77,253,172,65,75,215,211,182,248,58,185,136,179,45,249,152,108,78,226,157,231,42,111,122,36,151,73,41,117,58,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,134,18,75,116,191,180,170,7,164,2,130,19,108,230,123,215,225,22,145,97,207,34,177,168,140,222,37,221,11,72,129,242,160,78,47,202,223,147,142,0,183,20,7,218,89,25,105,43,56,236,60,188,219,128,33,39,149,112,185,247,50,217,133,87,225,160,144,55,233,72,198,175,219,121,126,1,64,144,160,178,123,207,8,24,185,147,149,205,178,0,141,77,45,53,217,39,52,154,160,145,133,86,119,88,110,78,222,182,116,93,169,20,223,243,251,8,128,182,102,75,187,164,93,133,132,8,21,142,238,33,127,160,223,175,93,224,150,84,41,208,56,116,40,195,81,34,83,42,162,137,128,92,31,28,197,139,154,150,233,139,210,69,225,105,160,164,223,222,68,23,136,197,25,123,9,133,30,52,39,239,219,116,181,199,208,139,79,113,33,132,23,102,145,93,122,66,138,160,95,121,253,137,77,36,143,232,237,31,135,134,252,15,197,77,83,132,152,22,183,176,210,122,91,126,225,127,210,102,79,185,160,106,29,87,118,248,25,198,229,240,5,186,130,27,32,24,169,15,213,67,215,45,200,195,221,119,145,154,223,127,129,121,148,160,6,135,18,174,154,122,193,139,163,88,240,34,21,5,64,192,174,237,105,74,188,159,65,179,108,54,113,115,221,8,69,110,160,116,84,145,214,88,243,186,151,248,41,219,115,26,39,173,51,147,147,233,241,158,106,143,170,92,92,216,23,2,103,69,80,160,150,70,38,233,135,45,3,175,53,157,18,100,102,78,178,202,133,168,248,140,34,222,231,173,151,185,254,97,94,92,165,162,160,179,200,169,0,94,240,4,87,147,61,52,36,179,172,16,166,200,148,253,73,182,201,201,248,223,10,198,198,247,184,123,131,160,120,168,240,51,183,53,255,178,143,61,122,43,226,191,51,213,220,34,214,172,62,177,47,70,54,41,36,178,50,78,142,76,160,219,168,214,111,42,214,74,148,23,52,48,82,236,216,67,250,16,95,149,205,130,130,231,122,98,17,117,83,173,251,163,56,160,124,156,154,170,36,23,227,152,201,50,24,110,233,199,142,162,242,124,224,249,59,58,68,123,16,24,28,227,103,103,146,174,160,85,145,77,253,172,65,75,215,211,182,248,58,185,136,179,45,249,152,108,78,226,157,231,42,111,122,36,151,73,41,117,58,128],[249,2,17,160,134,18,75,116,191,180,170,7,164,2,130,19,108,230,123,215,225,22,145,97,207,34,177,168,140,222,37,221,11,72,129,242,160,78,47,202,223,147,142,0,183,20,7,218,89,25,105,43,56,236,60,188,219,128,33,39,149,112,185,247,50,217,133,87,225,160,144,55,233,72,198,175,219,121,126,1,64,144,160,178,123,207,8,24,185,147,149,205,178,0,141,77,45,53,217,39,52,154,160,145,133,86,119,88,110,78,222,182,116,93,169,20,223,243,251,8,128,182,102,75,187,164,93,133,132,8,21,142,238,33,127,160,223,175,93,224,150,84,41,208,56,116,40,195,81,34,83,42,162,137,128,92,31,28,197,139,154,150,233,139,210,69,225,105,160,164,223,222,68,23,136,197,25,123,9,133,30,52,39,239,219,116,181,199,208,139,79,113,33,132,23,102,145,93,122,66,138,160,95,121,253,137,77,36,143,232,237,31,135,134,252,15,197,77,83,132,152,22,183,176,210,122,91,126,225,127,210,102,79,185,160,106,29,87,118,248,25,198,229,240,5,186,130,27,32,24,169,15,213,67,215,45,200,195,221,119,145,154,223,127,129,121,148,160,6,135,18,174,154,122,193,139,163,88,240,34,21,5,64,192,174,237,105,74,188,159,65,179,108,54,113,115,221,8,69,110,160,116,84,145,214,88,243,186,151,248,41,219,115,26,39,173,51,147,147,233,241,158,106,143,170,92,92,216,23,2,103,69,80,160,9,185,94,242,158,18,37,143,15,131,23,73,103,63,182,170,191,126,217,186,20,18,91,229,64,156,203,111,22,213,159,143,160,179,200,169,0,94,240,4,87,147,61,52,36,179,172,16,166,200,148,253,73,182,201,201,248,223,10,198,198,247,184,123,131,160,120,168,240,51,183,53,255,178,143,61,122,43,226,191,51,213,220,34,214,172,62,177,47,70,54,41,36,178,50,78,142,76,160,219,168,214,111,42,214,74,148,23,52,48,82,236,216,67,250,16,95,149,205,130,130,231,122,98,17,117,83,173,251,163,56,160,124,156,154,170,36,23,227,152,201,50,24,110,233,199,142,162,242,124,224,249,59,58,68,123,16,24,28,227,103,103,146,174,160,85,145,77,253,172,65,75,215,211,182,248,58,185,136,179,45,249,152,108,78,226,157,231,42,111,122,36,151,73,41,117,58,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,228,225,32,39,192,75,12,156,8,213,116,187,180,53,211,55,153,120,6,99,33,169,229,16,138,187,126,28,220,224,188,141,0],[160,175,84,201,168,228,0,184,154,71,8,92,173,125,235,98,158,248,249,163,199,53,84,89,122,190,11,45,14,4,56,139,43,0],[160,142,201,232,22,116,220,124,158,250,130,181,222,224,24,63,147,141,188,222,77,0,220,29,141,150,62,8,171,138,29,252,209,0],[160,43,82,36,255,85,80,32,35,237,40,104,243,105,18,187,137,194,177,232,54,21,103,44,30,254,80,168,66,245,158,83,79,0],[160,199,248,224,68,250,84,45,149,144,216,217,183,28,234,166,202,133,78,73,59,66,136,131,44,223,246,37,34,104,150,52,96,0],[160,91,187,179,34,48,181,196,195,52,190,54,219,19,198,69,14,89,197,103,201,37,195,102,211,18,23,168,229,43,138,126,166,0],[160,156,22,131,145,232,27,156,162,219,37,159,68,129,123,105,144,118,55,156,115,111,145,57,173,206,144,92,72,84,204,229,34,0],[160,7,107,81,25,26,255,62,129,126,244,23,74,88,155,42,10,129,255,100,189,27,175,76,182,57,79,189,228,23,14,59,224,0],[160,160,222,138,204,126,5,9,221,201,239,253,194,190,50,207,247,235,193,205,95,239,232,189,74,23,32,181,39,64,160,254,172,0],[160,147,72,42,4,64,23,97,208,74,152,53,61,196,94,145,148,169,105,181,67,15,227,173,113,85,253,202,91,50,209,199,244,0],[160,188,173,251,149,23,183,233,144,48,43,230,24,50,84,224,115,129,1,68,119,2,218,141,68,15,233,86,139,89,93,74,203,0],[160,102,151,157,26,53,173,210,98,115,132,145,119,244,39,245,252,104,216,31,69,131,231,223,7,112,239,55,221,191,85,160,112,0],[160,224,46,12,209,28,18,176,43,179,57,8,56,32,133,216,171,79,2,182,9,212,33,72,218,152,134,174,108,239,0,246,100,0],[160,188,166,110,94,36,173,44,240,98,88,79,171,31,58,32,75,171,14,6,154,13,149,86,185,160,13,217,30,139,79,41,249,0],[160,99,219,116,210,28,45,78,210,100,149,253,18,232,9,108,184,255,219,26,65,8,198,216,44,78,230,45,205,141,83,166,231,0],[160,224,140,208,196,146,152,233,198,247,167,124,19,188,237,106,87,176,88,233,144,194,46,73,253,22,190,140,198,217,211,101,182,0],[160,12,58,31,198,128,244,206,15,81,55,193,6,40,179,252,156,66,188,220,145,173,229,251,52,144,251,255,113,57,53,211,128,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,175,84,201,168,228,0,184,154,71,8,92,173,125,235,98,158,248,249,163,199,53,84,89,122,190,11,45,14,4,56,139,43,160,142,201,232,22,116,220,124,158,250,130,181,222,224,24,63,147,141,188,222,77,0,220,29,141,150,62,8,171,138,29,252,209,160,43,82,36,255,85,80,32,35,237,40,104,243,105,18,187,137,194,177,232,54,21,103,44,30,254,80,168,66,245,158,83,79,160,199,248,224,68,250,84,45,149,144,216,217,183,28,234,166,202,133,78,73,59,66,136,131,44,223,246,37,34,104,150,52,96,160,91,187,179,34,48,181,196,195,52,190,54,219,19,198,69,14,89,197,103,201,37,195,102,211,18,23,168,229,43,138,126,166,160,156,22,131,145,232,27,156,162,219,37,159,68,129,123,105,144,118,55,156,115,111,145,57,173,206,144,92,72,84,204,229,34,160,7,107,81,25,26,255,62,129,126,244,23,74,88,155,42,10,129,255,100,189,27,175,76,182,57,79,189,228,23,14,59,224,160,160,222,138,204,126,5,9,221,201,239,253,194,190,50,207,247,235,193,205,95,239,232,189,74,23,32,181,39,64,160,254,172,160,147,72,42,4,64,23,97,208,74,152,53,61,196,94,145,148,169,105,181,67,15,227,173,113,85,253,202,91,50,209,199,244,160,188,173,251,149,23,183,233,144,48,43,230,24,50,84,224,115,129,1,68,119,2,218,141,68,15,233,86,139,89,93,74,203,160,102,151,157,26,53,173,210,98,115,132,145,119,244,39,245,252,104,216,31,69,131,231,223,7,112,239,55,221,191,85,160,112,160,224,46,12,209,28,18,176,43,179,57,8,56,32,133,216,171,79,2,182,9,212,33,72,218,152,134,174,108,239,0,246,100,160,188,166,110,94,36,173,44,240,98,88,79,171,31,58,32,75,171,14,6,154,13,149,86,185,160,13,217,30,139,79,41,249,160,99,219,116,210,28,45,78,210,100,149,253,18,232,9,108,184,255,219,26,65,8,198,216,44,78,230,45,205,141,83,166,231,160,224,140,208,196,146,152,233,198,247,167,124,19,188,237,106,87,176,88,233,144,194,46,73,253,22,190,140,198,217,211,101,182,160,12,58,31,198,128,244,206,15,81,55,193,6,40,179,252,156,66,188,220,145,173,229,251,52,144,251,255,113,57,53,211,128,128],[249,2,17,160,175,84,201,168,228,0,184,154,71,8,92,173,125,235,98,158,248,249,163,199,53,84,89,122,190,11,45,14,4,56,139,43,160,142,201,232,22,116,220,124,158,250,130,181,222,224,24,63,147,141,188,222,77,0,220,29,141,150,62,8,171,138,29,252,209,160,43,82,36,255,85,80,32,35,237,40,104,243,105,18,187,137,194,177,232,54,21,103,44,30,254,80,168,66,245,158,83,79,160,199,248,224,68,250,84,45,149,144,216,217,183,28,234,166,202,133,78,73,59,66,136,131,44,223,246,37,34,104,150,52,96,160,91,187,179,34,48,181,196,195,52,190,54,219,19,198,69,14,89,197,103,201,37,195,102,211,18,23,168,229,43,138,126,166,160,156,22,131,145,232,27,156,162,219,37,159,68,129,123,105,144,118,55,156,115,111,145,57,173,206,144,92,72,84,204,229,34,160,7,107,81,25,26,255,62,129,126,244,23,74,88,155,42,10,129,255,100,189,27,175,76,182,57,79,189,228,23,14,59,224,160,160,222,138,204,126,5,9,221,201,239,253,194,190,50,207,247,235,193,205,95,239,232,189,74,23,32,181,39,64,160,254,172,160,147,72,42,4,64,23,97,208,74,152,53,61,196,94,145,148,169,105,181,67,15,227,173,113,85,253,202,91,50,209,199,244,160,188,173,251,149,23,183,233,144,48,43,230,24,50,84,224,115,129,1,68,119,2,218,141,68,15,233,86,139,89,93,74,203,160,102,151,157,26,53,173,210,98,115,132,145,119,244,39,245,252,104,216,31,69,131,231,223,7,112,239,55,221,191,85,160,112,160,224,46,12,209,28,18,176,43,179,57,8,56,32,133,216,171,79,2,182,9,212,33,72,218,152,134,174,108,239,0,246,100,160,188,166,110,94,36,173,44,240,98,88,79,171,31,58,32,75,171,14,6,154,13,149,86,185,160,13,217,30,139,79,41,249,160,99,219,116,210,28,45,78,210,100,149,253,18,232,9,108,184,255,219,26,65,8,198,216,44,78,230,45,205,141,83,166,231,160,228,225,32,39,192,75,12,156,8,213,116,187,180,53,211,55,153,120,6,99,33,169,229,16,138,187,126,28,220,224,188,141,160,12,58,31,198,128,244,206,15,81,55,193,6,40,179,252,156,66,188,220,145,173,229,251,52,144,251,255,113,57,53,211,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,203,85,116,82,146,104,195,251,188,181,160,83,15,61,19,33,161,240,233,114,63,225,161,56,132,205,208,215,85,120,25,146,0],[160,157,49,72,9,168,199,212,244,19,227,138,187,221,172,227,129,144,156,118,150,91,227,148,137,72,70,215,182,58,214,44,115,0],[160,142,225,153,94,68,106,155,61,66,178,80,180,215,142,156,253,243,134,191,242,5,207,71,100,16,212,112,37,12,25,238,188,0],[160,140,141,162,205,54,205,240,101,110,0,228,214,15,40,73,117,219,138,201,103,43,172,6,65,57,60,55,76,28,96,30,9,0],[160,209,132,91,50,7,206,222,2,220,61,71,168,112,0,240,136,185,234,200,4,119,133,78,71,104,8,88,33,42,230,199,221,0],[160,115,130,29,45,240,44,28,74,54,186,2,67,237,211,183,192,241,136,110,218,65,164,123,13,6,99,21,224,84,47,151,153,0],[160,99,180,74,154,244,189,179,217,85,13,247,31,164,236,82,50,88,126,187,178,133,112,174,248,160,163,235,100,42,208,151,212,0],[160,184,235,63,13,150,149,63,0,117,245,64,101,234,142,239,154,85,223,14,32,62,9,252,8,66,98,194,151,9,62,194,139,0],[160,63,47,136,104,4,254,131,213,54,7,151,77,47,137,73,115,236,252,190,88,202,63,181,125,59,155,172,181,54,202,17,247,0],[160,3,113,57,152,230,40,254,195,180,164,231,57,17,131,232,25,46,172,92,94,145,124,198,160,229,175,124,227,247,19,159,40,0],[160,103,163,129,235,75,3,208,75,23,179,108,227,78,160,223,91,208,98,91,233,160,198,86,8,132,8,224,237,48,254,138,118,0],[160,95,220,47,9,122,22,99,24,49,39,245,220,13,228,123,192,147,13,125,168,58,88,177,21,196,62,74,159,229,39,41,79,0],[160,88,166,30,78,145,240,20,49,216,127,251,238,250,252,128,216,101,94,197,137,252,132,68,61,207,8,190,224,63,213,234,112,0],[160,116,89,226,121,210,213,34,98,150,193,117,200,198,226,209,171,51,221,129,162,168,233,129,169,195,196,96,49,192,36,139,71,0],[160,117,186,44,188,138,184,207,119,18,231,39,75,241,26,152,158,180,92,44,216,195,156,39,233,176,208,14,8,191,59,189,141,0],[160,72,83,39,121,92,221,181,157,125,58,78,202,133,71,192,52,39,95,40,36,240,218,84,67,66,217,87,122,179,51,152,18,0],[160,138,88,60,199,109,25,5,160,200,80,209,157,157,200,33,124,103,16,1,26,155,5,124,88,251,171,29,219,176,76,185,159,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,157,49,72,9,168,199,212,244,19,227,138,187,221,172,227,129,144,156,118,150,91,227,148,137,72,70,215,182,58,214,44,115,160,142,225,153,94,68,106,155,61,66,178,80,180,215,142,156,253,243,134,191,242,5,207,71,100,16,212,112,37,12,25,238,188,160,140,141,162,205,54,205,240,101,110,0,228,214,15,40,73,117,219,138,201,103,43,172,6,65,57,60,55,76,28,96,30,9,160,209,132,91,50,7,206,222,2,220,61,71,168,112,0,240,136,185,234,200,4,119,133,78,71,104,8,88,33,42,230,199,221,160,115,130,29,45,240,44,28,74,54,186,2,67,237,211,183,192,241,136,110,218,65,164,123,13,6,99,21,224,84,47,151,153,160,99,180,74,154,244,189,179,217,85,13,247,31,164,236,82,50,88,126,187,178,133,112,174,248,160,163,235,100,42,208,151,212,160,184,235,63,13,150,149,63,0,117,245,64,101,234,142,239,154,85,223,14,32,62,9,252,8,66,98,194,151,9,62,194,139,160,63,47,136,104,4,254,131,213,54,7,151,77,47,137,73,115,236,252,190,88,202,63,181,125,59,155,172,181,54,202,17,247,160,3,113,57,152,230,40,254,195,180,164,231,57,17,131,232,25,46,172,92,94,145,124,198,160,229,175,124,227,247,19,159,40,160,103,163,129,235,75,3,208,75,23,179,108,227,78,160,223,91,208,98,91,233,160,198,86,8,132,8,224,237,48,254,138,118,160,95,220,47,9,122,22,99,24,49,39,245,220,13,228,123,192,147,13,125,168,58,88,177,21,196,62,74,159,229,39,41,79,160,88,166,30,78,145,240,20,49,216,127,251,238,250,252,128,216,101,94,197,137,252,132,68,61,207,8,190,224,63,213,234,112,160,116,89,226,121,210,213,34,98,150,193,117,200,198,226,209,171,51,221,129,162,168,233,129,169,195,196,96,49,192,36,139,71,160,117,186,44,188,138,184,207,119,18,231,39,75,241,26,152,158,180,92,44,216,195,156,39,233,176,208,14,8,191,59,189,141,160,72,83,39,121,92,221,181,157,125,58,78,202,133,71,192,52,39,95,40,36,240,218,84,67,66,217,87,122,179,51,152,18,160,138,88,60,199,109,25,5,160,200,80,209,157,157,200,33,124,103,16,1,26,155,5,124,88,251,171,29,219,176,76,185,159,128],[249,2,17,160,157,49,72,9,168,199,212,244,19,227,138,187,221,172,227,129,144,156,118,150,91,227,148,137,72,70,215,182,58,214,44,115,160,142,225,153,94,68,106,155,61,66,178,80,180,215,142,156,253,243,134,191,242,5,207,71,100,16,212,112,37,12,25,238,188,160,140,141,162,205,54,205,240,101,110,0,228,214,15,40,73,117,219,138,201,103,43,172,6,65,57,60,55,76,28,96,30,9,160,209,132,91,50,7,206,222,2,220,61,71,168,112,0,240,136,185,234,200,4,119,133,78,71,104,8,88,33,42,230,199,221,160,115,130,29,45,240,44,28,74,54,186,2,67,237,211,183,192,241,136,110,218,65,164,123,13,6,99,21,224,84,47,151,153,160,203,85,116,82,146,104,195,251,188,181,160,83,15,61,19,33,161,240,233,114,63,225,161,56,132,205,208,215,85,120,25,146,160,184,235,63,13,150,149,63,0,117,245,64,101,234,142,239,154,85,223,14,32,62,9,252,8,66,98,194,151,9,62,194,139,160,63,47,136,104,4,254,131,213,54,7,151,77,47,137,73,115,236,252,190,88,202,63,181,125,59,155,172,181,54,202,17,247,160,3,113,57,152,230,40,254,195,180,164,231,57,17,131,232,25,46,172,92,94,145,124,198,160,229,175,124,227,247,19,159,40,160,103,163,129,235,75,3,208,75,23,179,108,227,78,160,223,91,208,98,91,233,160,198,86,8,132,8,224,237,48,254,138,118,160,95,220,47,9,122,22,99,24,49,39,245,220,13,228,123,192,147,13,125,168,58,88,177,21,196,62,74,159,229,39,41,79,160,88,166,30,78,145,240,20,49,216,127,251,238,250,252,128,216,101,94,197,137,252,132,68,61,207,8,190,224,63,213,234,112,160,116,89,226,121,210,213,34,98,150,193,117,200,198,226,209,171,51,221,129,162,168,233,129,169,195,196,96,49,192,36,139,71,160,117,186,44,188,138,184,207,119,18,231,39,75,241,26,152,158,180,92,44,216,195,156,39,233,176,208,14,8,191,59,189,141,160,72,83,39,121,92,221,181,157,125,58,78,202,133,71,192,52,39,95,40,36,240,218,84,67,66,217,87,122,179,51,152,18,160,138,88,60,199,109,25,5,160,200,80,209,157,157,200,33,124,103,16,1,26,155,5,124,88,251,171,29,219,176,76,185,159,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":2,"drifted_index":2,"list_rlp_bytes":[[248,209],[248,209]]}},"account":null,"storage":null,"values":[[160,20,250,25,247,41,65,210,193,97,11,76,144,240,120,188,39,235,168,98,89,68,7,86,7,28,47,91,32,214,89,49,31,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,181,173,145,212,74,109,222,119,141,188,57,114,44,179,205,108,136,241,21,94,155,155,126,1,65,123,183,164,53,142,172,80,0],[160,39,93,102,110,163,8,85,244,43,127,206,181,5,6,27,132,127,248,253,120,100,88,124,228,118,111,151,188,248,235,69,202,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,66,41,209,222,96,221,184,36,89,21,89,184,152,254,60,16,37,150,250,120,144,139,38,111,41,15,226,116,202,158,77,229,0],[160,185,34,227,141,15,168,232,207,212,205,209,74,135,114,253,204,159,18,66,221,135,209,192,183,202,131,245,18,3,189,115,206,0],[160,166,124,191,187,48,24,150,201,144,143,192,67,72,140,4,103,76,234,200,194,253,200,155,94,100,190,160,105,156,60,0,48,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,199,102,157,141,43,148,65,199,159,101,169,108,5,65,181,10,178,211,96,182,191,241,121,145,102,43,2,57,85,7,171,208,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,209,128,160,181,173,145,212,74,109,222,119,141,188,57,114,44,179,205,108,136,241,21,94,155,155,126,1,65,123,183,164,53,142,172,80,160,39,93,102,110,163,8,85,244,43,127,206,181,5,6,27,132,127,248,253,120,100,88,124,228,118,111,151,188,248,235,69,202,128,128,128,128,160,66,41,209,222,96,221,184,36,89,21,89,184,152,254,60,16,37,150,250,120,144,139,38,111,41,15,226,116,202,158,77,229,160,185,34,227,141,15,168,232,207,212,205,209,74,135,114,253,204,159,18,66,221,135,209,192,183,202,131,245,18,3,189,115,206,160,166,124,191,187,48,24,150,201,144,143,192,67,72,140,4,103,76,234,200,194,253,200,155,94,100,190,160,105,156,60,0,48,128,128,128,128,160,199,102,157,141,43,148,65,199,159,101,169,108,5,65,181,10,178,211,96,182,191,241,121,145,102,43,2,57,85,7,171,208,128,128],[248,209,128,160,181,173,145,212,74,109,222,119,141,188,57,114,44,179,205,108,136,241,21,94,155,155,126,1,65,123,183,164,53,142,172,80,160,20,250,25,247,41,65,210,193,97,11,76,144,240,120,188,39,235,168,98,89,68,7,86,7,28,47,91,32,214,89,49,31,128,128,128,128,160,66,41,209,222,96,221,184,36,89,21,89,184,152,254,60,16,37,150,250,120,144,139,38,111,41,15,226,116,202,158,77,229,160,185,34,227,141,15,168,232,207,212,205,209,74,135,114,253,204,159,18,66,221,135,209,192,183,202,131,245,18,3,189,115,206,160,166,124,191,187,48,24,150,201,144,143,192,67,72,140,4,103,76,234,200,194,253,200,155,94,100,190,160,105,156,60,0,48,128,128,128,128,160,199,102,157,141,43,148,65,199,159,101,169,108,5,65,181,10,178,211,96,182,191,241,121,145,102,43,2,57,85,7,171,208,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[80,254,177,242,88,1,56,188,98,60,151,85,114,134,223,78,36,235,129,201],"key":[120,138,229,47,218,28,43,235,133,51,194,3,179,148,41,2,143,246,126,9,123,153,217,195,30,24,246,59,96,2,243,226],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,63,218,28,43,235,133,51,194,3,179,148,41,2,143,246,126,9,123,153,217,195,30,24,246,59,96,2,243,226,0,0,0,0],[157,63,218,28,43,235,133,51,194,3,179,148,41,2,143,246,126,9,123,153,217,195,30,24,246,59,96,2,243,226,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,244,204,43,204,179,165,144,88,206,229,204,57,1,32,29,14,238,35,155,100,79,198,45,25,48,108,39,188,129,249,244,196,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,139,130,164,93,112,201,126,157,50,210,212,214,217,71,43,105,8,91,80,30,55,7,186,162,184,98,51,194,180,10,224,101,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,63,218,28,43,235,133,51,194,3,179,148,41,2,143,246,126,9,123,153,217,195,30,24,246,59,96,2,243,226,0,0,0,0]],"keccak_data":[[248,102,157,63,218,28,43,235,133,51,194,3,179,148,41,2,143,246,126,9,123,153,217,195,30,24,246,59,96,2,243,226,184,70,248,68,128,128,160,244,204,43,204,179,165,144,88,206,229,204,57,1,32,29,14,238,35,155,100,79,198,45,25,48,108,39,188,129,249,244,196,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,63,218,28,43,235,133,51,194,3,179,148,41,2,143,246,126,9,123,153,217,195,30,24,246,59,96,2,243,226,184,70,248,68,128,128,160,139,130,164,93,112,201,126,157,50,210,212,214,217,71,43,105,8,91,80,30,55,7,186,162,184,98,51,194,180,10,224,101,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[80,254,177,242,88,1,56,188,98,60,151,85,114,134,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,1,113],[249,1,113]]}},"account":null,"storage":null,"values":[[160,165,241,158,176,215,149,218,230,216,158,220,156,5,39,56,237,134,233,251,135,191,3,212,3,168,234,235,195,137,42,188,115,0],[160,136,87,99,158,57,68,238,251,83,252,146,127,216,42,55,27,214,253,106,218,143,159,233,203,194,182,56,28,26,235,95,236,0],[160,183,61,21,88,192,16,29,107,46,186,196,241,234,252,196,232,56,231,43,220,244,49,201,108,250,122,6,130,156,122,119,10,0],[160,79,197,241,58,178,249,186,12,45,168,139,1,81,171,14,124,244,216,93,8,204,164,92,205,146,60,106,183,99,35,235,40,0],[160,147,31,200,131,19,49,103,136,46,1,167,47,128,146,235,40,179,181,1,99,210,43,90,113,42,63,194,216,20,174,42,218,0],[160,21,80,62,145,249,37,6,84,207,114,144,110,56,167,203,20,195,241,204,6,101,131,121,211,127,12,91,92,50,72,40,128,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,169,18,162,145,57,53,65,63,240,75,85,206,217,60,29,201,24,232,211,108,49,208,137,37,40,163,39,144,96,35,83,209,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,7,27,1,31,219,212,173,125,30,111,151,98,190,77,26,136,223,253,230,20,166,189,57,155,243,181,186,216,244,18,73,181,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,197,213,75,145,91,86,168,136,238,228,230,238,179,20,30,119,143,155,103,77,29,50,41,98,238,217,0,240,44,41,153,10,0],[160,226,244,240,21,75,28,189,235,196,209,59,77,208,104,237,37,116,56,174,201,13,250,69,140,139,247,160,87,132,196,103,119,0],[160,27,86,204,10,91,155,28,227,78,154,20,232,150,234,0,12,131,11,214,67,135,87,61,35,140,190,63,162,77,223,162,195,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,51,64,187,174,175,205,163,168,103,46,184,48,153,35,29,187,250,184,218,224,42,30,142,194,247,24,5,56,250,194,7,224,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,113,160,136,87,99,158,57,68,238,251,83,252,146,127,216,42,55,27,214,253,106,218,143,159,233,203,194,182,56,28,26,235,95,236,160,183,61,21,88,192,16,29,107,46,186,196,241,234,252,196,232,56,231,43,220,244,49,201,108,250,122,6,130,156,122,119,10,160,79,197,241,58,178,249,186,12,45,168,139,1,81,171,14,124,244,216,93,8,204,164,92,205,146,60,106,183,99,35,235,40,160,147,31,200,131,19,49,103,136,46,1,167,47,128,146,235,40,179,181,1,99,210,43,90,113,42,63,194,216,20,174,42,218,160,21,80,62,145,249,37,6,84,207,114,144,110,56,167,203,20,195,241,204,6,101,131,121,211,127,12,91,92,50,72,40,128,128,160,169,18,162,145,57,53,65,63,240,75,85,206,217,60,29,201,24,232,211,108,49,208,137,37,40,163,39,144,96,35,83,209,128,160,7,27,1,31,219,212,173,125,30,111,151,98,190,77,26,136,223,253,230,20,166,189,57,155,243,181,186,216,244,18,73,181,128,160,197,213,75,145,91,86,168,136,238,228,230,238,179,20,30,119,143,155,103,77,29,50,41,98,238,217,0,240,44,41,153,10,160,226,244,240,21,75,28,189,235,196,209,59,77,208,104,237,37,116,56,174,201,13,250,69,140,139,247,160,87,132,196,103,119,160,27,86,204,10,91,155,28,227,78,154,20,232,150,234,0,12,131,11,214,67,135,87,61,35,140,190,63,162,77,223,162,195,128,128,160,51,64,187,174,175,205,163,168,103,46,184,48,153,35,29,187,250,184,218,224,42,30,142,194,247,24,5,56,250,194,7,224,128],[249,1,113,160,136,87,99,158,57,68,238,251,83,252,146,127,216,42,55,27,214,253,106,218,143,159,233,203,194,182,56,28,26,235,95,236,160,183,61,21,88,192,16,29,107,46,186,196,241,234,252,196,232,56,231,43,220,244,49,201,108,250,122,6,130,156,122,119,10,160,79,197,241,58,178,249,186,12,45,168,139,1,81,171,14,124,244,216,93,8,204,164,92,205,146,60,106,183,99,35,235,40,160,147,31,200,131,19,49,103,136,46,1,167,47,128,146,235,40,179,181,1,99,210,43,90,113,42,63,194,216,20,174,42,218,160,21,80,62,145,249,37,6,84,207,114,144,110,56,167,203,20,195,241,204,6,101,131,121,211,127,12,91,92,50,72,40,128,128,160,169,18,162,145,57,53,65,63,240,75,85,206,217,60,29,201,24,232,211,108,49,208,137,37,40,163,39,144,96,35,83,209,128,160,7,27,1,31,219,212,173,125,30,111,151,98,190,77,26,136,223,253,230,20,166,189,57,155,243,181,186,216,244,18,73,181,128,160,197,213,75,145,91,86,168,136,238,228,230,238,179,20,30,119,143,155,103,77,29,50,41,98,238,217,0,240,44,41,153,10,160,165,241,158,176,215,149,218,230,216,158,220,156,5,39,56,237,134,233,251,135,191,3,212,3,168,234,235,195,137,42,188,115,160,27,86,204,10,91,155,28,227,78,154,20,232,150,234,0,12,131,11,214,67,135,87,61,35,140,190,63,162,77,223,162,195,128,128,160,51,64,187,174,175,205,163,168,103,46,184,48,153,35,29,187,250,184,218,224,42,30,142,194,247,24,5,56,250,194,7,224,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,25,127,67,53,5,23,184,21,12,18,224,101,234,96,185,53,191,13,78,203,91,170,9,93,254,42,226,71,74,41,22,253,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,85,83,20,68,174,134,225,58,6,228,53,105,211,99,100,217,228,208,243,250,101,118,255,10,196,79,189,67,25,181,251,217,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,117,254,248,169,140,212,202,48,190,248,66,108,226,49,13,176,213,221,44,93,158,12,29,42,13,71,21,208,116,159,193,173,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,160,85,83,20,68,174,134,225,58,6,228,53,105,211,99,100,217,228,208,243,250,101,118,255,10,196,79,189,67,25,181,251,217,128,128,128,128,128,128,128,128,128,160,117,254,248,169,140,212,202,48,190,248,66,108,226,49,13,176,213,221,44,93,158,12,29,42,13,71,21,208,116,159,193,173,128,128,128,128,128],[248,81,128,160,25,127,67,53,5,23,184,21,12,18,224,101,234,96,185,53,191,13,78,203,91,170,9,93,254,42,226,71,74,41,22,253,128,128,128,128,128,128,128,128,128,160,117,254,248,169,140,212,202,48,190,248,66,108,226,49,13,176,213,221,44,93,158,12,29,42,13,71,21,208,116,159,193,173,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[228]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,188,178,199,199,209,239,146,86,121,34,1,99,27,94,194,60,129,152,207,91,40,154,205,214,123,53,11,189,147,203,27,182,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,211,249,223,77,204,93,151,22,55,8,74,93,112,172,236,226,201,121,48,172,103,225,49,95,240,88,214,58,173,80,157,199,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,191,71,239,74,19,210,48,95,245,219,155,214,119,15,115,38,110,156,238,68,43,0,186,153,83,138,157,91,125,116,238,156,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[130,16,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,19,109,204,123,208,26,119,133,219,240,167,71,67,13,131,226,53,243,130,232,101,160,141,168,187,23,193,39,221,76,180,249,0],[0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,197,20,48,16,135,80,11,248,224,202,109,185,241,250,124,9,109,47,58,230,32,170,155,98,102,30,150,234,247,180,212,209,0]],"keccak_data":[[248,81,128,128,128,128,128,160,211,249,223,77,204,93,151,22,55,8,74,93,112,172,236,226,201,121,48,172,103,225,49,95,240,88,214,58,173,80,157,199,128,128,128,128,128,128,128,160,191,71,239,74,19,210,48,95,245,219,155,214,119,15,115,38,110,156,238,68,43,0,186,153,83,138,157,91,125,116,238,156,128,128,128],[248,81,128,128,128,128,128,160,188,178,199,199,209,239,146,86,121,34,1,99,27,94,194,60,129,152,207,91,40,154,205,214,123,53,11,189,147,203,27,182,128,128,128,128,128,128,128,160,191,71,239,74,19,210,48,95,245,219,155,214,119,15,115,38,110,156,238,68,43,0,186,153,83,138,157,91,125,116,238,156,128,128,128],[228,130,16,226,160,19,109,204,123,208,26,119,133,219,240,167,71,67,13,131,226,53,243,130,232,101,160,141,168,187,23,193,39,221,76,180,249],[228,130,16,226,160,197,20,48,16,135,80,11,248,224,202,109,185,241,250,124,9,109,47,58,230,32,170,155,98,102,30,150,234,247,180,212,209]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,50,52],"key":[177,14,37,119,247,121,182,85,98,237,248,234,41,197,17,202,86,71,159,217,0,117,14,166,144,244,96,114,36,239,104,53],"list_rlp_bytes":[[224],[224]],"value_rlp_bytes":[[1],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[158,32,119,247,121,182,85,98,237,248,234,41,197,17,202,86,71,159,217,0,117,14,166,144,244,96,114,36,239,104,53,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[158,32,119,247,121,182,85,98,237,248,234,41,197,17,202,86,71,159,217,0,117,14,166,144,244,96,114,36,239,104,53,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[224,158,32,119,247,121,182,85,98,237,248,234,41,197,17,202,86,71,159,217,0,117,14,166,144,244,96,114,36,239,104,53,1],[224,158,32,119,247,121,182,85,98,237,248,234,41,197,17,202,86,71,159,217,0,117,14,166,144,244,96,114,36,239,104,53,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,50,52]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ExtensionTwoKeyBytesSel1.json b/zkevm-circuits/src/mpt_circuit/tests/ExtensionTwoKeyBytesSel1.json new file mode 100644 index 0000000000..87c0addcf8 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ExtensionTwoKeyBytesSel1.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,222,115,186,235,169,87,113,45,165,25,30,86,241,248,60,198,195,137,162,81,254,143,243,98,31,3,12,253,100,13,43,128,0],[160,224,235,115,137,75,0,198,174,19,142,77,53,157,36,40,48,56,186,247,190,142,242,77,185,162,68,97,181,27,148,187,65,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,117,226,245,179,201,155,6,233,157,110,83,114,206,36,235,221,210,196,64,141,71,19,38,174,148,1,110,35,230,40,225,53,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,140,162,140,51,85,241,170,108,120,171,15,146,167,140,89,15,86,32,200,223,46,110,130,183,74,246,159,11,253,245,158,109,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,140,162,140,51,85,241,170,108,120,171,15,146,167,140,89,15,86,32,200,223,46,110,130,183,74,246,159,11,253,245,158,109,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,117,226,245,179,201,155,6,233,157,110,83,114,206,36,235,221,210,196,64,141,71,19,38,174,148,1,110,35,230,40,225,53,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,98,175,255,128,6,209,68,110,204,128,191,107,41,9,37,109,197,111,19,191,13,197,126,106,173,206,172,187,121,58,56,250,0],[160,0,206,33,240,101,251,90,188,73,10,150,144,56,188,30,27,85,139,94,5,74,204,46,227,225,161,245,164,212,123,119,17,0],[160,158,197,146,195,133,234,84,43,152,85,76,221,237,86,132,255,115,79,61,107,23,194,92,56,75,113,216,10,200,183,87,26,0],[160,194,152,14,169,119,137,64,54,162,181,197,145,208,235,167,184,70,163,196,232,144,255,116,16,132,177,77,174,101,172,104,104,0],[160,49,47,172,152,7,7,6,11,232,103,121,231,161,101,145,71,211,123,164,44,71,10,103,248,185,164,232,204,165,45,250,102,0],[160,68,19,96,150,137,200,112,23,100,65,2,179,154,130,167,209,205,114,87,189,201,71,56,52,59,176,142,55,246,33,222,198,0],[160,81,70,73,19,147,30,34,151,188,103,251,126,254,62,35,101,204,198,100,92,148,234,127,153,251,38,140,243,110,120,89,206,0],[160,153,56,68,205,140,247,250,231,180,188,89,107,54,149,145,83,147,173,184,162,137,156,161,58,69,102,85,11,26,243,192,247,0],[160,84,11,169,54,36,169,241,17,118,20,121,192,66,53,145,167,106,20,34,93,81,153,161,151,166,111,186,196,207,79,205,102,0],[160,21,204,109,8,193,125,112,192,47,37,182,82,90,109,229,234,172,243,83,193,102,230,190,180,211,203,242,20,246,16,116,37,0],[160,2,110,30,248,38,115,226,23,53,13,149,185,153,44,145,216,62,245,29,160,176,11,217,110,165,94,251,184,155,55,249,242,0],[160,167,46,230,43,234,32,209,151,178,230,220,223,167,95,226,105,101,123,1,163,65,37,73,49,185,130,26,88,87,252,241,42,0],[160,137,62,202,192,116,223,58,179,189,121,20,106,116,93,190,135,19,188,37,163,59,107,40,241,88,142,206,9,234,163,219,69,0],[160,74,166,255,37,80,208,11,236,208,85,44,196,213,203,218,41,43,59,35,132,56,206,202,50,27,77,241,165,33,96,71,223,0],[160,145,245,133,65,255,26,96,140,173,209,133,207,36,36,151,166,254,245,244,101,139,185,231,35,159,31,57,31,33,18,45,78,0],[160,60,217,92,4,104,103,148,169,116,98,182,50,210,45,100,120,94,64,85,175,168,151,183,14,126,152,234,94,158,106,32,112,0],[160,79,71,88,62,75,54,226,220,72,114,42,84,193,10,153,112,156,49,56,210,107,120,3,176,215,31,85,113,94,10,176,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,0,206,33,240,101,251,90,188,73,10,150,144,56,188,30,27,85,139,94,5,74,204,46,227,225,161,245,164,212,123,119,17,160,158,197,146,195,133,234,84,43,152,85,76,221,237,86,132,255,115,79,61,107,23,194,92,56,75,113,216,10,200,183,87,26,160,194,152,14,169,119,137,64,54,162,181,197,145,208,235,167,184,70,163,196,232,144,255,116,16,132,177,77,174,101,172,104,104,160,49,47,172,152,7,7,6,11,232,103,121,231,161,101,145,71,211,123,164,44,71,10,103,248,185,164,232,204,165,45,250,102,160,68,19,96,150,137,200,112,23,100,65,2,179,154,130,167,209,205,114,87,189,201,71,56,52,59,176,142,55,246,33,222,198,160,81,70,73,19,147,30,34,151,188,103,251,126,254,62,35,101,204,198,100,92,148,234,127,153,251,38,140,243,110,120,89,206,160,153,56,68,205,140,247,250,231,180,188,89,107,54,149,145,83,147,173,184,162,137,156,161,58,69,102,85,11,26,243,192,247,160,84,11,169,54,36,169,241,17,118,20,121,192,66,53,145,167,106,20,34,93,81,153,161,151,166,111,186,196,207,79,205,102,160,21,204,109,8,193,125,112,192,47,37,182,82,90,109,229,234,172,243,83,193,102,230,190,180,211,203,242,20,246,16,116,37,160,2,110,30,248,38,115,226,23,53,13,149,185,153,44,145,216,62,245,29,160,176,11,217,110,165,94,251,184,155,55,249,242,160,167,46,230,43,234,32,209,151,178,230,220,223,167,95,226,105,101,123,1,163,65,37,73,49,185,130,26,88,87,252,241,42,160,137,62,202,192,116,223,58,179,189,121,20,106,116,93,190,135,19,188,37,163,59,107,40,241,88,142,206,9,234,163,219,69,160,74,166,255,37,80,208,11,236,208,85,44,196,213,203,218,41,43,59,35,132,56,206,202,50,27,77,241,165,33,96,71,223,160,145,245,133,65,255,26,96,140,173,209,133,207,36,36,151,166,254,245,244,101,139,185,231,35,159,31,57,31,33,18,45,78,160,60,217,92,4,104,103,148,169,116,98,182,50,210,45,100,120,94,64,85,175,168,151,183,14,126,152,234,94,158,106,32,112,160,79,71,88,62,75,54,226,220,72,114,42,84,193,10,153,112,156,49,56,210,107,120,3,176,215,31,85,113,94,10,176,0,128],[249,2,17,160,0,206,33,240,101,251,90,188,73,10,150,144,56,188,30,27,85,139,94,5,74,204,46,227,225,161,245,164,212,123,119,17,160,158,197,146,195,133,234,84,43,152,85,76,221,237,86,132,255,115,79,61,107,23,194,92,56,75,113,216,10,200,183,87,26,160,194,152,14,169,119,137,64,54,162,181,197,145,208,235,167,184,70,163,196,232,144,255,116,16,132,177,77,174,101,172,104,104,160,49,47,172,152,7,7,6,11,232,103,121,231,161,101,145,71,211,123,164,44,71,10,103,248,185,164,232,204,165,45,250,102,160,68,19,96,150,137,200,112,23,100,65,2,179,154,130,167,209,205,114,87,189,201,71,56,52,59,176,142,55,246,33,222,198,160,98,175,255,128,6,209,68,110,204,128,191,107,41,9,37,109,197,111,19,191,13,197,126,106,173,206,172,187,121,58,56,250,160,153,56,68,205,140,247,250,231,180,188,89,107,54,149,145,83,147,173,184,162,137,156,161,58,69,102,85,11,26,243,192,247,160,84,11,169,54,36,169,241,17,118,20,121,192,66,53,145,167,106,20,34,93,81,153,161,151,166,111,186,196,207,79,205,102,160,21,204,109,8,193,125,112,192,47,37,182,82,90,109,229,234,172,243,83,193,102,230,190,180,211,203,242,20,246,16,116,37,160,2,110,30,248,38,115,226,23,53,13,149,185,153,44,145,216,62,245,29,160,176,11,217,110,165,94,251,184,155,55,249,242,160,167,46,230,43,234,32,209,151,178,230,220,223,167,95,226,105,101,123,1,163,65,37,73,49,185,130,26,88,87,252,241,42,160,137,62,202,192,116,223,58,179,189,121,20,106,116,93,190,135,19,188,37,163,59,107,40,241,88,142,206,9,234,163,219,69,160,74,166,255,37,80,208,11,236,208,85,44,196,213,203,218,41,43,59,35,132,56,206,202,50,27,77,241,165,33,96,71,223,160,145,245,133,65,255,26,96,140,173,209,133,207,36,36,151,166,254,245,244,101,139,185,231,35,159,31,57,31,33,18,45,78,160,60,217,92,4,104,103,148,169,116,98,182,50,210,45,100,120,94,64,85,175,168,151,183,14,126,152,234,94,158,106,32,112,160,79,71,88,62,75,54,226,220,72,114,42,84,193,10,153,112,156,49,56,210,107,120,3,176,215,31,85,113,94,10,176,0,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,41,27,161,1,14,238,191,62,198,211,11,43,6,176,141,248,242,19,28,178,82,237,9,81,209,128,63,171,77,208,146,183,0],[160,203,87,180,45,19,172,24,151,176,8,27,47,192,189,32,113,228,245,158,104,157,237,63,19,196,74,37,208,213,20,1,213,0],[160,132,48,250,11,195,102,49,193,238,164,205,16,173,44,2,29,58,172,221,235,127,251,229,66,91,191,112,91,236,207,104,120,0],[160,131,213,136,238,187,58,77,165,180,116,229,218,162,253,156,209,171,144,175,8,191,107,28,11,209,43,36,29,189,28,84,211,0],[160,69,204,182,150,212,83,114,124,133,157,80,247,44,120,54,203,254,245,86,190,51,208,132,224,93,251,231,167,209,73,103,67,0],[160,132,176,57,248,168,242,46,234,206,37,24,51,181,185,91,122,16,61,171,182,237,94,83,95,74,121,149,154,126,96,71,47,0],[160,1,8,149,21,233,104,85,4,158,168,223,169,31,36,59,203,201,67,39,188,53,208,204,206,225,123,200,204,69,80,227,17,0],[160,125,116,23,208,88,146,41,122,93,143,44,12,1,72,164,128,28,109,197,44,22,213,208,92,249,228,104,148,1,126,215,126,0],[160,48,220,143,189,40,125,41,221,219,161,44,173,255,212,230,189,162,18,91,234,7,206,235,164,51,174,41,34,91,222,36,223,0],[160,197,159,133,129,224,237,45,64,249,182,173,101,245,118,244,56,8,223,218,171,147,173,20,252,237,239,214,134,138,2,244,3,0],[160,169,198,159,86,160,240,203,102,247,34,149,195,177,66,175,8,30,213,88,17,100,22,220,219,80,147,187,177,9,151,33,224,0],[160,220,200,73,227,108,9,100,152,129,135,163,68,139,35,209,102,236,134,208,53,72,218,158,155,155,230,53,219,143,93,192,9,0],[160,173,218,74,214,33,206,79,127,44,161,168,119,133,239,13,130,239,92,194,134,224,239,124,169,78,177,48,76,201,106,32,128,0],[160,108,87,252,142,107,66,43,180,74,185,19,159,173,40,179,153,39,74,10,28,13,144,247,183,51,218,154,113,161,231,143,65,0],[160,50,5,220,4,115,212,19,13,196,112,96,232,166,44,178,146,110,2,157,194,28,118,5,235,50,212,222,201,126,28,165,152,0],[160,202,141,42,110,85,123,249,63,238,111,75,253,234,3,1,19,70,217,217,11,190,130,101,11,173,159,20,248,94,75,254,189,0],[160,20,25,119,129,22,221,65,78,129,235,24,175,17,191,66,181,74,205,232,126,229,189,28,246,225,195,204,18,22,124,155,60,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,203,87,180,45,19,172,24,151,176,8,27,47,192,189,32,113,228,245,158,104,157,237,63,19,196,74,37,208,213,20,1,213,160,132,48,250,11,195,102,49,193,238,164,205,16,173,44,2,29,58,172,221,235,127,251,229,66,91,191,112,91,236,207,104,120,160,131,213,136,238,187,58,77,165,180,116,229,218,162,253,156,209,171,144,175,8,191,107,28,11,209,43,36,29,189,28,84,211,160,69,204,182,150,212,83,114,124,133,157,80,247,44,120,54,203,254,245,86,190,51,208,132,224,93,251,231,167,209,73,103,67,160,132,176,57,248,168,242,46,234,206,37,24,51,181,185,91,122,16,61,171,182,237,94,83,95,74,121,149,154,126,96,71,47,160,1,8,149,21,233,104,85,4,158,168,223,169,31,36,59,203,201,67,39,188,53,208,204,206,225,123,200,204,69,80,227,17,160,125,116,23,208,88,146,41,122,93,143,44,12,1,72,164,128,28,109,197,44,22,213,208,92,249,228,104,148,1,126,215,126,160,48,220,143,189,40,125,41,221,219,161,44,173,255,212,230,189,162,18,91,234,7,206,235,164,51,174,41,34,91,222,36,223,160,197,159,133,129,224,237,45,64,249,182,173,101,245,118,244,56,8,223,218,171,147,173,20,252,237,239,214,134,138,2,244,3,160,169,198,159,86,160,240,203,102,247,34,149,195,177,66,175,8,30,213,88,17,100,22,220,219,80,147,187,177,9,151,33,224,160,220,200,73,227,108,9,100,152,129,135,163,68,139,35,209,102,236,134,208,53,72,218,158,155,155,230,53,219,143,93,192,9,160,173,218,74,214,33,206,79,127,44,161,168,119,133,239,13,130,239,92,194,134,224,239,124,169,78,177,48,76,201,106,32,128,160,108,87,252,142,107,66,43,180,74,185,19,159,173,40,179,153,39,74,10,28,13,144,247,183,51,218,154,113,161,231,143,65,160,50,5,220,4,115,212,19,13,196,112,96,232,166,44,178,146,110,2,157,194,28,118,5,235,50,212,222,201,126,28,165,152,160,202,141,42,110,85,123,249,63,238,111,75,253,234,3,1,19,70,217,217,11,190,130,101,11,173,159,20,248,94,75,254,189,160,20,25,119,129,22,221,65,78,129,235,24,175,17,191,66,181,74,205,232,126,229,189,28,246,225,195,204,18,22,124,155,60,128],[249,2,17,160,203,87,180,45,19,172,24,151,176,8,27,47,192,189,32,113,228,245,158,104,157,237,63,19,196,74,37,208,213,20,1,213,160,132,48,250,11,195,102,49,193,238,164,205,16,173,44,2,29,58,172,221,235,127,251,229,66,91,191,112,91,236,207,104,120,160,131,213,136,238,187,58,77,165,180,116,229,218,162,253,156,209,171,144,175,8,191,107,28,11,209,43,36,29,189,28,84,211,160,69,204,182,150,212,83,114,124,133,157,80,247,44,120,54,203,254,245,86,190,51,208,132,224,93,251,231,167,209,73,103,67,160,132,176,57,248,168,242,46,234,206,37,24,51,181,185,91,122,16,61,171,182,237,94,83,95,74,121,149,154,126,96,71,47,160,1,8,149,21,233,104,85,4,158,168,223,169,31,36,59,203,201,67,39,188,53,208,204,206,225,123,200,204,69,80,227,17,160,125,116,23,208,88,146,41,122,93,143,44,12,1,72,164,128,28,109,197,44,22,213,208,92,249,228,104,148,1,126,215,126,160,48,220,143,189,40,125,41,221,219,161,44,173,255,212,230,189,162,18,91,234,7,206,235,164,51,174,41,34,91,222,36,223,160,197,159,133,129,224,237,45,64,249,182,173,101,245,118,244,56,8,223,218,171,147,173,20,252,237,239,214,134,138,2,244,3,160,169,198,159,86,160,240,203,102,247,34,149,195,177,66,175,8,30,213,88,17,100,22,220,219,80,147,187,177,9,151,33,224,160,41,27,161,1,14,238,191,62,198,211,11,43,6,176,141,248,242,19,28,178,82,237,9,81,209,128,63,171,77,208,146,183,160,173,218,74,214,33,206,79,127,44,161,168,119,133,239,13,130,239,92,194,134,224,239,124,169,78,177,48,76,201,106,32,128,160,108,87,252,142,107,66,43,180,74,185,19,159,173,40,179,153,39,74,10,28,13,144,247,183,51,218,154,113,161,231,143,65,160,50,5,220,4,115,212,19,13,196,112,96,232,166,44,178,146,110,2,157,194,28,118,5,235,50,212,222,201,126,28,165,152,160,202,141,42,110,85,123,249,63,238,111,75,253,234,3,1,19,70,217,217,11,190,130,101,11,173,159,20,248,94,75,254,189,160,20,25,119,129,22,221,65,78,129,235,24,175,17,191,66,181,74,205,232,126,229,189,28,246,225,195,204,18,22,124,155,60,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,230,86,147,9,211,248,216,177,187,39,156,52,156,111,7,89,35,173,227,187,166,128,168,108,117,175,251,118,103,33,188,200,0],[160,164,180,29,22,203,14,23,254,91,167,142,82,252,226,144,159,50,228,193,89,255,17,202,245,137,242,83,21,221,254,241,75,0],[160,51,16,86,82,3,103,252,95,32,214,65,209,27,139,215,177,30,4,114,13,100,159,122,103,78,248,59,62,83,41,65,6,0],[160,153,44,61,41,56,105,20,92,71,71,28,87,80,225,56,22,11,22,92,125,109,109,25,42,244,179,157,0,195,61,109,153,0],[160,227,225,214,191,223,49,38,169,67,48,203,255,62,86,197,27,208,20,189,85,16,201,190,151,36,10,31,71,81,115,153,28,0],[160,68,254,241,192,187,6,53,16,239,162,140,90,80,24,15,2,237,196,139,50,146,113,134,132,242,34,248,45,4,229,94,60,0],[160,250,19,177,96,139,79,145,236,195,147,68,96,162,98,129,230,143,89,211,234,109,6,212,52,75,82,79,148,135,207,105,212,0],[160,248,191,9,26,115,87,162,60,78,162,196,199,178,60,25,76,128,69,159,113,166,224,134,224,3,169,48,253,152,245,105,99,0],[160,145,253,154,171,86,65,243,183,245,69,95,108,31,211,26,254,217,219,218,225,101,130,201,167,114,226,246,55,216,117,61,66,0],[160,129,142,118,2,163,156,147,102,49,255,164,178,49,203,177,58,49,88,179,200,39,50,204,115,252,237,207,186,167,60,199,224,0],[160,34,245,213,30,125,55,189,190,222,255,162,42,253,107,202,52,21,6,8,101,246,41,150,194,140,208,119,88,197,41,105,145,0],[160,151,101,139,165,122,27,169,90,82,231,90,133,204,80,249,120,190,103,47,12,178,65,243,170,161,2,249,78,81,203,174,3,0],[160,23,24,250,53,20,215,135,72,157,158,207,226,230,216,199,229,61,154,51,182,200,183,22,108,232,124,209,215,219,124,173,105,0],[160,168,222,193,164,239,216,82,134,36,161,154,86,36,247,133,2,201,34,22,131,69,149,154,160,109,45,98,135,183,171,69,190,0],[160,156,95,85,255,30,115,102,94,105,174,83,204,19,202,6,127,83,0,38,42,19,51,67,9,228,165,23,166,204,73,213,109,0],[160,33,163,247,169,198,139,127,139,35,122,193,20,247,119,29,205,178,210,236,124,111,246,249,234,135,91,151,74,118,136,24,205,0],[160,146,208,107,254,76,103,177,98,48,82,67,24,217,235,236,173,42,191,164,87,106,64,206,116,63,75,131,194,241,75,7,254,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,164,180,29,22,203,14,23,254,91,167,142,82,252,226,144,159,50,228,193,89,255,17,202,245,137,242,83,21,221,254,241,75,160,51,16,86,82,3,103,252,95,32,214,65,209,27,139,215,177,30,4,114,13,100,159,122,103,78,248,59,62,83,41,65,6,160,153,44,61,41,56,105,20,92,71,71,28,87,80,225,56,22,11,22,92,125,109,109,25,42,244,179,157,0,195,61,109,153,160,227,225,214,191,223,49,38,169,67,48,203,255,62,86,197,27,208,20,189,85,16,201,190,151,36,10,31,71,81,115,153,28,160,68,254,241,192,187,6,53,16,239,162,140,90,80,24,15,2,237,196,139,50,146,113,134,132,242,34,248,45,4,229,94,60,160,250,19,177,96,139,79,145,236,195,147,68,96,162,98,129,230,143,89,211,234,109,6,212,52,75,82,79,148,135,207,105,212,160,248,191,9,26,115,87,162,60,78,162,196,199,178,60,25,76,128,69,159,113,166,224,134,224,3,169,48,253,152,245,105,99,160,145,253,154,171,86,65,243,183,245,69,95,108,31,211,26,254,217,219,218,225,101,130,201,167,114,226,246,55,216,117,61,66,160,129,142,118,2,163,156,147,102,49,255,164,178,49,203,177,58,49,88,179,200,39,50,204,115,252,237,207,186,167,60,199,224,160,34,245,213,30,125,55,189,190,222,255,162,42,253,107,202,52,21,6,8,101,246,41,150,194,140,208,119,88,197,41,105,145,160,151,101,139,165,122,27,169,90,82,231,90,133,204,80,249,120,190,103,47,12,178,65,243,170,161,2,249,78,81,203,174,3,160,23,24,250,53,20,215,135,72,157,158,207,226,230,216,199,229,61,154,51,182,200,183,22,108,232,124,209,215,219,124,173,105,160,168,222,193,164,239,216,82,134,36,161,154,86,36,247,133,2,201,34,22,131,69,149,154,160,109,45,98,135,183,171,69,190,160,156,95,85,255,30,115,102,94,105,174,83,204,19,202,6,127,83,0,38,42,19,51,67,9,228,165,23,166,204,73,213,109,160,33,163,247,169,198,139,127,139,35,122,193,20,247,119,29,205,178,210,236,124,111,246,249,234,135,91,151,74,118,136,24,205,160,146,208,107,254,76,103,177,98,48,82,67,24,217,235,236,173,42,191,164,87,106,64,206,116,63,75,131,194,241,75,7,254,128],[249,2,17,160,164,180,29,22,203,14,23,254,91,167,142,82,252,226,144,159,50,228,193,89,255,17,202,245,137,242,83,21,221,254,241,75,160,51,16,86,82,3,103,252,95,32,214,65,209,27,139,215,177,30,4,114,13,100,159,122,103,78,248,59,62,83,41,65,6,160,153,44,61,41,56,105,20,92,71,71,28,87,80,225,56,22,11,22,92,125,109,109,25,42,244,179,157,0,195,61,109,153,160,230,86,147,9,211,248,216,177,187,39,156,52,156,111,7,89,35,173,227,187,166,128,168,108,117,175,251,118,103,33,188,200,160,68,254,241,192,187,6,53,16,239,162,140,90,80,24,15,2,237,196,139,50,146,113,134,132,242,34,248,45,4,229,94,60,160,250,19,177,96,139,79,145,236,195,147,68,96,162,98,129,230,143,89,211,234,109,6,212,52,75,82,79,148,135,207,105,212,160,248,191,9,26,115,87,162,60,78,162,196,199,178,60,25,76,128,69,159,113,166,224,134,224,3,169,48,253,152,245,105,99,160,145,253,154,171,86,65,243,183,245,69,95,108,31,211,26,254,217,219,218,225,101,130,201,167,114,226,246,55,216,117,61,66,160,129,142,118,2,163,156,147,102,49,255,164,178,49,203,177,58,49,88,179,200,39,50,204,115,252,237,207,186,167,60,199,224,160,34,245,213,30,125,55,189,190,222,255,162,42,253,107,202,52,21,6,8,101,246,41,150,194,140,208,119,88,197,41,105,145,160,151,101,139,165,122,27,169,90,82,231,90,133,204,80,249,120,190,103,47,12,178,65,243,170,161,2,249,78,81,203,174,3,160,23,24,250,53,20,215,135,72,157,158,207,226,230,216,199,229,61,154,51,182,200,183,22,108,232,124,209,215,219,124,173,105,160,168,222,193,164,239,216,82,134,36,161,154,86,36,247,133,2,201,34,22,131,69,149,154,160,109,45,98,135,183,171,69,190,160,156,95,85,255,30,115,102,94,105,174,83,204,19,202,6,127,83,0,38,42,19,51,67,9,228,165,23,166,204,73,213,109,160,33,163,247,169,198,139,127,139,35,122,193,20,247,119,29,205,178,210,236,124,111,246,249,234,135,91,151,74,118,136,24,205,160,146,208,107,254,76,103,177,98,48,82,67,24,217,235,236,173,42,191,164,87,106,64,206,116,63,75,131,194,241,75,7,254,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,23,24,176,238,55,224,78,30,175,33,125,114,126,69,77,41,74,38,101,201,147,1,247,11,38,125,85,7,161,140,248,253,0],[160,130,125,200,216,238,103,71,86,228,222,133,226,185,215,16,65,244,137,213,222,46,94,91,106,56,110,83,1,71,228,10,240,0],[160,248,202,84,13,216,174,252,30,229,65,141,37,227,150,196,28,28,105,146,6,157,111,192,16,166,121,175,81,241,46,64,21,0],[160,149,22,204,164,89,181,232,119,180,25,123,150,225,191,214,161,18,98,200,185,161,91,153,229,22,81,104,105,14,91,175,18,0],[160,136,47,162,174,125,241,171,51,20,17,84,201,78,127,167,38,221,244,167,60,242,192,140,126,214,188,167,22,227,17,131,24,0],[160,99,238,8,170,162,189,169,57,157,206,33,113,22,220,5,40,176,77,27,226,75,176,249,188,173,167,39,241,230,163,153,207,0],[160,15,42,19,16,84,126,167,130,52,226,72,244,186,227,216,196,73,213,1,164,64,16,41,141,148,236,212,26,61,227,209,40,0],[160,228,8,84,56,244,71,227,106,86,234,114,153,25,202,23,188,34,215,150,87,170,230,102,194,114,75,202,17,173,87,141,241,0],[160,145,9,246,79,103,114,147,211,156,49,54,227,178,50,208,12,134,162,195,210,143,116,89,7,68,55,158,29,166,214,250,114,0],[160,219,141,19,17,160,45,4,217,144,162,56,203,42,179,132,14,104,208,79,26,215,185,75,169,2,82,66,255,176,87,143,253,0],[160,230,246,0,147,43,79,220,149,115,36,61,157,241,142,78,64,62,185,218,167,59,5,58,34,72,215,242,208,105,143,243,203,0],[160,255,88,14,110,145,58,145,110,97,252,31,197,141,73,10,38,133,217,192,110,81,156,19,238,130,80,96,58,10,192,117,213,0],[160,246,73,170,108,238,154,1,184,132,255,244,164,47,158,247,4,47,222,0,221,180,95,142,203,9,168,102,75,61,72,158,75,0],[160,93,225,48,250,171,201,141,232,98,8,1,66,151,176,25,43,247,86,120,139,174,107,51,56,152,142,134,132,217,213,117,99,0],[160,114,100,103,31,57,40,189,156,8,133,90,111,104,215,121,110,200,156,14,102,232,61,40,208,26,216,208,49,88,79,30,30,0],[160,110,64,71,235,187,240,111,120,66,20,217,68,191,190,154,5,30,2,205,142,132,9,214,64,209,80,133,17,0,139,5,51,0],[160,251,231,67,229,234,241,249,19,1,238,151,102,24,216,168,26,135,210,83,135,151,113,210,9,29,156,161,11,209,118,249,163,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,130,125,200,216,238,103,71,86,228,222,133,226,185,215,16,65,244,137,213,222,46,94,91,106,56,110,83,1,71,228,10,240,160,248,202,84,13,216,174,252,30,229,65,141,37,227,150,196,28,28,105,146,6,157,111,192,16,166,121,175,81,241,46,64,21,160,149,22,204,164,89,181,232,119,180,25,123,150,225,191,214,161,18,98,200,185,161,91,153,229,22,81,104,105,14,91,175,18,160,136,47,162,174,125,241,171,51,20,17,84,201,78,127,167,38,221,244,167,60,242,192,140,126,214,188,167,22,227,17,131,24,160,99,238,8,170,162,189,169,57,157,206,33,113,22,220,5,40,176,77,27,226,75,176,249,188,173,167,39,241,230,163,153,207,160,15,42,19,16,84,126,167,130,52,226,72,244,186,227,216,196,73,213,1,164,64,16,41,141,148,236,212,26,61,227,209,40,160,228,8,84,56,244,71,227,106,86,234,114,153,25,202,23,188,34,215,150,87,170,230,102,194,114,75,202,17,173,87,141,241,160,145,9,246,79,103,114,147,211,156,49,54,227,178,50,208,12,134,162,195,210,143,116,89,7,68,55,158,29,166,214,250,114,160,219,141,19,17,160,45,4,217,144,162,56,203,42,179,132,14,104,208,79,26,215,185,75,169,2,82,66,255,176,87,143,253,160,230,246,0,147,43,79,220,149,115,36,61,157,241,142,78,64,62,185,218,167,59,5,58,34,72,215,242,208,105,143,243,203,160,255,88,14,110,145,58,145,110,97,252,31,197,141,73,10,38,133,217,192,110,81,156,19,238,130,80,96,58,10,192,117,213,160,246,73,170,108,238,154,1,184,132,255,244,164,47,158,247,4,47,222,0,221,180,95,142,203,9,168,102,75,61,72,158,75,160,93,225,48,250,171,201,141,232,98,8,1,66,151,176,25,43,247,86,120,139,174,107,51,56,152,142,134,132,217,213,117,99,160,114,100,103,31,57,40,189,156,8,133,90,111,104,215,121,110,200,156,14,102,232,61,40,208,26,216,208,49,88,79,30,30,160,110,64,71,235,187,240,111,120,66,20,217,68,191,190,154,5,30,2,205,142,132,9,214,64,209,80,133,17,0,139,5,51,160,251,231,67,229,234,241,249,19,1,238,151,102,24,216,168,26,135,210,83,135,151,113,210,9,29,156,161,11,209,118,249,163,128],[249,2,17,160,130,125,200,216,238,103,71,86,228,222,133,226,185,215,16,65,244,137,213,222,46,94,91,106,56,110,83,1,71,228,10,240,160,248,202,84,13,216,174,252,30,229,65,141,37,227,150,196,28,28,105,146,6,157,111,192,16,166,121,175,81,241,46,64,21,160,149,22,204,164,89,181,232,119,180,25,123,150,225,191,214,161,18,98,200,185,161,91,153,229,22,81,104,105,14,91,175,18,160,136,47,162,174,125,241,171,51,20,17,84,201,78,127,167,38,221,244,167,60,242,192,140,126,214,188,167,22,227,17,131,24,160,99,238,8,170,162,189,169,57,157,206,33,113,22,220,5,40,176,77,27,226,75,176,249,188,173,167,39,241,230,163,153,207,160,15,42,19,16,84,126,167,130,52,226,72,244,186,227,216,196,73,213,1,164,64,16,41,141,148,236,212,26,61,227,209,40,160,228,8,84,56,244,71,227,106,86,234,114,153,25,202,23,188,34,215,150,87,170,230,102,194,114,75,202,17,173,87,141,241,160,145,9,246,79,103,114,147,211,156,49,54,227,178,50,208,12,134,162,195,210,143,116,89,7,68,55,158,29,166,214,250,114,160,219,141,19,17,160,45,4,217,144,162,56,203,42,179,132,14,104,208,79,26,215,185,75,169,2,82,66,255,176,87,143,253,160,23,24,176,238,55,224,78,30,175,33,125,114,126,69,77,41,74,38,101,201,147,1,247,11,38,125,85,7,161,140,248,253,160,255,88,14,110,145,58,145,110,97,252,31,197,141,73,10,38,133,217,192,110,81,156,19,238,130,80,96,58,10,192,117,213,160,246,73,170,108,238,154,1,184,132,255,244,164,47,158,247,4,47,222,0,221,180,95,142,203,9,168,102,75,61,72,158,75,160,93,225,48,250,171,201,141,232,98,8,1,66,151,176,25,43,247,86,120,139,174,107,51,56,152,142,134,132,217,213,117,99,160,114,100,103,31,57,40,189,156,8,133,90,111,104,215,121,110,200,156,14,102,232,61,40,208,26,216,208,49,88,79,30,30,160,110,64,71,235,187,240,111,120,66,20,217,68,191,190,154,5,30,2,205,142,132,9,214,64,209,80,133,17,0,139,5,51,160,251,231,67,229,234,241,249,19,1,238,151,102,24,216,168,26,135,210,83,135,151,113,210,9,29,156,161,11,209,118,249,163,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":2,"drifted_index":2,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,125,217,128,189,142,151,23,107,184,19,216,47,153,52,93,150,30,15,49,6,42,13,245,87,15,216,13,226,199,181,123,130,0],[160,70,145,83,193,214,134,248,150,224,52,74,152,29,218,97,83,59,83,4,73,187,252,175,83,76,183,75,99,67,76,138,73,0],[160,22,190,149,252,61,199,213,233,229,10,51,220,75,54,224,16,32,42,49,162,63,252,27,165,66,150,131,107,66,16,224,254,0],[160,125,241,16,249,157,36,241,214,139,166,64,44,103,217,40,55,61,28,153,186,97,7,195,4,202,18,229,176,79,195,227,165,0],[160,90,249,62,95,120,4,195,163,16,243,187,115,149,41,218,140,203,37,14,47,202,220,147,184,30,152,1,67,19,77,174,95,0],[160,242,19,118,38,150,123,66,226,171,115,52,197,181,8,60,96,221,234,133,190,190,175,133,121,231,30,169,11,55,232,124,217,0],[160,250,232,13,221,55,87,247,231,209,182,17,203,74,1,63,52,180,107,235,166,85,166,64,15,130,255,205,166,8,103,42,148,0],[160,199,177,9,177,12,215,118,100,96,32,2,86,167,40,170,194,78,32,16,140,124,159,111,202,168,119,185,29,146,190,94,103,0],[160,219,146,211,131,15,109,53,238,134,174,222,68,167,236,230,125,230,52,215,131,236,156,165,99,208,212,238,209,105,29,158,115,0],[160,72,20,214,76,98,67,229,96,8,7,224,223,123,225,97,102,108,51,117,225,255,208,207,98,244,124,184,56,130,88,246,226,0],[160,151,68,74,226,114,34,178,164,77,234,195,37,80,231,9,115,74,85,174,135,138,239,65,113,57,51,41,37,217,229,7,112,0],[160,99,180,38,47,69,142,182,67,218,65,237,157,4,107,149,165,13,26,26,40,210,13,238,217,205,252,155,221,61,187,115,209,0],[160,104,252,79,74,128,102,126,216,235,122,235,232,78,90,171,166,221,90,99,167,132,8,14,147,240,85,158,69,181,253,59,74,0],[160,7,176,217,103,223,100,47,232,76,133,61,151,101,141,222,170,171,191,13,51,206,105,108,195,54,3,119,254,109,113,235,195,0],[160,199,40,86,250,85,115,89,81,218,107,168,175,235,50,126,83,98,122,90,56,246,195,208,155,120,249,245,11,58,228,81,168,0],[160,232,161,162,255,98,104,196,52,158,235,67,211,20,42,15,89,179,177,196,36,191,47,128,186,103,229,118,251,135,45,99,229,0],[160,251,16,185,34,102,255,78,201,110,108,48,37,2,19,29,214,170,253,218,86,75,241,187,210,49,208,166,239,232,247,86,116,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,70,145,83,193,214,134,248,150,224,52,74,152,29,218,97,83,59,83,4,73,187,252,175,83,76,183,75,99,67,76,138,73,160,22,190,149,252,61,199,213,233,229,10,51,220,75,54,224,16,32,42,49,162,63,252,27,165,66,150,131,107,66,16,224,254,160,125,241,16,249,157,36,241,214,139,166,64,44,103,217,40,55,61,28,153,186,97,7,195,4,202,18,229,176,79,195,227,165,160,90,249,62,95,120,4,195,163,16,243,187,115,149,41,218,140,203,37,14,47,202,220,147,184,30,152,1,67,19,77,174,95,160,242,19,118,38,150,123,66,226,171,115,52,197,181,8,60,96,221,234,133,190,190,175,133,121,231,30,169,11,55,232,124,217,160,250,232,13,221,55,87,247,231,209,182,17,203,74,1,63,52,180,107,235,166,85,166,64,15,130,255,205,166,8,103,42,148,160,199,177,9,177,12,215,118,100,96,32,2,86,167,40,170,194,78,32,16,140,124,159,111,202,168,119,185,29,146,190,94,103,160,219,146,211,131,15,109,53,238,134,174,222,68,167,236,230,125,230,52,215,131,236,156,165,99,208,212,238,209,105,29,158,115,160,72,20,214,76,98,67,229,96,8,7,224,223,123,225,97,102,108,51,117,225,255,208,207,98,244,124,184,56,130,88,246,226,160,151,68,74,226,114,34,178,164,77,234,195,37,80,231,9,115,74,85,174,135,138,239,65,113,57,51,41,37,217,229,7,112,160,99,180,38,47,69,142,182,67,218,65,237,157,4,107,149,165,13,26,26,40,210,13,238,217,205,252,155,221,61,187,115,209,160,104,252,79,74,128,102,126,216,235,122,235,232,78,90,171,166,221,90,99,167,132,8,14,147,240,85,158,69,181,253,59,74,160,7,176,217,103,223,100,47,232,76,133,61,151,101,141,222,170,171,191,13,51,206,105,108,195,54,3,119,254,109,113,235,195,160,199,40,86,250,85,115,89,81,218,107,168,175,235,50,126,83,98,122,90,56,246,195,208,155,120,249,245,11,58,228,81,168,160,232,161,162,255,98,104,196,52,158,235,67,211,20,42,15,89,179,177,196,36,191,47,128,186,103,229,118,251,135,45,99,229,160,251,16,185,34,102,255,78,201,110,108,48,37,2,19,29,214,170,253,218,86,75,241,187,210,49,208,166,239,232,247,86,116,128],[249,2,17,160,70,145,83,193,214,134,248,150,224,52,74,152,29,218,97,83,59,83,4,73,187,252,175,83,76,183,75,99,67,76,138,73,160,22,190,149,252,61,199,213,233,229,10,51,220,75,54,224,16,32,42,49,162,63,252,27,165,66,150,131,107,66,16,224,254,160,125,217,128,189,142,151,23,107,184,19,216,47,153,52,93,150,30,15,49,6,42,13,245,87,15,216,13,226,199,181,123,130,160,90,249,62,95,120,4,195,163,16,243,187,115,149,41,218,140,203,37,14,47,202,220,147,184,30,152,1,67,19,77,174,95,160,242,19,118,38,150,123,66,226,171,115,52,197,181,8,60,96,221,234,133,190,190,175,133,121,231,30,169,11,55,232,124,217,160,250,232,13,221,55,87,247,231,209,182,17,203,74,1,63,52,180,107,235,166,85,166,64,15,130,255,205,166,8,103,42,148,160,199,177,9,177,12,215,118,100,96,32,2,86,167,40,170,194,78,32,16,140,124,159,111,202,168,119,185,29,146,190,94,103,160,219,146,211,131,15,109,53,238,134,174,222,68,167,236,230,125,230,52,215,131,236,156,165,99,208,212,238,209,105,29,158,115,160,72,20,214,76,98,67,229,96,8,7,224,223,123,225,97,102,108,51,117,225,255,208,207,98,244,124,184,56,130,88,246,226,160,151,68,74,226,114,34,178,164,77,234,195,37,80,231,9,115,74,85,174,135,138,239,65,113,57,51,41,37,217,229,7,112,160,99,180,38,47,69,142,182,67,218,65,237,157,4,107,149,165,13,26,26,40,210,13,238,217,205,252,155,221,61,187,115,209,160,104,252,79,74,128,102,126,216,235,122,235,232,78,90,171,166,221,90,99,167,132,8,14,147,240,85,158,69,181,253,59,74,160,7,176,217,103,223,100,47,232,76,133,61,151,101,141,222,170,171,191,13,51,206,105,108,195,54,3,119,254,109,113,235,195,160,199,40,86,250,85,115,89,81,218,107,168,175,235,50,126,83,98,122,90,56,246,195,208,155,120,249,245,11,58,228,81,168,160,232,161,162,255,98,104,196,52,158,235,67,211,20,42,15,89,179,177,196,36,191,47,128,186,103,229,118,251,135,45,99,229,160,251,16,185,34,102,255,78,201,110,108,48,37,2,19,29,214,170,253,218,86,75,241,187,210,49,208,166,239,232,247,86,116,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,1,49],[249,1,49]]}},"account":null,"storage":null,"values":[[160,90,14,24,45,178,157,244,52,51,234,209,144,183,100,161,194,223,74,63,177,112,144,83,99,246,204,229,145,136,94,63,255,0],[160,118,242,101,44,253,106,80,226,115,167,231,134,185,144,197,247,214,162,163,245,29,192,199,182,79,156,98,234,166,120,48,254,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,101,201,19,214,180,225,89,152,133,13,189,160,75,190,49,145,54,223,182,93,69,52,178,126,1,165,98,119,169,220,85,143,0],[160,253,85,165,43,60,82,156,47,122,220,248,179,29,27,66,3,215,104,41,212,151,38,179,99,185,79,207,156,195,86,117,90,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,175,243,82,107,244,55,219,103,71,174,68,65,70,53,106,157,224,38,7,187,24,20,149,220,156,71,87,191,191,193,83,177,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,174,119,77,19,201,226,54,159,56,117,147,241,173,159,54,96,35,192,184,146,173,135,79,144,214,254,195,37,216,219,231,173,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,225,66,69,103,120,19,114,173,212,29,194,158,68,254,72,91,6,103,55,158,105,186,135,47,193,175,112,197,161,170,98,184,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,140,30,128,255,214,28,103,127,2,211,153,178,218,113,111,115,65,199,51,32,144,143,121,21,27,84,174,47,83,104,216,18,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,162,197,125,201,187,180,213,157,235,239,102,124,54,240,36,21,192,162,187,144,99,72,241,9,83,226,142,101,183,109,139,1,0],[160,152,36,188,87,218,33,40,78,210,121,54,183,197,77,106,156,185,88,57,220,53,254,91,1,83,131,83,150,244,29,5,170,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,49,160,118,242,101,44,253,106,80,226,115,167,231,134,185,144,197,247,214,162,163,245,29,192,199,182,79,156,98,234,166,120,48,254,128,160,101,201,19,214,180,225,89,152,133,13,189,160,75,190,49,145,54,223,182,93,69,52,178,126,1,165,98,119,169,220,85,143,160,253,85,165,43,60,82,156,47,122,220,248,179,29,27,66,3,215,104,41,212,151,38,179,99,185,79,207,156,195,86,117,90,128,128,160,175,243,82,107,244,55,219,103,71,174,68,65,70,53,106,157,224,38,7,187,24,20,149,220,156,71,87,191,191,193,83,177,128,160,174,119,77,19,201,226,54,159,56,117,147,241,173,159,54,96,35,192,184,146,173,135,79,144,214,254,195,37,216,219,231,173,128,160,225,66,69,103,120,19,114,173,212,29,194,158,68,254,72,91,6,103,55,158,105,186,135,47,193,175,112,197,161,170,98,184,128,160,140,30,128,255,214,28,103,127,2,211,153,178,218,113,111,115,65,199,51,32,144,143,121,21,27,84,174,47,83,104,216,18,128,160,162,197,125,201,187,180,213,157,235,239,102,124,54,240,36,21,192,162,187,144,99,72,241,9,83,226,142,101,183,109,139,1,160,152,36,188,87,218,33,40,78,210,121,54,183,197,77,106,156,185,88,57,220,53,254,91,1,83,131,83,150,244,29,5,170,128],[249,1,49,160,90,14,24,45,178,157,244,52,51,234,209,144,183,100,161,194,223,74,63,177,112,144,83,99,246,204,229,145,136,94,63,255,128,160,101,201,19,214,180,225,89,152,133,13,189,160,75,190,49,145,54,223,182,93,69,52,178,126,1,165,98,119,169,220,85,143,160,253,85,165,43,60,82,156,47,122,220,248,179,29,27,66,3,215,104,41,212,151,38,179,99,185,79,207,156,195,86,117,90,128,128,160,175,243,82,107,244,55,219,103,71,174,68,65,70,53,106,157,224,38,7,187,24,20,149,220,156,71,87,191,191,193,83,177,128,160,174,119,77,19,201,226,54,159,56,117,147,241,173,159,54,96,35,192,184,146,173,135,79,144,214,254,195,37,216,219,231,173,128,160,225,66,69,103,120,19,114,173,212,29,194,158,68,254,72,91,6,103,55,158,105,186,135,47,193,175,112,197,161,170,98,184,128,160,140,30,128,255,214,28,103,127,2,211,153,178,218,113,111,115,65,199,51,32,144,143,121,21,27,84,174,47,83,104,216,18,128,160,162,197,125,201,187,180,213,157,235,239,102,124,54,240,36,21,192,162,187,144,99,72,241,9,83,226,142,101,183,109,139,1,160,152,36,188,87,218,33,40,78,210,121,54,183,197,77,106,156,185,88,57,220,53,254,91,1,83,131,83,150,244,29,5,170,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,242,170,63,18,152,71,9,169,235,84,205,29,140,71,15,35,85,55,175,234,242,147,238,72,145,122,190,130,40,31,13,12,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,124,226,43,87,157,109,238,147,48,189,121,210,191,137,79,1,163,157,141,194,172,38,71,85,3,138,157,169,164,99,106,253,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,152,116,64,78,91,197,120,253,205,211,183,207,210,86,45,42,97,61,96,29,254,88,176,247,152,33,253,96,181,163,114,151,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,128,128,160,124,226,43,87,157,109,238,147,48,189,121,210,191,137,79,1,163,157,141,194,172,38,71,85,3,138,157,169,164,99,106,253,128,128,160,152,116,64,78,91,197,120,253,205,211,183,207,210,86,45,42,97,61,96,29,254,88,176,247,152,33,253,96,181,163,114,151,128,128,128],[248,81,128,128,128,128,128,128,128,128,128,128,160,242,170,63,18,152,71,9,169,235,84,205,29,140,71,15,35,85,55,175,234,242,147,238,72,145,122,190,130,40,31,13,12,128,128,160,152,116,64,78,91,197,120,253,205,211,183,207,210,86,45,42,97,61,96,29,254,88,176,247,152,33,253,96,181,163,114,151,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,251,239,33,80,129,131,194,182,60,89,117,120,38,223,78,36,235,129,201],"key":[69,163,146,10,62,93,129,85,209,204,55,235,67,56,182,198,220,198,25,69,14,53,78,37,148,78,8,145,165,205,66,236],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,32,62,93,129,85,209,204,55,235,67,56,182,198,220,198,25,69,14,53,78,37,148,78,8,145,165,205,66,236,0,0,0,0],[157,32,62,93,129,85,209,204,55,235,67,56,182,198,220,198,25,69,14,53,78,37,148,78,8,145,165,205,66,236,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,168,199,104,88,68,55,11,128,145,98,30,83,40,31,217,185,56,112,58,179,189,41,202,228,253,231,28,165,252,233,206,60,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,224,73,5,50,76,156,217,58,190,111,136,220,11,140,151,80,95,159,49,254,234,188,51,157,193,0,121,234,144,42,207,134,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,32,62,93,129,85,209,204,55,235,67,56,182,198,220,198,25,69,14,53,78,37,148,78,8,145,165,205,66,236,0,0,0,0]],"keccak_data":[[248,102,157,32,62,93,129,85,209,204,55,235,67,56,182,198,220,198,25,69,14,53,78,37,148,78,8,145,165,205,66,236,184,70,248,68,128,128,160,168,199,104,88,68,55,11,128,145,98,30,83,40,31,217,185,56,112,58,179,189,41,202,228,253,231,28,165,252,233,206,60,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,32,62,93,129,85,209,204,55,235,67,56,182,198,220,198,25,69,14,53,78,37,148,78,8,145,165,205,66,236,184,70,248,68,128,128,160,224,73,5,50,76,156,217,58,190,111,136,220,11,140,151,80,95,159,49,254,234,188,51,157,193,0,121,234,144,42,207,134,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,251,239,33,80,129,131,194,182,60,89,117,120,38,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,158,1,185,179,178,178,96,59,215,52,186,190,221,96,64,186,250,232,15,70,44,53,202,72,216,193,2,149,251,166,73,58,0],[160,88,130,254,176,165,150,161,122,54,133,71,237,254,141,101,100,135,185,202,23,195,5,199,45,49,253,246,235,178,0,255,130,0],[160,206,100,21,163,213,202,153,211,20,89,121,201,128,199,82,37,152,176,13,161,59,237,124,148,254,236,216,242,126,119,233,121,0],[160,185,228,203,130,115,16,96,207,136,110,239,83,202,102,94,135,170,241,137,34,227,70,105,198,48,47,61,176,187,146,152,206,0],[160,245,93,164,217,168,130,117,33,10,79,206,102,217,104,174,204,55,144,173,29,171,153,52,247,65,94,3,120,136,133,113,137,0],[160,230,68,115,42,167,193,17,185,239,176,90,30,205,99,190,175,89,178,168,70,89,14,220,67,184,146,202,42,189,182,51,190,0],[160,85,83,114,61,113,42,28,60,242,159,218,90,206,16,140,74,124,154,18,160,53,246,186,233,107,73,46,254,18,75,47,147,0],[160,89,90,52,80,252,109,214,48,252,66,48,208,168,79,62,80,179,254,122,181,240,126,71,118,238,74,221,169,34,91,144,38,0],[160,28,210,125,44,43,13,68,38,218,169,123,221,0,77,217,20,185,66,203,186,238,118,246,238,144,218,176,87,88,153,125,152,0],[160,51,40,154,4,219,129,108,42,120,61,114,181,239,14,0,138,62,32,222,102,180,46,163,235,14,71,27,3,242,151,165,133,0],[160,221,181,63,128,237,179,86,222,12,41,194,7,85,77,73,37,146,251,42,86,29,141,89,57,66,97,207,16,160,113,99,158,0],[160,58,22,42,72,118,113,38,35,57,68,95,117,66,169,9,9,28,25,143,102,24,118,144,65,229,228,121,101,20,167,6,194,0],[160,27,177,232,148,216,39,95,227,113,37,29,225,188,40,99,88,227,197,235,94,182,237,78,77,215,223,227,27,47,73,247,84,0],[160,130,164,185,214,76,218,31,222,13,144,252,191,78,46,40,7,7,97,186,214,6,107,105,56,60,220,208,245,174,80,221,230,0],[160,94,102,86,131,113,1,162,16,94,58,115,225,65,201,33,17,159,22,91,48,168,142,10,191,36,160,28,198,113,75,54,72,0],[160,1,51,213,33,216,48,173,250,164,40,77,32,67,15,137,93,185,243,109,76,169,33,179,71,166,47,193,148,243,216,221,73,0],[160,187,8,157,195,152,194,195,101,85,55,91,229,182,90,188,202,192,148,23,38,92,255,250,105,206,62,201,154,134,210,84,234,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,88,130,254,176,165,150,161,122,54,133,71,237,254,141,101,100,135,185,202,23,195,5,199,45,49,253,246,235,178,0,255,130,160,206,100,21,163,213,202,153,211,20,89,121,201,128,199,82,37,152,176,13,161,59,237,124,148,254,236,216,242,126,119,233,121,160,185,228,203,130,115,16,96,207,136,110,239,83,202,102,94,135,170,241,137,34,227,70,105,198,48,47,61,176,187,146,152,206,160,245,93,164,217,168,130,117,33,10,79,206,102,217,104,174,204,55,144,173,29,171,153,52,247,65,94,3,120,136,133,113,137,160,230,68,115,42,167,193,17,185,239,176,90,30,205,99,190,175,89,178,168,70,89,14,220,67,184,146,202,42,189,182,51,190,160,85,83,114,61,113,42,28,60,242,159,218,90,206,16,140,74,124,154,18,160,53,246,186,233,107,73,46,254,18,75,47,147,160,89,90,52,80,252,109,214,48,252,66,48,208,168,79,62,80,179,254,122,181,240,126,71,118,238,74,221,169,34,91,144,38,160,28,210,125,44,43,13,68,38,218,169,123,221,0,77,217,20,185,66,203,186,238,118,246,238,144,218,176,87,88,153,125,152,160,51,40,154,4,219,129,108,42,120,61,114,181,239,14,0,138,62,32,222,102,180,46,163,235,14,71,27,3,242,151,165,133,160,221,181,63,128,237,179,86,222,12,41,194,7,85,77,73,37,146,251,42,86,29,141,89,57,66,97,207,16,160,113,99,158,160,58,22,42,72,118,113,38,35,57,68,95,117,66,169,9,9,28,25,143,102,24,118,144,65,229,228,121,101,20,167,6,194,160,27,177,232,148,216,39,95,227,113,37,29,225,188,40,99,88,227,197,235,94,182,237,78,77,215,223,227,27,47,73,247,84,160,130,164,185,214,76,218,31,222,13,144,252,191,78,46,40,7,7,97,186,214,6,107,105,56,60,220,208,245,174,80,221,230,160,94,102,86,131,113,1,162,16,94,58,115,225,65,201,33,17,159,22,91,48,168,142,10,191,36,160,28,198,113,75,54,72,160,1,51,213,33,216,48,173,250,164,40,77,32,67,15,137,93,185,243,109,76,169,33,179,71,166,47,193,148,243,216,221,73,160,187,8,157,195,152,194,195,101,85,55,91,229,182,90,188,202,192,148,23,38,92,255,250,105,206,62,201,154,134,210,84,234,128],[249,2,17,160,88,130,254,176,165,150,161,122,54,133,71,237,254,141,101,100,135,185,202,23,195,5,199,45,49,253,246,235,178,0,255,130,160,206,100,21,163,213,202,153,211,20,89,121,201,128,199,82,37,152,176,13,161,59,237,124,148,254,236,216,242,126,119,233,121,160,185,228,203,130,115,16,96,207,136,110,239,83,202,102,94,135,170,241,137,34,227,70,105,198,48,47,61,176,187,146,152,206,160,245,93,164,217,168,130,117,33,10,79,206,102,217,104,174,204,55,144,173,29,171,153,52,247,65,94,3,120,136,133,113,137,160,230,68,115,42,167,193,17,185,239,176,90,30,205,99,190,175,89,178,168,70,89,14,220,67,184,146,202,42,189,182,51,190,160,85,83,114,61,113,42,28,60,242,159,218,90,206,16,140,74,124,154,18,160,53,246,186,233,107,73,46,254,18,75,47,147,160,89,90,52,80,252,109,214,48,252,66,48,208,168,79,62,80,179,254,122,181,240,126,71,118,238,74,221,169,34,91,144,38,160,28,210,125,44,43,13,68,38,218,169,123,221,0,77,217,20,185,66,203,186,238,118,246,238,144,218,176,87,88,153,125,152,160,51,40,154,4,219,129,108,42,120,61,114,181,239,14,0,138,62,32,222,102,180,46,163,235,14,71,27,3,242,151,165,133,160,221,181,63,128,237,179,86,222,12,41,194,7,85,77,73,37,146,251,42,86,29,141,89,57,66,97,207,16,160,113,99,158,160,58,22,42,72,118,113,38,35,57,68,95,117,66,169,9,9,28,25,143,102,24,118,144,65,229,228,121,101,20,167,6,194,160,27,177,232,148,216,39,95,227,113,37,29,225,188,40,99,88,227,197,235,94,182,237,78,77,215,223,227,27,47,73,247,84,160,130,164,185,214,76,218,31,222,13,144,252,191,78,46,40,7,7,97,186,214,6,107,105,56,60,220,208,245,174,80,221,230,160,94,102,86,131,113,1,162,16,94,58,115,225,65,201,33,17,159,22,91,48,168,142,10,191,36,160,28,198,113,75,54,72,160,158,1,185,179,178,178,96,59,215,52,186,190,221,96,64,186,250,232,15,70,44,53,202,72,216,193,2,149,251,166,73,58,160,187,8,157,195,152,194,195,101,85,55,91,229,182,90,188,202,192,148,23,38,92,255,250,105,206,62,201,154,134,210,84,234,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,1,81],[249,1,81]]}},"account":null,"storage":null,"values":[[160,234,242,30,7,249,134,245,117,172,51,76,95,98,96,39,255,158,84,86,140,240,202,116,222,186,131,119,57,186,191,241,200,0],[160,223,191,47,91,38,97,233,207,234,252,240,126,240,80,166,146,43,0,163,47,46,244,225,208,162,228,1,87,150,188,106,77,0],[160,255,69,36,238,59,56,81,174,192,41,30,22,105,156,2,102,173,58,62,95,210,198,243,187,172,82,81,110,157,36,173,56,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,186,227,45,209,79,154,5,112,143,64,120,137,180,220,95,217,242,33,120,152,221,159,185,238,104,77,176,251,69,213,123,160,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,187,244,53,58,42,141,178,166,196,86,132,46,248,240,248,123,193,114,242,47,204,54,76,166,150,15,74,135,193,230,9,172,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,225,136,101,189,239,82,3,5,134,251,62,100,120,128,129,186,92,184,233,88,187,23,68,92,149,49,207,163,243,163,232,23,0],[160,141,83,34,180,161,0,161,199,96,114,90,214,75,148,44,16,243,215,77,116,78,73,221,96,55,212,175,186,109,239,128,223,0],[160,224,39,241,8,86,117,180,255,110,155,204,245,17,208,152,191,111,95,124,65,172,241,28,81,146,97,149,20,154,213,232,106,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,200,46,43,163,240,176,159,66,189,141,0,101,185,85,208,239,240,81,52,222,137,109,217,103,229,88,34,216,31,124,111,156,0],[160,54,63,38,143,24,187,59,31,244,76,63,28,86,27,108,104,184,215,17,124,1,255,174,150,116,135,163,23,33,7,65,3,0],[160,231,33,33,44,130,79,181,58,121,185,85,171,197,178,228,192,123,46,3,95,35,193,225,191,34,30,31,58,22,54,182,240,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,81,160,223,191,47,91,38,97,233,207,234,252,240,126,240,80,166,146,43,0,163,47,46,244,225,208,162,228,1,87,150,188,106,77,160,255,69,36,238,59,56,81,174,192,41,30,22,105,156,2,102,173,58,62,95,210,198,243,187,172,82,81,110,157,36,173,56,128,128,160,186,227,45,209,79,154,5,112,143,64,120,137,180,220,95,217,242,33,120,152,221,159,185,238,104,77,176,251,69,213,123,160,128,160,187,244,53,58,42,141,178,166,196,86,132,46,248,240,248,123,193,114,242,47,204,54,76,166,150,15,74,135,193,230,9,172,128,160,225,136,101,189,239,82,3,5,134,251,62,100,120,128,129,186,92,184,233,88,187,23,68,92,149,49,207,163,243,163,232,23,160,141,83,34,180,161,0,161,199,96,114,90,214,75,148,44,16,243,215,77,116,78,73,221,96,55,212,175,186,109,239,128,223,160,224,39,241,8,86,117,180,255,110,155,204,245,17,208,152,191,111,95,124,65,172,241,28,81,146,97,149,20,154,213,232,106,128,160,200,46,43,163,240,176,159,66,189,141,0,101,185,85,208,239,240,81,52,222,137,109,217,103,229,88,34,216,31,124,111,156,160,54,63,38,143,24,187,59,31,244,76,63,28,86,27,108,104,184,215,17,124,1,255,174,150,116,135,163,23,33,7,65,3,160,231,33,33,44,130,79,181,58,121,185,85,171,197,178,228,192,123,46,3,95,35,193,225,191,34,30,31,58,22,54,182,240,128,128],[249,1,81,160,223,191,47,91,38,97,233,207,234,252,240,126,240,80,166,146,43,0,163,47,46,244,225,208,162,228,1,87,150,188,106,77,160,255,69,36,238,59,56,81,174,192,41,30,22,105,156,2,102,173,58,62,95,210,198,243,187,172,82,81,110,157,36,173,56,128,128,160,186,227,45,209,79,154,5,112,143,64,120,137,180,220,95,217,242,33,120,152,221,159,185,238,104,77,176,251,69,213,123,160,128,160,187,244,53,58,42,141,178,166,196,86,132,46,248,240,248,123,193,114,242,47,204,54,76,166,150,15,74,135,193,230,9,172,128,160,225,136,101,189,239,82,3,5,134,251,62,100,120,128,129,186,92,184,233,88,187,23,68,92,149,49,207,163,243,163,232,23,160,141,83,34,180,161,0,161,199,96,114,90,214,75,148,44,16,243,215,77,116,78,73,221,96,55,212,175,186,109,239,128,223,160,224,39,241,8,86,117,180,255,110,155,204,245,17,208,152,191,111,95,124,65,172,241,28,81,146,97,149,20,154,213,232,106,128,160,200,46,43,163,240,176,159,66,189,141,0,101,185,85,208,239,240,81,52,222,137,109,217,103,229,88,34,216,31,124,111,156,160,234,242,30,7,249,134,245,117,172,51,76,95,98,96,39,255,158,84,86,140,240,202,116,222,186,131,119,57,186,191,241,200,160,231,33,33,44,130,79,181,58,121,185,85,171,197,178,228,192,123,46,3,95,35,193,225,191,34,30,31,58,22,54,182,240,128,128]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[228]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,184,155,158,21,127,28,35,73,93,52,0,121,224,81,191,252,189,22,156,225,169,176,31,181,31,197,245,174,116,117,102,91,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,167,11,74,230,177,195,144,152,106,9,108,135,175,61,210,234,146,91,225,194,76,0,238,38,188,247,40,57,49,102,180,210,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,95,184,246,162,216,146,32,47,123,31,21,167,62,238,216,82,226,132,86,213,247,36,36,234,72,52,26,136,223,232,253,63,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[130,0,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,114,253,150,133,18,192,156,19,241,162,51,210,24,1,151,16,48,7,177,42,60,49,34,230,254,242,79,132,165,90,75,249,0],[0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,57,70,87,80,220,197,201,254,196,232,29,240,104,158,250,223,175,172,44,123,126,255,126,108,15,160,185,239,174,205,146,130,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,128,160,167,11,74,230,177,195,144,152,106,9,108,135,175,61,210,234,146,91,225,194,76,0,238,38,188,247,40,57,49,102,180,210,128,128,128,160,95,184,246,162,216,146,32,47,123,31,21,167,62,238,216,82,226,132,86,213,247,36,36,234,72,52,26,136,223,232,253,63,128,128,128],[248,81,128,128,128,128,128,128,128,128,128,160,167,11,74,230,177,195,144,152,106,9,108,135,175,61,210,234,146,91,225,194,76,0,238,38,188,247,40,57,49,102,180,210,128,128,128,160,184,155,158,21,127,28,35,73,93,52,0,121,224,81,191,252,189,22,156,225,169,176,31,181,31,197,245,174,116,117,102,91,128,128,128],[228,130,0,149,160,114,253,150,133,18,192,156,19,241,162,51,210,24,1,151,16,48,7,177,42,60,49,34,230,254,242,79,132,165,90,75,249],[228,130,0,149,160,57,70,87,80,220,197,201,254,196,232,29,240,104,158,250,223,175,172,44,123,126,255,126,108,15,160,185,239,174,205,146,130]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,114],"key":[237,149,213,42,227,19,230,190,109,140,143,153,69,146,58,100,151,195,114,105,186,53,213,227,83,91,117,142,71,34,124,252],"list_rlp_bytes":[[226],[224]],"value_rlp_bytes":[[130],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[158,53,42,227,19,230,190,109,140,143,153,69,146,58,100,151,195,114,105,186,53,213,227,83,91,117,142,71,34,124,252,0,0,0],[129,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[158,53,42,227,19,230,190,109,140,143,153,69,146,58,100,151,195,114,105,186,53,213,227,83,91,117,142,71,34,124,252,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[226,158,53,42,227,19,230,190,109,140,143,153,69,146,58,100,151,195,114,105,186,53,213,227,83,91,117,142,71,34,124,252,130,129,173],[224,158,53,42,227,19,230,190,109,140,143,153,69,146,58,100,151,195,114,105,186,53,213,227,83,91,117,142,71,34,124,252,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,114]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ExtensionTwoKeyBytesSel2.json b/zkevm-circuits/src/mpt_circuit/tests/ExtensionTwoKeyBytesSel2.json new file mode 100644 index 0000000000..7ae47dcb53 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ExtensionTwoKeyBytesSel2.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,217,189,154,245,148,60,246,196,48,7,91,27,75,207,123,195,20,161,124,51,226,135,16,82,212,70,106,221,134,62,240,99,0],[160,230,233,6,227,144,160,28,123,187,95,193,137,14,229,42,8,73,95,41,13,136,225,215,147,85,47,110,75,77,92,127,1,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,6,183,21,22,141,154,93,242,33,163,165,218,85,17,169,55,108,252,1,229,107,208,17,53,177,82,213,70,231,154,230,18,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,208,230,7,186,137,143,47,107,201,43,109,52,82,40,72,163,135,169,33,123,56,113,247,127,68,242,83,66,32,5,176,75,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,208,230,7,186,137,143,47,107,201,43,109,52,82,40,72,163,135,169,33,123,56,113,247,127,68,242,83,66,32,5,176,75,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,6,183,21,22,141,154,93,242,33,163,165,218,85,17,169,55,108,252,1,229,107,208,17,53,177,82,213,70,231,154,230,18,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,174,193,28,36,136,162,196,210,62,126,113,177,150,50,191,124,234,183,229,122,245,146,61,143,68,108,249,125,152,159,169,47,0],[160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,0],[160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,0],[160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,0],[160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,0],[160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,0],[160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,0],[160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,0],[160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,0],[160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,0],[160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,0],[160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,0],[160,128,173,60,145,248,253,133,144,179,124,61,33,232,140,5,252,151,234,86,121,34,249,8,121,154,121,230,147,181,238,80,169,0],[160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,0],[160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,0],[160,105,31,143,202,97,79,163,131,191,159,167,233,177,89,154,179,146,17,145,88,113,213,102,123,125,49,63,14,23,154,117,151,0],[160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,160,128,173,60,145,248,253,133,144,179,124,61,33,232,140,5,252,151,234,86,121,34,249,8,121,154,121,230,147,181,238,80,169,160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,160,105,31,143,202,97,79,163,131,191,159,167,233,177,89,154,179,146,17,145,88,113,213,102,123,125,49,63,14,23,154,117,151,160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,128],[249,2,17,160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,160,128,173,60,145,248,253,133,144,179,124,61,33,232,140,5,252,151,234,86,121,34,249,8,121,154,121,230,147,181,238,80,169,160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,160,174,193,28,36,136,162,196,210,62,126,113,177,150,50,191,124,234,183,229,122,245,146,61,143,68,108,249,125,152,159,169,47,160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,160,195,233,184,227,196,133,251,169,166,193,93,188,31,192,63,18,114,23,12,90,253,90,148,118,34,121,36,225,235,139,235,0],[160,80,75,215,208,193,159,84,57,71,243,7,14,204,100,148,205,208,55,165,27,88,145,87,12,99,158,158,182,197,55,33,95,0],[160,76,180,250,234,22,207,36,13,201,139,0,120,72,139,180,238,156,185,62,97,200,44,188,159,187,99,106,94,147,15,25,20,0],[160,189,17,169,103,34,213,240,167,18,182,246,233,129,88,212,80,113,250,13,189,211,144,206,169,179,25,180,70,188,155,55,32,0],[160,32,220,255,83,236,6,9,125,247,185,224,139,47,190,49,98,219,131,56,50,131,152,150,81,107,126,7,163,202,127,91,164,0],[160,185,211,148,32,33,143,139,118,55,225,47,134,141,134,35,28,209,179,72,57,247,141,152,65,38,141,179,61,214,174,204,14,0],[160,107,106,58,227,233,173,248,116,152,133,228,250,245,205,196,226,135,107,65,132,233,139,78,59,136,248,255,241,150,83,160,5,0],[160,0,164,180,172,120,195,134,123,28,39,200,127,136,82,33,245,97,141,28,111,0,184,5,98,102,230,66,116,77,224,101,219,0],[160,248,105,172,225,53,1,157,135,194,244,188,254,17,122,124,197,196,99,49,56,111,8,165,230,145,108,189,38,207,45,75,50,0],[160,35,73,222,234,130,172,207,150,15,218,253,15,36,223,217,31,215,79,14,171,224,221,215,51,242,239,84,255,134,147,216,166,0],[160,240,32,244,239,11,87,72,174,41,33,118,196,147,56,102,122,208,41,160,96,186,168,111,141,93,215,31,104,139,17,215,242,0],[160,82,199,196,167,58,157,107,196,36,170,39,205,176,246,208,56,210,163,200,208,226,179,109,60,35,248,244,49,8,254,178,170,0],[160,141,24,238,114,43,222,174,44,184,58,223,201,88,244,96,167,243,134,249,54,83,108,9,224,208,38,13,102,112,245,138,117,0],[160,255,250,210,54,157,254,43,240,80,48,249,200,142,240,27,109,12,250,107,172,243,192,36,2,224,146,228,178,151,220,187,84,0],[160,231,83,108,124,37,12,66,134,242,2,97,130,128,110,222,91,65,238,211,219,127,83,155,247,57,160,84,71,36,68,143,249,0],[160,49,132,199,94,225,34,198,225,84,182,131,124,126,81,66,197,238,228,144,216,66,221,170,150,141,52,23,177,9,14,164,218,0],[160,119,192,211,22,95,58,240,144,240,37,172,65,97,91,255,225,107,12,151,189,7,88,0,51,192,124,155,194,253,5,143,142,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,80,75,215,208,193,159,84,57,71,243,7,14,204,100,148,205,208,55,165,27,88,145,87,12,99,158,158,182,197,55,33,95,160,76,180,250,234,22,207,36,13,201,139,0,120,72,139,180,238,156,185,62,97,200,44,188,159,187,99,106,94,147,15,25,20,160,189,17,169,103,34,213,240,167,18,182,246,233,129,88,212,80,113,250,13,189,211,144,206,169,179,25,180,70,188,155,55,32,160,32,220,255,83,236,6,9,125,247,185,224,139,47,190,49,98,219,131,56,50,131,152,150,81,107,126,7,163,202,127,91,164,160,185,211,148,32,33,143,139,118,55,225,47,134,141,134,35,28,209,179,72,57,247,141,152,65,38,141,179,61,214,174,204,14,160,107,106,58,227,233,173,248,116,152,133,228,250,245,205,196,226,135,107,65,132,233,139,78,59,136,248,255,241,150,83,160,5,160,0,164,180,172,120,195,134,123,28,39,200,127,136,82,33,245,97,141,28,111,0,184,5,98,102,230,66,116,77,224,101,219,160,248,105,172,225,53,1,157,135,194,244,188,254,17,122,124,197,196,99,49,56,111,8,165,230,145,108,189,38,207,45,75,50,160,35,73,222,234,130,172,207,150,15,218,253,15,36,223,217,31,215,79,14,171,224,221,215,51,242,239,84,255,134,147,216,166,160,240,32,244,239,11,87,72,174,41,33,118,196,147,56,102,122,208,41,160,96,186,168,111,141,93,215,31,104,139,17,215,242,160,82,199,196,167,58,157,107,196,36,170,39,205,176,246,208,56,210,163,200,208,226,179,109,60,35,248,244,49,8,254,178,170,160,141,24,238,114,43,222,174,44,184,58,223,201,88,244,96,167,243,134,249,54,83,108,9,224,208,38,13,102,112,245,138,117,160,255,250,210,54,157,254,43,240,80,48,249,200,142,240,27,109,12,250,107,172,243,192,36,2,224,146,228,178,151,220,187,84,160,231,83,108,124,37,12,66,134,242,2,97,130,128,110,222,91,65,238,211,219,127,83,155,247,57,160,84,71,36,68,143,249,160,49,132,199,94,225,34,198,225,84,182,131,124,126,81,66,197,238,228,144,216,66,221,170,150,141,52,23,177,9,14,164,218,160,119,192,211,22,95,58,240,144,240,37,172,65,97,91,255,225,107,12,151,189,7,88,0,51,192,124,155,194,253,5,143,142,128],[249,2,17,160,80,75,215,208,193,159,84,57,71,243,7,14,204,100,148,205,208,55,165,27,88,145,87,12,99,158,158,182,197,55,33,95,160,76,180,250,234,22,207,36,13,201,139,0,120,72,139,180,238,156,185,62,97,200,44,188,159,187,99,106,94,147,15,25,20,160,189,17,169,103,34,213,240,167,18,182,246,233,129,88,212,80,113,250,13,189,211,144,206,169,179,25,180,70,188,155,55,32,160,32,220,255,83,236,6,9,125,247,185,224,139,47,190,49,98,219,131,56,50,131,152,150,81,107,126,7,163,202,127,91,164,160,185,211,148,32,33,143,139,118,55,225,47,134,141,134,35,28,209,179,72,57,247,141,152,65,38,141,179,61,214,174,204,14,160,107,106,58,227,233,173,248,116,152,133,228,250,245,205,196,226,135,107,65,132,233,139,78,59,136,248,255,241,150,83,160,5,160,0,164,180,172,120,195,134,123,28,39,200,127,136,82,33,245,97,141,28,111,0,184,5,98,102,230,66,116,77,224,101,219,160,248,105,172,225,53,1,157,135,194,244,188,254,17,122,124,197,196,99,49,56,111,8,165,230,145,108,189,38,207,45,75,50,160,35,73,222,234,130,172,207,150,15,218,253,15,36,223,217,31,215,79,14,171,224,221,215,51,242,239,84,255,134,147,216,166,160,240,32,244,239,11,87,72,174,41,33,118,196,147,56,102,122,208,41,160,96,186,168,111,141,93,215,31,104,139,17,215,242,160,82,199,196,167,58,157,107,196,36,170,39,205,176,246,208,56,210,163,200,208,226,179,109,60,35,248,244,49,8,254,178,170,160,160,195,233,184,227,196,133,251,169,166,193,93,188,31,192,63,18,114,23,12,90,253,90,148,118,34,121,36,225,235,139,235,160,255,250,210,54,157,254,43,240,80,48,249,200,142,240,27,109,12,250,107,172,243,192,36,2,224,146,228,178,151,220,187,84,160,231,83,108,124,37,12,66,134,242,2,97,130,128,110,222,91,65,238,211,219,127,83,155,247,57,160,84,71,36,68,143,249,160,49,132,199,94,225,34,198,225,84,182,131,124,126,81,66,197,238,228,144,216,66,221,170,150,141,52,23,177,9,14,164,218,160,119,192,211,22,95,58,240,144,240,37,172,65,97,91,255,225,107,12,151,189,7,88,0,51,192,124,155,194,253,5,143,142,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,158,165,149,119,148,81,186,153,117,6,163,134,247,78,141,40,217,77,99,110,60,58,157,233,110,101,70,88,17,114,123,172,0],[160,135,19,64,207,217,223,201,245,3,114,121,32,66,43,57,133,252,55,82,116,223,71,100,149,122,243,45,28,63,150,204,110,0],[160,210,120,212,210,151,79,221,51,232,80,80,186,46,159,194,233,203,46,201,120,35,213,101,124,0,8,177,219,68,14,121,240,0],[160,7,114,2,237,174,156,12,217,41,80,207,22,255,39,79,29,172,209,87,195,37,188,55,186,206,78,97,11,87,224,72,236,0],[160,22,29,249,121,177,221,199,134,231,204,178,150,90,71,228,195,117,255,255,223,21,95,194,251,151,149,22,131,234,12,148,141,0],[160,154,130,254,249,64,180,76,29,52,23,185,183,92,39,79,57,58,81,220,159,7,224,15,179,212,252,51,109,150,166,138,123,0],[160,191,184,181,142,36,247,244,175,48,46,160,172,131,40,126,16,142,50,208,215,51,119,231,93,236,238,227,222,169,47,110,125,0],[160,63,16,188,230,177,90,174,250,172,232,195,227,33,146,180,160,216,2,248,221,210,179,93,60,27,200,22,229,211,119,190,115,0],[160,231,179,177,242,26,188,159,51,188,156,22,150,126,87,205,8,167,108,243,82,117,45,140,143,7,150,144,93,59,6,102,220,0],[160,178,157,0,28,65,106,227,88,84,22,69,42,75,101,149,62,86,45,11,59,216,93,0,97,209,124,70,114,145,152,73,213,0],[160,80,176,142,247,234,92,148,168,17,76,79,72,211,136,9,251,173,156,52,47,222,75,47,99,175,39,37,242,43,103,246,104,0],[160,220,42,251,8,22,8,115,225,127,17,184,13,248,242,7,12,82,192,44,74,62,147,117,10,57,158,59,179,221,195,212,185,0],[160,73,210,235,92,4,27,119,189,211,244,21,130,213,183,166,10,118,148,51,106,35,39,41,16,212,32,33,30,232,202,253,127,0],[160,45,234,125,167,138,171,111,217,200,71,109,44,151,79,202,136,227,21,63,196,251,135,189,172,157,97,199,5,92,103,113,208,0],[160,32,136,102,148,196,136,37,163,51,96,178,15,175,37,129,190,72,46,102,165,57,108,199,41,1,153,217,87,99,246,185,134,0],[160,195,142,65,38,53,73,58,93,254,20,214,13,99,184,121,102,237,111,202,60,113,233,229,157,72,243,233,231,38,188,161,198,0],[160,29,13,42,118,4,81,208,108,222,61,121,232,127,152,172,231,68,36,11,214,122,155,128,182,146,21,101,238,226,237,167,149,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,135,19,64,207,217,223,201,245,3,114,121,32,66,43,57,133,252,55,82,116,223,71,100,149,122,243,45,28,63,150,204,110,160,210,120,212,210,151,79,221,51,232,80,80,186,46,159,194,233,203,46,201,120,35,213,101,124,0,8,177,219,68,14,121,240,160,7,114,2,237,174,156,12,217,41,80,207,22,255,39,79,29,172,209,87,195,37,188,55,186,206,78,97,11,87,224,72,236,160,22,29,249,121,177,221,199,134,231,204,178,150,90,71,228,195,117,255,255,223,21,95,194,251,151,149,22,131,234,12,148,141,160,154,130,254,249,64,180,76,29,52,23,185,183,92,39,79,57,58,81,220,159,7,224,15,179,212,252,51,109,150,166,138,123,160,191,184,181,142,36,247,244,175,48,46,160,172,131,40,126,16,142,50,208,215,51,119,231,93,236,238,227,222,169,47,110,125,160,63,16,188,230,177,90,174,250,172,232,195,227,33,146,180,160,216,2,248,221,210,179,93,60,27,200,22,229,211,119,190,115,160,231,179,177,242,26,188,159,51,188,156,22,150,126,87,205,8,167,108,243,82,117,45,140,143,7,150,144,93,59,6,102,220,160,178,157,0,28,65,106,227,88,84,22,69,42,75,101,149,62,86,45,11,59,216,93,0,97,209,124,70,114,145,152,73,213,160,80,176,142,247,234,92,148,168,17,76,79,72,211,136,9,251,173,156,52,47,222,75,47,99,175,39,37,242,43,103,246,104,160,220,42,251,8,22,8,115,225,127,17,184,13,248,242,7,12,82,192,44,74,62,147,117,10,57,158,59,179,221,195,212,185,160,73,210,235,92,4,27,119,189,211,244,21,130,213,183,166,10,118,148,51,106,35,39,41,16,212,32,33,30,232,202,253,127,160,45,234,125,167,138,171,111,217,200,71,109,44,151,79,202,136,227,21,63,196,251,135,189,172,157,97,199,5,92,103,113,208,160,32,136,102,148,196,136,37,163,51,96,178,15,175,37,129,190,72,46,102,165,57,108,199,41,1,153,217,87,99,246,185,134,160,195,142,65,38,53,73,58,93,254,20,214,13,99,184,121,102,237,111,202,60,113,233,229,157,72,243,233,231,38,188,161,198,160,29,13,42,118,4,81,208,108,222,61,121,232,127,152,172,231,68,36,11,214,122,155,128,182,146,21,101,238,226,237,167,149,128],[249,2,17,160,135,19,64,207,217,223,201,245,3,114,121,32,66,43,57,133,252,55,82,116,223,71,100,149,122,243,45,28,63,150,204,110,160,210,120,212,210,151,79,221,51,232,80,80,186,46,159,194,233,203,46,201,120,35,213,101,124,0,8,177,219,68,14,121,240,160,7,114,2,237,174,156,12,217,41,80,207,22,255,39,79,29,172,209,87,195,37,188,55,186,206,78,97,11,87,224,72,236,160,22,29,249,121,177,221,199,134,231,204,178,150,90,71,228,195,117,255,255,223,21,95,194,251,151,149,22,131,234,12,148,141,160,154,130,254,249,64,180,76,29,52,23,185,183,92,39,79,57,58,81,220,159,7,224,15,179,212,252,51,109,150,166,138,123,160,191,184,181,142,36,247,244,175,48,46,160,172,131,40,126,16,142,50,208,215,51,119,231,93,236,238,227,222,169,47,110,125,160,63,16,188,230,177,90,174,250,172,232,195,227,33,146,180,160,216,2,248,221,210,179,93,60,27,200,22,229,211,119,190,115,160,158,165,149,119,148,81,186,153,117,6,163,134,247,78,141,40,217,77,99,110,60,58,157,233,110,101,70,88,17,114,123,172,160,178,157,0,28,65,106,227,88,84,22,69,42,75,101,149,62,86,45,11,59,216,93,0,97,209,124,70,114,145,152,73,213,160,80,176,142,247,234,92,148,168,17,76,79,72,211,136,9,251,173,156,52,47,222,75,47,99,175,39,37,242,43,103,246,104,160,220,42,251,8,22,8,115,225,127,17,184,13,248,242,7,12,82,192,44,74,62,147,117,10,57,158,59,179,221,195,212,185,160,73,210,235,92,4,27,119,189,211,244,21,130,213,183,166,10,118,148,51,106,35,39,41,16,212,32,33,30,232,202,253,127,160,45,234,125,167,138,171,111,217,200,71,109,44,151,79,202,136,227,21,63,196,251,135,189,172,157,97,199,5,92,103,113,208,160,32,136,102,148,196,136,37,163,51,96,178,15,175,37,129,190,72,46,102,165,57,108,199,41,1,153,217,87,99,246,185,134,160,195,142,65,38,53,73,58,93,254,20,214,13,99,184,121,102,237,111,202,60,113,233,229,157,72,243,233,231,38,188,161,198,160,29,13,42,118,4,81,208,108,222,61,121,232,127,152,172,231,68,36,11,214,122,155,128,182,146,21,101,238,226,237,167,149,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,175,122,1,234,114,63,126,190,22,108,160,85,184,120,157,19,72,1,8,181,65,91,252,59,16,115,161,175,1,43,175,101,0],[160,133,167,189,133,123,193,191,222,89,216,35,78,93,7,66,131,149,42,249,152,66,106,244,232,140,225,53,159,56,146,232,23,0],[160,252,122,28,104,215,195,210,194,90,68,41,241,5,233,121,31,111,39,40,44,8,54,98,144,203,206,196,168,223,212,246,221,0],[160,108,140,134,51,36,35,162,155,179,219,212,248,1,165,39,162,65,235,79,21,5,180,1,119,15,51,58,169,249,106,94,169,0],[160,254,76,95,71,155,26,54,113,106,54,108,164,206,63,247,247,91,164,234,52,148,14,43,211,132,137,64,194,118,82,194,177,0],[160,14,185,41,78,52,126,90,218,79,124,126,55,116,181,121,241,185,238,44,135,0,49,233,24,87,231,76,225,31,130,200,18,0],[160,184,203,50,205,70,164,135,3,71,89,95,190,248,113,62,67,78,182,14,228,178,180,2,161,165,175,67,60,73,23,173,123,0],[160,144,195,48,89,145,149,182,147,85,15,69,184,79,146,224,36,71,69,131,22,233,191,131,250,24,98,82,185,178,33,37,178,0],[160,103,13,127,211,234,63,148,126,213,126,127,233,179,188,239,177,163,141,165,207,149,48,253,223,158,89,76,162,21,6,208,123,0],[160,60,30,137,167,221,156,12,2,111,77,132,147,40,151,60,202,47,85,195,64,141,50,215,66,51,129,199,36,184,203,150,136,0],[160,47,92,105,177,160,255,212,105,132,109,28,120,118,228,101,197,3,61,151,81,126,86,140,26,92,137,116,150,66,142,148,133,0],[160,188,123,142,119,144,241,30,96,104,247,77,149,203,234,218,50,166,117,17,238,216,103,24,146,142,202,126,58,34,229,213,98,0],[160,79,221,60,218,196,71,70,119,145,25,123,243,16,101,75,62,20,134,78,48,105,16,31,74,70,55,29,138,247,165,131,2,0],[160,10,81,148,85,182,179,4,213,104,8,18,186,104,176,241,146,55,220,243,205,207,90,175,2,120,133,99,27,67,103,37,137,0],[160,92,135,250,214,119,219,245,233,65,207,198,41,62,154,6,183,119,86,175,138,217,145,8,75,217,202,166,21,201,199,183,160,0],[160,178,118,164,136,184,196,235,68,1,208,226,214,129,93,154,28,118,79,39,37,41,21,31,157,175,140,26,16,206,117,245,161,0],[160,166,122,17,151,156,67,20,33,110,157,14,75,253,205,253,90,57,76,61,99,70,105,124,243,136,52,164,181,121,236,236,70,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,133,167,189,133,123,193,191,222,89,216,35,78,93,7,66,131,149,42,249,152,66,106,244,232,140,225,53,159,56,146,232,23,160,252,122,28,104,215,195,210,194,90,68,41,241,5,233,121,31,111,39,40,44,8,54,98,144,203,206,196,168,223,212,246,221,160,108,140,134,51,36,35,162,155,179,219,212,248,1,165,39,162,65,235,79,21,5,180,1,119,15,51,58,169,249,106,94,169,160,254,76,95,71,155,26,54,113,106,54,108,164,206,63,247,247,91,164,234,52,148,14,43,211,132,137,64,194,118,82,194,177,160,14,185,41,78,52,126,90,218,79,124,126,55,116,181,121,241,185,238,44,135,0,49,233,24,87,231,76,225,31,130,200,18,160,184,203,50,205,70,164,135,3,71,89,95,190,248,113,62,67,78,182,14,228,178,180,2,161,165,175,67,60,73,23,173,123,160,144,195,48,89,145,149,182,147,85,15,69,184,79,146,224,36,71,69,131,22,233,191,131,250,24,98,82,185,178,33,37,178,160,103,13,127,211,234,63,148,126,213,126,127,233,179,188,239,177,163,141,165,207,149,48,253,223,158,89,76,162,21,6,208,123,160,60,30,137,167,221,156,12,2,111,77,132,147,40,151,60,202,47,85,195,64,141,50,215,66,51,129,199,36,184,203,150,136,160,47,92,105,177,160,255,212,105,132,109,28,120,118,228,101,197,3,61,151,81,126,86,140,26,92,137,116,150,66,142,148,133,160,188,123,142,119,144,241,30,96,104,247,77,149,203,234,218,50,166,117,17,238,216,103,24,146,142,202,126,58,34,229,213,98,160,79,221,60,218,196,71,70,119,145,25,123,243,16,101,75,62,20,134,78,48,105,16,31,74,70,55,29,138,247,165,131,2,160,10,81,148,85,182,179,4,213,104,8,18,186,104,176,241,146,55,220,243,205,207,90,175,2,120,133,99,27,67,103,37,137,160,92,135,250,214,119,219,245,233,65,207,198,41,62,154,6,183,119,86,175,138,217,145,8,75,217,202,166,21,201,199,183,160,160,178,118,164,136,184,196,235,68,1,208,226,214,129,93,154,28,118,79,39,37,41,21,31,157,175,140,26,16,206,117,245,161,160,166,122,17,151,156,67,20,33,110,157,14,75,253,205,253,90,57,76,61,99,70,105,124,243,136,52,164,181,121,236,236,70,128],[249,2,17,160,133,167,189,133,123,193,191,222,89,216,35,78,93,7,66,131,149,42,249,152,66,106,244,232,140,225,53,159,56,146,232,23,160,252,122,28,104,215,195,210,194,90,68,41,241,5,233,121,31,111,39,40,44,8,54,98,144,203,206,196,168,223,212,246,221,160,108,140,134,51,36,35,162,155,179,219,212,248,1,165,39,162,65,235,79,21,5,180,1,119,15,51,58,169,249,106,94,169,160,254,76,95,71,155,26,54,113,106,54,108,164,206,63,247,247,91,164,234,52,148,14,43,211,132,137,64,194,118,82,194,177,160,14,185,41,78,52,126,90,218,79,124,126,55,116,181,121,241,185,238,44,135,0,49,233,24,87,231,76,225,31,130,200,18,160,184,203,50,205,70,164,135,3,71,89,95,190,248,113,62,67,78,182,14,228,178,180,2,161,165,175,67,60,73,23,173,123,160,144,195,48,89,145,149,182,147,85,15,69,184,79,146,224,36,71,69,131,22,233,191,131,250,24,98,82,185,178,33,37,178,160,103,13,127,211,234,63,148,126,213,126,127,233,179,188,239,177,163,141,165,207,149,48,253,223,158,89,76,162,21,6,208,123,160,60,30,137,167,221,156,12,2,111,77,132,147,40,151,60,202,47,85,195,64,141,50,215,66,51,129,199,36,184,203,150,136,160,47,92,105,177,160,255,212,105,132,109,28,120,118,228,101,197,3,61,151,81,126,86,140,26,92,137,116,150,66,142,148,133,160,188,123,142,119,144,241,30,96,104,247,77,149,203,234,218,50,166,117,17,238,216,103,24,146,142,202,126,58,34,229,213,98,160,175,122,1,234,114,63,126,190,22,108,160,85,184,120,157,19,72,1,8,181,65,91,252,59,16,115,161,175,1,43,175,101,160,10,81,148,85,182,179,4,213,104,8,18,186,104,176,241,146,55,220,243,205,207,90,175,2,120,133,99,27,67,103,37,137,160,92,135,250,214,119,219,245,233,65,207,198,41,62,154,6,183,119,86,175,138,217,145,8,75,217,202,166,21,201,199,183,160,160,178,118,164,136,184,196,235,68,1,208,226,214,129,93,154,28,118,79,39,37,41,21,31,157,175,140,26,16,206,117,245,161,160,166,122,17,151,156,67,20,33,110,157,14,75,253,205,253,90,57,76,61,99,70,105,124,243,136,52,164,181,121,236,236,70,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,217,132,7,64,121,74,125,24,175,205,215,148,17,5,121,54,249,114,144,9,106,240,110,88,156,86,47,92,156,164,58,241,0],[160,148,96,233,169,14,90,134,113,124,248,170,233,105,200,185,209,37,170,23,12,53,121,255,207,171,140,58,155,240,245,176,148,0],[160,44,47,217,201,92,122,132,137,66,226,149,169,177,49,235,62,79,6,38,116,120,55,195,24,55,197,51,169,64,4,70,173,0],[160,239,47,98,216,238,2,166,46,89,15,56,7,5,196,196,62,67,249,253,235,20,235,102,134,142,200,26,17,214,152,1,145,0],[160,197,17,178,32,200,66,202,234,188,218,127,181,8,17,4,30,61,47,57,234,58,255,120,204,181,237,168,202,28,76,105,234,0],[160,63,229,58,247,19,93,67,185,34,164,106,81,163,92,222,25,161,27,40,212,121,191,185,203,236,130,187,73,151,69,189,185,0],[160,254,144,109,156,81,221,79,66,253,183,145,54,58,41,16,116,249,56,61,32,1,181,98,101,217,110,246,137,185,35,129,215,0],[160,42,32,250,190,187,193,176,158,238,99,10,152,135,244,177,201,170,90,140,94,31,244,155,240,210,136,149,233,93,37,48,191,0],[160,118,66,191,63,107,139,75,185,177,16,55,71,250,178,39,177,243,220,32,186,59,17,33,53,251,250,65,62,15,114,252,5,0],[160,81,76,82,36,53,180,76,100,114,1,16,17,231,143,16,128,224,130,54,29,129,30,175,141,192,31,129,54,103,40,235,30,0],[160,91,241,99,220,108,63,125,225,150,80,223,253,107,254,87,177,201,91,21,251,24,233,244,246,13,134,68,64,146,212,100,133,0],[160,236,116,61,181,70,202,25,127,58,207,72,50,66,207,22,152,197,203,167,193,92,102,153,213,59,137,65,153,49,136,57,215,0],[160,216,2,120,95,255,84,108,99,100,122,21,213,206,229,80,63,183,191,6,12,87,234,21,174,229,146,63,113,77,198,240,39,0],[160,190,218,104,114,65,143,16,76,171,187,221,133,224,217,179,164,222,126,10,33,35,71,63,53,163,111,199,211,228,164,124,223,0],[160,213,170,112,202,127,64,210,139,189,213,55,20,144,252,240,46,126,109,109,74,135,136,15,128,192,99,16,67,173,97,168,61,0],[160,147,75,172,163,178,143,148,112,133,47,43,229,251,14,130,192,253,59,110,111,147,43,65,57,213,172,199,179,154,184,206,56,0],[160,164,223,28,174,107,173,96,167,56,249,242,213,153,166,239,188,30,37,226,19,250,193,152,99,72,192,45,227,39,220,80,199,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,148,96,233,169,14,90,134,113,124,248,170,233,105,200,185,209,37,170,23,12,53,121,255,207,171,140,58,155,240,245,176,148,160,44,47,217,201,92,122,132,137,66,226,149,169,177,49,235,62,79,6,38,116,120,55,195,24,55,197,51,169,64,4,70,173,160,239,47,98,216,238,2,166,46,89,15,56,7,5,196,196,62,67,249,253,235,20,235,102,134,142,200,26,17,214,152,1,145,160,197,17,178,32,200,66,202,234,188,218,127,181,8,17,4,30,61,47,57,234,58,255,120,204,181,237,168,202,28,76,105,234,160,63,229,58,247,19,93,67,185,34,164,106,81,163,92,222,25,161,27,40,212,121,191,185,203,236,130,187,73,151,69,189,185,160,254,144,109,156,81,221,79,66,253,183,145,54,58,41,16,116,249,56,61,32,1,181,98,101,217,110,246,137,185,35,129,215,160,42,32,250,190,187,193,176,158,238,99,10,152,135,244,177,201,170,90,140,94,31,244,155,240,210,136,149,233,93,37,48,191,160,118,66,191,63,107,139,75,185,177,16,55,71,250,178,39,177,243,220,32,186,59,17,33,53,251,250,65,62,15,114,252,5,160,81,76,82,36,53,180,76,100,114,1,16,17,231,143,16,128,224,130,54,29,129,30,175,141,192,31,129,54,103,40,235,30,160,91,241,99,220,108,63,125,225,150,80,223,253,107,254,87,177,201,91,21,251,24,233,244,246,13,134,68,64,146,212,100,133,160,236,116,61,181,70,202,25,127,58,207,72,50,66,207,22,152,197,203,167,193,92,102,153,213,59,137,65,153,49,136,57,215,160,216,2,120,95,255,84,108,99,100,122,21,213,206,229,80,63,183,191,6,12,87,234,21,174,229,146,63,113,77,198,240,39,160,190,218,104,114,65,143,16,76,171,187,221,133,224,217,179,164,222,126,10,33,35,71,63,53,163,111,199,211,228,164,124,223,160,213,170,112,202,127,64,210,139,189,213,55,20,144,252,240,46,126,109,109,74,135,136,15,128,192,99,16,67,173,97,168,61,160,147,75,172,163,178,143,148,112,133,47,43,229,251,14,130,192,253,59,110,111,147,43,65,57,213,172,199,179,154,184,206,56,160,164,223,28,174,107,173,96,167,56,249,242,213,153,166,239,188,30,37,226,19,250,193,152,99,72,192,45,227,39,220,80,199,128],[249,2,17,160,148,96,233,169,14,90,134,113,124,248,170,233,105,200,185,209,37,170,23,12,53,121,255,207,171,140,58,155,240,245,176,148,160,44,47,217,201,92,122,132,137,66,226,149,169,177,49,235,62,79,6,38,116,120,55,195,24,55,197,51,169,64,4,70,173,160,239,47,98,216,238,2,166,46,89,15,56,7,5,196,196,62,67,249,253,235,20,235,102,134,142,200,26,17,214,152,1,145,160,197,17,178,32,200,66,202,234,188,218,127,181,8,17,4,30,61,47,57,234,58,255,120,204,181,237,168,202,28,76,105,234,160,63,229,58,247,19,93,67,185,34,164,106,81,163,92,222,25,161,27,40,212,121,191,185,203,236,130,187,73,151,69,189,185,160,254,144,109,156,81,221,79,66,253,183,145,54,58,41,16,116,249,56,61,32,1,181,98,101,217,110,246,137,185,35,129,215,160,42,32,250,190,187,193,176,158,238,99,10,152,135,244,177,201,170,90,140,94,31,244,155,240,210,136,149,233,93,37,48,191,160,217,132,7,64,121,74,125,24,175,205,215,148,17,5,121,54,249,114,144,9,106,240,110,88,156,86,47,92,156,164,58,241,160,81,76,82,36,53,180,76,100,114,1,16,17,231,143,16,128,224,130,54,29,129,30,175,141,192,31,129,54,103,40,235,30,160,91,241,99,220,108,63,125,225,150,80,223,253,107,254,87,177,201,91,21,251,24,233,244,246,13,134,68,64,146,212,100,133,160,236,116,61,181,70,202,25,127,58,207,72,50,66,207,22,152,197,203,167,193,92,102,153,213,59,137,65,153,49,136,57,215,160,216,2,120,95,255,84,108,99,100,122,21,213,206,229,80,63,183,191,6,12,87,234,21,174,229,146,63,113,77,198,240,39,160,190,218,104,114,65,143,16,76,171,187,221,133,224,217,179,164,222,126,10,33,35,71,63,53,163,111,199,211,228,164,124,223,160,213,170,112,202,127,64,210,139,189,213,55,20,144,252,240,46,126,109,109,74,135,136,15,128,192,99,16,67,173,97,168,61,160,147,75,172,163,178,143,148,112,133,47,43,229,251,14,130,192,253,59,110,111,147,43,65,57,213,172,199,179,154,184,206,56,160,164,223,28,174,107,173,96,167,56,249,242,213,153,166,239,188,30,37,226,19,250,193,152,99,72,192,45,227,39,220,80,199,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,31,196,32,224,82,185,3,255,151,133,167,147,146,168,200,224,94,6,175,139,121,164,124,72,61,243,189,193,122,214,133,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,30,165,12,148,60,73,75,129,99,22,189,179,165,212,97,30,70,252,178,141,82,212,205,86,33,189,64,225,155,151,44,228,0],[160,143,165,150,220,29,213,132,61,84,146,177,121,240,70,49,108,193,141,238,104,187,31,65,67,198,42,160,132,145,244,195,47,0],[160,249,206,148,243,175,9,54,64,123,62,84,79,56,2,167,180,229,57,141,60,57,230,39,198,161,165,104,120,15,27,210,19,0],[160,35,2,113,27,174,138,111,47,143,63,131,219,176,187,151,237,202,89,0,243,6,15,2,56,30,196,6,32,30,28,90,37,0],[160,58,236,215,25,102,10,91,61,145,178,196,158,128,97,75,40,167,190,55,63,190,206,1,214,162,90,94,106,14,98,57,150,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,192,147,56,216,166,204,38,22,236,116,212,187,163,46,244,70,243,70,187,207,2,165,214,141,45,103,210,194,66,11,69,179,0],[160,46,227,224,172,92,16,233,112,65,86,64,9,110,41,37,88,180,141,214,137,206,239,177,96,218,245,24,217,91,147,215,9,0],[160,241,188,52,165,71,42,145,44,6,13,51,116,50,101,11,21,41,174,213,101,6,12,243,195,47,91,175,49,28,99,33,190,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,128,160,30,165,12,148,60,73,75,129,99,22,189,179,165,212,97,30,70,252,178,141,82,212,205,86,33,189,64,225,155,151,44,228,160,143,165,150,220,29,213,132,61,84,146,177,121,240,70,49,108,193,141,238,104,187,31,65,67,198,42,160,132,145,244,195,47,160,249,206,148,243,175,9,54,64,123,62,84,79,56,2,167,180,229,57,141,60,57,230,39,198,161,165,104,120,15,27,210,19,160,35,2,113,27,174,138,111,47,143,63,131,219,176,187,151,237,202,89,0,243,6,15,2,56,30,196,6,32,30,28,90,37,160,58,236,215,25,102,10,91,61,145,178,196,158,128,97,75,40,167,190,55,63,190,206,1,214,162,90,94,106,14,98,57,150,128,128,128,128,160,192,147,56,216,166,204,38,22,236,116,212,187,163,46,244,70,243,70,187,207,2,165,214,141,45,103,210,194,66,11,69,179,160,46,227,224,172,92,16,233,112,65,86,64,9,110,41,37,88,180,141,214,137,206,239,177,96,218,245,24,217,91,147,215,9,160,241,188,52,165,71,42,145,44,6,13,51,116,50,101,11,21,41,174,213,101,6,12,243,195,47,91,175,49,28,99,33,190,128,128,128,128],[249,1,17,128,160,30,165,12,148,60,73,75,129,99,22,189,179,165,212,97,30,70,252,178,141,82,212,205,86,33,189,64,225,155,151,44,228,160,143,165,150,220,29,213,132,61,84,146,177,121,240,70,49,108,193,141,238,104,187,31,65,67,198,42,160,132,145,244,195,47,160,249,206,148,243,175,9,54,64,123,62,84,79,56,2,167,180,229,57,141,60,57,230,39,198,161,165,104,120,15,27,210,19,160,35,2,113,27,174,138,111,47,143,63,131,219,176,187,151,237,202,89,0,243,6,15,2,56,30,196,6,32,30,28,90,37,160,58,236,215,25,102,10,91,61,145,178,196,158,128,97,75,40,167,190,55,63,190,206,1,214,162,90,94,106,14,98,57,150,128,128,128,128,160,192,147,56,216,166,204,38,22,236,116,212,187,163,46,244,70,243,70,187,207,2,165,214,141,45,103,210,194,66,11,69,179,160,31,196,32,224,82,185,3,255,151,133,167,147,146,168,200,224,94,6,175,139,121,164,124,72,61,243,189,193,122,214,133,0,160,241,188,52,165,71,42,145,44,6,13,51,116,50,101,11,21,41,174,213,101,6,12,243,195,47,91,175,49,28,99,33,190,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,251,239,33,80,129,140,50,179,108,87,149,114,38,223,78,36,235,129,201],"key":[190,183,183,180,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,0,0,0,0],[157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,170,98,87,96,10,34,239,241,153,129,22,218,11,176,39,223,129,90,191,172,56,19,203,75,13,162,195,147,147,111,234,12,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,143,187,40,54,50,75,12,175,57,115,107,238,101,89,221,204,193,76,205,121,47,228,172,26,105,181,162,210,89,141,202,69,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,0,0,0,0]],"keccak_data":[[248,102,157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,184,70,248,68,128,128,160,170,98,87,96,10,34,239,241,153,129,22,218,11,176,39,223,129,90,191,172,56,19,203,75,13,162,195,147,147,111,234,12,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,52,129,143,74,52,172,147,62,141,148,67,170,219,110,93,47,203,52,223,207,150,236,229,214,110,120,14,236,54,184,70,248,68,128,128,160,143,187,40,54,50,75,12,175,57,115,107,238,101,89,221,204,193,76,205,121,47,228,172,26,105,181,162,210,89,141,202,69,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,251,239,33,80,129,140,50,179,108,87,149,114,38,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,41,60,119,221,55,67,183,26,133,186,234,172,189,223,172,37,249,199,47,195,77,164,77,135,63,254,246,11,186,7,50,226,0],[160,149,22,30,35,236,215,163,225,55,184,47,255,16,249,153,166,118,62,70,74,142,164,20,231,176,121,213,128,225,145,133,241,0],[160,190,216,174,145,240,177,249,211,11,84,193,187,64,24,230,41,167,176,224,108,124,197,109,65,104,179,24,40,197,24,182,166,0],[160,110,102,122,118,71,7,121,128,227,83,191,183,158,34,77,230,62,36,52,166,185,130,48,141,0,110,4,88,36,232,93,217,0],[160,107,149,71,221,170,146,238,87,132,136,238,45,116,162,103,102,43,180,155,161,45,130,225,106,223,13,185,241,221,75,162,22,0],[160,54,97,193,124,78,5,255,224,210,32,136,173,234,21,58,1,67,228,225,172,248,12,21,215,39,10,74,95,146,52,69,208,0],[160,9,132,153,157,61,32,222,35,3,37,148,169,254,248,14,131,119,131,214,96,161,94,233,60,201,221,217,166,75,5,146,167,0],[160,159,32,184,78,111,130,155,150,74,17,66,92,46,189,186,102,108,28,132,252,175,226,216,0,68,191,229,74,92,209,241,88,0],[160,156,231,209,127,11,57,217,209,239,123,37,6,100,194,112,238,59,113,151,105,231,229,39,41,34,177,62,5,97,63,28,233,0],[160,158,183,112,42,70,159,4,150,82,184,28,78,132,51,238,108,15,154,228,218,238,204,175,56,152,6,13,118,60,85,222,132,0],[160,153,1,174,170,129,1,147,243,135,240,191,8,199,206,59,21,139,149,128,74,72,89,174,24,42,193,156,163,156,110,235,235,0],[160,62,104,164,15,180,50,50,61,249,232,7,161,238,216,142,152,174,66,250,74,124,247,4,81,212,62,253,178,87,83,65,177,0],[160,181,19,227,218,23,113,138,40,36,61,150,84,110,202,49,126,117,119,122,116,62,254,116,101,182,208,100,248,213,146,69,244,0],[160,202,220,246,109,233,106,229,74,72,166,186,162,229,122,168,131,146,115,144,23,49,45,25,140,126,27,232,253,194,76,149,15,0],[160,102,158,39,10,51,55,84,84,213,237,155,213,237,51,66,85,115,40,107,8,89,176,20,27,201,12,250,212,88,97,178,133,0],[160,153,109,223,161,227,17,236,75,74,8,241,213,67,138,39,213,78,59,143,122,155,209,20,3,57,242,92,160,34,50,89,215,0],[160,183,229,229,81,73,164,167,6,153,118,14,33,221,101,220,106,179,228,150,95,192,173,247,19,166,16,105,238,216,219,159,37,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,149,22,30,35,236,215,163,225,55,184,47,255,16,249,153,166,118,62,70,74,142,164,20,231,176,121,213,128,225,145,133,241,160,190,216,174,145,240,177,249,211,11,84,193,187,64,24,230,41,167,176,224,108,124,197,109,65,104,179,24,40,197,24,182,166,160,110,102,122,118,71,7,121,128,227,83,191,183,158,34,77,230,62,36,52,166,185,130,48,141,0,110,4,88,36,232,93,217,160,107,149,71,221,170,146,238,87,132,136,238,45,116,162,103,102,43,180,155,161,45,130,225,106,223,13,185,241,221,75,162,22,160,54,97,193,124,78,5,255,224,210,32,136,173,234,21,58,1,67,228,225,172,248,12,21,215,39,10,74,95,146,52,69,208,160,9,132,153,157,61,32,222,35,3,37,148,169,254,248,14,131,119,131,214,96,161,94,233,60,201,221,217,166,75,5,146,167,160,159,32,184,78,111,130,155,150,74,17,66,92,46,189,186,102,108,28,132,252,175,226,216,0,68,191,229,74,92,209,241,88,160,156,231,209,127,11,57,217,209,239,123,37,6,100,194,112,238,59,113,151,105,231,229,39,41,34,177,62,5,97,63,28,233,160,158,183,112,42,70,159,4,150,82,184,28,78,132,51,238,108,15,154,228,218,238,204,175,56,152,6,13,118,60,85,222,132,160,153,1,174,170,129,1,147,243,135,240,191,8,199,206,59,21,139,149,128,74,72,89,174,24,42,193,156,163,156,110,235,235,160,62,104,164,15,180,50,50,61,249,232,7,161,238,216,142,152,174,66,250,74,124,247,4,81,212,62,253,178,87,83,65,177,160,181,19,227,218,23,113,138,40,36,61,150,84,110,202,49,126,117,119,122,116,62,254,116,101,182,208,100,248,213,146,69,244,160,202,220,246,109,233,106,229,74,72,166,186,162,229,122,168,131,146,115,144,23,49,45,25,140,126,27,232,253,194,76,149,15,160,102,158,39,10,51,55,84,84,213,237,155,213,237,51,66,85,115,40,107,8,89,176,20,27,201,12,250,212,88,97,178,133,160,153,109,223,161,227,17,236,75,74,8,241,213,67,138,39,213,78,59,143,122,155,209,20,3,57,242,92,160,34,50,89,215,160,183,229,229,81,73,164,167,6,153,118,14,33,221,101,220,106,179,228,150,95,192,173,247,19,166,16,105,238,216,219,159,37,128],[249,2,17,160,149,22,30,35,236,215,163,225,55,184,47,255,16,249,153,166,118,62,70,74,142,164,20,231,176,121,213,128,225,145,133,241,160,190,216,174,145,240,177,249,211,11,84,193,187,64,24,230,41,167,176,224,108,124,197,109,65,104,179,24,40,197,24,182,166,160,110,102,122,118,71,7,121,128,227,83,191,183,158,34,77,230,62,36,52,166,185,130,48,141,0,110,4,88,36,232,93,217,160,107,149,71,221,170,146,238,87,132,136,238,45,116,162,103,102,43,180,155,161,45,130,225,106,223,13,185,241,221,75,162,22,160,54,97,193,124,78,5,255,224,210,32,136,173,234,21,58,1,67,228,225,172,248,12,21,215,39,10,74,95,146,52,69,208,160,9,132,153,157,61,32,222,35,3,37,148,169,254,248,14,131,119,131,214,96,161,94,233,60,201,221,217,166,75,5,146,167,160,159,32,184,78,111,130,155,150,74,17,66,92,46,189,186,102,108,28,132,252,175,226,216,0,68,191,229,74,92,209,241,88,160,156,231,209,127,11,57,217,209,239,123,37,6,100,194,112,238,59,113,151,105,231,229,39,41,34,177,62,5,97,63,28,233,160,158,183,112,42,70,159,4,150,82,184,28,78,132,51,238,108,15,154,228,218,238,204,175,56,152,6,13,118,60,85,222,132,160,153,1,174,170,129,1,147,243,135,240,191,8,199,206,59,21,139,149,128,74,72,89,174,24,42,193,156,163,156,110,235,235,160,41,60,119,221,55,67,183,26,133,186,234,172,189,223,172,37,249,199,47,195,77,164,77,135,63,254,246,11,186,7,50,226,160,181,19,227,218,23,113,138,40,36,61,150,84,110,202,49,126,117,119,122,116,62,254,116,101,182,208,100,248,213,146,69,244,160,202,220,246,109,233,106,229,74,72,166,186,162,229,122,168,131,146,115,144,23,49,45,25,140,126,27,232,253,194,76,149,15,160,102,158,39,10,51,55,84,84,213,237,155,213,237,51,66,85,115,40,107,8,89,176,20,27,201,12,250,212,88,97,178,133,160,153,109,223,161,227,17,236,75,74,8,241,213,67,138,39,213,78,59,143,122,155,209,20,3,57,242,92,160,34,50,89,215,160,183,229,229,81,73,164,167,6,153,118,14,33,221,101,220,106,179,228,150,95,192,173,247,19,166,16,105,238,216,219,159,37,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,13,59,66,173,214,55,59,19,125,163,24,33,238,176,21,224,109,217,55,28,33,101,133,140,222,138,194,216,153,132,136,230,0],[160,206,147,153,238,233,177,254,214,162,192,6,41,99,235,189,63,77,194,209,92,215,253,45,69,28,96,49,252,253,150,199,198,0],[160,130,195,48,207,4,39,183,130,93,133,33,51,24,85,109,223,200,117,27,143,102,105,89,62,113,165,59,85,64,5,221,90,0],[160,198,216,36,131,141,153,71,181,71,43,115,191,131,63,147,71,120,112,44,189,134,233,180,33,82,255,81,215,194,19,55,100,0],[160,206,25,55,20,146,60,214,18,12,167,17,203,54,69,68,252,237,135,36,127,167,28,47,198,144,44,79,154,184,240,137,52,0],[160,197,4,19,211,67,150,7,37,20,138,74,167,242,220,142,188,2,55,127,112,161,202,110,158,223,190,211,136,33,65,15,184,0],[160,196,8,80,100,153,2,7,170,81,45,165,171,238,25,90,204,233,162,53,150,33,147,169,174,192,177,128,99,26,149,239,143,0],[160,132,119,21,52,21,62,74,197,52,231,139,83,237,217,120,123,75,100,186,124,111,129,254,225,204,82,186,213,166,56,84,75,0],[160,112,13,238,148,70,240,186,202,13,221,180,174,186,115,194,209,132,143,68,98,75,72,126,46,218,248,44,235,208,116,201,102,0],[160,243,206,192,239,64,99,13,81,166,177,20,144,103,34,139,175,235,197,91,53,76,216,197,71,61,204,142,227,126,128,232,104,0],[160,238,168,57,214,12,203,71,227,222,95,120,180,59,185,161,195,136,160,116,107,26,125,207,74,230,168,102,27,205,128,62,218,0],[160,212,76,166,21,247,198,254,9,142,155,246,184,242,185,224,241,226,96,112,54,65,52,213,208,163,7,71,44,99,35,185,223,0],[160,225,67,171,100,211,168,26,72,25,178,70,20,88,42,70,121,64,118,247,6,189,199,111,91,69,253,250,233,160,218,175,109,0],[160,228,9,140,231,204,59,191,210,153,103,229,96,66,95,205,105,31,72,40,100,82,49,170,250,108,6,75,193,124,69,5,209,0],[160,117,152,142,42,173,67,31,177,235,86,231,243,27,94,203,178,209,82,80,66,133,249,211,59,208,88,64,76,227,222,152,58,0],[160,196,209,10,11,203,198,224,14,121,23,120,141,125,30,79,228,142,109,253,71,249,143,150,168,49,211,211,67,226,157,8,28,0],[160,210,238,238,194,77,71,114,122,71,239,124,178,219,200,167,116,143,64,223,227,10,191,123,25,13,77,19,142,39,114,50,5,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,206,147,153,238,233,177,254,214,162,192,6,41,99,235,189,63,77,194,209,92,215,253,45,69,28,96,49,252,253,150,199,198,160,130,195,48,207,4,39,183,130,93,133,33,51,24,85,109,223,200,117,27,143,102,105,89,62,113,165,59,85,64,5,221,90,160,198,216,36,131,141,153,71,181,71,43,115,191,131,63,147,71,120,112,44,189,134,233,180,33,82,255,81,215,194,19,55,100,160,206,25,55,20,146,60,214,18,12,167,17,203,54,69,68,252,237,135,36,127,167,28,47,198,144,44,79,154,184,240,137,52,160,197,4,19,211,67,150,7,37,20,138,74,167,242,220,142,188,2,55,127,112,161,202,110,158,223,190,211,136,33,65,15,184,160,196,8,80,100,153,2,7,170,81,45,165,171,238,25,90,204,233,162,53,150,33,147,169,174,192,177,128,99,26,149,239,143,160,132,119,21,52,21,62,74,197,52,231,139,83,237,217,120,123,75,100,186,124,111,129,254,225,204,82,186,213,166,56,84,75,160,112,13,238,148,70,240,186,202,13,221,180,174,186,115,194,209,132,143,68,98,75,72,126,46,218,248,44,235,208,116,201,102,160,243,206,192,239,64,99,13,81,166,177,20,144,103,34,139,175,235,197,91,53,76,216,197,71,61,204,142,227,126,128,232,104,160,238,168,57,214,12,203,71,227,222,95,120,180,59,185,161,195,136,160,116,107,26,125,207,74,230,168,102,27,205,128,62,218,160,212,76,166,21,247,198,254,9,142,155,246,184,242,185,224,241,226,96,112,54,65,52,213,208,163,7,71,44,99,35,185,223,160,225,67,171,100,211,168,26,72,25,178,70,20,88,42,70,121,64,118,247,6,189,199,111,91,69,253,250,233,160,218,175,109,160,228,9,140,231,204,59,191,210,153,103,229,96,66,95,205,105,31,72,40,100,82,49,170,250,108,6,75,193,124,69,5,209,160,117,152,142,42,173,67,31,177,235,86,231,243,27,94,203,178,209,82,80,66,133,249,211,59,208,88,64,76,227,222,152,58,160,196,209,10,11,203,198,224,14,121,23,120,141,125,30,79,228,142,109,253,71,249,143,150,168,49,211,211,67,226,157,8,28,160,210,238,238,194,77,71,114,122,71,239,124,178,219,200,167,116,143,64,223,227,10,191,123,25,13,77,19,142,39,114,50,5,128],[249,2,17,160,206,147,153,238,233,177,254,214,162,192,6,41,99,235,189,63,77,194,209,92,215,253,45,69,28,96,49,252,253,150,199,198,160,130,195,48,207,4,39,183,130,93,133,33,51,24,85,109,223,200,117,27,143,102,105,89,62,113,165,59,85,64,5,221,90,160,198,216,36,131,141,153,71,181,71,43,115,191,131,63,147,71,120,112,44,189,134,233,180,33,82,255,81,215,194,19,55,100,160,206,25,55,20,146,60,214,18,12,167,17,203,54,69,68,252,237,135,36,127,167,28,47,198,144,44,79,154,184,240,137,52,160,13,59,66,173,214,55,59,19,125,163,24,33,238,176,21,224,109,217,55,28,33,101,133,140,222,138,194,216,153,132,136,230,160,196,8,80,100,153,2,7,170,81,45,165,171,238,25,90,204,233,162,53,150,33,147,169,174,192,177,128,99,26,149,239,143,160,132,119,21,52,21,62,74,197,52,231,139,83,237,217,120,123,75,100,186,124,111,129,254,225,204,82,186,213,166,56,84,75,160,112,13,238,148,70,240,186,202,13,221,180,174,186,115,194,209,132,143,68,98,75,72,126,46,218,248,44,235,208,116,201,102,160,243,206,192,239,64,99,13,81,166,177,20,144,103,34,139,175,235,197,91,53,76,216,197,71,61,204,142,227,126,128,232,104,160,238,168,57,214,12,203,71,227,222,95,120,180,59,185,161,195,136,160,116,107,26,125,207,74,230,168,102,27,205,128,62,218,160,212,76,166,21,247,198,254,9,142,155,246,184,242,185,224,241,226,96,112,54,65,52,213,208,163,7,71,44,99,35,185,223,160,225,67,171,100,211,168,26,72,25,178,70,20,88,42,70,121,64,118,247,6,189,199,111,91,69,253,250,233,160,218,175,109,160,228,9,140,231,204,59,191,210,153,103,229,96,66,95,205,105,31,72,40,100,82,49,170,250,108,6,75,193,124,69,5,209,160,117,152,142,42,173,67,31,177,235,86,231,243,27,94,203,178,209,82,80,66,133,249,211,59,208,88,64,76,227,222,152,58,160,196,209,10,11,203,198,224,14,121,23,120,141,125,30,79,228,142,109,253,71,249,143,150,168,49,211,211,67,226,157,8,28,160,210,238,238,194,77,71,114,122,71,239,124,178,219,200,167,116,143,64,223,227,10,191,123,25,13,77,19,142,39,114,50,5,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,154,198,63,41,156,57,24,5,4,135,238,4,68,3,248,17,34,184,202,188,10,232,136,16,130,61,25,188,149,179,79,231,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,161,229,37,217,126,181,68,217,9,116,233,74,254,95,44,9,245,211,185,191,144,59,89,169,56,133,111,195,18,163,254,73,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,238,173,29,39,104,215,76,171,160,76,242,192,29,147,89,208,198,225,190,0,15,200,154,36,250,128,239,167,73,218,105,155,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,160,161,229,37,217,126,181,68,217,9,116,233,74,254,95,44,9,245,211,185,191,144,59,89,169,56,133,111,195,18,163,254,73,128,128,128,128,128,128,128,128,128,160,238,173,29,39,104,215,76,171,160,76,242,192,29,147,89,208,198,225,190,0,15,200,154,36,250,128,239,167,73,218,105,155,128,128,128,128,128],[248,81,128,160,154,198,63,41,156,57,24,5,4,135,238,4,68,3,248,17,34,184,202,188,10,232,136,16,130,61,25,188,149,179,79,231,128,128,128,128,128,128,128,128,128,160,238,173,29,39,104,215,76,171,160,76,242,192,29,147,89,208,198,225,190,0,15,200,154,36,250,128,239,167,73,218,105,155,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[228]},"branch":{"modified_index":2,"drifted_index":2,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,35,195,53,81,248,35,147,21,30,3,185,153,70,138,192,165,77,7,129,118,37,132,120,197,130,18,209,89,99,85,245,222,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,159,15,247,43,218,211,193,35,130,157,141,196,137,109,36,115,54,64,179,211,106,138,29,158,213,195,195,148,125,20,93,149,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,243,31,69,208,16,22,226,247,232,151,237,185,83,172,203,208,250,241,4,31,115,43,37,31,57,54,253,184,19,41,26,5,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[130,0,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,215,121,207,40,14,160,149,115,175,222,139,45,208,88,81,65,226,190,111,191,208,252,147,90,105,163,154,4,132,52,204,121,0],[0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,208,13,115,5,131,97,180,161,37,184,30,176,46,254,113,83,244,235,231,202,172,66,172,99,25,151,249,73,32,160,1,218,0]],"keccak_data":[[248,81,128,128,160,159,15,247,43,218,211,193,35,130,157,141,196,137,109,36,115,54,64,179,211,106,138,29,158,213,195,195,148,125,20,93,149,128,128,160,243,31,69,208,16,22,226,247,232,151,237,185,83,172,203,208,250,241,4,31,115,43,37,31,57,54,253,184,19,41,26,5,128,128,128,128,128,128,128,128,128,128,128],[248,81,128,128,160,35,195,53,81,248,35,147,21,30,3,185,153,70,138,192,165,77,7,129,118,37,132,120,197,130,18,209,89,99,85,245,222,128,128,160,243,31,69,208,16,22,226,247,232,151,237,185,83,172,203,208,250,241,4,31,115,43,37,31,57,54,253,184,19,41,26,5,128,128,128,128,128,128,128,128,128,128,128],[228,130,0,150,160,215,121,207,40,14,160,149,115,175,222,139,45,208,88,81,65,226,190,111,191,208,252,147,90,105,163,154,4,132,52,204,121],[228,130,0,150,160,208,13,115,5,131,97,180,161,37,184,30,176,46,254,113,83,244,235,231,202,172,66,172,99,25,151,249,73,32,160,1,218]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,167,114],"key":[164,25,98,246,246,19,240,98,5,150,229,5,150,96,180,21,9,65,218,20,213,215,50,192,129,14,3,147,169,124,32,122],"list_rlp_bytes":[[227],[224]],"value_rlp_bytes":[[131],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[158,32,246,246,19,240,98,5,150,229,5,150,96,180,21,9,65,218,20,213,215,50,192,129,14,3,147,169,124,32,122,0,0,0],[130,3,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[158,32,246,246,19,240,98,5,150,229,5,150,96,180,21,9,65,218,20,213,215,50,192,129,14,3,147,169,124,32,122,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[227,158,32,246,246,19,240,98,5,150,229,5,150,96,180,21,9,65,218,20,213,215,50,192,129,14,3,147,169,124,32,122,131,130,3,5],[224,158,32,246,246,19,240,98,5,150,229,5,150,96,180,21,9,65,218,20,213,215,50,192,129,14,3,147,169,124,32,122,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,167,114]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/FromNilToValue.json b/zkevm-circuits/src/mpt_circuit/tests/FromNilToValue.json new file mode 100644 index 0000000000..6f4931fa26 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/FromNilToValue.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,157,6,204,66,61,88,243,248,63,201,224,109,125,252,21,170,82,38,144,183,96,105,127,35,223,39,242,170,17,92,119,165,0],[160,147,161,195,34,53,107,217,200,232,165,252,190,242,176,236,143,29,40,49,3,236,129,41,157,177,120,214,102,231,219,96,217,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,89,209,188,121,86,15,10,188,253,58,117,23,117,208,9,71,106,188,107,37,130,175,44,173,128,32,149,49,175,221,57,205,0],[160,110,11,238,193,73,33,238,173,138,189,216,130,83,6,213,43,25,156,152,142,143,71,113,227,246,249,232,92,90,126,248,133,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,110,11,238,193,73,33,238,173,138,189,216,130,83,6,213,43,25,156,152,142,143,71,113,227,246,249,232,92,90,126,248,133,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,89,209,188,121,86,15,10,188,253,58,117,23,117,208,9,71,106,188,107,37,130,175,44,173,128,32,149,49,175,221,57,205,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,33,150,0,202,32,30,246,87,176,174,140,36,247,226,14,196,148,190,0,122,56,198,16,195,59,18,155,44,30,177,131,18,0],[160,221,63,28,162,64,109,10,77,132,235,64,233,81,222,20,254,216,230,210,76,92,33,22,170,90,40,205,120,56,207,188,90,0],[160,205,103,225,131,104,208,5,138,160,119,248,96,175,207,112,226,124,134,194,125,170,36,252,250,31,48,231,187,49,202,154,237,0],[160,140,125,84,147,20,122,35,164,217,202,140,197,94,39,185,88,89,99,186,159,208,230,115,141,17,127,164,191,206,22,25,47,0],[160,112,120,144,129,104,188,107,35,120,163,173,242,121,210,74,124,139,185,44,155,23,204,115,72,223,191,203,219,116,31,238,23,0],[160,152,14,143,4,16,98,43,218,48,14,110,19,145,214,133,27,72,235,116,43,32,249,201,67,39,97,83,163,219,78,32,172,0],[160,44,232,85,1,94,173,159,63,103,70,47,153,215,100,0,138,122,12,214,142,240,94,178,191,215,108,6,74,122,176,175,12,0],[160,235,150,88,9,250,59,115,92,137,198,162,64,93,52,142,87,45,81,79,232,110,184,88,81,146,148,48,57,115,126,70,95,0],[160,17,192,119,204,103,236,16,33,190,33,207,3,88,147,97,119,86,193,80,184,120,1,77,199,63,163,15,10,198,194,232,162,0],[160,230,209,235,103,135,188,110,13,84,27,154,25,21,210,189,1,60,180,104,33,125,146,52,176,240,212,86,133,232,129,152,176,0],[160,237,82,39,169,195,169,253,75,129,157,199,233,112,138,42,169,251,250,222,164,170,26,224,132,123,239,119,201,25,130,53,49,0],[160,212,65,238,253,67,195,183,75,84,243,213,154,219,95,178,209,152,131,135,155,98,80,100,142,228,16,108,67,151,229,74,10,0],[160,18,149,32,197,212,48,109,188,148,114,106,77,32,166,79,245,27,188,157,75,93,244,176,69,71,163,137,6,133,154,199,242,0],[160,123,78,61,119,254,57,175,9,191,169,231,100,198,115,254,45,217,47,214,141,161,113,150,12,178,55,31,62,238,21,129,14,0],[160,71,66,200,67,115,14,18,115,23,29,254,74,157,82,52,130,166,106,58,120,91,207,145,0,41,11,51,79,59,48,203,150,0],[160,113,99,198,57,86,53,10,174,252,70,60,182,85,2,36,244,106,35,23,22,225,198,161,80,208,143,22,169,212,154,68,13,0],[160,68,223,36,66,60,147,0,184,253,178,38,144,236,211,18,208,207,9,12,39,225,85,192,108,152,26,237,84,176,42,8,241,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,221,63,28,162,64,109,10,77,132,235,64,233,81,222,20,254,216,230,210,76,92,33,22,170,90,40,205,120,56,207,188,90,160,205,103,225,131,104,208,5,138,160,119,248,96,175,207,112,226,124,134,194,125,170,36,252,250,31,48,231,187,49,202,154,237,160,140,125,84,147,20,122,35,164,217,202,140,197,94,39,185,88,89,99,186,159,208,230,115,141,17,127,164,191,206,22,25,47,160,112,120,144,129,104,188,107,35,120,163,173,242,121,210,74,124,139,185,44,155,23,204,115,72,223,191,203,219,116,31,238,23,160,152,14,143,4,16,98,43,218,48,14,110,19,145,214,133,27,72,235,116,43,32,249,201,67,39,97,83,163,219,78,32,172,160,44,232,85,1,94,173,159,63,103,70,47,153,215,100,0,138,122,12,214,142,240,94,178,191,215,108,6,74,122,176,175,12,160,235,150,88,9,250,59,115,92,137,198,162,64,93,52,142,87,45,81,79,232,110,184,88,81,146,148,48,57,115,126,70,95,160,17,192,119,204,103,236,16,33,190,33,207,3,88,147,97,119,86,193,80,184,120,1,77,199,63,163,15,10,198,194,232,162,160,230,209,235,103,135,188,110,13,84,27,154,25,21,210,189,1,60,180,104,33,125,146,52,176,240,212,86,133,232,129,152,176,160,237,82,39,169,195,169,253,75,129,157,199,233,112,138,42,169,251,250,222,164,170,26,224,132,123,239,119,201,25,130,53,49,160,212,65,238,253,67,195,183,75,84,243,213,154,219,95,178,209,152,131,135,155,98,80,100,142,228,16,108,67,151,229,74,10,160,18,149,32,197,212,48,109,188,148,114,106,77,32,166,79,245,27,188,157,75,93,244,176,69,71,163,137,6,133,154,199,242,160,123,78,61,119,254,57,175,9,191,169,231,100,198,115,254,45,217,47,214,141,161,113,150,12,178,55,31,62,238,21,129,14,160,71,66,200,67,115,14,18,115,23,29,254,74,157,82,52,130,166,106,58,120,91,207,145,0,41,11,51,79,59,48,203,150,160,113,99,198,57,86,53,10,174,252,70,60,182,85,2,36,244,106,35,23,22,225,198,161,80,208,143,22,169,212,154,68,13,160,68,223,36,66,60,147,0,184,253,178,38,144,236,211,18,208,207,9,12,39,225,85,192,108,152,26,237,84,176,42,8,241,128],[249,2,17,160,221,63,28,162,64,109,10,77,132,235,64,233,81,222,20,254,216,230,210,76,92,33,22,170,90,40,205,120,56,207,188,90,160,205,103,225,131,104,208,5,138,160,119,248,96,175,207,112,226,124,134,194,125,170,36,252,250,31,48,231,187,49,202,154,237,160,140,125,84,147,20,122,35,164,217,202,140,197,94,39,185,88,89,99,186,159,208,230,115,141,17,127,164,191,206,22,25,47,160,112,120,144,129,104,188,107,35,120,163,173,242,121,210,74,124,139,185,44,155,23,204,115,72,223,191,203,219,116,31,238,23,160,152,14,143,4,16,98,43,218,48,14,110,19,145,214,133,27,72,235,116,43,32,249,201,67,39,97,83,163,219,78,32,172,160,44,232,85,1,94,173,159,63,103,70,47,153,215,100,0,138,122,12,214,142,240,94,178,191,215,108,6,74,122,176,175,12,160,235,150,88,9,250,59,115,92,137,198,162,64,93,52,142,87,45,81,79,232,110,184,88,81,146,148,48,57,115,126,70,95,160,17,192,119,204,103,236,16,33,190,33,207,3,88,147,97,119,86,193,80,184,120,1,77,199,63,163,15,10,198,194,232,162,160,230,209,235,103,135,188,110,13,84,27,154,25,21,210,189,1,60,180,104,33,125,146,52,176,240,212,86,133,232,129,152,176,160,237,82,39,169,195,169,253,75,129,157,199,233,112,138,42,169,251,250,222,164,170,26,224,132,123,239,119,201,25,130,53,49,160,212,65,238,253,67,195,183,75,84,243,213,154,219,95,178,209,152,131,135,155,98,80,100,142,228,16,108,67,151,229,74,10,160,18,149,32,197,212,48,109,188,148,114,106,77,32,166,79,245,27,188,157,75,93,244,176,69,71,163,137,6,133,154,199,242,160,123,78,61,119,254,57,175,9,191,169,231,100,198,115,254,45,217,47,214,141,161,113,150,12,178,55,31,62,238,21,129,14,160,71,66,200,67,115,14,18,115,23,29,254,74,157,82,52,130,166,106,58,120,91,207,145,0,41,11,51,79,59,48,203,150,160,33,150,0,202,32,30,246,87,176,174,140,36,247,226,14,196,148,190,0,122,56,198,16,195,59,18,155,44,30,177,131,18,160,68,223,36,66,60,147,0,184,253,178,38,144,236,211,18,208,207,9,12,39,225,85,192,108,152,26,237,84,176,42,8,241,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,94,178,146,78,223,223,79,204,29,92,161,244,207,161,133,27,246,185,216,215,118,26,41,175,110,37,57,234,161,133,172,13,0],[160,132,183,55,108,29,91,29,151,68,95,6,36,159,39,67,249,92,142,179,15,249,149,23,131,133,138,127,130,31,85,75,14,0],[160,15,233,41,49,20,68,39,236,137,188,164,178,40,168,138,194,125,103,86,127,121,26,193,40,248,112,190,196,116,192,4,1,0],[160,144,77,138,216,173,100,161,222,189,34,129,152,18,58,146,175,188,213,83,67,116,129,169,224,108,200,33,245,53,233,243,242,0],[160,202,164,83,25,77,150,195,70,204,240,92,88,53,191,182,59,131,40,133,236,237,193,136,238,163,4,84,216,160,220,78,54,0],[160,174,35,13,183,137,230,72,203,223,160,47,234,212,32,129,141,131,101,35,103,33,193,214,248,69,15,93,0,222,179,41,181,0],[160,3,242,62,64,167,39,69,99,253,188,54,27,52,131,210,154,172,20,231,224,81,151,169,238,231,17,43,21,175,60,39,231,0],[160,178,115,197,15,104,244,247,24,36,174,98,116,119,64,87,249,107,192,106,251,234,57,37,46,33,174,224,236,69,77,10,98,0],[160,239,119,209,229,139,174,102,141,89,229,247,23,184,215,10,189,58,243,132,54,2,135,181,207,244,126,43,57,172,123,252,148,0],[160,45,45,161,227,122,191,68,203,108,85,175,151,110,127,154,234,58,88,35,35,66,44,167,1,109,5,115,240,245,56,244,60,0],[160,41,187,82,107,153,67,66,81,177,73,213,31,160,165,232,198,72,189,231,137,84,147,234,225,146,104,157,252,210,66,245,122,0],[160,143,181,20,61,230,202,72,173,134,179,36,182,150,158,55,195,178,176,47,133,32,111,36,56,151,56,190,195,31,208,32,199,0],[160,203,31,63,117,81,43,223,230,26,252,76,237,39,160,249,155,15,102,168,35,133,133,157,121,109,154,86,64,5,213,231,27,0],[160,202,189,138,167,37,180,11,250,64,36,206,18,226,228,144,123,151,210,67,52,191,159,178,89,243,176,167,187,58,190,121,123,0],[160,151,191,55,71,1,187,127,251,222,55,15,85,184,218,110,100,37,118,185,237,143,124,224,51,31,102,242,171,121,83,105,242,0],[160,192,224,134,168,180,46,16,210,47,248,15,52,238,20,43,115,38,146,181,66,137,92,26,196,238,170,174,30,250,161,51,231,0],[160,93,44,115,136,21,161,12,147,29,217,152,147,7,195,215,227,25,169,92,9,196,56,206,135,19,201,188,59,116,80,228,152,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,132,183,55,108,29,91,29,151,68,95,6,36,159,39,67,249,92,142,179,15,249,149,23,131,133,138,127,130,31,85,75,14,160,15,233,41,49,20,68,39,236,137,188,164,178,40,168,138,194,125,103,86,127,121,26,193,40,248,112,190,196,116,192,4,1,160,144,77,138,216,173,100,161,222,189,34,129,152,18,58,146,175,188,213,83,67,116,129,169,224,108,200,33,245,53,233,243,242,160,202,164,83,25,77,150,195,70,204,240,92,88,53,191,182,59,131,40,133,236,237,193,136,238,163,4,84,216,160,220,78,54,160,174,35,13,183,137,230,72,203,223,160,47,234,212,32,129,141,131,101,35,103,33,193,214,248,69,15,93,0,222,179,41,181,160,3,242,62,64,167,39,69,99,253,188,54,27,52,131,210,154,172,20,231,224,81,151,169,238,231,17,43,21,175,60,39,231,160,178,115,197,15,104,244,247,24,36,174,98,116,119,64,87,249,107,192,106,251,234,57,37,46,33,174,224,236,69,77,10,98,160,239,119,209,229,139,174,102,141,89,229,247,23,184,215,10,189,58,243,132,54,2,135,181,207,244,126,43,57,172,123,252,148,160,45,45,161,227,122,191,68,203,108,85,175,151,110,127,154,234,58,88,35,35,66,44,167,1,109,5,115,240,245,56,244,60,160,41,187,82,107,153,67,66,81,177,73,213,31,160,165,232,198,72,189,231,137,84,147,234,225,146,104,157,252,210,66,245,122,160,143,181,20,61,230,202,72,173,134,179,36,182,150,158,55,195,178,176,47,133,32,111,36,56,151,56,190,195,31,208,32,199,160,203,31,63,117,81,43,223,230,26,252,76,237,39,160,249,155,15,102,168,35,133,133,157,121,109,154,86,64,5,213,231,27,160,202,189,138,167,37,180,11,250,64,36,206,18,226,228,144,123,151,210,67,52,191,159,178,89,243,176,167,187,58,190,121,123,160,151,191,55,71,1,187,127,251,222,55,15,85,184,218,110,100,37,118,185,237,143,124,224,51,31,102,242,171,121,83,105,242,160,192,224,134,168,180,46,16,210,47,248,15,52,238,20,43,115,38,146,181,66,137,92,26,196,238,170,174,30,250,161,51,231,160,93,44,115,136,21,161,12,147,29,217,152,147,7,195,215,227,25,169,92,9,196,56,206,135,19,201,188,59,116,80,228,152,128],[249,2,17,160,132,183,55,108,29,91,29,151,68,95,6,36,159,39,67,249,92,142,179,15,249,149,23,131,133,138,127,130,31,85,75,14,160,94,178,146,78,223,223,79,204,29,92,161,244,207,161,133,27,246,185,216,215,118,26,41,175,110,37,57,234,161,133,172,13,160,144,77,138,216,173,100,161,222,189,34,129,152,18,58,146,175,188,213,83,67,116,129,169,224,108,200,33,245,53,233,243,242,160,202,164,83,25,77,150,195,70,204,240,92,88,53,191,182,59,131,40,133,236,237,193,136,238,163,4,84,216,160,220,78,54,160,174,35,13,183,137,230,72,203,223,160,47,234,212,32,129,141,131,101,35,103,33,193,214,248,69,15,93,0,222,179,41,181,160,3,242,62,64,167,39,69,99,253,188,54,27,52,131,210,154,172,20,231,224,81,151,169,238,231,17,43,21,175,60,39,231,160,178,115,197,15,104,244,247,24,36,174,98,116,119,64,87,249,107,192,106,251,234,57,37,46,33,174,224,236,69,77,10,98,160,239,119,209,229,139,174,102,141,89,229,247,23,184,215,10,189,58,243,132,54,2,135,181,207,244,126,43,57,172,123,252,148,160,45,45,161,227,122,191,68,203,108,85,175,151,110,127,154,234,58,88,35,35,66,44,167,1,109,5,115,240,245,56,244,60,160,41,187,82,107,153,67,66,81,177,73,213,31,160,165,232,198,72,189,231,137,84,147,234,225,146,104,157,252,210,66,245,122,160,143,181,20,61,230,202,72,173,134,179,36,182,150,158,55,195,178,176,47,133,32,111,36,56,151,56,190,195,31,208,32,199,160,203,31,63,117,81,43,223,230,26,252,76,237,39,160,249,155,15,102,168,35,133,133,157,121,109,154,86,64,5,213,231,27,160,202,189,138,167,37,180,11,250,64,36,206,18,226,228,144,123,151,210,67,52,191,159,178,89,243,176,167,187,58,190,121,123,160,151,191,55,71,1,187,127,251,222,55,15,85,184,218,110,100,37,118,185,237,143,124,224,51,31,102,242,171,121,83,105,242,160,192,224,134,168,180,46,16,210,47,248,15,52,238,20,43,115,38,146,181,66,137,92,26,196,238,170,174,30,250,161,51,231,160,93,44,115,136,21,161,12,147,29,217,152,147,7,195,215,227,25,169,92,9,196,56,206,135,19,201,188,59,116,80,228,152,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,96,14,225,103,29,223,7,24,163,204,11,38,25,162,195,230,134,175,147,140,230,103,22,74,203,7,212,68,161,99,27,229,0],[160,150,184,86,4,244,132,20,47,206,118,227,93,176,113,165,249,154,139,105,224,107,24,2,128,38,141,99,124,8,60,225,131,0],[160,68,56,65,75,249,48,90,53,122,215,209,224,137,217,119,103,67,133,255,36,55,43,199,238,211,207,216,169,77,203,93,41,0],[160,165,42,228,244,164,74,87,8,166,90,56,108,229,91,117,208,124,65,237,191,109,155,46,191,63,151,27,58,224,37,165,159,0],[160,114,196,101,172,255,120,26,172,83,90,48,32,255,207,129,112,114,16,216,195,205,226,151,31,216,90,18,180,4,81,234,24,0],[160,145,202,37,76,45,254,129,144,232,51,206,177,226,36,165,31,91,96,151,133,246,97,122,155,253,3,189,93,236,181,118,161,0],[160,92,75,104,198,130,215,215,241,166,97,0,3,209,152,201,13,223,109,239,11,204,159,87,27,35,193,6,7,111,124,7,135,0],[160,8,190,56,82,180,128,213,218,59,212,135,223,175,50,202,227,35,31,82,129,153,89,24,228,178,242,65,19,178,4,48,160,0],[160,182,131,132,90,118,161,70,166,95,2,204,0,153,69,169,194,233,88,44,80,8,121,94,25,177,41,216,34,223,220,10,112,0],[160,93,216,145,137,80,205,82,175,60,227,196,170,134,126,123,129,220,102,121,108,203,129,243,101,65,159,148,83,93,180,32,166,0],[160,115,44,151,103,210,228,251,146,51,134,177,148,126,166,139,242,64,206,184,239,126,196,9,25,143,64,15,146,207,60,71,83,0],[160,221,60,180,147,6,76,231,249,32,194,151,204,237,134,207,150,204,202,115,253,76,163,77,56,110,117,0,101,77,100,79,195,0],[160,23,90,121,202,32,181,169,8,162,239,61,161,220,157,84,117,220,205,11,230,118,192,58,20,43,251,186,21,215,28,74,37,0],[160,38,83,21,74,147,199,227,23,169,52,205,52,147,67,3,97,220,109,69,212,77,103,196,225,121,214,244,244,170,115,122,49,0],[160,151,124,184,52,92,49,19,50,139,64,34,169,27,64,107,204,79,57,173,21,37,24,71,5,198,9,37,254,184,14,229,87,0],[160,228,21,200,161,140,235,240,24,222,139,3,181,83,125,50,67,158,203,124,6,176,207,128,217,34,112,237,37,192,213,182,93,0],[160,144,25,150,67,144,73,153,126,89,70,138,83,215,247,9,151,17,232,97,206,146,173,211,134,22,108,199,123,244,160,204,200,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,150,184,86,4,244,132,20,47,206,118,227,93,176,113,165,249,154,139,105,224,107,24,2,128,38,141,99,124,8,60,225,131,160,68,56,65,75,249,48,90,53,122,215,209,224,137,217,119,103,67,133,255,36,55,43,199,238,211,207,216,169,77,203,93,41,160,165,42,228,244,164,74,87,8,166,90,56,108,229,91,117,208,124,65,237,191,109,155,46,191,63,151,27,58,224,37,165,159,160,114,196,101,172,255,120,26,172,83,90,48,32,255,207,129,112,114,16,216,195,205,226,151,31,216,90,18,180,4,81,234,24,160,145,202,37,76,45,254,129,144,232,51,206,177,226,36,165,31,91,96,151,133,246,97,122,155,253,3,189,93,236,181,118,161,160,92,75,104,198,130,215,215,241,166,97,0,3,209,152,201,13,223,109,239,11,204,159,87,27,35,193,6,7,111,124,7,135,160,8,190,56,82,180,128,213,218,59,212,135,223,175,50,202,227,35,31,82,129,153,89,24,228,178,242,65,19,178,4,48,160,160,182,131,132,90,118,161,70,166,95,2,204,0,153,69,169,194,233,88,44,80,8,121,94,25,177,41,216,34,223,220,10,112,160,93,216,145,137,80,205,82,175,60,227,196,170,134,126,123,129,220,102,121,108,203,129,243,101,65,159,148,83,93,180,32,166,160,115,44,151,103,210,228,251,146,51,134,177,148,126,166,139,242,64,206,184,239,126,196,9,25,143,64,15,146,207,60,71,83,160,221,60,180,147,6,76,231,249,32,194,151,204,237,134,207,150,204,202,115,253,76,163,77,56,110,117,0,101,77,100,79,195,160,23,90,121,202,32,181,169,8,162,239,61,161,220,157,84,117,220,205,11,230,118,192,58,20,43,251,186,21,215,28,74,37,160,38,83,21,74,147,199,227,23,169,52,205,52,147,67,3,97,220,109,69,212,77,103,196,225,121,214,244,244,170,115,122,49,160,151,124,184,52,92,49,19,50,139,64,34,169,27,64,107,204,79,57,173,21,37,24,71,5,198,9,37,254,184,14,229,87,160,228,21,200,161,140,235,240,24,222,139,3,181,83,125,50,67,158,203,124,6,176,207,128,217,34,112,237,37,192,213,182,93,160,144,25,150,67,144,73,153,126,89,70,138,83,215,247,9,151,17,232,97,206,146,173,211,134,22,108,199,123,244,160,204,200,128],[249,2,17,160,150,184,86,4,244,132,20,47,206,118,227,93,176,113,165,249,154,139,105,224,107,24,2,128,38,141,99,124,8,60,225,131,160,68,56,65,75,249,48,90,53,122,215,209,224,137,217,119,103,67,133,255,36,55,43,199,238,211,207,216,169,77,203,93,41,160,165,42,228,244,164,74,87,8,166,90,56,108,229,91,117,208,124,65,237,191,109,155,46,191,63,151,27,58,224,37,165,159,160,114,196,101,172,255,120,26,172,83,90,48,32,255,207,129,112,114,16,216,195,205,226,151,31,216,90,18,180,4,81,234,24,160,145,202,37,76,45,254,129,144,232,51,206,177,226,36,165,31,91,96,151,133,246,97,122,155,253,3,189,93,236,181,118,161,160,92,75,104,198,130,215,215,241,166,97,0,3,209,152,201,13,223,109,239,11,204,159,87,27,35,193,6,7,111,124,7,135,160,8,190,56,82,180,128,213,218,59,212,135,223,175,50,202,227,35,31,82,129,153,89,24,228,178,242,65,19,178,4,48,160,160,182,131,132,90,118,161,70,166,95,2,204,0,153,69,169,194,233,88,44,80,8,121,94,25,177,41,216,34,223,220,10,112,160,93,216,145,137,80,205,82,175,60,227,196,170,134,126,123,129,220,102,121,108,203,129,243,101,65,159,148,83,93,180,32,166,160,115,44,151,103,210,228,251,146,51,134,177,148,126,166,139,242,64,206,184,239,126,196,9,25,143,64,15,146,207,60,71,83,160,96,14,225,103,29,223,7,24,163,204,11,38,25,162,195,230,134,175,147,140,230,103,22,74,203,7,212,68,161,99,27,229,160,23,90,121,202,32,181,169,8,162,239,61,161,220,157,84,117,220,205,11,230,118,192,58,20,43,251,186,21,215,28,74,37,160,38,83,21,74,147,199,227,23,169,52,205,52,147,67,3,97,220,109,69,212,77,103,196,225,121,214,244,244,170,115,122,49,160,151,124,184,52,92,49,19,50,139,64,34,169,27,64,107,204,79,57,173,21,37,24,71,5,198,9,37,254,184,14,229,87,160,228,21,200,161,140,235,240,24,222,139,3,181,83,125,50,67,158,203,124,6,176,207,128,217,34,112,237,37,192,213,182,93,160,144,25,150,67,144,73,153,126,89,70,138,83,215,247,9,151,17,232,97,206,146,173,211,134,22,108,199,123,244,160,204,200,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,114,210,209,136,205,21,91,39,8,230,244,109,236,27,180,129,56,67,110,101,160,247,232,254,102,65,2,246,118,80,112,172,0],[160,189,32,141,75,52,19,1,166,154,134,143,47,74,217,169,143,92,48,155,40,34,38,199,240,229,171,64,229,169,83,4,65,0],[160,134,218,67,64,124,41,174,161,37,95,233,183,118,98,251,165,236,176,162,174,30,184,77,149,43,26,8,53,85,232,29,207,0],[160,108,28,33,142,72,17,169,189,210,236,245,223,172,149,207,71,61,192,229,32,179,40,217,11,68,178,26,190,22,177,150,95,0],[160,27,54,178,184,11,109,46,68,194,161,156,32,133,120,119,137,146,220,182,2,212,190,101,145,59,118,188,80,32,11,207,251,0],[160,4,166,194,200,30,100,80,37,77,3,192,102,125,27,217,13,181,111,3,56,92,148,173,237,117,131,104,164,102,60,168,26,0],[160,146,81,164,254,101,84,58,79,191,12,128,156,33,82,124,197,231,158,248,206,76,187,222,175,199,95,30,243,202,116,176,141,0],[160,250,152,160,148,100,218,100,145,0,128,6,171,208,145,55,119,85,150,232,164,199,172,163,197,157,107,155,70,54,234,247,33,0],[160,82,223,41,252,249,45,143,53,45,226,211,129,179,84,141,233,51,133,28,196,14,87,136,138,81,66,193,0,51,20,169,105,0],[160,224,12,127,7,248,175,244,16,149,212,75,65,194,140,130,171,54,54,139,143,144,62,205,14,186,162,73,151,119,57,196,247,0],[160,34,13,57,186,33,225,182,171,118,60,146,207,247,163,218,225,182,64,42,213,231,244,93,112,112,224,85,106,140,97,23,143,0],[160,181,83,165,198,162,86,151,243,227,4,86,158,204,109,222,83,152,126,11,152,13,133,44,136,166,4,96,44,44,128,239,60,0],[160,247,190,104,208,129,41,214,136,29,174,249,170,38,35,32,190,76,108,52,254,192,6,179,79,83,218,214,76,6,245,169,1,0],[160,99,117,226,219,137,167,247,15,117,197,165,235,213,4,68,22,184,127,231,51,16,80,1,48,137,237,29,198,82,110,5,35,0],[160,246,239,0,127,38,56,185,3,155,85,156,9,241,249,78,66,61,177,46,165,208,186,177,105,238,91,143,160,42,189,74,118,0],[160,41,47,96,8,140,233,223,30,248,63,249,171,82,209,88,145,32,237,109,239,48,239,111,99,156,228,175,136,218,138,30,120,0],[160,21,52,178,207,138,164,208,11,82,134,225,231,108,40,107,167,115,32,167,61,16,121,39,217,67,199,39,220,68,150,169,249,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,189,32,141,75,52,19,1,166,154,134,143,47,74,217,169,143,92,48,155,40,34,38,199,240,229,171,64,229,169,83,4,65,160,134,218,67,64,124,41,174,161,37,95,233,183,118,98,251,165,236,176,162,174,30,184,77,149,43,26,8,53,85,232,29,207,160,108,28,33,142,72,17,169,189,210,236,245,223,172,149,207,71,61,192,229,32,179,40,217,11,68,178,26,190,22,177,150,95,160,27,54,178,184,11,109,46,68,194,161,156,32,133,120,119,137,146,220,182,2,212,190,101,145,59,118,188,80,32,11,207,251,160,4,166,194,200,30,100,80,37,77,3,192,102,125,27,217,13,181,111,3,56,92,148,173,237,117,131,104,164,102,60,168,26,160,146,81,164,254,101,84,58,79,191,12,128,156,33,82,124,197,231,158,248,206,76,187,222,175,199,95,30,243,202,116,176,141,160,250,152,160,148,100,218,100,145,0,128,6,171,208,145,55,119,85,150,232,164,199,172,163,197,157,107,155,70,54,234,247,33,160,82,223,41,252,249,45,143,53,45,226,211,129,179,84,141,233,51,133,28,196,14,87,136,138,81,66,193,0,51,20,169,105,160,224,12,127,7,248,175,244,16,149,212,75,65,194,140,130,171,54,54,139,143,144,62,205,14,186,162,73,151,119,57,196,247,160,34,13,57,186,33,225,182,171,118,60,146,207,247,163,218,225,182,64,42,213,231,244,93,112,112,224,85,106,140,97,23,143,160,181,83,165,198,162,86,151,243,227,4,86,158,204,109,222,83,152,126,11,152,13,133,44,136,166,4,96,44,44,128,239,60,160,247,190,104,208,129,41,214,136,29,174,249,170,38,35,32,190,76,108,52,254,192,6,179,79,83,218,214,76,6,245,169,1,160,99,117,226,219,137,167,247,15,117,197,165,235,213,4,68,22,184,127,231,51,16,80,1,48,137,237,29,198,82,110,5,35,160,246,239,0,127,38,56,185,3,155,85,156,9,241,249,78,66,61,177,46,165,208,186,177,105,238,91,143,160,42,189,74,118,160,41,47,96,8,140,233,223,30,248,63,249,171,82,209,88,145,32,237,109,239,48,239,111,99,156,228,175,136,218,138,30,120,160,21,52,178,207,138,164,208,11,82,134,225,231,108,40,107,167,115,32,167,61,16,121,39,217,67,199,39,220,68,150,169,249,128],[249,2,17,160,189,32,141,75,52,19,1,166,154,134,143,47,74,217,169,143,92,48,155,40,34,38,199,240,229,171,64,229,169,83,4,65,160,134,218,67,64,124,41,174,161,37,95,233,183,118,98,251,165,236,176,162,174,30,184,77,149,43,26,8,53,85,232,29,207,160,108,28,33,142,72,17,169,189,210,236,245,223,172,149,207,71,61,192,229,32,179,40,217,11,68,178,26,190,22,177,150,95,160,27,54,178,184,11,109,46,68,194,161,156,32,133,120,119,137,146,220,182,2,212,190,101,145,59,118,188,80,32,11,207,251,160,4,166,194,200,30,100,80,37,77,3,192,102,125,27,217,13,181,111,3,56,92,148,173,237,117,131,104,164,102,60,168,26,160,146,81,164,254,101,84,58,79,191,12,128,156,33,82,124,197,231,158,248,206,76,187,222,175,199,95,30,243,202,116,176,141,160,250,152,160,148,100,218,100,145,0,128,6,171,208,145,55,119,85,150,232,164,199,172,163,197,157,107,155,70,54,234,247,33,160,82,223,41,252,249,45,143,53,45,226,211,129,179,84,141,233,51,133,28,196,14,87,136,138,81,66,193,0,51,20,169,105,160,224,12,127,7,248,175,244,16,149,212,75,65,194,140,130,171,54,54,139,143,144,62,205,14,186,162,73,151,119,57,196,247,160,34,13,57,186,33,225,182,171,118,60,146,207,247,163,218,225,182,64,42,213,231,244,93,112,112,224,85,106,140,97,23,143,160,181,83,165,198,162,86,151,243,227,4,86,158,204,109,222,83,152,126,11,152,13,133,44,136,166,4,96,44,44,128,239,60,160,247,190,104,208,129,41,214,136,29,174,249,170,38,35,32,190,76,108,52,254,192,6,179,79,83,218,214,76,6,245,169,1,160,114,210,209,136,205,21,91,39,8,230,244,109,236,27,180,129,56,67,110,101,160,247,232,254,102,65,2,246,118,80,112,172,160,246,239,0,127,38,56,185,3,155,85,156,9,241,249,78,66,61,177,46,165,208,186,177,105,238,91,143,160,42,189,74,118,160,41,47,96,8,140,233,223,30,248,63,249,171,82,209,88,145,32,237,109,239,48,239,111,99,156,228,175,136,218,138,30,120,160,21,52,178,207,138,164,208,11,82,134,225,231,108,40,107,167,115,32,167,61,16,121,39,217,67,199,39,220,68,150,169,249,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,200,152,181,200,19,32,88,99,143,179,97,40,233,158,1,51,196,157,228,93,255,154,69,132,138,51,169,87,3,100,123,118,0],[160,8,254,132,23,229,149,99,219,88,57,10,222,18,82,149,165,147,171,50,73,235,48,189,223,3,137,162,237,21,177,117,145,0],[160,50,222,179,14,223,77,169,112,59,172,245,54,245,247,254,119,61,231,197,191,77,5,246,189,29,144,5,43,83,255,24,75,0],[160,188,246,136,235,135,47,205,44,119,203,138,95,200,248,134,74,222,102,201,120,157,164,48,42,67,144,81,187,228,82,52,124,0],[160,234,59,240,203,192,182,151,208,159,46,236,182,225,37,11,61,4,163,232,101,99,66,171,104,68,133,127,1,137,97,211,252,0],[160,155,49,66,80,166,127,166,75,17,43,92,54,37,59,45,41,124,190,72,63,152,206,151,92,140,125,157,90,37,187,105,230,0],[160,227,121,245,144,65,81,86,185,126,193,202,131,45,27,221,225,151,188,36,84,30,190,122,209,168,122,181,141,88,95,112,72,0],[160,126,219,14,255,8,99,48,113,202,155,255,37,89,13,74,55,185,62,139,9,213,90,251,23,98,118,24,251,86,121,19,164,0],[160,77,145,251,190,82,149,25,183,184,100,211,79,218,41,64,158,170,178,238,192,134,33,174,63,108,160,39,14,128,164,56,78,0],[160,185,233,22,49,42,186,67,167,183,198,221,47,239,156,151,42,59,93,121,111,180,86,189,227,216,40,183,95,8,254,229,5,0],[160,60,209,153,126,2,17,196,49,107,221,173,30,28,125,17,162,173,101,192,42,237,217,22,208,7,133,4,173,92,120,200,55,0],[160,172,198,82,254,220,166,39,79,22,236,225,61,77,106,215,29,34,9,39,57,103,48,125,199,110,175,151,134,215,221,27,213,0],[160,19,104,170,19,121,26,48,113,47,170,28,144,240,210,78,249,155,226,146,161,49,189,230,12,27,187,202,8,137,210,116,41,0],[160,31,40,239,151,149,46,97,160,167,118,235,233,142,205,227,254,116,129,65,42,220,231,90,125,129,189,111,83,136,55,163,145,0],[160,64,95,160,150,168,199,121,128,105,84,35,44,165,91,227,122,122,161,37,122,186,102,45,151,192,50,15,198,12,36,68,0,0],[160,78,219,62,106,32,217,13,39,249,131,25,204,159,162,1,211,159,141,99,137,217,227,72,183,53,229,138,247,216,75,95,138,0],[160,67,231,234,148,79,179,106,52,127,143,251,9,23,229,5,118,160,86,246,248,13,59,144,53,105,225,153,199,145,225,157,98,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,8,254,132,23,229,149,99,219,88,57,10,222,18,82,149,165,147,171,50,73,235,48,189,223,3,137,162,237,21,177,117,145,160,50,222,179,14,223,77,169,112,59,172,245,54,245,247,254,119,61,231,197,191,77,5,246,189,29,144,5,43,83,255,24,75,160,188,246,136,235,135,47,205,44,119,203,138,95,200,248,134,74,222,102,201,120,157,164,48,42,67,144,81,187,228,82,52,124,160,234,59,240,203,192,182,151,208,159,46,236,182,225,37,11,61,4,163,232,101,99,66,171,104,68,133,127,1,137,97,211,252,160,155,49,66,80,166,127,166,75,17,43,92,54,37,59,45,41,124,190,72,63,152,206,151,92,140,125,157,90,37,187,105,230,160,227,121,245,144,65,81,86,185,126,193,202,131,45,27,221,225,151,188,36,84,30,190,122,209,168,122,181,141,88,95,112,72,160,126,219,14,255,8,99,48,113,202,155,255,37,89,13,74,55,185,62,139,9,213,90,251,23,98,118,24,251,86,121,19,164,160,77,145,251,190,82,149,25,183,184,100,211,79,218,41,64,158,170,178,238,192,134,33,174,63,108,160,39,14,128,164,56,78,160,185,233,22,49,42,186,67,167,183,198,221,47,239,156,151,42,59,93,121,111,180,86,189,227,216,40,183,95,8,254,229,5,160,60,209,153,126,2,17,196,49,107,221,173,30,28,125,17,162,173,101,192,42,237,217,22,208,7,133,4,173,92,120,200,55,160,172,198,82,254,220,166,39,79,22,236,225,61,77,106,215,29,34,9,39,57,103,48,125,199,110,175,151,134,215,221,27,213,160,19,104,170,19,121,26,48,113,47,170,28,144,240,210,78,249,155,226,146,161,49,189,230,12,27,187,202,8,137,210,116,41,160,31,40,239,151,149,46,97,160,167,118,235,233,142,205,227,254,116,129,65,42,220,231,90,125,129,189,111,83,136,55,163,145,160,64,95,160,150,168,199,121,128,105,84,35,44,165,91,227,122,122,161,37,122,186,102,45,151,192,50,15,198,12,36,68,0,160,78,219,62,106,32,217,13,39,249,131,25,204,159,162,1,211,159,141,99,137,217,227,72,183,53,229,138,247,216,75,95,138,160,67,231,234,148,79,179,106,52,127,143,251,9,23,229,5,118,160,86,246,248,13,59,144,53,105,225,153,199,145,225,157,98,128],[249,2,17,160,8,254,132,23,229,149,99,219,88,57,10,222,18,82,149,165,147,171,50,73,235,48,189,223,3,137,162,237,21,177,117,145,160,50,222,179,14,223,77,169,112,59,172,245,54,245,247,254,119,61,231,197,191,77,5,246,189,29,144,5,43,83,255,24,75,160,188,246,136,235,135,47,205,44,119,203,138,95,200,248,134,74,222,102,201,120,157,164,48,42,67,144,81,187,228,82,52,124,160,234,59,240,203,192,182,151,208,159,46,236,182,225,37,11,61,4,163,232,101,99,66,171,104,68,133,127,1,137,97,211,252,160,155,49,66,80,166,127,166,75,17,43,92,54,37,59,45,41,124,190,72,63,152,206,151,92,140,125,157,90,37,187,105,230,160,200,152,181,200,19,32,88,99,143,179,97,40,233,158,1,51,196,157,228,93,255,154,69,132,138,51,169,87,3,100,123,118,160,126,219,14,255,8,99,48,113,202,155,255,37,89,13,74,55,185,62,139,9,213,90,251,23,98,118,24,251,86,121,19,164,160,77,145,251,190,82,149,25,183,184,100,211,79,218,41,64,158,170,178,238,192,134,33,174,63,108,160,39,14,128,164,56,78,160,185,233,22,49,42,186,67,167,183,198,221,47,239,156,151,42,59,93,121,111,180,86,189,227,216,40,183,95,8,254,229,5,160,60,209,153,126,2,17,196,49,107,221,173,30,28,125,17,162,173,101,192,42,237,217,22,208,7,133,4,173,92,120,200,55,160,172,198,82,254,220,166,39,79,22,236,225,61,77,106,215,29,34,9,39,57,103,48,125,199,110,175,151,134,215,221,27,213,160,19,104,170,19,121,26,48,113,47,170,28,144,240,210,78,249,155,226,146,161,49,189,230,12,27,187,202,8,137,210,116,41,160,31,40,239,151,149,46,97,160,167,118,235,233,142,205,227,254,116,129,65,42,220,231,90,125,129,189,111,83,136,55,163,145,160,64,95,160,150,168,199,121,128,105,84,35,44,165,91,227,122,122,161,37,122,186,102,45,151,192,50,15,198,12,36,68,0,160,78,219,62,106,32,217,13,39,249,131,25,204,159,162,1,211,159,141,99,137,217,227,72,183,53,229,138,247,216,75,95,138,160,67,231,234,148,79,179,106,52,127,143,251,9,23,229,5,118,160,86,246,248,13,59,144,53,105,225,153,199,145,225,157,98,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[248,209],[248,209]]}},"account":null,"storage":null,"values":[[160,70,108,89,120,155,90,189,42,146,67,196,114,18,149,136,115,0,65,164,125,232,61,37,105,176,230,153,128,225,237,144,109,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,20,231,177,51,165,234,125,47,140,26,102,255,8,95,252,26,156,215,77,3,10,74,43,55,204,208,131,100,223,86,43,159,0],[160,215,175,237,199,65,125,207,149,251,58,65,237,143,191,55,173,91,230,193,23,99,138,163,185,31,11,29,135,238,15,63,249,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,11,247,226,209,154,68,214,159,67,9,164,183,252,161,151,187,221,160,140,27,6,58,50,53,151,142,55,155,145,228,103,204,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,234,191,139,217,172,238,124,31,134,117,192,165,23,40,18,235,59,194,99,240,237,164,26,97,115,7,199,160,1,208,137,158,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,92,116,139,41,77,242,202,71,152,244,41,145,182,160,74,223,21,76,196,206,89,71,103,172,121,27,18,25,54,125,38,135,0],[160,168,168,150,150,8,179,108,28,7,225,167,151,55,222,105,169,85,171,132,150,177,80,116,39,231,10,203,246,76,131,170,17,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,209,128,128,128,160,20,231,177,51,165,234,125,47,140,26,102,255,8,95,252,26,156,215,77,3,10,74,43,55,204,208,131,100,223,86,43,159,160,215,175,237,199,65,125,207,149,251,58,65,237,143,191,55,173,91,230,193,23,99,138,163,185,31,11,29,135,238,15,63,249,128,128,160,11,247,226,209,154,68,214,159,67,9,164,183,252,161,151,187,221,160,140,27,6,58,50,53,151,142,55,155,145,228,103,204,128,128,160,234,191,139,217,172,238,124,31,134,117,192,165,23,40,18,235,59,194,99,240,237,164,26,97,115,7,199,160,1,208,137,158,128,128,128,160,92,116,139,41,77,242,202,71,152,244,41,145,182,160,74,223,21,76,196,206,89,71,103,172,121,27,18,25,54,125,38,135,160,168,168,150,150,8,179,108,28,7,225,167,151,55,222,105,169,85,171,132,150,177,80,116,39,231,10,203,246,76,131,170,17,128],[248,209,128,128,128,160,20,231,177,51,165,234,125,47,140,26,102,255,8,95,252,26,156,215,77,3,10,74,43,55,204,208,131,100,223,86,43,159,160,215,175,237,199,65,125,207,149,251,58,65,237,143,191,55,173,91,230,193,23,99,138,163,185,31,11,29,135,238,15,63,249,128,128,160,70,108,89,120,155,90,189,42,146,67,196,114,18,149,136,115,0,65,164,125,232,61,37,105,176,230,153,128,225,237,144,109,128,128,160,234,191,139,217,172,238,124,31,134,117,192,165,23,40,18,235,59,194,99,240,237,164,26,97,115,7,199,160,1,208,137,158,128,128,128,160,92,116,139,41,77,242,202,71,152,244,41,145,182,160,74,223,21,76,196,206,89,71,103,172,121,27,18,25,54,125,38,135,160,168,168,150,150,8,179,108,28,7,225,167,151,55,222,105,169,85,171,132,150,177,80,116,39,231,10,203,246,76,131,170,17,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,28,37,115,237,110,197,136,192,228,218,204,198,28,199,91,211,4,111,95,111,30,36,100,238,8,28,217,87,217,253,64,246,0],[160,78,91,212,99,28,229,255,249,0,175,38,16,81,65,173,138,71,212,169,134,145,215,188,192,153,41,30,220,122,198,3,24,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,164,74,64,145,116,142,196,208,64,153,244,44,247,211,53,250,147,54,220,12,147,109,89,239,82,236,47,120,205,86,222,41,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,160,78,91,212,99,28,229,255,249,0,175,38,16,81,65,173,138,71,212,169,134,145,215,188,192,153,41,30,220,122,198,3,24,128,128,128,128,160,164,74,64,145,116,142,196,208,64,153,244,44,247,211,53,250,147,54,220,12,147,109,89,239,82,236,47,120,205,86,222,41,128,128,128,128,128,128,128,128,128,128,128],[248,81,160,28,37,115,237,110,197,136,192,228,218,204,198,28,199,91,211,4,111,95,111,30,36,100,238,8,28,217,87,217,253,64,246,128,128,128,128,160,164,74,64,145,116,142,196,208,64,153,244,44,247,211,53,250,147,54,220,12,147,109,89,239,82,236,47,120,205,86,222,41,128,128,128,128,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[80,239,191,18,88,1,56,188,38,60,149,117,120,38,223,78,66,171,129,255],"key":[14,26,197,112,67,205,5,96,191,181,172,145,92,108,1,12,233,43,154,150,40,56,106,44,218,15,202,159,37,22,188,137],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,32,67,205,5,96,191,181,172,145,92,108,1,12,233,43,154,150,40,56,106,44,218,15,202,159,37,22,188,137,0,0,0,0],[157,32,67,205,5,96,191,181,172,145,92,108,1,12,233,43,154,150,40,56,106,44,218,15,202,159,37,22,188,137,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,129,244,73,42,98,143,233,177,28,202,218,127,217,43,2,95,105,122,132,183,82,100,4,248,255,135,45,67,59,68,42,178,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,121,14,171,234,156,214,93,110,79,57,64,219,69,54,69,63,82,123,178,49,184,11,35,71,114,45,85,67,147,101,219,177,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,32,67,205,5,96,191,181,172,145,92,108,1,12,233,43,154,150,40,56,106,44,218,15,202,159,37,22,188,137,0,0,0,0]],"keccak_data":[[248,102,157,32,67,205,5,96,191,181,172,145,92,108,1,12,233,43,154,150,40,56,106,44,218,15,202,159,37,22,188,137,184,70,248,68,128,128,160,129,244,73,42,98,143,233,177,28,202,218,127,217,43,2,95,105,122,132,183,82,100,4,248,255,135,45,67,59,68,42,178,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,32,67,205,5,96,191,181,172,145,92,108,1,12,233,43,154,150,40,56,106,44,218,15,202,159,37,22,188,137,184,70,248,68,128,128,160,121,14,171,234,156,214,93,110,79,57,64,219,69,54,69,63,82,123,178,49,184,11,35,71,114,45,85,67,147,101,219,177,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[80,239,191,18,88,1,56,188,38,60,149,117,120,38,223,78,66,171,129,255]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[248,209],[248,209]]}},"account":null,"storage":null,"values":[[160,24,182,178,214,38,20,91,108,90,243,172,88,194,151,6,143,175,21,244,34,233,77,229,19,73,67,90,106,238,120,125,127,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,65,167,23,203,113,93,69,15,22,99,35,160,167,106,169,1,71,63,111,195,21,216,68,163,164,93,50,97,97,128,85,106,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,169,184,158,55,8,215,67,17,7,135,162,219,160,221,5,17,129,106,64,40,193,232,134,216,205,151,23,215,168,161,234,80,0],[160,52,86,237,1,33,17,15,7,250,78,103,241,209,9,234,205,135,155,108,70,244,8,249,172,125,146,118,122,252,15,123,227,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,68,215,44,186,123,54,237,130,82,183,133,8,40,13,69,37,77,83,215,31,113,184,132,16,11,15,183,36,181,221,159,2,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,0],[160,221,40,171,152,146,156,180,204,180,210,222,45,63,32,157,40,15,253,174,48,109,107,87,208,96,191,150,31,85,215,122,8,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,209,128,160,65,167,23,203,113,93,69,15,22,99,35,160,167,106,169,1,71,63,111,195,21,216,68,163,164,93,50,97,97,128,85,106,128,160,169,184,158,55,8,215,67,17,7,135,162,219,160,221,5,17,129,106,64,40,193,232,134,216,205,151,23,215,168,161,234,80,160,52,86,237,1,33,17,15,7,250,78,103,241,209,9,234,205,135,155,108,70,244,8,249,172,125,146,118,122,252,15,123,227,128,128,128,160,68,215,44,186,123,54,237,130,82,183,133,8,40,13,69,37,77,83,215,31,113,184,132,16,11,15,183,36,181,221,159,2,128,128,160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,160,221,40,171,152,146,156,180,204,180,210,222,45,63,32,157,40,15,253,174,48,109,107,87,208,96,191,150,31,85,215,122,8,128,128,128,128],[248,209,128,160,65,167,23,203,113,93,69,15,22,99,35,160,167,106,169,1,71,63,111,195,21,216,68,163,164,93,50,97,97,128,85,106,128,160,24,182,178,214,38,20,91,108,90,243,172,88,194,151,6,143,175,21,244,34,233,77,229,19,73,67,90,106,238,120,125,127,160,52,86,237,1,33,17,15,7,250,78,103,241,209,9,234,205,135,155,108,70,244,8,249,172,125,146,118,122,252,15,123,227,128,128,128,160,68,215,44,186,123,54,237,130,82,183,133,8,40,13,69,37,77,83,215,31,113,184,132,16,11,15,183,36,181,221,159,2,128,128,160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,160,221,40,171,152,146,156,180,204,180,210,222,45,63,32,157,40,15,253,174,48,109,107,87,208,96,191,150,31,85,215,122,8,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[248,81],[248,113]]}},"account":null,"storage":null,"values":[[160,59,124,144,37,72,140,245,74,228,180,52,245,37,208,168,210,158,164,191,29,71,150,31,86,235,31,179,222,74,121,59,237,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,144,251,124,202,220,92,31,133,222,150,215,207,225,250,167,226,181,121,66,196,246,55,16,157,64,177,79,73,60,151,194,209,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,141,203,27,132,71,133,121,242,117,169,74,104,137,216,230,118,125,138,242,115,166,118,39,237,209,234,156,251,107,97,244,220,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,160,144,251,124,202,220,92,31,133,222,150,215,207,225,250,167,226,181,121,66,196,246,55,16,157,64,177,79,73,60,151,194,209,128,128,128,128,128,128,128,128,160,141,203,27,132,71,133,121,242,117,169,74,104,137,216,230,118,125,138,242,115,166,118,39,237,209,234,156,251,107,97,244,220,128,128,128,128,128,128],[248,113,128,160,144,251,124,202,220,92,31,133,222,150,215,207,225,250,167,226,181,121,66,196,246,55,16,157,64,177,79,73,60,151,194,209,128,128,128,128,128,128,160,59,124,144,37,72,140,245,74,228,180,52,245,37,208,168,210,158,164,191,29,71,150,31,86,235,31,179,222,74,121,59,237,128,160,141,203,27,132,71,133,121,242,117,169,74,104,137,216,230,118,125,138,242,115,166,118,39,237,209,234,156,251,107,97,244,220,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56],"key":[56,57,92,93,206,173,233,96,52,121,177,119,182,137,89,4,148,133,223,138,169,123,57,243,83,48,57,175,95,69,97,153],"list_rlp_bytes":[[226],[226]],"value_rlp_bytes":[[0],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,32,57,92,93,206,173,233,96,52,121,177,119,182,137,89,4,148,133,223,138,169,123,57,243,83,48,57,175,95,69,97,153,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,57,92,93,206,173,233,96,52,121,177,119,182,137,89,4,148,133,223,138,169,123,57,243,83,48,57,175,95,69,97,153,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[226,160,32,57,92,93,206,173,233,96,52,121,177,119,182,137,89,4,148,133,223,138,169,123,57,243,83,48,57,175,95,69,97,153,17],[226,160,32,57,92,93,206,173,233,96,52,121,177,119,182,137,89,4,148,133,223,138,169,123,57,243,83,48,57,175,95,69,97,153,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ImplicitlyCreateAccountWithBalance.json b/zkevm-circuits/src/mpt_circuit/tests/ImplicitlyCreateAccountWithBalance.json new file mode 100644 index 0000000000..040fefdc6a --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ImplicitlyCreateAccountWithBalance.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"BalanceChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,214,126,77,69,3,67,4,100,37,174,66,113,71,67,83,133,122,184,96,219,192,161,221,230,75,65,181,205,58,83,43,243,0],[160,200,8,230,16,195,86,161,245,48,55,174,133,53,75,28,0,146,107,44,134,31,195,46,99,76,199,54,108,193,199,179,16,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,119,84,221,210,176,171,22,64,46,37,36,82,197,105,232,221,163,78,156,71,123,91,229,26,133,173,174,148,58,25,122,181,0],[160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,0],[160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,0],[160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,0],[160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,0],[160,217,207,245,213,242,65,138,253,22,164,218,92,34,31,220,139,212,117,32,197,146,121,34,246,154,104,23,123,100,218,106,192,0],[160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,0],[160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,0],[160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,0],[160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,0],[160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,0],[160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,0],[160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,0],[160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,0],[160,123,28,84,241,94,41,155,213,139,223,239,151,65,83,140,120,40,181,215,209,26,72,159,156,32,208,82,179,71,29,244,117,0],[160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,0],[160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,160,217,207,245,213,242,65,138,253,22,164,218,92,34,31,220,139,212,117,32,197,146,121,34,246,154,104,23,123,100,218,106,192,160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,160,123,28,84,241,94,41,155,213,139,223,239,151,65,83,140,120,40,181,215,209,26,72,159,156,32,208,82,179,71,29,244,117,160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,128],[249,2,17,160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,160,217,207,245,213,242,65,138,253,22,164,218,92,34,31,220,139,212,117,32,197,146,121,34,246,154,104,23,123,100,218,106,192,160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,160,123,28,84,241,94,41,155,213,139,223,239,151,65,83,140,120,40,181,215,209,26,72,159,156,32,208,82,179,71,29,244,117,160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,160,119,84,221,210,176,171,22,64,46,37,36,82,197,105,232,221,163,78,156,71,123,91,229,26,133,173,174,148,58,25,122,181,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,155,216,146,152,205,95,77,224,234,243,16,17,19,177,190,52,157,225,212,108,204,52,243,3,99,80,214,144,233,184,236,178,0],[160,114,85,164,49,146,114,102,169,13,64,235,122,105,43,186,108,99,102,201,206,17,17,58,184,86,252,34,3,243,189,160,218,0],[160,201,84,163,68,161,41,95,120,171,8,216,204,213,106,209,190,204,60,100,193,27,24,121,133,38,81,132,9,175,245,162,210,0],[160,50,188,52,17,184,130,55,20,2,177,25,94,226,151,232,245,68,50,188,245,59,209,243,148,73,162,6,234,113,85,44,162,0],[160,102,172,168,143,191,131,207,113,49,69,37,24,81,158,157,145,106,201,253,29,240,175,9,205,77,55,91,98,219,104,41,113,0],[160,199,240,168,32,185,80,195,205,3,37,27,57,140,143,47,85,120,39,188,132,244,44,132,20,11,192,248,122,78,238,29,235,0],[160,160,5,103,46,220,173,35,120,83,60,6,80,255,245,190,10,152,5,4,107,130,74,126,237,208,146,214,235,12,54,112,195,0],[160,176,24,19,248,6,213,183,37,21,17,84,243,18,201,195,255,2,107,142,236,42,164,102,81,133,22,118,244,89,175,251,192,0],[160,104,55,180,235,197,210,214,21,13,36,189,168,36,101,140,233,224,42,91,17,33,30,143,208,240,163,220,30,170,89,99,248,0],[160,130,216,215,50,133,62,214,87,141,33,232,18,228,192,88,101,50,67,185,17,102,78,246,89,163,163,184,163,24,38,109,193,0],[160,113,148,192,94,130,165,40,1,26,116,6,9,196,65,223,40,96,173,225,74,152,171,243,130,220,12,182,96,136,106,248,40,0],[160,150,196,13,206,63,124,6,167,40,4,220,39,50,244,90,120,1,154,79,26,10,154,89,24,113,10,140,82,241,178,7,134,0],[160,62,139,203,80,125,142,71,228,161,30,59,76,231,101,140,200,26,231,118,211,32,217,234,153,143,215,189,6,126,36,135,138,0],[160,201,55,161,86,82,204,191,195,188,55,63,5,221,184,244,128,34,71,252,89,159,248,224,139,167,44,204,86,179,72,33,86,0],[160,175,250,156,18,227,44,241,130,227,56,252,12,95,137,35,30,171,7,53,58,206,118,176,94,79,31,230,254,120,107,101,45,0],[160,211,1,169,199,228,4,31,220,34,207,92,124,169,153,193,74,6,186,32,28,19,74,28,204,122,24,181,167,84,175,163,144,0],[160,102,135,122,175,161,40,178,92,112,51,100,141,117,153,52,72,151,48,21,10,213,225,152,145,156,176,137,73,126,28,229,170,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,114,85,164,49,146,114,102,169,13,64,235,122,105,43,186,108,99,102,201,206,17,17,58,184,86,252,34,3,243,189,160,218,160,201,84,163,68,161,41,95,120,171,8,216,204,213,106,209,190,204,60,100,193,27,24,121,133,38,81,132,9,175,245,162,210,160,50,188,52,17,184,130,55,20,2,177,25,94,226,151,232,245,68,50,188,245,59,209,243,148,73,162,6,234,113,85,44,162,160,102,172,168,143,191,131,207,113,49,69,37,24,81,158,157,145,106,201,253,29,240,175,9,205,77,55,91,98,219,104,41,113,160,199,240,168,32,185,80,195,205,3,37,27,57,140,143,47,85,120,39,188,132,244,44,132,20,11,192,248,122,78,238,29,235,160,160,5,103,46,220,173,35,120,83,60,6,80,255,245,190,10,152,5,4,107,130,74,126,237,208,146,214,235,12,54,112,195,160,176,24,19,248,6,213,183,37,21,17,84,243,18,201,195,255,2,107,142,236,42,164,102,81,133,22,118,244,89,175,251,192,160,104,55,180,235,197,210,214,21,13,36,189,168,36,101,140,233,224,42,91,17,33,30,143,208,240,163,220,30,170,89,99,248,160,130,216,215,50,133,62,214,87,141,33,232,18,228,192,88,101,50,67,185,17,102,78,246,89,163,163,184,163,24,38,109,193,160,113,148,192,94,130,165,40,1,26,116,6,9,196,65,223,40,96,173,225,74,152,171,243,130,220,12,182,96,136,106,248,40,160,150,196,13,206,63,124,6,167,40,4,220,39,50,244,90,120,1,154,79,26,10,154,89,24,113,10,140,82,241,178,7,134,160,62,139,203,80,125,142,71,228,161,30,59,76,231,101,140,200,26,231,118,211,32,217,234,153,143,215,189,6,126,36,135,138,160,201,55,161,86,82,204,191,195,188,55,63,5,221,184,244,128,34,71,252,89,159,248,224,139,167,44,204,86,179,72,33,86,160,175,250,156,18,227,44,241,130,227,56,252,12,95,137,35,30,171,7,53,58,206,118,176,94,79,31,230,254,120,107,101,45,160,211,1,169,199,228,4,31,220,34,207,92,124,169,153,193,74,6,186,32,28,19,74,28,204,122,24,181,167,84,175,163,144,160,102,135,122,175,161,40,178,92,112,51,100,141,117,153,52,72,151,48,21,10,213,225,152,145,156,176,137,73,126,28,229,170,128],[249,2,17,160,114,85,164,49,146,114,102,169,13,64,235,122,105,43,186,108,99,102,201,206,17,17,58,184,86,252,34,3,243,189,160,218,160,201,84,163,68,161,41,95,120,171,8,216,204,213,106,209,190,204,60,100,193,27,24,121,133,38,81,132,9,175,245,162,210,160,50,188,52,17,184,130,55,20,2,177,25,94,226,151,232,245,68,50,188,245,59,209,243,148,73,162,6,234,113,85,44,162,160,102,172,168,143,191,131,207,113,49,69,37,24,81,158,157,145,106,201,253,29,240,175,9,205,77,55,91,98,219,104,41,113,160,199,240,168,32,185,80,195,205,3,37,27,57,140,143,47,85,120,39,188,132,244,44,132,20,11,192,248,122,78,238,29,235,160,160,5,103,46,220,173,35,120,83,60,6,80,255,245,190,10,152,5,4,107,130,74,126,237,208,146,214,235,12,54,112,195,160,176,24,19,248,6,213,183,37,21,17,84,243,18,201,195,255,2,107,142,236,42,164,102,81,133,22,118,244,89,175,251,192,160,104,55,180,235,197,210,214,21,13,36,189,168,36,101,140,233,224,42,91,17,33,30,143,208,240,163,220,30,170,89,99,248,160,130,216,215,50,133,62,214,87,141,33,232,18,228,192,88,101,50,67,185,17,102,78,246,89,163,163,184,163,24,38,109,193,160,113,148,192,94,130,165,40,1,26,116,6,9,196,65,223,40,96,173,225,74,152,171,243,130,220,12,182,96,136,106,248,40,160,150,196,13,206,63,124,6,167,40,4,220,39,50,244,90,120,1,154,79,26,10,154,89,24,113,10,140,82,241,178,7,134,160,62,139,203,80,125,142,71,228,161,30,59,76,231,101,140,200,26,231,118,211,32,217,234,153,143,215,189,6,126,36,135,138,160,155,216,146,152,205,95,77,224,234,243,16,17,19,177,190,52,157,225,212,108,204,52,243,3,99,80,214,144,233,184,236,178,160,175,250,156,18,227,44,241,130,227,56,252,12,95,137,35,30,171,7,53,58,206,118,176,94,79,31,230,254,120,107,101,45,160,211,1,169,199,228,4,31,220,34,207,92,124,169,153,193,74,6,186,32,28,19,74,28,204,122,24,181,167,84,175,163,144,160,102,135,122,175,161,40,178,92,112,51,100,141,117,153,52,72,151,48,21,10,213,225,152,145,156,176,137,73,126,28,229,170,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,1,209],[249,1,209]]}},"account":null,"storage":null,"values":[[160,175,67,196,247,141,223,72,203,230,17,155,155,81,229,25,208,129,156,92,189,29,143,85,200,80,162,58,155,157,118,204,90,0],[160,202,62,234,163,140,118,96,128,216,237,46,6,248,225,248,217,212,90,177,22,142,105,36,202,196,150,131,222,69,39,128,170,0],[160,225,111,23,109,232,34,137,166,230,17,151,158,242,207,142,9,193,172,142,63,148,167,161,64,14,199,97,41,41,49,211,251,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,213,163,127,100,224,44,36,29,218,22,0,133,253,75,120,254,86,200,254,129,153,156,179,207,129,235,89,132,200,84,78,225,0],[160,44,31,165,163,196,158,218,82,51,60,12,255,101,81,90,202,159,217,13,71,42,235,46,233,226,45,163,214,89,180,170,238,0],[160,74,58,2,248,141,152,24,152,166,224,153,64,226,198,169,90,107,152,43,220,184,153,185,212,199,253,185,20,227,252,219,83,0],[160,14,250,29,108,8,11,146,171,110,86,9,19,254,80,251,222,15,45,48,250,164,222,78,194,185,102,70,194,71,71,216,59,0],[160,52,125,214,44,92,157,61,239,143,250,233,221,93,83,45,159,222,33,196,76,19,2,223,191,47,254,74,51,35,227,164,132,0],[160,96,23,123,187,173,236,49,128,83,222,27,229,4,64,113,96,155,3,30,251,49,65,226,19,254,204,227,67,6,196,213,240,0],[160,210,77,68,126,157,254,171,218,114,199,45,19,145,7,215,207,243,253,103,230,75,134,224,207,10,227,154,163,155,205,13,232,0],[160,132,81,187,228,209,36,84,92,58,232,35,84,130,1,191,6,223,57,223,249,186,81,201,253,148,94,78,131,247,111,64,232,0],[160,180,243,60,65,192,42,89,200,221,3,255,158,51,31,227,172,79,124,166,245,16,39,151,51,17,89,155,22,48,70,213,138,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,14,23,184,83,245,150,16,41,174,11,140,240,242,202,97,108,133,234,201,130,209,165,56,148,41,242,95,122,64,83,87,38,0],[160,33,238,5,207,183,144,214,187,157,90,39,145,242,3,218,50,66,193,102,32,115,66,122,153,181,221,106,181,54,54,80,153,0],[160,228,121,179,49,61,199,154,243,243,156,111,214,218,148,59,193,148,251,206,172,18,232,15,17,155,232,16,181,248,106,205,100,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,209,160,202,62,234,163,140,118,96,128,216,237,46,6,248,225,248,217,212,90,177,22,142,105,36,202,196,150,131,222,69,39,128,170,160,225,111,23,109,232,34,137,166,230,17,151,158,242,207,142,9,193,172,142,63,148,167,161,64,14,199,97,41,41,49,211,251,128,160,213,163,127,100,224,44,36,29,218,22,0,133,253,75,120,254,86,200,254,129,153,156,179,207,129,235,89,132,200,84,78,225,160,44,31,165,163,196,158,218,82,51,60,12,255,101,81,90,202,159,217,13,71,42,235,46,233,226,45,163,214,89,180,170,238,160,74,58,2,248,141,152,24,152,166,224,153,64,226,198,169,90,107,152,43,220,184,153,185,212,199,253,185,20,227,252,219,83,160,14,250,29,108,8,11,146,171,110,86,9,19,254,80,251,222,15,45,48,250,164,222,78,194,185,102,70,194,71,71,216,59,160,52,125,214,44,92,157,61,239,143,250,233,221,93,83,45,159,222,33,196,76,19,2,223,191,47,254,74,51,35,227,164,132,160,96,23,123,187,173,236,49,128,83,222,27,229,4,64,113,96,155,3,30,251,49,65,226,19,254,204,227,67,6,196,213,240,160,210,77,68,126,157,254,171,218,114,199,45,19,145,7,215,207,243,253,103,230,75,134,224,207,10,227,154,163,155,205,13,232,160,132,81,187,228,209,36,84,92,58,232,35,84,130,1,191,6,223,57,223,249,186,81,201,253,148,94,78,131,247,111,64,232,160,180,243,60,65,192,42,89,200,221,3,255,158,51,31,227,172,79,124,166,245,16,39,151,51,17,89,155,22,48,70,213,138,128,160,14,23,184,83,245,150,16,41,174,11,140,240,242,202,97,108,133,234,201,130,209,165,56,148,41,242,95,122,64,83,87,38,160,33,238,5,207,183,144,214,187,157,90,39,145,242,3,218,50,66,193,102,32,115,66,122,153,181,221,106,181,54,54,80,153,160,228,121,179,49,61,199,154,243,243,156,111,214,218,148,59,193,148,251,206,172,18,232,15,17,155,232,16,181,248,106,205,100,128],[249,1,209,160,202,62,234,163,140,118,96,128,216,237,46,6,248,225,248,217,212,90,177,22,142,105,36,202,196,150,131,222,69,39,128,170,160,225,111,23,109,232,34,137,166,230,17,151,158,242,207,142,9,193,172,142,63,148,167,161,64,14,199,97,41,41,49,211,251,128,160,213,163,127,100,224,44,36,29,218,22,0,133,253,75,120,254,86,200,254,129,153,156,179,207,129,235,89,132,200,84,78,225,160,44,31,165,163,196,158,218,82,51,60,12,255,101,81,90,202,159,217,13,71,42,235,46,233,226,45,163,214,89,180,170,238,160,74,58,2,248,141,152,24,152,166,224,153,64,226,198,169,90,107,152,43,220,184,153,185,212,199,253,185,20,227,252,219,83,160,14,250,29,108,8,11,146,171,110,86,9,19,254,80,251,222,15,45,48,250,164,222,78,194,185,102,70,194,71,71,216,59,160,52,125,214,44,92,157,61,239,143,250,233,221,93,83,45,159,222,33,196,76,19,2,223,191,47,254,74,51,35,227,164,132,160,96,23,123,187,173,236,49,128,83,222,27,229,4,64,113,96,155,3,30,251,49,65,226,19,254,204,227,67,6,196,213,240,160,210,77,68,126,157,254,171,218,114,199,45,19,145,7,215,207,243,253,103,230,75,134,224,207,10,227,154,163,155,205,13,232,160,132,81,187,228,209,36,84,92,58,232,35,84,130,1,191,6,223,57,223,249,186,81,201,253,148,94,78,131,247,111,64,232,160,180,243,60,65,192,42,89,200,221,3,255,158,51,31,227,172,79,124,166,245,16,39,151,51,17,89,155,22,48,70,213,138,128,160,14,23,184,83,245,150,16,41,174,11,140,240,242,202,97,108,133,234,201,130,209,165,56,148,41,242,95,122,64,83,87,38,160,175,67,196,247,141,223,72,203,230,17,155,155,81,229,25,208,129,156,92,189,29,143,85,200,80,162,58,155,157,118,204,90,160,228,121,179,49,61,199,154,243,243,156,111,214,218,148,59,193,148,251,206,172,18,232,15,17,155,232,16,181,248,106,205,100,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[248,145],[248,177]]}},"account":null,"storage":null,"values":[[160,166,221,29,171,208,205,216,161,254,95,200,101,222,49,51,181,113,197,10,253,173,9,1,43,210,62,233,63,108,242,20,174,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,8,223,178,84,166,78,207,220,76,216,159,210,22,99,207,214,38,53,45,63,31,90,147,190,151,220,6,87,250,146,121,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,47,25,228,49,230,1,245,211,122,217,15,191,24,0,11,132,58,108,155,162,211,75,216,253,202,149,17,170,57,106,215,42,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,35,208,128,146,124,33,62,248,173,203,7,247,101,128,129,74,0,172,248,102,101,36,216,76,254,145,72,31,252,108,140,39,0],[160,131,197,137,21,251,228,64,169,6,138,243,84,133,156,156,196,81,154,233,189,62,55,107,54,122,72,251,152,168,28,108,169,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,145,128,128,160,32,8,223,178,84,166,78,207,220,76,216,159,210,22,99,207,214,38,53,45,63,31,90,147,190,151,220,6,87,250,146,121,128,160,47,25,228,49,230,1,245,211,122,217,15,191,24,0,11,132,58,108,155,162,211,75,216,253,202,149,17,170,57,106,215,42,128,128,128,128,128,128,128,128,128,160,35,208,128,146,124,33,62,248,173,203,7,247,101,128,129,74,0,172,248,102,101,36,216,76,254,145,72,31,252,108,140,39,160,131,197,137,21,251,228,64,169,6,138,243,84,133,156,156,196,81,154,233,189,62,55,107,54,122,72,251,152,168,28,108,169,128],[248,177,128,128,160,32,8,223,178,84,166,78,207,220,76,216,159,210,22,99,207,214,38,53,45,63,31,90,147,190,151,220,6,87,250,146,121,128,160,47,25,228,49,230,1,245,211,122,217,15,191,24,0,11,132,58,108,155,162,211,75,216,253,202,149,17,170,57,106,215,42,128,128,128,128,160,166,221,29,171,208,205,216,161,254,95,200,101,222,49,51,181,113,197,10,253,173,9,1,43,210,62,233,63,108,242,20,174,128,128,128,128,160,35,208,128,146,124,33,62,248,173,203,7,247,101,128,129,74,0,172,248,102,101,36,216,76,254,145,72,31,252,108,140,39,160,131,197,137,21,251,228,64,169,6,138,243,84,133,156,156,196,81,154,233,189,62,55,107,54,122,72,251,152,168,28,108,169,128]]},{"start":null,"extension_branch":null,"account":{"address":[170,188,207,18,88,1,56,188,43,188,238,234,161,17,223,78,66,171,129,171],"key":[252,233,217,209,154,30,206,34,16,120,80,15,8,148,101,65,53,221,59,138,96,233,79,168,131,147,31,229,25,116,163,131],"list_rlp_bytes":[[248,104],[248,104]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,104]},"storage":null,"values":[[159,32,217,209,154,30,206,34,16,120,80,15,8,148,101,65,53,221,59,138,96,233,79,168,131,147,31,229,25,116,163,131,0,0],[159,32,217,209,154,30,206,34,16,120,80,15,8,148,101,65,53,221,59,138,96,233,79,168,131,147,31,229,25,116,163,131,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,32,217,209,154,30,206,34,16,120,80,15,8,148,101,65,53,221,59,138,96,233,79,168,131,147,31,229,25,116,163,131,0,0]],"keccak_data":[[248,104,159,32,217,209,154,30,206,34,16,120,80,15,8,148,101,65,53,221,59,138,96,233,79,168,131,147,31,229,25,116,163,131,184,70,248,68,128,7,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,104,159,32,217,209,154,30,206,34,16,120,80,15,8,148,101,65,53,221,59,138,96,233,79,168,131,147,31,229,25,116,163,131,184,70,248,68,128,7,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[170,188,207,18,88,1,56,188,43,188,238,234,161,17,223,78,66,171,129,171]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ImplicitlyCreateAccountWithCodeHash.json b/zkevm-circuits/src/mpt_circuit/tests/ImplicitlyCreateAccountWithCodeHash.json new file mode 100644 index 0000000000..075881b047 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ImplicitlyCreateAccountWithCodeHash.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"BalanceChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,214,126,77,69,3,67,4,100,37,174,66,113,71,67,83,133,122,184,96,219,192,161,221,230,75,65,181,205,58,83,43,243,0],[160,73,125,83,125,81,93,209,215,198,184,64,228,99,160,247,148,80,85,12,249,171,143,33,66,189,108,131,38,68,92,221,125,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,221,76,230,232,48,206,52,198,227,38,247,151,123,140,55,22,200,155,147,128,126,197,229,203,203,228,72,104,200,104,118,29,0],[160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,0],[160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,0],[160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,0],[160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,0],[160,217,207,245,213,242,65,138,253,22,164,218,92,34,31,220,139,212,117,32,197,146,121,34,246,154,104,23,123,100,218,106,192,0],[160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,0],[160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,0],[160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,0],[160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,0],[160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,0],[160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,0],[160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,0],[160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,0],[160,123,28,84,241,94,41,155,213,139,223,239,151,65,83,140,120,40,181,215,209,26,72,159,156,32,208,82,179,71,29,244,117,0],[160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,0],[160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,160,217,207,245,213,242,65,138,253,22,164,218,92,34,31,220,139,212,117,32,197,146,121,34,246,154,104,23,123,100,218,106,192,160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,160,123,28,84,241,94,41,155,213,139,223,239,151,65,83,140,120,40,181,215,209,26,72,159,156,32,208,82,179,71,29,244,117,160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,128],[249,2,17,160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,160,217,207,245,213,242,65,138,253,22,164,218,92,34,31,220,139,212,117,32,197,146,121,34,246,154,104,23,123,100,218,106,192,160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,160,123,28,84,241,94,41,155,213,139,223,239,151,65,83,140,120,40,181,215,209,26,72,159,156,32,208,82,179,71,29,244,117,160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,160,221,76,230,232,48,206,52,198,227,38,247,151,123,140,55,22,200,155,147,128,126,197,229,203,203,228,72,104,200,104,118,29,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,115,86,158,225,21,152,147,34,42,76,185,16,119,3,135,201,103,86,253,139,253,161,18,213,102,125,232,179,23,41,184,238,0],[160,114,85,164,49,146,114,102,169,13,64,235,122,105,43,186,108,99,102,201,206,17,17,58,184,86,252,34,3,243,189,160,218,0],[160,201,84,163,68,161,41,95,120,171,8,216,204,213,106,209,190,204,60,100,193,27,24,121,133,38,81,132,9,175,245,162,210,0],[160,50,188,52,17,184,130,55,20,2,177,25,94,226,151,232,245,68,50,188,245,59,209,243,148,73,162,6,234,113,85,44,162,0],[160,102,172,168,143,191,131,207,113,49,69,37,24,81,158,157,145,106,201,253,29,240,175,9,205,77,55,91,98,219,104,41,113,0],[160,199,240,168,32,185,80,195,205,3,37,27,57,140,143,47,85,120,39,188,132,244,44,132,20,11,192,248,122,78,238,29,235,0],[160,160,5,103,46,220,173,35,120,83,60,6,80,255,245,190,10,152,5,4,107,130,74,126,237,208,146,214,235,12,54,112,195,0],[160,176,24,19,248,6,213,183,37,21,17,84,243,18,201,195,255,2,107,142,236,42,164,102,81,133,22,118,244,89,175,251,192,0],[160,104,55,180,235,197,210,214,21,13,36,189,168,36,101,140,233,224,42,91,17,33,30,143,208,240,163,220,30,170,89,99,248,0],[160,130,216,215,50,133,62,214,87,141,33,232,18,228,192,88,101,50,67,185,17,102,78,246,89,163,163,184,163,24,38,109,193,0],[160,113,148,192,94,130,165,40,1,26,116,6,9,196,65,223,40,96,173,225,74,152,171,243,130,220,12,182,96,136,106,248,40,0],[160,150,196,13,206,63,124,6,167,40,4,220,39,50,244,90,120,1,154,79,26,10,154,89,24,113,10,140,82,241,178,7,134,0],[160,62,139,203,80,125,142,71,228,161,30,59,76,231,101,140,200,26,231,118,211,32,217,234,153,143,215,189,6,126,36,135,138,0],[160,201,55,161,86,82,204,191,195,188,55,63,5,221,184,244,128,34,71,252,89,159,248,224,139,167,44,204,86,179,72,33,86,0],[160,175,250,156,18,227,44,241,130,227,56,252,12,95,137,35,30,171,7,53,58,206,118,176,94,79,31,230,254,120,107,101,45,0],[160,211,1,169,199,228,4,31,220,34,207,92,124,169,153,193,74,6,186,32,28,19,74,28,204,122,24,181,167,84,175,163,144,0],[160,102,135,122,175,161,40,178,92,112,51,100,141,117,153,52,72,151,48,21,10,213,225,152,145,156,176,137,73,126,28,229,170,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,114,85,164,49,146,114,102,169,13,64,235,122,105,43,186,108,99,102,201,206,17,17,58,184,86,252,34,3,243,189,160,218,160,201,84,163,68,161,41,95,120,171,8,216,204,213,106,209,190,204,60,100,193,27,24,121,133,38,81,132,9,175,245,162,210,160,50,188,52,17,184,130,55,20,2,177,25,94,226,151,232,245,68,50,188,245,59,209,243,148,73,162,6,234,113,85,44,162,160,102,172,168,143,191,131,207,113,49,69,37,24,81,158,157,145,106,201,253,29,240,175,9,205,77,55,91,98,219,104,41,113,160,199,240,168,32,185,80,195,205,3,37,27,57,140,143,47,85,120,39,188,132,244,44,132,20,11,192,248,122,78,238,29,235,160,160,5,103,46,220,173,35,120,83,60,6,80,255,245,190,10,152,5,4,107,130,74,126,237,208,146,214,235,12,54,112,195,160,176,24,19,248,6,213,183,37,21,17,84,243,18,201,195,255,2,107,142,236,42,164,102,81,133,22,118,244,89,175,251,192,160,104,55,180,235,197,210,214,21,13,36,189,168,36,101,140,233,224,42,91,17,33,30,143,208,240,163,220,30,170,89,99,248,160,130,216,215,50,133,62,214,87,141,33,232,18,228,192,88,101,50,67,185,17,102,78,246,89,163,163,184,163,24,38,109,193,160,113,148,192,94,130,165,40,1,26,116,6,9,196,65,223,40,96,173,225,74,152,171,243,130,220,12,182,96,136,106,248,40,160,150,196,13,206,63,124,6,167,40,4,220,39,50,244,90,120,1,154,79,26,10,154,89,24,113,10,140,82,241,178,7,134,160,62,139,203,80,125,142,71,228,161,30,59,76,231,101,140,200,26,231,118,211,32,217,234,153,143,215,189,6,126,36,135,138,160,201,55,161,86,82,204,191,195,188,55,63,5,221,184,244,128,34,71,252,89,159,248,224,139,167,44,204,86,179,72,33,86,160,175,250,156,18,227,44,241,130,227,56,252,12,95,137,35,30,171,7,53,58,206,118,176,94,79,31,230,254,120,107,101,45,160,211,1,169,199,228,4,31,220,34,207,92,124,169,153,193,74,6,186,32,28,19,74,28,204,122,24,181,167,84,175,163,144,160,102,135,122,175,161,40,178,92,112,51,100,141,117,153,52,72,151,48,21,10,213,225,152,145,156,176,137,73,126,28,229,170,128],[249,2,17,160,114,85,164,49,146,114,102,169,13,64,235,122,105,43,186,108,99,102,201,206,17,17,58,184,86,252,34,3,243,189,160,218,160,201,84,163,68,161,41,95,120,171,8,216,204,213,106,209,190,204,60,100,193,27,24,121,133,38,81,132,9,175,245,162,210,160,50,188,52,17,184,130,55,20,2,177,25,94,226,151,232,245,68,50,188,245,59,209,243,148,73,162,6,234,113,85,44,162,160,102,172,168,143,191,131,207,113,49,69,37,24,81,158,157,145,106,201,253,29,240,175,9,205,77,55,91,98,219,104,41,113,160,199,240,168,32,185,80,195,205,3,37,27,57,140,143,47,85,120,39,188,132,244,44,132,20,11,192,248,122,78,238,29,235,160,160,5,103,46,220,173,35,120,83,60,6,80,255,245,190,10,152,5,4,107,130,74,126,237,208,146,214,235,12,54,112,195,160,176,24,19,248,6,213,183,37,21,17,84,243,18,201,195,255,2,107,142,236,42,164,102,81,133,22,118,244,89,175,251,192,160,104,55,180,235,197,210,214,21,13,36,189,168,36,101,140,233,224,42,91,17,33,30,143,208,240,163,220,30,170,89,99,248,160,130,216,215,50,133,62,214,87,141,33,232,18,228,192,88,101,50,67,185,17,102,78,246,89,163,163,184,163,24,38,109,193,160,113,148,192,94,130,165,40,1,26,116,6,9,196,65,223,40,96,173,225,74,152,171,243,130,220,12,182,96,136,106,248,40,160,150,196,13,206,63,124,6,167,40,4,220,39,50,244,90,120,1,154,79,26,10,154,89,24,113,10,140,82,241,178,7,134,160,62,139,203,80,125,142,71,228,161,30,59,76,231,101,140,200,26,231,118,211,32,217,234,153,143,215,189,6,126,36,135,138,160,115,86,158,225,21,152,147,34,42,76,185,16,119,3,135,201,103,86,253,139,253,161,18,213,102,125,232,179,23,41,184,238,160,175,250,156,18,227,44,241,130,227,56,252,12,95,137,35,30,171,7,53,58,206,118,176,94,79,31,230,254,120,107,101,45,160,211,1,169,199,228,4,31,220,34,207,92,124,169,153,193,74,6,186,32,28,19,74,28,204,122,24,181,167,84,175,163,144,160,102,135,122,175,161,40,178,92,112,51,100,141,117,153,52,72,151,48,21,10,213,225,152,145,156,176,137,73,126,28,229,170,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,1,209],[249,1,209]]}},"account":null,"storage":null,"values":[[160,221,67,10,65,83,77,117,62,98,211,50,119,113,204,81,189,222,239,4,41,16,82,207,154,187,7,13,108,220,34,212,95,0],[160,202,62,234,163,140,118,96,128,216,237,46,6,248,225,248,217,212,90,177,22,142,105,36,202,196,150,131,222,69,39,128,170,0],[160,225,111,23,109,232,34,137,166,230,17,151,158,242,207,142,9,193,172,142,63,148,167,161,64,14,199,97,41,41,49,211,251,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,213,163,127,100,224,44,36,29,218,22,0,133,253,75,120,254,86,200,254,129,153,156,179,207,129,235,89,132,200,84,78,225,0],[160,44,31,165,163,196,158,218,82,51,60,12,255,101,81,90,202,159,217,13,71,42,235,46,233,226,45,163,214,89,180,170,238,0],[160,74,58,2,248,141,152,24,152,166,224,153,64,226,198,169,90,107,152,43,220,184,153,185,212,199,253,185,20,227,252,219,83,0],[160,14,250,29,108,8,11,146,171,110,86,9,19,254,80,251,222,15,45,48,250,164,222,78,194,185,102,70,194,71,71,216,59,0],[160,52,125,214,44,92,157,61,239,143,250,233,221,93,83,45,159,222,33,196,76,19,2,223,191,47,254,74,51,35,227,164,132,0],[160,96,23,123,187,173,236,49,128,83,222,27,229,4,64,113,96,155,3,30,251,49,65,226,19,254,204,227,67,6,196,213,240,0],[160,210,77,68,126,157,254,171,218,114,199,45,19,145,7,215,207,243,253,103,230,75,134,224,207,10,227,154,163,155,205,13,232,0],[160,132,81,187,228,209,36,84,92,58,232,35,84,130,1,191,6,223,57,223,249,186,81,201,253,148,94,78,131,247,111,64,232,0],[160,180,243,60,65,192,42,89,200,221,3,255,158,51,31,227,172,79,124,166,245,16,39,151,51,17,89,155,22,48,70,213,138,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,14,23,184,83,245,150,16,41,174,11,140,240,242,202,97,108,133,234,201,130,209,165,56,148,41,242,95,122,64,83,87,38,0],[160,33,238,5,207,183,144,214,187,157,90,39,145,242,3,218,50,66,193,102,32,115,66,122,153,181,221,106,181,54,54,80,153,0],[160,228,121,179,49,61,199,154,243,243,156,111,214,218,148,59,193,148,251,206,172,18,232,15,17,155,232,16,181,248,106,205,100,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,209,160,202,62,234,163,140,118,96,128,216,237,46,6,248,225,248,217,212,90,177,22,142,105,36,202,196,150,131,222,69,39,128,170,160,225,111,23,109,232,34,137,166,230,17,151,158,242,207,142,9,193,172,142,63,148,167,161,64,14,199,97,41,41,49,211,251,128,160,213,163,127,100,224,44,36,29,218,22,0,133,253,75,120,254,86,200,254,129,153,156,179,207,129,235,89,132,200,84,78,225,160,44,31,165,163,196,158,218,82,51,60,12,255,101,81,90,202,159,217,13,71,42,235,46,233,226,45,163,214,89,180,170,238,160,74,58,2,248,141,152,24,152,166,224,153,64,226,198,169,90,107,152,43,220,184,153,185,212,199,253,185,20,227,252,219,83,160,14,250,29,108,8,11,146,171,110,86,9,19,254,80,251,222,15,45,48,250,164,222,78,194,185,102,70,194,71,71,216,59,160,52,125,214,44,92,157,61,239,143,250,233,221,93,83,45,159,222,33,196,76,19,2,223,191,47,254,74,51,35,227,164,132,160,96,23,123,187,173,236,49,128,83,222,27,229,4,64,113,96,155,3,30,251,49,65,226,19,254,204,227,67,6,196,213,240,160,210,77,68,126,157,254,171,218,114,199,45,19,145,7,215,207,243,253,103,230,75,134,224,207,10,227,154,163,155,205,13,232,160,132,81,187,228,209,36,84,92,58,232,35,84,130,1,191,6,223,57,223,249,186,81,201,253,148,94,78,131,247,111,64,232,160,180,243,60,65,192,42,89,200,221,3,255,158,51,31,227,172,79,124,166,245,16,39,151,51,17,89,155,22,48,70,213,138,128,160,14,23,184,83,245,150,16,41,174,11,140,240,242,202,97,108,133,234,201,130,209,165,56,148,41,242,95,122,64,83,87,38,160,33,238,5,207,183,144,214,187,157,90,39,145,242,3,218,50,66,193,102,32,115,66,122,153,181,221,106,181,54,54,80,153,160,228,121,179,49,61,199,154,243,243,156,111,214,218,148,59,193,148,251,206,172,18,232,15,17,155,232,16,181,248,106,205,100,128],[249,1,209,160,202,62,234,163,140,118,96,128,216,237,46,6,248,225,248,217,212,90,177,22,142,105,36,202,196,150,131,222,69,39,128,170,160,225,111,23,109,232,34,137,166,230,17,151,158,242,207,142,9,193,172,142,63,148,167,161,64,14,199,97,41,41,49,211,251,128,160,213,163,127,100,224,44,36,29,218,22,0,133,253,75,120,254,86,200,254,129,153,156,179,207,129,235,89,132,200,84,78,225,160,44,31,165,163,196,158,218,82,51,60,12,255,101,81,90,202,159,217,13,71,42,235,46,233,226,45,163,214,89,180,170,238,160,74,58,2,248,141,152,24,152,166,224,153,64,226,198,169,90,107,152,43,220,184,153,185,212,199,253,185,20,227,252,219,83,160,14,250,29,108,8,11,146,171,110,86,9,19,254,80,251,222,15,45,48,250,164,222,78,194,185,102,70,194,71,71,216,59,160,52,125,214,44,92,157,61,239,143,250,233,221,93,83,45,159,222,33,196,76,19,2,223,191,47,254,74,51,35,227,164,132,160,96,23,123,187,173,236,49,128,83,222,27,229,4,64,113,96,155,3,30,251,49,65,226,19,254,204,227,67,6,196,213,240,160,210,77,68,126,157,254,171,218,114,199,45,19,145,7,215,207,243,253,103,230,75,134,224,207,10,227,154,163,155,205,13,232,160,132,81,187,228,209,36,84,92,58,232,35,84,130,1,191,6,223,57,223,249,186,81,201,253,148,94,78,131,247,111,64,232,160,180,243,60,65,192,42,89,200,221,3,255,158,51,31,227,172,79,124,166,245,16,39,151,51,17,89,155,22,48,70,213,138,128,160,14,23,184,83,245,150,16,41,174,11,140,240,242,202,97,108,133,234,201,130,209,165,56,148,41,242,95,122,64,83,87,38,160,221,67,10,65,83,77,117,62,98,211,50,119,113,204,81,189,222,239,4,41,16,82,207,154,187,7,13,108,220,34,212,95,160,228,121,179,49,61,199,154,243,243,156,111,214,218,148,59,193,148,251,206,172,18,232,15,17,155,232,16,181,248,106,205,100,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[248,145],[248,177]]}},"account":null,"storage":null,"values":[[160,221,68,64,229,200,214,18,10,44,12,77,27,57,240,242,249,16,18,7,204,48,230,74,37,195,196,96,228,121,206,64,159,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,8,223,178,84,166,78,207,220,76,216,159,210,22,99,207,214,38,53,45,63,31,90,147,190,151,220,6,87,250,146,121,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,47,25,228,49,230,1,245,211,122,217,15,191,24,0,11,132,58,108,155,162,211,75,216,253,202,149,17,170,57,106,215,42,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,35,208,128,146,124,33,62,248,173,203,7,247,101,128,129,74,0,172,248,102,101,36,216,76,254,145,72,31,252,108,140,39,0],[160,131,197,137,21,251,228,64,169,6,138,243,84,133,156,156,196,81,154,233,189,62,55,107,54,122,72,251,152,168,28,108,169,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,145,128,128,160,32,8,223,178,84,166,78,207,220,76,216,159,210,22,99,207,214,38,53,45,63,31,90,147,190,151,220,6,87,250,146,121,128,160,47,25,228,49,230,1,245,211,122,217,15,191,24,0,11,132,58,108,155,162,211,75,216,253,202,149,17,170,57,106,215,42,128,128,128,128,128,128,128,128,128,160,35,208,128,146,124,33,62,248,173,203,7,247,101,128,129,74,0,172,248,102,101,36,216,76,254,145,72,31,252,108,140,39,160,131,197,137,21,251,228,64,169,6,138,243,84,133,156,156,196,81,154,233,189,62,55,107,54,122,72,251,152,168,28,108,169,128],[248,177,128,128,160,32,8,223,178,84,166,78,207,220,76,216,159,210,22,99,207,214,38,53,45,63,31,90,147,190,151,220,6,87,250,146,121,128,160,47,25,228,49,230,1,245,211,122,217,15,191,24,0,11,132,58,108,155,162,211,75,216,253,202,149,17,170,57,106,215,42,128,128,128,128,160,221,68,64,229,200,214,18,10,44,12,77,27,57,240,242,249,16,18,7,204,48,230,74,37,195,196,96,228,121,206,64,159,128,128,128,128,160,35,208,128,146,124,33,62,248,173,203,7,247,101,128,129,74,0,172,248,102,101,36,216,76,254,145,72,31,252,108,140,39,160,131,197,137,21,251,228,64,169,6,138,243,84,133,156,156,196,81,154,233,189,62,55,107,54,122,72,251,152,168,28,108,169,128]]},{"start":null,"extension_branch":null,"account":{"address":[170,188,207,18,88,1,56,188,43,188,238,234,161,17,223,78,66,171,129,171],"key":[252,233,217,209,154,30,206,34,16,120,80,15,8,148,101,65,53,221,59,138,96,233,79,168,131,147,31,229,25,116,163,131],"list_rlp_bytes":[[248,104],[248,104]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,104]},"storage":null,"values":[[159,32,217,209,154,30,206,34,16,120,80,15,8,148,101,65,53,221,59,138,96,233,79,168,131,147,31,229,25,116,163,131,0,0],[159,32,217,209,154,30,206,34,16,120,80,15,8,148,101,65,53,221,59,138,96,233,79,168,131,147,31,229,25,116,163,131,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,32,217,209,154,30,206,34,16,120,80,15,8,148,101,65,53,221,59,138,96,233,79,168,131,147,31,229,25,116,163,131,0,0]],"keccak_data":[[248,104,159,32,217,209,154,30,206,34,16,120,80,15,8,148,101,65,53,221,59,138,96,233,79,168,131,147,31,229,25,116,163,131,184,70,248,68,128,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,104,159,32,217,209,154,30,206,34,16,120,80,15,8,148,101,65,53,221,59,138,96,233,79,168,131,147,31,229,25,116,163,131,184,70,248,68,128,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[170,188,207,18,88,1,56,188,43,188,238,234,161,17,223,78,66,171,129,171]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/ImplicitlyCreateAccountWithNonce.json b/zkevm-circuits/src/mpt_circuit/tests/ImplicitlyCreateAccountWithNonce.json new file mode 100644 index 0000000000..c5af616563 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/ImplicitlyCreateAccountWithNonce.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"NonceChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,214,126,77,69,3,67,4,100,37,174,66,113,71,67,83,133,122,184,96,219,192,161,221,230,75,65,181,205,58,83,43,243,0],[160,106,78,137,151,229,219,155,107,17,201,207,144,251,40,198,40,127,20,202,211,62,100,244,195,178,2,133,59,120,170,175,123,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,57,208,32,236,123,63,150,23,49,252,219,101,246,138,16,229,108,33,129,143,200,109,226,17,129,135,46,60,30,238,255,0,0],[160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,0],[160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,0],[160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,0],[160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,0],[160,217,207,245,213,242,65,138,253,22,164,218,92,34,31,220,139,212,117,32,197,146,121,34,246,154,104,23,123,100,218,106,192,0],[160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,0],[160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,0],[160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,0],[160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,0],[160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,0],[160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,0],[160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,0],[160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,0],[160,123,28,84,241,94,41,155,213,139,223,239,151,65,83,140,120,40,181,215,209,26,72,159,156,32,208,82,179,71,29,244,117,0],[160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,0],[160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,160,217,207,245,213,242,65,138,253,22,164,218,92,34,31,220,139,212,117,32,197,146,121,34,246,154,104,23,123,100,218,106,192,160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,160,123,28,84,241,94,41,155,213,139,223,239,151,65,83,140,120,40,181,215,209,26,72,159,156,32,208,82,179,71,29,244,117,160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,128],[249,2,17,160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,160,217,207,245,213,242,65,138,253,22,164,218,92,34,31,220,139,212,117,32,197,146,121,34,246,154,104,23,123,100,218,106,192,160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,160,123,28,84,241,94,41,155,213,139,223,239,151,65,83,140,120,40,181,215,209,26,72,159,156,32,208,82,179,71,29,244,117,160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,160,57,208,32,236,123,63,150,23,49,252,219,101,246,138,16,229,108,33,129,143,200,109,226,17,129,135,46,60,30,238,255,0,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,248,176,18,222,255,151,193,30,127,15,127,43,39,105,227,237,111,218,113,174,146,42,125,132,177,144,158,30,61,205,28,45,0],[160,114,85,164,49,146,114,102,169,13,64,235,122,105,43,186,108,99,102,201,206,17,17,58,184,86,252,34,3,243,189,160,218,0],[160,201,84,163,68,161,41,95,120,171,8,216,204,213,106,209,190,204,60,100,193,27,24,121,133,38,81,132,9,175,245,162,210,0],[160,50,188,52,17,184,130,55,20,2,177,25,94,226,151,232,245,68,50,188,245,59,209,243,148,73,162,6,234,113,85,44,162,0],[160,102,172,168,143,191,131,207,113,49,69,37,24,81,158,157,145,106,201,253,29,240,175,9,205,77,55,91,98,219,104,41,113,0],[160,199,240,168,32,185,80,195,205,3,37,27,57,140,143,47,85,120,39,188,132,244,44,132,20,11,192,248,122,78,238,29,235,0],[160,160,5,103,46,220,173,35,120,83,60,6,80,255,245,190,10,152,5,4,107,130,74,126,237,208,146,214,235,12,54,112,195,0],[160,176,24,19,248,6,213,183,37,21,17,84,243,18,201,195,255,2,107,142,236,42,164,102,81,133,22,118,244,89,175,251,192,0],[160,104,55,180,235,197,210,214,21,13,36,189,168,36,101,140,233,224,42,91,17,33,30,143,208,240,163,220,30,170,89,99,248,0],[160,130,216,215,50,133,62,214,87,141,33,232,18,228,192,88,101,50,67,185,17,102,78,246,89,163,163,184,163,24,38,109,193,0],[160,113,148,192,94,130,165,40,1,26,116,6,9,196,65,223,40,96,173,225,74,152,171,243,130,220,12,182,96,136,106,248,40,0],[160,150,196,13,206,63,124,6,167,40,4,220,39,50,244,90,120,1,154,79,26,10,154,89,24,113,10,140,82,241,178,7,134,0],[160,62,139,203,80,125,142,71,228,161,30,59,76,231,101,140,200,26,231,118,211,32,217,234,153,143,215,189,6,126,36,135,138,0],[160,201,55,161,86,82,204,191,195,188,55,63,5,221,184,244,128,34,71,252,89,159,248,224,139,167,44,204,86,179,72,33,86,0],[160,175,250,156,18,227,44,241,130,227,56,252,12,95,137,35,30,171,7,53,58,206,118,176,94,79,31,230,254,120,107,101,45,0],[160,211,1,169,199,228,4,31,220,34,207,92,124,169,153,193,74,6,186,32,28,19,74,28,204,122,24,181,167,84,175,163,144,0],[160,102,135,122,175,161,40,178,92,112,51,100,141,117,153,52,72,151,48,21,10,213,225,152,145,156,176,137,73,126,28,229,170,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,114,85,164,49,146,114,102,169,13,64,235,122,105,43,186,108,99,102,201,206,17,17,58,184,86,252,34,3,243,189,160,218,160,201,84,163,68,161,41,95,120,171,8,216,204,213,106,209,190,204,60,100,193,27,24,121,133,38,81,132,9,175,245,162,210,160,50,188,52,17,184,130,55,20,2,177,25,94,226,151,232,245,68,50,188,245,59,209,243,148,73,162,6,234,113,85,44,162,160,102,172,168,143,191,131,207,113,49,69,37,24,81,158,157,145,106,201,253,29,240,175,9,205,77,55,91,98,219,104,41,113,160,199,240,168,32,185,80,195,205,3,37,27,57,140,143,47,85,120,39,188,132,244,44,132,20,11,192,248,122,78,238,29,235,160,160,5,103,46,220,173,35,120,83,60,6,80,255,245,190,10,152,5,4,107,130,74,126,237,208,146,214,235,12,54,112,195,160,176,24,19,248,6,213,183,37,21,17,84,243,18,201,195,255,2,107,142,236,42,164,102,81,133,22,118,244,89,175,251,192,160,104,55,180,235,197,210,214,21,13,36,189,168,36,101,140,233,224,42,91,17,33,30,143,208,240,163,220,30,170,89,99,248,160,130,216,215,50,133,62,214,87,141,33,232,18,228,192,88,101,50,67,185,17,102,78,246,89,163,163,184,163,24,38,109,193,160,113,148,192,94,130,165,40,1,26,116,6,9,196,65,223,40,96,173,225,74,152,171,243,130,220,12,182,96,136,106,248,40,160,150,196,13,206,63,124,6,167,40,4,220,39,50,244,90,120,1,154,79,26,10,154,89,24,113,10,140,82,241,178,7,134,160,62,139,203,80,125,142,71,228,161,30,59,76,231,101,140,200,26,231,118,211,32,217,234,153,143,215,189,6,126,36,135,138,160,201,55,161,86,82,204,191,195,188,55,63,5,221,184,244,128,34,71,252,89,159,248,224,139,167,44,204,86,179,72,33,86,160,175,250,156,18,227,44,241,130,227,56,252,12,95,137,35,30,171,7,53,58,206,118,176,94,79,31,230,254,120,107,101,45,160,211,1,169,199,228,4,31,220,34,207,92,124,169,153,193,74,6,186,32,28,19,74,28,204,122,24,181,167,84,175,163,144,160,102,135,122,175,161,40,178,92,112,51,100,141,117,153,52,72,151,48,21,10,213,225,152,145,156,176,137,73,126,28,229,170,128],[249,2,17,160,114,85,164,49,146,114,102,169,13,64,235,122,105,43,186,108,99,102,201,206,17,17,58,184,86,252,34,3,243,189,160,218,160,201,84,163,68,161,41,95,120,171,8,216,204,213,106,209,190,204,60,100,193,27,24,121,133,38,81,132,9,175,245,162,210,160,50,188,52,17,184,130,55,20,2,177,25,94,226,151,232,245,68,50,188,245,59,209,243,148,73,162,6,234,113,85,44,162,160,102,172,168,143,191,131,207,113,49,69,37,24,81,158,157,145,106,201,253,29,240,175,9,205,77,55,91,98,219,104,41,113,160,199,240,168,32,185,80,195,205,3,37,27,57,140,143,47,85,120,39,188,132,244,44,132,20,11,192,248,122,78,238,29,235,160,160,5,103,46,220,173,35,120,83,60,6,80,255,245,190,10,152,5,4,107,130,74,126,237,208,146,214,235,12,54,112,195,160,176,24,19,248,6,213,183,37,21,17,84,243,18,201,195,255,2,107,142,236,42,164,102,81,133,22,118,244,89,175,251,192,160,104,55,180,235,197,210,214,21,13,36,189,168,36,101,140,233,224,42,91,17,33,30,143,208,240,163,220,30,170,89,99,248,160,130,216,215,50,133,62,214,87,141,33,232,18,228,192,88,101,50,67,185,17,102,78,246,89,163,163,184,163,24,38,109,193,160,113,148,192,94,130,165,40,1,26,116,6,9,196,65,223,40,96,173,225,74,152,171,243,130,220,12,182,96,136,106,248,40,160,150,196,13,206,63,124,6,167,40,4,220,39,50,244,90,120,1,154,79,26,10,154,89,24,113,10,140,82,241,178,7,134,160,62,139,203,80,125,142,71,228,161,30,59,76,231,101,140,200,26,231,118,211,32,217,234,153,143,215,189,6,126,36,135,138,160,248,176,18,222,255,151,193,30,127,15,127,43,39,105,227,237,111,218,113,174,146,42,125,132,177,144,158,30,61,205,28,45,160,175,250,156,18,227,44,241,130,227,56,252,12,95,137,35,30,171,7,53,58,206,118,176,94,79,31,230,254,120,107,101,45,160,211,1,169,199,228,4,31,220,34,207,92,124,169,153,193,74,6,186,32,28,19,74,28,204,122,24,181,167,84,175,163,144,160,102,135,122,175,161,40,178,92,112,51,100,141,117,153,52,72,151,48,21,10,213,225,152,145,156,176,137,73,126,28,229,170,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,1,209],[249,1,209]]}},"account":null,"storage":null,"values":[[160,252,115,182,65,79,169,86,160,124,53,111,243,66,56,79,113,53,154,85,194,170,160,179,159,30,113,237,65,54,90,232,32,0],[160,202,62,234,163,140,118,96,128,216,237,46,6,248,225,248,217,212,90,177,22,142,105,36,202,196,150,131,222,69,39,128,170,0],[160,225,111,23,109,232,34,137,166,230,17,151,158,242,207,142,9,193,172,142,63,148,167,161,64,14,199,97,41,41,49,211,251,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,213,163,127,100,224,44,36,29,218,22,0,133,253,75,120,254,86,200,254,129,153,156,179,207,129,235,89,132,200,84,78,225,0],[160,44,31,165,163,196,158,218,82,51,60,12,255,101,81,90,202,159,217,13,71,42,235,46,233,226,45,163,214,89,180,170,238,0],[160,74,58,2,248,141,152,24,152,166,224,153,64,226,198,169,90,107,152,43,220,184,153,185,212,199,253,185,20,227,252,219,83,0],[160,14,250,29,108,8,11,146,171,110,86,9,19,254,80,251,222,15,45,48,250,164,222,78,194,185,102,70,194,71,71,216,59,0],[160,52,125,214,44,92,157,61,239,143,250,233,221,93,83,45,159,222,33,196,76,19,2,223,191,47,254,74,51,35,227,164,132,0],[160,96,23,123,187,173,236,49,128,83,222,27,229,4,64,113,96,155,3,30,251,49,65,226,19,254,204,227,67,6,196,213,240,0],[160,210,77,68,126,157,254,171,218,114,199,45,19,145,7,215,207,243,253,103,230,75,134,224,207,10,227,154,163,155,205,13,232,0],[160,132,81,187,228,209,36,84,92,58,232,35,84,130,1,191,6,223,57,223,249,186,81,201,253,148,94,78,131,247,111,64,232,0],[160,180,243,60,65,192,42,89,200,221,3,255,158,51,31,227,172,79,124,166,245,16,39,151,51,17,89,155,22,48,70,213,138,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,14,23,184,83,245,150,16,41,174,11,140,240,242,202,97,108,133,234,201,130,209,165,56,148,41,242,95,122,64,83,87,38,0],[160,33,238,5,207,183,144,214,187,157,90,39,145,242,3,218,50,66,193,102,32,115,66,122,153,181,221,106,181,54,54,80,153,0],[160,228,121,179,49,61,199,154,243,243,156,111,214,218,148,59,193,148,251,206,172,18,232,15,17,155,232,16,181,248,106,205,100,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,209,160,202,62,234,163,140,118,96,128,216,237,46,6,248,225,248,217,212,90,177,22,142,105,36,202,196,150,131,222,69,39,128,170,160,225,111,23,109,232,34,137,166,230,17,151,158,242,207,142,9,193,172,142,63,148,167,161,64,14,199,97,41,41,49,211,251,128,160,213,163,127,100,224,44,36,29,218,22,0,133,253,75,120,254,86,200,254,129,153,156,179,207,129,235,89,132,200,84,78,225,160,44,31,165,163,196,158,218,82,51,60,12,255,101,81,90,202,159,217,13,71,42,235,46,233,226,45,163,214,89,180,170,238,160,74,58,2,248,141,152,24,152,166,224,153,64,226,198,169,90,107,152,43,220,184,153,185,212,199,253,185,20,227,252,219,83,160,14,250,29,108,8,11,146,171,110,86,9,19,254,80,251,222,15,45,48,250,164,222,78,194,185,102,70,194,71,71,216,59,160,52,125,214,44,92,157,61,239,143,250,233,221,93,83,45,159,222,33,196,76,19,2,223,191,47,254,74,51,35,227,164,132,160,96,23,123,187,173,236,49,128,83,222,27,229,4,64,113,96,155,3,30,251,49,65,226,19,254,204,227,67,6,196,213,240,160,210,77,68,126,157,254,171,218,114,199,45,19,145,7,215,207,243,253,103,230,75,134,224,207,10,227,154,163,155,205,13,232,160,132,81,187,228,209,36,84,92,58,232,35,84,130,1,191,6,223,57,223,249,186,81,201,253,148,94,78,131,247,111,64,232,160,180,243,60,65,192,42,89,200,221,3,255,158,51,31,227,172,79,124,166,245,16,39,151,51,17,89,155,22,48,70,213,138,128,160,14,23,184,83,245,150,16,41,174,11,140,240,242,202,97,108,133,234,201,130,209,165,56,148,41,242,95,122,64,83,87,38,160,33,238,5,207,183,144,214,187,157,90,39,145,242,3,218,50,66,193,102,32,115,66,122,153,181,221,106,181,54,54,80,153,160,228,121,179,49,61,199,154,243,243,156,111,214,218,148,59,193,148,251,206,172,18,232,15,17,155,232,16,181,248,106,205,100,128],[249,1,209,160,202,62,234,163,140,118,96,128,216,237,46,6,248,225,248,217,212,90,177,22,142,105,36,202,196,150,131,222,69,39,128,170,160,225,111,23,109,232,34,137,166,230,17,151,158,242,207,142,9,193,172,142,63,148,167,161,64,14,199,97,41,41,49,211,251,128,160,213,163,127,100,224,44,36,29,218,22,0,133,253,75,120,254,86,200,254,129,153,156,179,207,129,235,89,132,200,84,78,225,160,44,31,165,163,196,158,218,82,51,60,12,255,101,81,90,202,159,217,13,71,42,235,46,233,226,45,163,214,89,180,170,238,160,74,58,2,248,141,152,24,152,166,224,153,64,226,198,169,90,107,152,43,220,184,153,185,212,199,253,185,20,227,252,219,83,160,14,250,29,108,8,11,146,171,110,86,9,19,254,80,251,222,15,45,48,250,164,222,78,194,185,102,70,194,71,71,216,59,160,52,125,214,44,92,157,61,239,143,250,233,221,93,83,45,159,222,33,196,76,19,2,223,191,47,254,74,51,35,227,164,132,160,96,23,123,187,173,236,49,128,83,222,27,229,4,64,113,96,155,3,30,251,49,65,226,19,254,204,227,67,6,196,213,240,160,210,77,68,126,157,254,171,218,114,199,45,19,145,7,215,207,243,253,103,230,75,134,224,207,10,227,154,163,155,205,13,232,160,132,81,187,228,209,36,84,92,58,232,35,84,130,1,191,6,223,57,223,249,186,81,201,253,148,94,78,131,247,111,64,232,160,180,243,60,65,192,42,89,200,221,3,255,158,51,31,227,172,79,124,166,245,16,39,151,51,17,89,155,22,48,70,213,138,128,160,14,23,184,83,245,150,16,41,174,11,140,240,242,202,97,108,133,234,201,130,209,165,56,148,41,242,95,122,64,83,87,38,160,252,115,182,65,79,169,86,160,124,53,111,243,66,56,79,113,53,154,85,194,170,160,179,159,30,113,237,65,54,90,232,32,160,228,121,179,49,61,199,154,243,243,156,111,214,218,148,59,193,148,251,206,172,18,232,15,17,155,232,16,181,248,106,205,100,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[248,145],[248,177]]}},"account":null,"storage":null,"values":[[160,25,87,87,123,255,234,95,40,11,237,26,144,12,118,208,180,124,146,37,65,170,231,72,25,82,13,101,233,31,113,19,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,8,223,178,84,166,78,207,220,76,216,159,210,22,99,207,214,38,53,45,63,31,90,147,190,151,220,6,87,250,146,121,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,47,25,228,49,230,1,245,211,122,217,15,191,24,0,11,132,58,108,155,162,211,75,216,253,202,149,17,170,57,106,215,42,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,35,208,128,146,124,33,62,248,173,203,7,247,101,128,129,74,0,172,248,102,101,36,216,76,254,145,72,31,252,108,140,39,0],[160,131,197,137,21,251,228,64,169,6,138,243,84,133,156,156,196,81,154,233,189,62,55,107,54,122,72,251,152,168,28,108,169,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,145,128,128,160,32,8,223,178,84,166,78,207,220,76,216,159,210,22,99,207,214,38,53,45,63,31,90,147,190,151,220,6,87,250,146,121,128,160,47,25,228,49,230,1,245,211,122,217,15,191,24,0,11,132,58,108,155,162,211,75,216,253,202,149,17,170,57,106,215,42,128,128,128,128,128,128,128,128,128,160,35,208,128,146,124,33,62,248,173,203,7,247,101,128,129,74,0,172,248,102,101,36,216,76,254,145,72,31,252,108,140,39,160,131,197,137,21,251,228,64,169,6,138,243,84,133,156,156,196,81,154,233,189,62,55,107,54,122,72,251,152,168,28,108,169,128],[248,177,128,128,160,32,8,223,178,84,166,78,207,220,76,216,159,210,22,99,207,214,38,53,45,63,31,90,147,190,151,220,6,87,250,146,121,128,160,47,25,228,49,230,1,245,211,122,217,15,191,24,0,11,132,58,108,155,162,211,75,216,253,202,149,17,170,57,106,215,42,128,128,128,128,160,25,87,87,123,255,234,95,40,11,237,26,144,12,118,208,180,124,146,37,65,170,231,72,25,82,13,101,233,31,113,19,112,128,128,128,128,160,35,208,128,146,124,33,62,248,173,203,7,247,101,128,129,74,0,172,248,102,101,36,216,76,254,145,72,31,252,108,140,39,160,131,197,137,21,251,228,64,169,6,138,243,84,133,156,156,196,81,154,233,189,62,55,107,54,122,72,251,152,168,28,108,169,128]]},{"start":null,"extension_branch":null,"account":{"address":[170,188,207,18,88,1,56,188,43,188,238,234,161,17,223,78,66,171,129,171],"key":[252,233,217,209,154,30,206,34,16,120,80,15,8,148,101,65,53,221,59,138,96,233,79,168,131,147,31,229,25,116,163,131],"list_rlp_bytes":[[248,105],[248,105]],"value_rlp_bytes":[[184,71],[184,71]],"value_list_rlp_bytes":[[248,69],[248,69]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,105]},"storage":null,"values":[[159,32,217,209,154,30,206,34,16,120,80,15,8,148,101,65,53,221,59,138,96,233,79,168,131,147,31,229,25,116,163,131,0,0],[159,32,217,209,154,30,206,34,16,120,80,15,8,148,101,65,53,221,59,138,96,233,79,168,131,147,31,229,25,116,163,131,0,0],[129,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[129,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,32,217,209,154,30,206,34,16,120,80,15,8,148,101,65,53,221,59,138,96,233,79,168,131,147,31,229,25,116,163,131,0,0]],"keccak_data":[[248,105,159,32,217,209,154,30,206,34,16,120,80,15,8,148,101,65,53,221,59,138,96,233,79,168,131,147,31,229,25,116,163,131,184,71,248,69,129,142,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,105,159,32,217,209,154,30,206,34,16,120,80,15,8,148,101,65,53,221,59,138,96,233,79,168,131,147,31,229,25,116,163,131,184,71,248,69,129,142,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[170,188,207,18,88,1,56,188,43,188,238,234,161,17,223,78,66,171,129,171]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/LeafAddedToEmptyTrie.json b/zkevm-circuits/src/mpt_circuit/tests/LeafAddedToEmptyTrie.json new file mode 100644 index 0000000000..e742d50bb7 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/LeafAddedToEmptyTrie.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,138,125,255,139,71,244,198,102,166,157,231,101,147,176,222,81,96,177,137,61,174,88,143,113,75,32,91,188,251,255,98,139,0],[160,234,105,242,143,179,56,214,244,252,55,130,188,152,155,122,20,62,46,72,95,26,169,185,115,121,129,24,250,165,238,51,227,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,81,67,86,69,9,158,200,231,209,73,75,147,155,90,137,6,77,86,176,248,183,58,21,150,19,51,6,198,224,217,7,18,0],[160,60,198,250,158,115,39,34,35,105,195,43,121,101,109,173,74,106,25,132,220,162,30,175,136,98,150,158,247,168,55,37,60,0],[160,81,34,74,212,150,170,41,121,103,15,146,119,212,94,49,14,76,4,77,215,246,168,131,155,169,136,242,162,27,212,162,170,0],[160,228,22,39,137,146,1,54,178,148,126,99,207,86,182,62,197,202,118,166,61,87,166,185,130,236,68,47,191,54,77,22,233,0],[160,121,80,214,152,190,234,180,180,171,118,80,255,215,197,12,59,73,13,191,230,150,10,27,94,63,2,178,4,166,214,1,215,0],[160,112,168,159,233,233,180,238,192,124,144,26,7,99,53,92,70,197,152,136,189,54,123,182,50,86,211,20,83,144,207,252,139,0],[160,191,88,230,146,208,186,4,182,204,214,205,98,81,177,48,211,80,96,80,103,109,12,86,75,201,219,146,137,248,154,63,39,0],[160,75,162,241,232,163,219,82,112,195,201,127,167,65,198,3,69,87,172,65,114,250,3,171,191,186,225,80,57,234,0,69,232,0],[160,127,109,135,5,91,14,52,158,3,58,197,241,234,122,209,246,80,189,236,71,170,202,179,225,117,89,145,217,161,88,47,221,0],[160,130,89,138,158,232,170,174,131,222,86,82,63,113,45,63,172,159,248,227,154,225,38,68,6,123,11,20,44,73,22,208,245,0],[160,228,141,31,209,214,192,178,116,232,111,183,225,107,177,191,236,239,12,234,76,35,3,4,185,246,219,146,41,177,16,235,82,0],[160,67,201,47,145,5,245,179,22,162,115,24,127,33,73,67,134,127,184,149,224,209,139,130,237,14,13,157,113,244,162,185,142,0],[160,35,24,83,139,246,120,41,145,224,109,131,133,74,121,110,213,183,151,106,227,38,206,153,182,140,195,245,147,183,166,255,106,0],[160,115,55,215,251,247,190,44,206,83,59,75,46,234,152,195,151,225,149,203,164,167,128,164,83,169,118,98,165,191,203,121,208,0],[160,207,52,88,28,243,113,89,151,204,35,148,247,86,45,105,50,41,10,127,16,234,231,222,250,213,233,192,209,40,230,82,102,0],[160,131,14,117,4,199,136,223,98,123,88,152,103,88,41,186,137,138,33,139,237,38,8,219,151,231,42,129,135,20,205,103,42,0],[160,178,27,227,169,202,248,237,160,156,114,67,166,251,197,166,44,240,127,48,176,214,213,138,242,210,37,98,41,242,28,114,195,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,60,198,250,158,115,39,34,35,105,195,43,121,101,109,173,74,106,25,132,220,162,30,175,136,98,150,158,247,168,55,37,60,160,81,34,74,212,150,170,41,121,103,15,146,119,212,94,49,14,76,4,77,215,246,168,131,155,169,136,242,162,27,212,162,170,160,228,22,39,137,146,1,54,178,148,126,99,207,86,182,62,197,202,118,166,61,87,166,185,130,236,68,47,191,54,77,22,233,160,121,80,214,152,190,234,180,180,171,118,80,255,215,197,12,59,73,13,191,230,150,10,27,94,63,2,178,4,166,214,1,215,160,112,168,159,233,233,180,238,192,124,144,26,7,99,53,92,70,197,152,136,189,54,123,182,50,86,211,20,83,144,207,252,139,160,191,88,230,146,208,186,4,182,204,214,205,98,81,177,48,211,80,96,80,103,109,12,86,75,201,219,146,137,248,154,63,39,160,75,162,241,232,163,219,82,112,195,201,127,167,65,198,3,69,87,172,65,114,250,3,171,191,186,225,80,57,234,0,69,232,160,127,109,135,5,91,14,52,158,3,58,197,241,234,122,209,246,80,189,236,71,170,202,179,225,117,89,145,217,161,88,47,221,160,130,89,138,158,232,170,174,131,222,86,82,63,113,45,63,172,159,248,227,154,225,38,68,6,123,11,20,44,73,22,208,245,160,228,141,31,209,214,192,178,116,232,111,183,225,107,177,191,236,239,12,234,76,35,3,4,185,246,219,146,41,177,16,235,82,160,67,201,47,145,5,245,179,22,162,115,24,127,33,73,67,134,127,184,149,224,209,139,130,237,14,13,157,113,244,162,185,142,160,35,24,83,139,246,120,41,145,224,109,131,133,74,121,110,213,183,151,106,227,38,206,153,182,140,195,245,147,183,166,255,106,160,115,55,215,251,247,190,44,206,83,59,75,46,234,152,195,151,225,149,203,164,167,128,164,83,169,118,98,165,191,203,121,208,160,207,52,88,28,243,113,89,151,204,35,148,247,86,45,105,50,41,10,127,16,234,231,222,250,213,233,192,209,40,230,82,102,160,131,14,117,4,199,136,223,98,123,88,152,103,88,41,186,137,138,33,139,237,38,8,219,151,231,42,129,135,20,205,103,42,160,178,27,227,169,202,248,237,160,156,114,67,166,251,197,166,44,240,127,48,176,214,213,138,242,210,37,98,41,242,28,114,195,128],[249,2,17,160,60,198,250,158,115,39,34,35,105,195,43,121,101,109,173,74,106,25,132,220,162,30,175,136,98,150,158,247,168,55,37,60,160,81,34,74,212,150,170,41,121,103,15,146,119,212,94,49,14,76,4,77,215,246,168,131,155,169,136,242,162,27,212,162,170,160,228,22,39,137,146,1,54,178,148,126,99,207,86,182,62,197,202,118,166,61,87,166,185,130,236,68,47,191,54,77,22,233,160,121,80,214,152,190,234,180,180,171,118,80,255,215,197,12,59,73,13,191,230,150,10,27,94,63,2,178,4,166,214,1,215,160,112,168,159,233,233,180,238,192,124,144,26,7,99,53,92,70,197,152,136,189,54,123,182,50,86,211,20,83,144,207,252,139,160,81,67,86,69,9,158,200,231,209,73,75,147,155,90,137,6,77,86,176,248,183,58,21,150,19,51,6,198,224,217,7,18,160,75,162,241,232,163,219,82,112,195,201,127,167,65,198,3,69,87,172,65,114,250,3,171,191,186,225,80,57,234,0,69,232,160,127,109,135,5,91,14,52,158,3,58,197,241,234,122,209,246,80,189,236,71,170,202,179,225,117,89,145,217,161,88,47,221,160,130,89,138,158,232,170,174,131,222,86,82,63,113,45,63,172,159,248,227,154,225,38,68,6,123,11,20,44,73,22,208,245,160,228,141,31,209,214,192,178,116,232,111,183,225,107,177,191,236,239,12,234,76,35,3,4,185,246,219,146,41,177,16,235,82,160,67,201,47,145,5,245,179,22,162,115,24,127,33,73,67,134,127,184,149,224,209,139,130,237,14,13,157,113,244,162,185,142,160,35,24,83,139,246,120,41,145,224,109,131,133,74,121,110,213,183,151,106,227,38,206,153,182,140,195,245,147,183,166,255,106,160,115,55,215,251,247,190,44,206,83,59,75,46,234,152,195,151,225,149,203,164,167,128,164,83,169,118,98,165,191,203,121,208,160,207,52,88,28,243,113,89,151,204,35,148,247,86,45,105,50,41,10,127,16,234,231,222,250,213,233,192,209,40,230,82,102,160,131,14,117,4,199,136,223,98,123,88,152,103,88,41,186,137,138,33,139,237,38,8,219,151,231,42,129,135,20,205,103,42,160,178,27,227,169,202,248,237,160,156,114,67,166,251,197,166,44,240,127,48,176,214,213,138,242,210,37,98,41,242,28,114,195,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,238,238,154,153,110,253,96,67,79,198,126,249,230,139,148,61,190,232,37,25,239,85,153,60,129,98,44,106,102,77,74,110,0],[160,224,160,204,190,106,167,16,212,235,11,226,108,59,160,52,125,3,125,243,15,78,7,190,253,109,248,53,214,201,201,135,57,0],[160,17,84,74,151,98,196,80,82,72,186,173,203,204,31,89,3,74,232,235,66,236,154,177,103,147,10,142,218,202,116,159,78,0],[160,219,8,183,90,235,109,52,204,204,61,58,195,223,208,61,23,236,15,60,255,59,137,37,215,155,122,155,101,129,65,230,109,0],[160,204,7,202,179,113,179,31,157,150,50,164,125,46,101,201,64,36,195,147,254,33,200,186,66,96,237,49,7,27,173,130,208,0],[160,20,201,48,125,106,95,70,245,43,40,78,34,127,24,131,45,249,87,197,126,200,97,136,55,1,32,185,140,1,37,42,165,0],[160,109,94,163,82,0,89,36,85,167,245,93,62,24,177,135,248,110,173,175,72,125,142,151,15,199,63,156,209,150,219,35,97,0],[160,159,64,83,229,94,17,127,129,72,92,132,106,33,193,203,131,245,97,158,94,150,215,130,236,16,152,23,172,122,252,183,237,0],[160,162,93,250,95,66,110,127,128,166,120,103,183,254,92,89,160,235,12,156,126,64,23,110,160,240,211,42,88,249,192,206,181,0],[160,225,194,238,28,10,40,3,144,106,215,95,222,218,42,78,159,229,128,214,238,113,135,141,231,197,94,58,45,211,63,237,94,0],[160,212,177,140,71,81,143,180,205,247,2,100,154,26,76,102,220,198,74,22,101,203,183,59,189,161,37,172,158,103,224,99,13,0],[160,185,0,22,228,174,41,147,232,48,15,8,119,0,27,195,169,145,96,179,189,107,136,134,190,91,235,9,118,208,32,43,65,0],[160,88,161,73,215,119,105,31,137,79,37,128,65,178,225,59,112,49,222,175,14,222,21,64,143,155,35,156,72,27,226,127,92,0],[160,127,196,19,9,69,235,2,36,176,187,18,133,248,13,13,39,229,137,100,92,244,157,137,157,69,165,1,59,158,103,29,190,0],[160,156,159,70,239,242,254,168,166,193,86,214,216,34,92,173,73,166,75,125,146,66,129,135,156,203,17,156,101,63,46,137,133,0],[160,79,220,223,102,181,54,179,73,46,230,56,51,45,188,217,114,228,245,173,26,242,236,71,226,43,121,6,7,201,6,202,147,0],[160,61,193,91,157,18,102,143,88,98,133,111,243,121,221,174,228,112,33,42,227,75,180,27,28,154,129,226,177,103,111,215,173,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,224,160,204,190,106,167,16,212,235,11,226,108,59,160,52,125,3,125,243,15,78,7,190,253,109,248,53,214,201,201,135,57,160,17,84,74,151,98,196,80,82,72,186,173,203,204,31,89,3,74,232,235,66,236,154,177,103,147,10,142,218,202,116,159,78,160,219,8,183,90,235,109,52,204,204,61,58,195,223,208,61,23,236,15,60,255,59,137,37,215,155,122,155,101,129,65,230,109,160,204,7,202,179,113,179,31,157,150,50,164,125,46,101,201,64,36,195,147,254,33,200,186,66,96,237,49,7,27,173,130,208,160,20,201,48,125,106,95,70,245,43,40,78,34,127,24,131,45,249,87,197,126,200,97,136,55,1,32,185,140,1,37,42,165,160,109,94,163,82,0,89,36,85,167,245,93,62,24,177,135,248,110,173,175,72,125,142,151,15,199,63,156,209,150,219,35,97,160,159,64,83,229,94,17,127,129,72,92,132,106,33,193,203,131,245,97,158,94,150,215,130,236,16,152,23,172,122,252,183,237,160,162,93,250,95,66,110,127,128,166,120,103,183,254,92,89,160,235,12,156,126,64,23,110,160,240,211,42,88,249,192,206,181,160,225,194,238,28,10,40,3,144,106,215,95,222,218,42,78,159,229,128,214,238,113,135,141,231,197,94,58,45,211,63,237,94,160,212,177,140,71,81,143,180,205,247,2,100,154,26,76,102,220,198,74,22,101,203,183,59,189,161,37,172,158,103,224,99,13,160,185,0,22,228,174,41,147,232,48,15,8,119,0,27,195,169,145,96,179,189,107,136,134,190,91,235,9,118,208,32,43,65,160,88,161,73,215,119,105,31,137,79,37,128,65,178,225,59,112,49,222,175,14,222,21,64,143,155,35,156,72,27,226,127,92,160,127,196,19,9,69,235,2,36,176,187,18,133,248,13,13,39,229,137,100,92,244,157,137,157,69,165,1,59,158,103,29,190,160,156,159,70,239,242,254,168,166,193,86,214,216,34,92,173,73,166,75,125,146,66,129,135,156,203,17,156,101,63,46,137,133,160,79,220,223,102,181,54,179,73,46,230,56,51,45,188,217,114,228,245,173,26,242,236,71,226,43,121,6,7,201,6,202,147,160,61,193,91,157,18,102,143,88,98,133,111,243,121,221,174,228,112,33,42,227,75,180,27,28,154,129,226,177,103,111,215,173,128],[249,2,17,160,224,160,204,190,106,167,16,212,235,11,226,108,59,160,52,125,3,125,243,15,78,7,190,253,109,248,53,214,201,201,135,57,160,17,84,74,151,98,196,80,82,72,186,173,203,204,31,89,3,74,232,235,66,236,154,177,103,147,10,142,218,202,116,159,78,160,219,8,183,90,235,109,52,204,204,61,58,195,223,208,61,23,236,15,60,255,59,137,37,215,155,122,155,101,129,65,230,109,160,238,238,154,153,110,253,96,67,79,198,126,249,230,139,148,61,190,232,37,25,239,85,153,60,129,98,44,106,102,77,74,110,160,20,201,48,125,106,95,70,245,43,40,78,34,127,24,131,45,249,87,197,126,200,97,136,55,1,32,185,140,1,37,42,165,160,109,94,163,82,0,89,36,85,167,245,93,62,24,177,135,248,110,173,175,72,125,142,151,15,199,63,156,209,150,219,35,97,160,159,64,83,229,94,17,127,129,72,92,132,106,33,193,203,131,245,97,158,94,150,215,130,236,16,152,23,172,122,252,183,237,160,162,93,250,95,66,110,127,128,166,120,103,183,254,92,89,160,235,12,156,126,64,23,110,160,240,211,42,88,249,192,206,181,160,225,194,238,28,10,40,3,144,106,215,95,222,218,42,78,159,229,128,214,238,113,135,141,231,197,94,58,45,211,63,237,94,160,212,177,140,71,81,143,180,205,247,2,100,154,26,76,102,220,198,74,22,101,203,183,59,189,161,37,172,158,103,224,99,13,160,185,0,22,228,174,41,147,232,48,15,8,119,0,27,195,169,145,96,179,189,107,136,134,190,91,235,9,118,208,32,43,65,160,88,161,73,215,119,105,31,137,79,37,128,65,178,225,59,112,49,222,175,14,222,21,64,143,155,35,156,72,27,226,127,92,160,127,196,19,9,69,235,2,36,176,187,18,133,248,13,13,39,229,137,100,92,244,157,137,157,69,165,1,59,158,103,29,190,160,156,159,70,239,242,254,168,166,193,86,214,216,34,92,173,73,166,75,125,146,66,129,135,156,203,17,156,101,63,46,137,133,160,79,220,223,102,181,54,179,73,46,230,56,51,45,188,217,114,228,245,173,26,242,236,71,226,43,121,6,7,201,6,202,147,160,61,193,91,157,18,102,143,88,98,133,111,243,121,221,174,228,112,33,42,227,75,180,27,28,154,129,226,177,103,111,215,173,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,2,148,247,94,212,49,148,216,253,44,123,69,24,90,87,48,183,5,166,52,220,140,91,101,57,49,37,164,87,141,244,37,0],[160,14,165,6,22,159,188,24,51,92,136,212,250,222,234,56,117,11,228,154,151,111,209,12,140,170,56,169,141,202,226,135,93,0],[160,58,215,220,199,105,41,206,80,134,211,251,156,150,93,2,1,51,119,121,250,120,153,68,114,166,58,169,187,227,10,57,39,0],[160,254,121,107,132,102,105,40,187,183,208,54,184,59,170,24,196,133,142,10,221,38,105,35,74,58,136,157,132,169,134,197,137,0],[160,156,244,77,9,97,153,114,240,195,225,161,224,205,77,130,121,225,42,224,17,155,244,44,223,217,225,237,215,170,53,91,122,0],[160,218,98,175,122,220,199,62,137,60,60,197,211,142,60,71,189,118,201,107,68,25,32,247,176,36,95,83,115,252,231,68,124,0],[160,76,185,199,60,210,76,64,221,170,191,1,8,21,21,232,251,198,18,19,75,44,125,231,141,122,159,42,245,13,222,134,206,0],[160,29,227,227,74,123,232,228,162,37,84,224,181,162,51,6,211,171,240,206,246,75,251,173,126,128,120,180,89,252,60,255,112,0],[160,110,12,187,41,44,116,38,125,98,174,44,153,47,236,251,12,14,124,122,7,202,17,194,152,177,238,87,113,180,170,66,183,0],[160,43,69,86,113,95,61,239,193,207,239,9,241,236,158,131,102,79,38,164,186,2,250,13,162,192,151,222,229,29,99,244,50,0],[160,243,229,3,215,98,10,225,162,158,154,0,155,9,118,106,50,10,187,88,35,19,135,15,158,232,252,37,162,81,149,205,170,0],[160,249,199,112,122,102,67,120,26,30,110,90,229,222,253,12,151,148,125,103,16,178,146,75,214,232,124,40,10,93,197,224,238,0],[160,187,149,161,188,140,232,33,123,135,65,167,159,176,86,6,108,140,83,67,222,75,115,112,131,235,102,79,178,78,37,2,224,0],[160,85,125,105,118,184,58,228,68,165,55,100,151,40,61,75,44,223,114,244,82,233,73,241,28,55,15,189,97,252,197,95,206,0],[160,93,235,84,57,207,137,206,63,27,246,129,212,131,57,16,108,30,127,10,61,175,185,212,53,83,217,16,74,68,18,243,132,0],[160,110,47,15,54,42,42,169,161,252,233,82,121,219,20,191,148,239,32,164,98,111,155,22,179,255,35,252,248,76,103,206,209,0],[160,130,74,220,188,50,216,130,35,199,98,203,47,119,79,38,6,106,137,130,81,35,226,191,113,96,219,218,33,190,77,71,33,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,14,165,6,22,159,188,24,51,92,136,212,250,222,234,56,117,11,228,154,151,111,209,12,140,170,56,169,141,202,226,135,93,160,58,215,220,199,105,41,206,80,134,211,251,156,150,93,2,1,51,119,121,250,120,153,68,114,166,58,169,187,227,10,57,39,160,254,121,107,132,102,105,40,187,183,208,54,184,59,170,24,196,133,142,10,221,38,105,35,74,58,136,157,132,169,134,197,137,160,156,244,77,9,97,153,114,240,195,225,161,224,205,77,130,121,225,42,224,17,155,244,44,223,217,225,237,215,170,53,91,122,160,218,98,175,122,220,199,62,137,60,60,197,211,142,60,71,189,118,201,107,68,25,32,247,176,36,95,83,115,252,231,68,124,160,76,185,199,60,210,76,64,221,170,191,1,8,21,21,232,251,198,18,19,75,44,125,231,141,122,159,42,245,13,222,134,206,160,29,227,227,74,123,232,228,162,37,84,224,181,162,51,6,211,171,240,206,246,75,251,173,126,128,120,180,89,252,60,255,112,160,110,12,187,41,44,116,38,125,98,174,44,153,47,236,251,12,14,124,122,7,202,17,194,152,177,238,87,113,180,170,66,183,160,43,69,86,113,95,61,239,193,207,239,9,241,236,158,131,102,79,38,164,186,2,250,13,162,192,151,222,229,29,99,244,50,160,243,229,3,215,98,10,225,162,158,154,0,155,9,118,106,50,10,187,88,35,19,135,15,158,232,252,37,162,81,149,205,170,160,249,199,112,122,102,67,120,26,30,110,90,229,222,253,12,151,148,125,103,16,178,146,75,214,232,124,40,10,93,197,224,238,160,187,149,161,188,140,232,33,123,135,65,167,159,176,86,6,108,140,83,67,222,75,115,112,131,235,102,79,178,78,37,2,224,160,85,125,105,118,184,58,228,68,165,55,100,151,40,61,75,44,223,114,244,82,233,73,241,28,55,15,189,97,252,197,95,206,160,93,235,84,57,207,137,206,63,27,246,129,212,131,57,16,108,30,127,10,61,175,185,212,53,83,217,16,74,68,18,243,132,160,110,47,15,54,42,42,169,161,252,233,82,121,219,20,191,148,239,32,164,98,111,155,22,179,255,35,252,248,76,103,206,209,160,130,74,220,188,50,216,130,35,199,98,203,47,119,79,38,6,106,137,130,81,35,226,191,113,96,219,218,33,190,77,71,33,128],[249,2,17,160,14,165,6,22,159,188,24,51,92,136,212,250,222,234,56,117,11,228,154,151,111,209,12,140,170,56,169,141,202,226,135,93,160,58,215,220,199,105,41,206,80,134,211,251,156,150,93,2,1,51,119,121,250,120,153,68,114,166,58,169,187,227,10,57,39,160,254,121,107,132,102,105,40,187,183,208,54,184,59,170,24,196,133,142,10,221,38,105,35,74,58,136,157,132,169,134,197,137,160,156,244,77,9,97,153,114,240,195,225,161,224,205,77,130,121,225,42,224,17,155,244,44,223,217,225,237,215,170,53,91,122,160,218,98,175,122,220,199,62,137,60,60,197,211,142,60,71,189,118,201,107,68,25,32,247,176,36,95,83,115,252,231,68,124,160,76,185,199,60,210,76,64,221,170,191,1,8,21,21,232,251,198,18,19,75,44,125,231,141,122,159,42,245,13,222,134,206,160,29,227,227,74,123,232,228,162,37,84,224,181,162,51,6,211,171,240,206,246,75,251,173,126,128,120,180,89,252,60,255,112,160,110,12,187,41,44,116,38,125,98,174,44,153,47,236,251,12,14,124,122,7,202,17,194,152,177,238,87,113,180,170,66,183,160,2,148,247,94,212,49,148,216,253,44,123,69,24,90,87,48,183,5,166,52,220,140,91,101,57,49,37,164,87,141,244,37,160,243,229,3,215,98,10,225,162,158,154,0,155,9,118,106,50,10,187,88,35,19,135,15,158,232,252,37,162,81,149,205,170,160,249,199,112,122,102,67,120,26,30,110,90,229,222,253,12,151,148,125,103,16,178,146,75,214,232,124,40,10,93,197,224,238,160,187,149,161,188,140,232,33,123,135,65,167,159,176,86,6,108,140,83,67,222,75,115,112,131,235,102,79,178,78,37,2,224,160,85,125,105,118,184,58,228,68,165,55,100,151,40,61,75,44,223,114,244,82,233,73,241,28,55,15,189,97,252,197,95,206,160,93,235,84,57,207,137,206,63,27,246,129,212,131,57,16,108,30,127,10,61,175,185,212,53,83,217,16,74,68,18,243,132,160,110,47,15,54,42,42,169,161,252,233,82,121,219,20,191,148,239,32,164,98,111,155,22,179,255,35,252,248,76,103,206,209,160,130,74,220,188,50,216,130,35,199,98,203,47,119,79,38,6,106,137,130,81,35,226,191,113,96,219,218,33,190,77,71,33,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,145,109,78,6,168,26,226,197,198,241,53,90,243,110,190,230,110,134,216,118,115,164,4,209,71,208,171,202,2,147,199,47,0],[160,133,235,133,73,93,8,65,6,235,53,18,218,3,124,26,190,183,118,4,111,43,2,16,172,239,155,199,82,73,213,182,20,0],[160,163,93,181,110,7,170,52,140,159,162,133,57,154,50,13,236,53,68,94,97,171,111,174,64,139,185,171,218,143,142,148,123,0],[160,89,101,138,104,124,167,204,129,19,206,81,255,89,12,40,119,16,139,90,128,79,182,53,236,183,158,143,16,70,231,149,193,0],[160,109,229,158,157,53,55,221,1,108,64,70,21,103,227,89,63,41,178,232,224,124,70,202,161,113,44,13,156,121,193,255,20,0],[160,221,153,17,178,250,69,42,155,168,117,5,76,116,59,219,17,215,137,246,93,173,42,132,179,89,3,221,81,200,226,242,76,0],[160,166,247,119,255,141,32,87,23,158,246,201,67,72,218,115,220,147,2,57,152,104,47,157,114,2,240,168,184,163,129,175,97,0],[160,240,13,118,223,196,63,180,101,73,134,26,211,112,201,84,141,74,12,182,182,183,182,139,187,228,136,120,209,169,140,102,112,0],[160,73,14,111,5,216,66,44,129,241,209,96,45,3,65,117,239,75,52,39,122,202,65,71,157,74,186,251,93,245,118,70,72,0],[160,5,159,121,86,8,244,0,141,254,173,202,208,32,106,157,32,7,160,225,59,222,193,67,59,241,30,30,10,171,20,204,195,0],[160,248,40,170,149,53,183,57,200,51,10,58,48,116,53,48,191,226,47,66,49,236,28,209,34,6,138,247,161,65,130,165,205,0],[160,223,23,143,249,54,69,146,158,94,52,41,214,25,130,31,11,46,206,6,136,242,64,92,139,128,254,62,52,184,68,165,87,0],[160,50,63,132,137,145,37,164,51,106,185,56,26,236,211,36,219,74,195,1,72,226,190,85,235,45,147,12,159,230,107,228,118,0],[160,156,207,33,90,28,218,205,59,181,230,91,85,79,1,145,132,45,149,71,130,102,184,118,55,4,236,198,199,39,34,133,44,0],[160,0,91,91,215,103,36,23,219,144,147,100,37,76,66,0,245,195,232,11,231,167,60,136,206,114,255,173,91,238,51,237,32,0],[160,245,145,188,199,173,92,69,232,8,24,232,8,41,76,255,161,12,251,50,198,114,108,9,42,173,119,30,20,38,57,241,233,0],[160,217,231,119,198,101,67,79,20,25,69,229,209,80,175,171,219,174,145,108,238,170,139,12,158,234,156,73,29,226,166,63,105,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,133,235,133,73,93,8,65,6,235,53,18,218,3,124,26,190,183,118,4,111,43,2,16,172,239,155,199,82,73,213,182,20,160,163,93,181,110,7,170,52,140,159,162,133,57,154,50,13,236,53,68,94,97,171,111,174,64,139,185,171,218,143,142,148,123,160,89,101,138,104,124,167,204,129,19,206,81,255,89,12,40,119,16,139,90,128,79,182,53,236,183,158,143,16,70,231,149,193,160,109,229,158,157,53,55,221,1,108,64,70,21,103,227,89,63,41,178,232,224,124,70,202,161,113,44,13,156,121,193,255,20,160,221,153,17,178,250,69,42,155,168,117,5,76,116,59,219,17,215,137,246,93,173,42,132,179,89,3,221,81,200,226,242,76,160,166,247,119,255,141,32,87,23,158,246,201,67,72,218,115,220,147,2,57,152,104,47,157,114,2,240,168,184,163,129,175,97,160,240,13,118,223,196,63,180,101,73,134,26,211,112,201,84,141,74,12,182,182,183,182,139,187,228,136,120,209,169,140,102,112,160,73,14,111,5,216,66,44,129,241,209,96,45,3,65,117,239,75,52,39,122,202,65,71,157,74,186,251,93,245,118,70,72,160,5,159,121,86,8,244,0,141,254,173,202,208,32,106,157,32,7,160,225,59,222,193,67,59,241,30,30,10,171,20,204,195,160,248,40,170,149,53,183,57,200,51,10,58,48,116,53,48,191,226,47,66,49,236,28,209,34,6,138,247,161,65,130,165,205,160,223,23,143,249,54,69,146,158,94,52,41,214,25,130,31,11,46,206,6,136,242,64,92,139,128,254,62,52,184,68,165,87,160,50,63,132,137,145,37,164,51,106,185,56,26,236,211,36,219,74,195,1,72,226,190,85,235,45,147,12,159,230,107,228,118,160,156,207,33,90,28,218,205,59,181,230,91,85,79,1,145,132,45,149,71,130,102,184,118,55,4,236,198,199,39,34,133,44,160,0,91,91,215,103,36,23,219,144,147,100,37,76,66,0,245,195,232,11,231,167,60,136,206,114,255,173,91,238,51,237,32,160,245,145,188,199,173,92,69,232,8,24,232,8,41,76,255,161,12,251,50,198,114,108,9,42,173,119,30,20,38,57,241,233,160,217,231,119,198,101,67,79,20,25,69,229,209,80,175,171,219,174,145,108,238,170,139,12,158,234,156,73,29,226,166,63,105,128],[249,2,17,160,145,109,78,6,168,26,226,197,198,241,53,90,243,110,190,230,110,134,216,118,115,164,4,209,71,208,171,202,2,147,199,47,160,163,93,181,110,7,170,52,140,159,162,133,57,154,50,13,236,53,68,94,97,171,111,174,64,139,185,171,218,143,142,148,123,160,89,101,138,104,124,167,204,129,19,206,81,255,89,12,40,119,16,139,90,128,79,182,53,236,183,158,143,16,70,231,149,193,160,109,229,158,157,53,55,221,1,108,64,70,21,103,227,89,63,41,178,232,224,124,70,202,161,113,44,13,156,121,193,255,20,160,221,153,17,178,250,69,42,155,168,117,5,76,116,59,219,17,215,137,246,93,173,42,132,179,89,3,221,81,200,226,242,76,160,166,247,119,255,141,32,87,23,158,246,201,67,72,218,115,220,147,2,57,152,104,47,157,114,2,240,168,184,163,129,175,97,160,240,13,118,223,196,63,180,101,73,134,26,211,112,201,84,141,74,12,182,182,183,182,139,187,228,136,120,209,169,140,102,112,160,73,14,111,5,216,66,44,129,241,209,96,45,3,65,117,239,75,52,39,122,202,65,71,157,74,186,251,93,245,118,70,72,160,5,159,121,86,8,244,0,141,254,173,202,208,32,106,157,32,7,160,225,59,222,193,67,59,241,30,30,10,171,20,204,195,160,248,40,170,149,53,183,57,200,51,10,58,48,116,53,48,191,226,47,66,49,236,28,209,34,6,138,247,161,65,130,165,205,160,223,23,143,249,54,69,146,158,94,52,41,214,25,130,31,11,46,206,6,136,242,64,92,139,128,254,62,52,184,68,165,87,160,50,63,132,137,145,37,164,51,106,185,56,26,236,211,36,219,74,195,1,72,226,190,85,235,45,147,12,159,230,107,228,118,160,156,207,33,90,28,218,205,59,181,230,91,85,79,1,145,132,45,149,71,130,102,184,118,55,4,236,198,199,39,34,133,44,160,0,91,91,215,103,36,23,219,144,147,100,37,76,66,0,245,195,232,11,231,167,60,136,206,114,255,173,91,238,51,237,32,160,245,145,188,199,173,92,69,232,8,24,232,8,41,76,255,161,12,251,50,198,114,108,9,42,173,119,30,20,38,57,241,233,160,217,231,119,198,101,67,79,20,25,69,229,209,80,175,171,219,174,145,108,238,170,139,12,158,234,156,73,29,226,166,63,105,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,197,247,226,25,133,151,98,252,49,148,43,12,220,22,136,160,13,198,21,160,253,37,244,37,188,119,209,114,12,81,156,243,0],[160,249,154,157,252,169,130,24,178,174,188,10,171,75,183,151,101,201,122,75,227,204,1,183,197,39,220,59,31,175,6,136,1,0],[160,184,142,212,113,246,55,253,76,1,96,48,47,4,6,31,60,81,16,37,23,98,74,116,239,128,102,34,186,6,209,163,252,0],[160,83,49,16,87,146,238,231,234,169,86,188,172,17,210,186,17,108,226,232,48,238,231,61,144,77,111,6,163,52,21,1,75,0],[160,85,105,46,246,56,202,27,171,173,252,32,70,26,164,200,4,132,8,191,26,18,6,71,136,185,84,78,116,7,105,173,129,0],[160,56,132,5,71,86,15,137,93,78,3,221,107,3,241,13,146,241,12,153,14,12,71,119,199,92,129,129,64,191,22,218,171,0],[160,74,152,77,40,170,9,167,165,62,21,195,214,232,149,243,171,254,129,253,48,247,58,144,37,151,98,228,162,171,212,118,94,0],[160,216,173,107,1,206,168,79,67,71,139,41,217,6,54,2,59,87,23,198,126,160,129,101,185,188,218,82,112,3,173,165,164,0],[160,10,108,143,193,28,22,98,217,170,73,112,161,147,45,94,6,170,154,118,245,159,193,129,134,168,141,165,46,135,253,62,233,0],[160,157,163,165,178,129,84,193,250,46,88,180,214,229,194,39,227,117,109,170,6,239,51,115,35,138,204,57,20,179,114,222,196,0],[160,84,63,203,152,213,1,33,249,178,42,184,49,101,22,19,190,104,212,252,175,25,222,119,46,136,149,187,198,6,220,244,65,0],[160,28,82,38,21,32,27,203,97,109,14,13,160,185,224,39,253,231,2,71,156,220,61,107,173,151,165,136,128,233,227,25,102,0],[160,216,163,73,96,11,93,139,116,117,170,134,116,167,172,140,76,88,172,241,80,233,174,88,236,216,40,105,148,196,72,55,110,0],[160,5,29,50,52,201,211,18,126,217,230,1,123,105,188,75,35,235,219,41,54,37,131,120,204,76,232,183,226,193,72,92,155,0],[160,171,186,147,212,217,108,150,242,229,123,37,215,92,93,99,231,42,158,24,113,106,176,203,138,144,205,0,49,141,149,241,220,0],[160,38,163,54,181,99,160,35,20,180,245,23,232,11,219,158,228,231,101,66,195,191,164,200,124,7,9,46,208,220,49,64,95,0],[160,33,177,178,122,210,148,189,146,118,70,198,203,190,0,165,116,103,95,242,102,64,148,40,228,179,1,21,209,86,177,4,176,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,249,154,157,252,169,130,24,178,174,188,10,171,75,183,151,101,201,122,75,227,204,1,183,197,39,220,59,31,175,6,136,1,160,184,142,212,113,246,55,253,76,1,96,48,47,4,6,31,60,81,16,37,23,98,74,116,239,128,102,34,186,6,209,163,252,160,83,49,16,87,146,238,231,234,169,86,188,172,17,210,186,17,108,226,232,48,238,231,61,144,77,111,6,163,52,21,1,75,160,85,105,46,246,56,202,27,171,173,252,32,70,26,164,200,4,132,8,191,26,18,6,71,136,185,84,78,116,7,105,173,129,160,56,132,5,71,86,15,137,93,78,3,221,107,3,241,13,146,241,12,153,14,12,71,119,199,92,129,129,64,191,22,218,171,160,74,152,77,40,170,9,167,165,62,21,195,214,232,149,243,171,254,129,253,48,247,58,144,37,151,98,228,162,171,212,118,94,160,216,173,107,1,206,168,79,67,71,139,41,217,6,54,2,59,87,23,198,126,160,129,101,185,188,218,82,112,3,173,165,164,160,10,108,143,193,28,22,98,217,170,73,112,161,147,45,94,6,170,154,118,245,159,193,129,134,168,141,165,46,135,253,62,233,160,157,163,165,178,129,84,193,250,46,88,180,214,229,194,39,227,117,109,170,6,239,51,115,35,138,204,57,20,179,114,222,196,160,84,63,203,152,213,1,33,249,178,42,184,49,101,22,19,190,104,212,252,175,25,222,119,46,136,149,187,198,6,220,244,65,160,28,82,38,21,32,27,203,97,109,14,13,160,185,224,39,253,231,2,71,156,220,61,107,173,151,165,136,128,233,227,25,102,160,216,163,73,96,11,93,139,116,117,170,134,116,167,172,140,76,88,172,241,80,233,174,88,236,216,40,105,148,196,72,55,110,160,5,29,50,52,201,211,18,126,217,230,1,123,105,188,75,35,235,219,41,54,37,131,120,204,76,232,183,226,193,72,92,155,160,171,186,147,212,217,108,150,242,229,123,37,215,92,93,99,231,42,158,24,113,106,176,203,138,144,205,0,49,141,149,241,220,160,38,163,54,181,99,160,35,20,180,245,23,232,11,219,158,228,231,101,66,195,191,164,200,124,7,9,46,208,220,49,64,95,160,33,177,178,122,210,148,189,146,118,70,198,203,190,0,165,116,103,95,242,102,64,148,40,228,179,1,21,209,86,177,4,176,128],[249,2,17,160,249,154,157,252,169,130,24,178,174,188,10,171,75,183,151,101,201,122,75,227,204,1,183,197,39,220,59,31,175,6,136,1,160,184,142,212,113,246,55,253,76,1,96,48,47,4,6,31,60,81,16,37,23,98,74,116,239,128,102,34,186,6,209,163,252,160,83,49,16,87,146,238,231,234,169,86,188,172,17,210,186,17,108,226,232,48,238,231,61,144,77,111,6,163,52,21,1,75,160,85,105,46,246,56,202,27,171,173,252,32,70,26,164,200,4,132,8,191,26,18,6,71,136,185,84,78,116,7,105,173,129,160,56,132,5,71,86,15,137,93,78,3,221,107,3,241,13,146,241,12,153,14,12,71,119,199,92,129,129,64,191,22,218,171,160,74,152,77,40,170,9,167,165,62,21,195,214,232,149,243,171,254,129,253,48,247,58,144,37,151,98,228,162,171,212,118,94,160,216,173,107,1,206,168,79,67,71,139,41,217,6,54,2,59,87,23,198,126,160,129,101,185,188,218,82,112,3,173,165,164,160,10,108,143,193,28,22,98,217,170,73,112,161,147,45,94,6,170,154,118,245,159,193,129,134,168,141,165,46,135,253,62,233,160,157,163,165,178,129,84,193,250,46,88,180,214,229,194,39,227,117,109,170,6,239,51,115,35,138,204,57,20,179,114,222,196,160,84,63,203,152,213,1,33,249,178,42,184,49,101,22,19,190,104,212,252,175,25,222,119,46,136,149,187,198,6,220,244,65,160,28,82,38,21,32,27,203,97,109,14,13,160,185,224,39,253,231,2,71,156,220,61,107,173,151,165,136,128,233,227,25,102,160,216,163,73,96,11,93,139,116,117,170,134,116,167,172,140,76,88,172,241,80,233,174,88,236,216,40,105,148,196,72,55,110,160,197,247,226,25,133,151,98,252,49,148,43,12,220,22,136,160,13,198,21,160,253,37,244,37,188,119,209,114,12,81,156,243,160,171,186,147,212,217,108,150,242,229,123,37,215,92,93,99,231,42,158,24,113,106,176,203,138,144,205,0,49,141,149,241,220,160,38,163,54,181,99,160,35,20,180,245,23,232,11,219,158,228,231,101,66,195,191,164,200,124,7,9,46,208,220,49,64,95,160,33,177,178,122,210,148,189,146,118,70,198,203,190,0,165,116,103,95,242,102,64,148,40,228,179,1,21,209,86,177,4,176,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,78,163,50,188,5,44,198,136,213,247,165,102,104,121,194,215,48,246,91,222,237,139,152,176,125,231,191,3,174,102,58,140,0],[160,106,16,111,21,123,135,16,90,41,91,246,76,214,12,169,46,0,6,39,164,82,189,246,42,69,8,101,99,152,204,132,100,0],[160,60,34,149,73,115,93,160,163,67,8,20,68,149,254,38,185,86,202,77,136,16,235,61,244,182,40,227,137,94,14,242,214,0],[160,238,127,9,174,221,194,94,32,49,180,73,73,92,78,98,80,138,78,97,4,142,231,113,17,18,114,230,254,191,151,134,171,0],[160,201,42,66,167,18,48,157,234,238,225,227,80,220,29,160,71,88,29,218,217,33,150,214,240,209,128,11,236,159,130,108,69,0],[160,2,92,117,139,0,110,75,150,33,162,159,244,223,76,12,104,29,96,36,207,182,225,171,255,178,16,146,250,3,99,230,197,0],[160,216,217,232,12,128,20,245,47,3,73,156,242,47,134,209,88,97,63,164,32,56,2,254,249,129,198,15,120,58,254,148,8,0],[160,245,175,212,144,210,121,74,226,116,11,145,233,6,146,77,105,66,135,253,195,249,248,244,117,97,69,128,138,168,72,29,141,0],[160,174,249,156,38,0,233,18,162,101,229,126,66,13,242,68,81,217,247,124,116,131,17,153,42,249,117,95,208,169,93,97,209,0],[160,235,75,20,132,9,45,56,217,6,169,194,35,234,249,44,149,165,145,171,86,205,142,208,114,153,57,123,190,191,63,121,18,0],[160,12,198,148,204,70,121,49,135,169,52,154,161,57,227,133,67,176,170,137,161,64,122,52,3,44,215,205,187,225,127,137,24,0],[160,67,138,196,199,169,8,184,226,56,85,11,150,122,188,206,85,202,62,46,186,238,95,9,157,3,69,71,72,126,228,248,148,0],[160,25,233,52,15,104,218,115,250,187,68,62,245,205,199,70,63,6,123,22,218,29,85,122,62,215,226,215,166,16,167,189,234,0],[160,98,194,154,151,239,160,156,131,232,74,193,222,232,242,255,120,231,207,47,165,244,253,125,74,3,178,193,181,42,106,252,211,0],[160,72,2,45,177,8,11,109,126,117,186,10,93,244,238,114,168,190,92,94,154,43,232,11,135,170,167,55,237,148,72,150,116,0],[160,154,222,66,92,165,73,98,221,115,238,103,253,112,232,74,60,48,132,0,178,72,97,37,254,172,227,79,219,137,95,92,60,0],[160,64,246,176,183,91,200,127,120,56,98,203,181,53,14,244,34,143,152,0,235,141,69,29,162,2,91,49,155,66,78,154,38,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,106,16,111,21,123,135,16,90,41,91,246,76,214,12,169,46,0,6,39,164,82,189,246,42,69,8,101,99,152,204,132,100,160,60,34,149,73,115,93,160,163,67,8,20,68,149,254,38,185,86,202,77,136,16,235,61,244,182,40,227,137,94,14,242,214,160,238,127,9,174,221,194,94,32,49,180,73,73,92,78,98,80,138,78,97,4,142,231,113,17,18,114,230,254,191,151,134,171,160,201,42,66,167,18,48,157,234,238,225,227,80,220,29,160,71,88,29,218,217,33,150,214,240,209,128,11,236,159,130,108,69,160,2,92,117,139,0,110,75,150,33,162,159,244,223,76,12,104,29,96,36,207,182,225,171,255,178,16,146,250,3,99,230,197,160,216,217,232,12,128,20,245,47,3,73,156,242,47,134,209,88,97,63,164,32,56,2,254,249,129,198,15,120,58,254,148,8,160,245,175,212,144,210,121,74,226,116,11,145,233,6,146,77,105,66,135,253,195,249,248,244,117,97,69,128,138,168,72,29,141,160,174,249,156,38,0,233,18,162,101,229,126,66,13,242,68,81,217,247,124,116,131,17,153,42,249,117,95,208,169,93,97,209,160,235,75,20,132,9,45,56,217,6,169,194,35,234,249,44,149,165,145,171,86,205,142,208,114,153,57,123,190,191,63,121,18,160,12,198,148,204,70,121,49,135,169,52,154,161,57,227,133,67,176,170,137,161,64,122,52,3,44,215,205,187,225,127,137,24,160,67,138,196,199,169,8,184,226,56,85,11,150,122,188,206,85,202,62,46,186,238,95,9,157,3,69,71,72,126,228,248,148,160,25,233,52,15,104,218,115,250,187,68,62,245,205,199,70,63,6,123,22,218,29,85,122,62,215,226,215,166,16,167,189,234,160,98,194,154,151,239,160,156,131,232,74,193,222,232,242,255,120,231,207,47,165,244,253,125,74,3,178,193,181,42,106,252,211,160,72,2,45,177,8,11,109,126,117,186,10,93,244,238,114,168,190,92,94,154,43,232,11,135,170,167,55,237,148,72,150,116,160,154,222,66,92,165,73,98,221,115,238,103,253,112,232,74,60,48,132,0,178,72,97,37,254,172,227,79,219,137,95,92,60,160,64,246,176,183,91,200,127,120,56,98,203,181,53,14,244,34,143,152,0,235,141,69,29,162,2,91,49,155,66,78,154,38,128],[249,2,17,160,106,16,111,21,123,135,16,90,41,91,246,76,214,12,169,46,0,6,39,164,82,189,246,42,69,8,101,99,152,204,132,100,160,60,34,149,73,115,93,160,163,67,8,20,68,149,254,38,185,86,202,77,136,16,235,61,244,182,40,227,137,94,14,242,214,160,238,127,9,174,221,194,94,32,49,180,73,73,92,78,98,80,138,78,97,4,142,231,113,17,18,114,230,254,191,151,134,171,160,201,42,66,167,18,48,157,234,238,225,227,80,220,29,160,71,88,29,218,217,33,150,214,240,209,128,11,236,159,130,108,69,160,2,92,117,139,0,110,75,150,33,162,159,244,223,76,12,104,29,96,36,207,182,225,171,255,178,16,146,250,3,99,230,197,160,216,217,232,12,128,20,245,47,3,73,156,242,47,134,209,88,97,63,164,32,56,2,254,249,129,198,15,120,58,254,148,8,160,245,175,212,144,210,121,74,226,116,11,145,233,6,146,77,105,66,135,253,195,249,248,244,117,97,69,128,138,168,72,29,141,160,78,163,50,188,5,44,198,136,213,247,165,102,104,121,194,215,48,246,91,222,237,139,152,176,125,231,191,3,174,102,58,140,160,235,75,20,132,9,45,56,217,6,169,194,35,234,249,44,149,165,145,171,86,205,142,208,114,153,57,123,190,191,63,121,18,160,12,198,148,204,70,121,49,135,169,52,154,161,57,227,133,67,176,170,137,161,64,122,52,3,44,215,205,187,225,127,137,24,160,67,138,196,199,169,8,184,226,56,85,11,150,122,188,206,85,202,62,46,186,238,95,9,157,3,69,71,72,126,228,248,148,160,25,233,52,15,104,218,115,250,187,68,62,245,205,199,70,63,6,123,22,218,29,85,122,62,215,226,215,166,16,167,189,234,160,98,194,154,151,239,160,156,131,232,74,193,222,232,242,255,120,231,207,47,165,244,253,125,74,3,178,193,181,42,106,252,211,160,72,2,45,177,8,11,109,126,117,186,10,93,244,238,114,168,190,92,94,154,43,232,11,135,170,167,55,237,148,72,150,116,160,154,222,66,92,165,73,98,221,115,238,103,253,112,232,74,60,48,132,0,178,72,97,37,254,172,227,79,219,137,95,92,60,160,64,246,176,183,91,200,127,120,56,98,203,181,53,14,244,34,143,152,0,235,141,69,29,162,2,91,49,155,66,78,154,38,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,121,68,104,125,68,59,82,93,228,97,167,40,146,49,124,77,241,142,211,165,10,97,199,85,81,79,230,191,247,129,114,80,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,31,184,239,216,162,218,209,131,153,182,120,30,89,226,253,232,35,255,80,54,206,227,105,86,62,74,174,87,22,169,129,252,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,172,35,60,231,231,1,133,65,209,84,163,171,248,138,45,61,86,71,119,177,22,201,79,236,153,76,227,109,10,225,88,43,0],[160,253,135,76,135,54,108,10,170,247,252,207,96,101,104,75,7,69,195,220,177,99,45,100,235,176,35,207,225,85,18,146,78,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,33,45,215,46,82,62,109,31,1,35,68,61,66,198,187,70,90,197,148,155,207,148,72,174,197,28,191,217,57,58,226,79,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,64,195,200,247,169,82,45,109,245,192,2,141,144,211,96,247,60,81,105,180,207,67,77,149,53,11,238,212,62,22,115,144,0],[160,138,136,154,103,174,251,222,75,48,46,223,40,146,253,91,223,151,115,205,148,36,99,132,167,153,144,81,16,219,86,92,48,0],[160,203,223,36,48,180,143,23,179,255,230,40,112,153,88,88,64,78,4,13,226,19,168,89,214,215,65,43,135,196,33,218,233,0],[160,89,143,142,15,108,110,165,43,98,224,76,101,93,229,229,73,69,151,194,144,32,120,185,128,145,134,29,208,191,35,120,115,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,128,160,31,184,239,216,162,218,209,131,153,182,120,30,89,226,253,232,35,255,80,54,206,227,105,86,62,74,174,87,22,169,129,252,128,160,172,35,60,231,231,1,133,65,209,84,163,171,248,138,45,61,86,71,119,177,22,201,79,236,153,76,227,109,10,225,88,43,160,253,135,76,135,54,108,10,170,247,252,207,96,101,104,75,7,69,195,220,177,99,45,100,235,176,35,207,225,85,18,146,78,128,128,128,160,33,45,215,46,82,62,109,31,1,35,68,61,66,198,187,70,90,197,148,155,207,148,72,174,197,28,191,217,57,58,226,79,128,160,64,195,200,247,169,82,45,109,245,192,2,141,144,211,96,247,60,81,105,180,207,67,77,149,53,11,238,212,62,22,115,144,160,138,136,154,103,174,251,222,75,48,46,223,40,146,253,91,223,151,115,205,148,36,99,132,167,153,144,81,16,219,86,92,48,160,203,223,36,48,180,143,23,179,255,230,40,112,153,88,88,64,78,4,13,226,19,168,89,214,215,65,43,135,196,33,218,233,160,89,143,142,15,108,110,165,43,98,224,76,101,93,229,229,73,69,151,194,144,32,120,185,128,145,134,29,208,191,35,120,115,128,128,128],[249,1,17,128,160,31,184,239,216,162,218,209,131,153,182,120,30,89,226,253,232,35,255,80,54,206,227,105,86,62,74,174,87,22,169,129,252,128,160,172,35,60,231,231,1,133,65,209,84,163,171,248,138,45,61,86,71,119,177,22,201,79,236,153,76,227,109,10,225,88,43,160,253,135,76,135,54,108,10,170,247,252,207,96,101,104,75,7,69,195,220,177,99,45,100,235,176,35,207,225,85,18,146,78,128,128,128,160,33,45,215,46,82,62,109,31,1,35,68,61,66,198,187,70,90,197,148,155,207,148,72,174,197,28,191,217,57,58,226,79,128,160,64,195,200,247,169,82,45,109,245,192,2,141,144,211,96,247,60,81,105,180,207,67,77,149,53,11,238,212,62,22,115,144,160,121,68,104,125,68,59,82,93,228,97,167,40,146,49,124,77,241,142,211,165,10,97,199,85,81,79,230,191,247,129,114,80,160,203,223,36,48,180,143,23,179,255,230,40,112,153,88,88,64,78,4,13,226,19,168,89,214,215,65,43,135,196,33,218,233,160,89,143,142,15,108,110,165,43,98,224,76,101,93,229,229,73,69,151,194,144,32,120,185,128,145,134,29,208,191,35,120,115,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,244,68,55,117,211,80,124,42,127,53,68,13,25,88,109,73,120,29,160,78,148,196,161,251,28,129,56,192,76,54,79,75,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,108,185,102,52,21,10,75,241,154,209,205,29,41,234,210,116,211,39,182,196,120,254,70,36,87,14,59,127,132,143,234,49,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,199,3,79,188,218,204,198,37,11,244,45,1,57,243,154,39,128,29,29,9,176,195,38,176,180,154,118,137,253,200,30,216,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,160,108,185,102,52,21,10,75,241,154,209,205,29,41,234,210,116,211,39,182,196,120,254,70,36,87,14,59,127,132,143,234,49,128,128,160,199,3,79,188,218,204,198,37,11,244,45,1,57,243,154,39,128,29,29,9,176,195,38,176,180,154,118,137,253,200,30,216,128,128,128,128,128,128,128,128,128],[248,81,128,128,128,128,160,108,185,102,52,21,10,75,241,154,209,205,29,41,234,210,116,211,39,182,196,120,254,70,36,87,14,59,127,132,143,234,49,128,128,160,244,68,55,117,211,80,124,42,127,53,68,13,25,88,109,73,120,29,160,78,148,196,161,251,28,129,56,192,76,54,79,75,128,128,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"key":[83,128,199,183,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42],"list_rlp_bytes":[[248,112],[248,112]],"value_rlp_bytes":[[184,80],[184,80]],"value_list_rlp_bytes":[[248,78],[248,78]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,112]},"storage":null,"values":[[157,32,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42,0,0,0,0],[157,32,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[138,2,103,194,68,2,43,237,82,90,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[138,2,103,194,68,2,43,237,82,90,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,201,241,28,17,70,191,10,230,244,164,254,224,205,89,168,245,228,199,11,228,83,61,99,0,4,99,161,251,24,198,137,24,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,32,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42,0,0,0,0]],"keccak_data":[[248,112,157,32,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42,184,80,248,78,128,138,2,103,194,68,2,43,237,82,90,203,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,112,157,32,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42,184,80,248,78,128,138,2,103,194,68,2,43,237,82,90,203,160,201,241,28,17,70,191,10,230,244,164,254,224,205,89,168,245,228,199,11,228,83,61,99,0,4,99,161,251,24,198,137,24,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,17,208],"key":[209,145,236,75,8,192,127,93,53,202,116,112,223,227,238,49,199,204,150,64,145,212,182,41,188,172,4,67,242,116,187,180],"list_rlp_bytes":[[227],[227]],"value_rlp_bytes":[[0],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[161,32,209,145,236,75,8,192,127,93,53,202,116,112,223,227,238,49,199,204,150,64,145,212,182,41,188,172,4,67,242,116,187,180],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[161,32,209,145,236,75,8,192,127,93,53,202,116,112,223,227,238,49,199,204,150,64,145,212,182,41,188,172,4,67,242,116,187,180],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[227,161,32,209,145,236,75,8,192,127,93,53,202,116,112,223,227,238,49,199,204,150,64,145,212,182,41,188,172,4,67,242,116,187,180,17],[227,161,32,209,145,236,75,8,192,127,93,53,202,116,112,223,227,238,49,199,204,150,64,145,212,182,41,188,172,4,67,242,116,187,180,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,17,208]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/LeafInLastLevel.json b/zkevm-circuits/src/mpt_circuit/tests/LeafInLastLevel.json new file mode 100644 index 0000000000..3fd3f26928 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/LeafInLastLevel.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":true,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,140,124,221,88,220,92,179,129,138,153,27,229,195,196,185,116,193,57,138,210,183,52,212,210,167,226,160,86,68,146,231,19,0],[160,112,104,106,204,156,190,212,159,29,10,113,161,60,253,15,46,193,82,59,75,202,25,30,136,23,67,211,68,237,199,47,125,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,202,92,199,226,67,3,35,149,29,155,142,31,209,70,151,224,82,137,54,214,48,39,47,150,77,249,94,96,97,151,97,224,0],[160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,0],[160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,0],[160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,0],[160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,0],[160,78,68,202,236,255,69,201,137,31,116,246,162,21,103,53,136,110,237,246,241,167,51,98,142,188,128,46,199,157,132,70,72,0],[160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,0],[160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,0],[160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,0],[160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,0],[160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,0],[160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,0],[160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,0],[160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,0],[160,78,211,22,129,63,142,245,92,110,168,145,125,162,25,167,198,58,244,154,159,138,3,71,107,83,11,51,217,62,109,35,133,0],[160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,0],[160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,160,78,68,202,236,255,69,201,137,31,116,246,162,21,103,53,136,110,237,246,241,167,51,98,142,188,128,46,199,157,132,70,72,160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,160,78,211,22,129,63,142,245,92,110,168,145,125,162,25,167,198,58,244,154,159,138,3,71,107,83,11,51,217,62,109,35,133,160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,128],[249,2,17,160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,160,78,68,202,236,255,69,201,137,31,116,246,162,21,103,53,136,110,237,246,241,167,51,98,142,188,128,46,199,157,132,70,72,160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,160,202,92,199,226,67,3,35,149,29,155,142,31,209,70,151,224,82,137,54,214,48,39,47,150,77,249,94,96,97,151,97,224,160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,104,31,69,120,244,116,205,0,13,229,142,3,19,129,136,77,245,32,4,129,176,121,54,0,88,207,105,132,91,225,60,246,0],[160,83,204,74,9,193,206,183,37,118,178,161,220,90,22,133,196,15,213,65,141,119,159,75,33,66,54,17,193,247,88,238,179,0],[160,105,111,159,238,102,32,198,144,35,119,199,128,235,43,192,31,124,141,149,6,64,208,172,52,103,48,187,40,71,116,33,104,0],[160,90,170,127,179,67,12,123,71,79,23,122,229,29,213,122,34,69,181,254,203,6,243,201,181,233,44,238,146,240,103,139,18,0],[160,18,211,61,40,55,234,247,33,7,159,159,174,64,123,239,20,102,13,187,67,159,98,146,21,222,108,138,32,76,187,244,21,0],[160,54,243,254,76,6,88,205,53,74,124,175,199,98,89,194,33,243,175,131,71,90,215,207,24,48,25,17,82,169,7,59,167,0],[160,170,69,217,55,220,175,55,227,159,109,196,254,133,192,107,242,152,205,241,45,188,144,213,236,83,234,118,125,181,238,137,172,0],[160,7,42,104,160,164,108,24,150,155,80,19,239,191,17,249,33,235,95,45,142,104,158,207,124,80,86,9,28,35,231,198,165,0],[160,143,188,52,103,215,28,93,231,36,56,33,12,100,67,242,235,119,47,66,242,170,75,121,9,67,184,107,64,125,164,244,110,0],[160,93,19,99,229,98,232,246,242,174,142,205,231,229,230,95,69,31,207,171,249,73,149,43,140,96,80,182,222,134,49,185,33,0],[160,207,46,85,51,238,92,187,32,3,128,217,105,234,234,37,174,140,179,58,48,52,46,148,220,133,59,208,228,223,128,196,59,0],[160,62,42,203,162,37,31,200,41,44,42,106,163,111,252,210,32,117,1,93,147,127,235,54,252,166,177,134,96,49,74,243,173,0],[160,120,196,156,2,116,243,133,85,34,208,110,157,55,98,169,50,8,243,180,83,51,35,218,45,79,17,193,33,87,3,136,43,0],[160,207,102,94,227,215,112,30,109,156,167,165,19,68,226,34,46,146,31,113,229,145,221,170,49,223,199,165,77,29,112,212,226,0],[160,25,174,119,134,195,119,9,119,223,57,217,190,101,16,179,154,23,195,203,106,183,151,251,207,30,103,142,3,51,81,194,229,0],[160,244,185,36,232,216,167,25,188,81,57,76,70,23,57,86,125,132,34,240,16,47,239,198,132,245,241,160,38,0,111,152,36,0],[160,180,87,26,138,14,5,91,78,153,42,57,87,43,71,55,8,212,215,64,0,0,239,199,158,24,162,149,5,22,23,165,213,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,83,204,74,9,193,206,183,37,118,178,161,220,90,22,133,196,15,213,65,141,119,159,75,33,66,54,17,193,247,88,238,179,160,105,111,159,238,102,32,198,144,35,119,199,128,235,43,192,31,124,141,149,6,64,208,172,52,103,48,187,40,71,116,33,104,160,90,170,127,179,67,12,123,71,79,23,122,229,29,213,122,34,69,181,254,203,6,243,201,181,233,44,238,146,240,103,139,18,160,18,211,61,40,55,234,247,33,7,159,159,174,64,123,239,20,102,13,187,67,159,98,146,21,222,108,138,32,76,187,244,21,160,54,243,254,76,6,88,205,53,74,124,175,199,98,89,194,33,243,175,131,71,90,215,207,24,48,25,17,82,169,7,59,167,160,170,69,217,55,220,175,55,227,159,109,196,254,133,192,107,242,152,205,241,45,188,144,213,236,83,234,118,125,181,238,137,172,160,7,42,104,160,164,108,24,150,155,80,19,239,191,17,249,33,235,95,45,142,104,158,207,124,80,86,9,28,35,231,198,165,160,143,188,52,103,215,28,93,231,36,56,33,12,100,67,242,235,119,47,66,242,170,75,121,9,67,184,107,64,125,164,244,110,160,93,19,99,229,98,232,246,242,174,142,205,231,229,230,95,69,31,207,171,249,73,149,43,140,96,80,182,222,134,49,185,33,160,207,46,85,51,238,92,187,32,3,128,217,105,234,234,37,174,140,179,58,48,52,46,148,220,133,59,208,228,223,128,196,59,160,62,42,203,162,37,31,200,41,44,42,106,163,111,252,210,32,117,1,93,147,127,235,54,252,166,177,134,96,49,74,243,173,160,120,196,156,2,116,243,133,85,34,208,110,157,55,98,169,50,8,243,180,83,51,35,218,45,79,17,193,33,87,3,136,43,160,207,102,94,227,215,112,30,109,156,167,165,19,68,226,34,46,146,31,113,229,145,221,170,49,223,199,165,77,29,112,212,226,160,25,174,119,134,195,119,9,119,223,57,217,190,101,16,179,154,23,195,203,106,183,151,251,207,30,103,142,3,51,81,194,229,160,244,185,36,232,216,167,25,188,81,57,76,70,23,57,86,125,132,34,240,16,47,239,198,132,245,241,160,38,0,111,152,36,160,180,87,26,138,14,5,91,78,153,42,57,87,43,71,55,8,212,215,64,0,0,239,199,158,24,162,149,5,22,23,165,213,128],[249,2,17,160,83,204,74,9,193,206,183,37,118,178,161,220,90,22,133,196,15,213,65,141,119,159,75,33,66,54,17,193,247,88,238,179,160,105,111,159,238,102,32,198,144,35,119,199,128,235,43,192,31,124,141,149,6,64,208,172,52,103,48,187,40,71,116,33,104,160,90,170,127,179,67,12,123,71,79,23,122,229,29,213,122,34,69,181,254,203,6,243,201,181,233,44,238,146,240,103,139,18,160,18,211,61,40,55,234,247,33,7,159,159,174,64,123,239,20,102,13,187,67,159,98,146,21,222,108,138,32,76,187,244,21,160,54,243,254,76,6,88,205,53,74,124,175,199,98,89,194,33,243,175,131,71,90,215,207,24,48,25,17,82,169,7,59,167,160,170,69,217,55,220,175,55,227,159,109,196,254,133,192,107,242,152,205,241,45,188,144,213,236,83,234,118,125,181,238,137,172,160,7,42,104,160,164,108,24,150,155,80,19,239,191,17,249,33,235,95,45,142,104,158,207,124,80,86,9,28,35,231,198,165,160,143,188,52,103,215,28,93,231,36,56,33,12,100,67,242,235,119,47,66,242,170,75,121,9,67,184,107,64,125,164,244,110,160,93,19,99,229,98,232,246,242,174,142,205,231,229,230,95,69,31,207,171,249,73,149,43,140,96,80,182,222,134,49,185,33,160,207,46,85,51,238,92,187,32,3,128,217,105,234,234,37,174,140,179,58,48,52,46,148,220,133,59,208,228,223,128,196,59,160,62,42,203,162,37,31,200,41,44,42,106,163,111,252,210,32,117,1,93,147,127,235,54,252,166,177,134,96,49,74,243,173,160,120,196,156,2,116,243,133,85,34,208,110,157,55,98,169,50,8,243,180,83,51,35,218,45,79,17,193,33,87,3,136,43,160,207,102,94,227,215,112,30,109,156,167,165,19,68,226,34,46,146,31,113,229,145,221,170,49,223,199,165,77,29,112,212,226,160,25,174,119,134,195,119,9,119,223,57,217,190,101,16,179,154,23,195,203,106,183,151,251,207,30,103,142,3,51,81,194,229,160,104,31,69,120,244,116,205,0,13,229,142,3,19,129,136,77,245,32,4,129,176,121,54,0,88,207,105,132,91,225,60,246,160,180,87,26,138,14,5,91,78,153,42,57,87,43,71,55,8,212,215,64,0,0,239,199,158,24,162,149,5,22,23,165,213,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,1,241],[249,1,241]]}},"account":null,"storage":null,"values":[[160,16,252,186,212,234,191,195,233,2,181,251,199,249,76,116,183,99,79,27,16,146,172,72,159,44,171,111,142,212,202,114,159,0],[160,109,216,93,222,155,153,61,132,158,228,250,192,233,44,235,132,85,38,84,84,197,164,164,46,249,235,220,102,79,174,255,174,0],[160,119,192,111,89,214,12,8,99,235,152,208,21,169,200,194,155,211,59,154,117,101,33,156,80,121,155,159,21,216,100,170,108,0],[160,142,254,100,2,170,195,173,99,52,230,246,199,244,115,200,47,250,208,106,93,107,250,250,94,59,237,44,58,12,96,110,158,0],[160,158,108,135,162,225,93,149,217,62,153,173,242,203,20,170,113,43,17,9,59,73,62,20,44,181,209,157,240,245,97,35,215,0],[160,56,166,134,201,116,135,98,96,91,66,98,144,26,48,94,51,55,175,190,254,77,244,47,195,97,240,237,186,222,132,115,139,0],[160,127,102,126,90,55,171,197,174,245,247,246,108,222,226,24,123,137,13,99,192,162,118,99,103,121,74,193,32,237,158,11,81,0],[160,18,35,57,223,137,0,136,136,55,14,135,137,220,249,131,121,92,58,53,253,186,92,87,116,168,187,219,249,126,27,86,227,0],[160,66,242,248,144,63,101,251,94,91,22,169,212,89,40,200,171,217,172,109,193,24,68,97,220,217,98,36,37,188,128,108,69,0],[160,17,21,118,48,219,45,37,151,225,249,153,166,45,81,99,112,198,151,84,139,105,216,200,137,73,162,112,24,251,34,210,152,0],[160,249,104,84,77,213,78,214,4,165,35,127,232,26,87,209,108,253,103,154,151,117,112,33,73,12,11,210,240,6,41,230,18,0],[160,70,175,188,69,169,55,224,158,2,195,0,50,15,48,44,134,6,14,74,12,151,60,101,165,197,179,152,169,205,242,220,77,0],[160,109,88,246,178,201,149,87,31,51,232,88,242,76,67,49,77,219,230,32,218,34,150,26,58,19,28,35,122,240,6,94,28,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,217,104,2,205,247,31,93,89,11,90,89,107,251,131,185,81,83,161,190,86,25,121,206,187,203,29,150,252,10,114,84,152,0],[160,255,127,172,140,207,186,55,167,95,116,41,134,244,104,35,250,76,133,72,61,226,154,33,140,208,109,238,92,203,41,2,27,0],[160,195,60,117,219,145,77,172,53,162,133,84,144,116,108,2,107,71,239,142,172,150,159,147,94,176,15,5,160,121,124,170,83,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,241,160,109,216,93,222,155,153,61,132,158,228,250,192,233,44,235,132,85,38,84,84,197,164,164,46,249,235,220,102,79,174,255,174,160,119,192,111,89,214,12,8,99,235,152,208,21,169,200,194,155,211,59,154,117,101,33,156,80,121,155,159,21,216,100,170,108,160,142,254,100,2,170,195,173,99,52,230,246,199,244,115,200,47,250,208,106,93,107,250,250,94,59,237,44,58,12,96,110,158,160,158,108,135,162,225,93,149,217,62,153,173,242,203,20,170,113,43,17,9,59,73,62,20,44,181,209,157,240,245,97,35,215,160,56,166,134,201,116,135,98,96,91,66,98,144,26,48,94,51,55,175,190,254,77,244,47,195,97,240,237,186,222,132,115,139,160,127,102,126,90,55,171,197,174,245,247,246,108,222,226,24,123,137,13,99,192,162,118,99,103,121,74,193,32,237,158,11,81,160,18,35,57,223,137,0,136,136,55,14,135,137,220,249,131,121,92,58,53,253,186,92,87,116,168,187,219,249,126,27,86,227,160,66,242,248,144,63,101,251,94,91,22,169,212,89,40,200,171,217,172,109,193,24,68,97,220,217,98,36,37,188,128,108,69,160,17,21,118,48,219,45,37,151,225,249,153,166,45,81,99,112,198,151,84,139,105,216,200,137,73,162,112,24,251,34,210,152,160,249,104,84,77,213,78,214,4,165,35,127,232,26,87,209,108,253,103,154,151,117,112,33,73,12,11,210,240,6,41,230,18,160,70,175,188,69,169,55,224,158,2,195,0,50,15,48,44,134,6,14,74,12,151,60,101,165,197,179,152,169,205,242,220,77,160,109,88,246,178,201,149,87,31,51,232,88,242,76,67,49,77,219,230,32,218,34,150,26,58,19,28,35,122,240,6,94,28,128,160,217,104,2,205,247,31,93,89,11,90,89,107,251,131,185,81,83,161,190,86,25,121,206,187,203,29,150,252,10,114,84,152,160,255,127,172,140,207,186,55,167,95,116,41,134,244,104,35,250,76,133,72,61,226,154,33,140,208,109,238,92,203,41,2,27,160,195,60,117,219,145,77,172,53,162,133,84,144,116,108,2,107,71,239,142,172,150,159,147,94,176,15,5,160,121,124,170,83,128],[249,1,241,160,109,216,93,222,155,153,61,132,158,228,250,192,233,44,235,132,85,38,84,84,197,164,164,46,249,235,220,102,79,174,255,174,160,119,192,111,89,214,12,8,99,235,152,208,21,169,200,194,155,211,59,154,117,101,33,156,80,121,155,159,21,216,100,170,108,160,142,254,100,2,170,195,173,99,52,230,246,199,244,115,200,47,250,208,106,93,107,250,250,94,59,237,44,58,12,96,110,158,160,158,108,135,162,225,93,149,217,62,153,173,242,203,20,170,113,43,17,9,59,73,62,20,44,181,209,157,240,245,97,35,215,160,56,166,134,201,116,135,98,96,91,66,98,144,26,48,94,51,55,175,190,254,77,244,47,195,97,240,237,186,222,132,115,139,160,127,102,126,90,55,171,197,174,245,247,246,108,222,226,24,123,137,13,99,192,162,118,99,103,121,74,193,32,237,158,11,81,160,18,35,57,223,137,0,136,136,55,14,135,137,220,249,131,121,92,58,53,253,186,92,87,116,168,187,219,249,126,27,86,227,160,16,252,186,212,234,191,195,233,2,181,251,199,249,76,116,183,99,79,27,16,146,172,72,159,44,171,111,142,212,202,114,159,160,17,21,118,48,219,45,37,151,225,249,153,166,45,81,99,112,198,151,84,139,105,216,200,137,73,162,112,24,251,34,210,152,160,249,104,84,77,213,78,214,4,165,35,127,232,26,87,209,108,253,103,154,151,117,112,33,73,12,11,210,240,6,41,230,18,160,70,175,188,69,169,55,224,158,2,195,0,50,15,48,44,134,6,14,74,12,151,60,101,165,197,179,152,169,205,242,220,77,160,109,88,246,178,201,149,87,31,51,232,88,242,76,67,49,77,219,230,32,218,34,150,26,58,19,28,35,122,240,6,94,28,128,160,217,104,2,205,247,31,93,89,11,90,89,107,251,131,185,81,83,161,190,86,25,121,206,187,203,29,150,252,10,114,84,152,160,255,127,172,140,207,186,55,167,95,116,41,134,244,104,35,250,76,133,72,61,226,154,33,140,208,109,238,92,203,41,2,27,160,195,60,117,219,145,77,172,53,162,133,84,144,116,108,2,107,71,239,142,172,150,159,147,94,176,15,5,160,121,124,170,83,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[248,145],[248,145]]}},"account":null,"storage":null,"values":[[160,146,187,139,90,5,97,176,219,61,19,222,235,232,41,192,175,190,123,160,251,68,159,136,207,46,55,105,239,68,6,26,232,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,72,33,193,255,166,32,87,221,72,17,3,12,78,58,161,92,153,250,64,220,101,238,119,139,95,175,219,176,156,79,225,35,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,166,25,136,15,107,111,23,41,104,132,91,11,244,219,133,118,218,254,61,178,76,239,247,213,180,36,91,26,224,69,175,110,0],[160,97,133,19,253,20,177,243,216,51,3,233,99,48,179,224,37,159,9,66,70,185,19,212,133,175,98,195,1,74,8,215,10,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,108,139,184,46,43,52,91,97,194,100,196,243,137,176,38,120,201,178,162,224,33,73,97,149,84,48,79,30,76,187,226,134,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,145,128,160,72,33,193,255,166,32,87,221,72,17,3,12,78,58,161,92,153,250,64,220,101,238,119,139,95,175,219,176,156,79,225,35,128,128,128,128,128,128,160,166,25,136,15,107,111,23,41,104,132,91,11,244,219,133,118,218,254,61,178,76,239,247,213,180,36,91,26,224,69,175,110,160,97,133,19,253,20,177,243,216,51,3,233,99,48,179,224,37,159,9,66,70,185,19,212,133,175,98,195,1,74,8,215,10,128,128,128,160,108,139,184,46,43,52,91,97,194,100,196,243,137,176,38,120,201,178,162,224,33,73,97,149,84,48,79,30,76,187,226,134,128,128,128],[248,145,128,160,72,33,193,255,166,32,87,221,72,17,3,12,78,58,161,92,153,250,64,220,101,238,119,139,95,175,219,176,156,79,225,35,128,128,128,128,128,128,160,146,187,139,90,5,97,176,219,61,19,222,235,232,41,192,175,190,123,160,251,68,159,136,207,46,55,105,239,68,6,26,232,160,97,133,19,253,20,177,243,216,51,3,233,99,48,179,224,37,159,9,66,70,185,19,212,133,175,98,195,1,74,8,215,10,128,128,128,160,108,139,184,46,43,52,91,97,194,100,196,243,137,176,38,120,201,178,162,224,33,73,97,149,84,48,79,30,76,187,226,134,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[80,239,191,18,88,1,56,188,98,60,149,117,114,134,223,78,36,235,129,201],"key":[222,120,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184],"list_rlp_bytes":[[248,104],[248,104]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,104]},"storage":null,"values":[[159,32,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,0,0],[159,32,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,155,36,63,244,90,213,225,65,221,7,129,209,139,245,164,94,116,208,49,25,232,120,82,202,61,84,166,37,216,108,202,226,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,121,93,249,151,80,68,140,16,136,64,2,70,73,38,244,219,80,159,64,232,155,241,68,26,60,228,227,179,172,31,201,201,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,32,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,0,0]],"keccak_data":[[248,104,159,32,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,184,70,248,68,128,128,160,155,36,63,244,90,213,225,65,221,7,129,209,139,245,164,94,116,208,49,25,232,120,82,202,61,84,166,37,216,108,202,226,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,104,159,32,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,184,70,248,68,128,128,160,121,93,249,151,80,68,140,16,136,64,2,70,73,38,244,219,80,159,64,232,155,241,68,26,60,228,227,179,172,31,201,201,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[80,239,191,18,88,1,56,188,98,60,149,117,114,134,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[247]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[213],[213]]}},"account":null,"storage":null,"values":[[194,32,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[194,32,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[194,32,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[213,128,194,32,1,128,194,32,1,128,128,128,128,128,128,128,128,128,128,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[213,128,194,32,17,128,194,32,1,128,128,128,128,128,128,128,128,128,128,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[213,128,194,32,1,128,194,32,1,128,128,128,128,128,128,128,128,128,128,128,128,128],[213,128,194,32,17,128,194,32,1,128,128,128,128,128,128,128,128,128,128,128,128,128],[247,160,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,128,194,32,1,128,194,32,1,128,128,128,128,128,128,128,128,128,128,128,128,128],[247,160,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,128,194,32,17,128,194,32,1,128,128,128,128,128,128,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],"key":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],"list_rlp_bytes":[[194],[194]],"value_rlp_bytes":[[1],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[194,32,1],[194,32,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/LeafWithMoreNibbles.json b/zkevm-circuits/src/mpt_circuit/tests/LeafWithMoreNibbles.json new file mode 100644 index 0000000000..31c08133e3 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/LeafWithMoreNibbles.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":true,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,210,74,248,212,202,46,166,152,235,32,129,52,22,46,22,61,77,143,81,103,183,133,222,70,138,46,251,86,196,63,74,19,0],[160,210,74,248,212,202,46,166,152,235,32,129,52,22,46,22,61,77,143,81,103,183,133,222,70,138,46,251,86,196,63,74,19,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,145,75,248,229,2,218,244,56,125,154,2,213,139,0,51,141,20,210,253,125,3,229,93,96,46,71,219,183,81,173,221,83,0],[160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,0],[160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,0],[160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,0],[160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,0],[160,78,68,202,236,255,69,201,137,31,116,246,162,21,103,53,136,110,237,246,241,167,51,98,142,188,128,46,199,157,132,70,72,0],[160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,0],[160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,0],[160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,0],[160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,0],[160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,0],[160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,0],[160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,0],[160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,0],[160,145,75,248,229,2,218,244,56,125,154,2,213,139,0,51,141,20,210,253,125,3,229,93,96,46,71,219,183,81,173,221,83,0],[160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,0],[160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,160,78,68,202,236,255,69,201,137,31,116,246,162,21,103,53,136,110,237,246,241,167,51,98,142,188,128,46,199,157,132,70,72,160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,160,145,75,248,229,2,218,244,56,125,154,2,213,139,0,51,141,20,210,253,125,3,229,93,96,46,71,219,183,81,173,221,83,160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,128],[249,2,17,160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,160,78,68,202,236,255,69,201,137,31,116,246,162,21,103,53,136,110,237,246,241,167,51,98,142,188,128,46,199,157,132,70,72,160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,160,145,75,248,229,2,218,244,56,125,154,2,213,139,0,51,141,20,210,253,125,3,229,93,96,46,71,219,183,81,173,221,83,160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,185,131,130,21,163,126,165,12,214,94,37,168,224,68,7,80,173,77,74,151,125,203,19,156,7,105,158,174,233,98,18,155,0],[160,83,204,74,9,193,206,183,37,118,178,161,220,90,22,133,196,15,213,65,141,119,159,75,33,66,54,17,193,247,88,238,179,0],[160,105,111,159,238,102,32,198,144,35,119,199,128,235,43,192,31,124,141,149,6,64,208,172,52,103,48,187,40,71,116,33,104,0],[160,90,170,127,179,67,12,123,71,79,23,122,229,29,213,122,34,69,181,254,203,6,243,201,181,233,44,238,146,240,103,139,18,0],[160,18,211,61,40,55,234,247,33,7,159,159,174,64,123,239,20,102,13,187,67,159,98,146,21,222,108,138,32,76,187,244,21,0],[160,54,243,254,76,6,88,205,53,74,124,175,199,98,89,194,33,243,175,131,71,90,215,207,24,48,25,17,82,169,7,59,167,0],[160,170,69,217,55,220,175,55,227,159,109,196,254,133,192,107,242,152,205,241,45,188,144,213,236,83,234,118,125,181,238,137,172,0],[160,7,42,104,160,164,108,24,150,155,80,19,239,191,17,249,33,235,95,45,142,104,158,207,124,80,86,9,28,35,231,198,165,0],[160,143,188,52,103,215,28,93,231,36,56,33,12,100,67,242,235,119,47,66,242,170,75,121,9,67,184,107,64,125,164,244,110,0],[160,93,19,99,229,98,232,246,242,174,142,205,231,229,230,95,69,31,207,171,249,73,149,43,140,96,80,182,222,134,49,185,33,0],[160,207,46,85,51,238,92,187,32,3,128,217,105,234,234,37,174,140,179,58,48,52,46,148,220,133,59,208,228,223,128,196,59,0],[160,62,42,203,162,37,31,200,41,44,42,106,163,111,252,210,32,117,1,93,147,127,235,54,252,166,177,134,96,49,74,243,173,0],[160,120,196,156,2,116,243,133,85,34,208,110,157,55,98,169,50,8,243,180,83,51,35,218,45,79,17,193,33,87,3,136,43,0],[160,207,102,94,227,215,112,30,109,156,167,165,19,68,226,34,46,146,31,113,229,145,221,170,49,223,199,165,77,29,112,212,226,0],[160,25,174,119,134,195,119,9,119,223,57,217,190,101,16,179,154,23,195,203,106,183,151,251,207,30,103,142,3,51,81,194,229,0],[160,185,131,130,21,163,126,165,12,214,94,37,168,224,68,7,80,173,77,74,151,125,203,19,156,7,105,158,174,233,98,18,155,0],[160,180,87,26,138,14,5,91,78,153,42,57,87,43,71,55,8,212,215,64,0,0,239,199,158,24,162,149,5,22,23,165,213,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,83,204,74,9,193,206,183,37,118,178,161,220,90,22,133,196,15,213,65,141,119,159,75,33,66,54,17,193,247,88,238,179,160,105,111,159,238,102,32,198,144,35,119,199,128,235,43,192,31,124,141,149,6,64,208,172,52,103,48,187,40,71,116,33,104,160,90,170,127,179,67,12,123,71,79,23,122,229,29,213,122,34,69,181,254,203,6,243,201,181,233,44,238,146,240,103,139,18,160,18,211,61,40,55,234,247,33,7,159,159,174,64,123,239,20,102,13,187,67,159,98,146,21,222,108,138,32,76,187,244,21,160,54,243,254,76,6,88,205,53,74,124,175,199,98,89,194,33,243,175,131,71,90,215,207,24,48,25,17,82,169,7,59,167,160,170,69,217,55,220,175,55,227,159,109,196,254,133,192,107,242,152,205,241,45,188,144,213,236,83,234,118,125,181,238,137,172,160,7,42,104,160,164,108,24,150,155,80,19,239,191,17,249,33,235,95,45,142,104,158,207,124,80,86,9,28,35,231,198,165,160,143,188,52,103,215,28,93,231,36,56,33,12,100,67,242,235,119,47,66,242,170,75,121,9,67,184,107,64,125,164,244,110,160,93,19,99,229,98,232,246,242,174,142,205,231,229,230,95,69,31,207,171,249,73,149,43,140,96,80,182,222,134,49,185,33,160,207,46,85,51,238,92,187,32,3,128,217,105,234,234,37,174,140,179,58,48,52,46,148,220,133,59,208,228,223,128,196,59,160,62,42,203,162,37,31,200,41,44,42,106,163,111,252,210,32,117,1,93,147,127,235,54,252,166,177,134,96,49,74,243,173,160,120,196,156,2,116,243,133,85,34,208,110,157,55,98,169,50,8,243,180,83,51,35,218,45,79,17,193,33,87,3,136,43,160,207,102,94,227,215,112,30,109,156,167,165,19,68,226,34,46,146,31,113,229,145,221,170,49,223,199,165,77,29,112,212,226,160,25,174,119,134,195,119,9,119,223,57,217,190,101,16,179,154,23,195,203,106,183,151,251,207,30,103,142,3,51,81,194,229,160,185,131,130,21,163,126,165,12,214,94,37,168,224,68,7,80,173,77,74,151,125,203,19,156,7,105,158,174,233,98,18,155,160,180,87,26,138,14,5,91,78,153,42,57,87,43,71,55,8,212,215,64,0,0,239,199,158,24,162,149,5,22,23,165,213,128],[249,2,17,160,83,204,74,9,193,206,183,37,118,178,161,220,90,22,133,196,15,213,65,141,119,159,75,33,66,54,17,193,247,88,238,179,160,105,111,159,238,102,32,198,144,35,119,199,128,235,43,192,31,124,141,149,6,64,208,172,52,103,48,187,40,71,116,33,104,160,90,170,127,179,67,12,123,71,79,23,122,229,29,213,122,34,69,181,254,203,6,243,201,181,233,44,238,146,240,103,139,18,160,18,211,61,40,55,234,247,33,7,159,159,174,64,123,239,20,102,13,187,67,159,98,146,21,222,108,138,32,76,187,244,21,160,54,243,254,76,6,88,205,53,74,124,175,199,98,89,194,33,243,175,131,71,90,215,207,24,48,25,17,82,169,7,59,167,160,170,69,217,55,220,175,55,227,159,109,196,254,133,192,107,242,152,205,241,45,188,144,213,236,83,234,118,125,181,238,137,172,160,7,42,104,160,164,108,24,150,155,80,19,239,191,17,249,33,235,95,45,142,104,158,207,124,80,86,9,28,35,231,198,165,160,143,188,52,103,215,28,93,231,36,56,33,12,100,67,242,235,119,47,66,242,170,75,121,9,67,184,107,64,125,164,244,110,160,93,19,99,229,98,232,246,242,174,142,205,231,229,230,95,69,31,207,171,249,73,149,43,140,96,80,182,222,134,49,185,33,160,207,46,85,51,238,92,187,32,3,128,217,105,234,234,37,174,140,179,58,48,52,46,148,220,133,59,208,228,223,128,196,59,160,62,42,203,162,37,31,200,41,44,42,106,163,111,252,210,32,117,1,93,147,127,235,54,252,166,177,134,96,49,74,243,173,160,120,196,156,2,116,243,133,85,34,208,110,157,55,98,169,50,8,243,180,83,51,35,218,45,79,17,193,33,87,3,136,43,160,207,102,94,227,215,112,30,109,156,167,165,19,68,226,34,46,146,31,113,229,145,221,170,49,223,199,165,77,29,112,212,226,160,25,174,119,134,195,119,9,119,223,57,217,190,101,16,179,154,23,195,203,106,183,151,251,207,30,103,142,3,51,81,194,229,160,185,131,130,21,163,126,165,12,214,94,37,168,224,68,7,80,173,77,74,151,125,203,19,156,7,105,158,174,233,98,18,155,160,180,87,26,138,14,5,91,78,153,42,57,87,43,71,55,8,212,215,64,0,0,239,199,158,24,162,149,5,22,23,165,213,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,1,241],[249,1,241]]}},"account":null,"storage":null,"values":[[160,9,123,27,154,243,56,223,12,152,79,78,168,112,125,59,60,127,186,64,205,149,171,15,173,23,61,106,193,210,190,171,250,0],[160,109,216,93,222,155,153,61,132,158,228,250,192,233,44,235,132,85,38,84,84,197,164,164,46,249,235,220,102,79,174,255,174,0],[160,119,192,111,89,214,12,8,99,235,152,208,21,169,200,194,155,211,59,154,117,101,33,156,80,121,155,159,21,216,100,170,108,0],[160,142,254,100,2,170,195,173,99,52,230,246,199,244,115,200,47,250,208,106,93,107,250,250,94,59,237,44,58,12,96,110,158,0],[160,158,108,135,162,225,93,149,217,62,153,173,242,203,20,170,113,43,17,9,59,73,62,20,44,181,209,157,240,245,97,35,215,0],[160,56,166,134,201,116,135,98,96,91,66,98,144,26,48,94,51,55,175,190,254,77,244,47,195,97,240,237,186,222,132,115,139,0],[160,127,102,126,90,55,171,197,174,245,247,246,108,222,226,24,123,137,13,99,192,162,118,99,103,121,74,193,32,237,158,11,81,0],[160,18,35,57,223,137,0,136,136,55,14,135,137,220,249,131,121,92,58,53,253,186,92,87,116,168,187,219,249,126,27,86,227,0],[160,9,123,27,154,243,56,223,12,152,79,78,168,112,125,59,60,127,186,64,205,149,171,15,173,23,61,106,193,210,190,171,250,0],[160,17,21,118,48,219,45,37,151,225,249,153,166,45,81,99,112,198,151,84,139,105,216,200,137,73,162,112,24,251,34,210,152,0],[160,249,104,84,77,213,78,214,4,165,35,127,232,26,87,209,108,253,103,154,151,117,112,33,73,12,11,210,240,6,41,230,18,0],[160,70,175,188,69,169,55,224,158,2,195,0,50,15,48,44,134,6,14,74,12,151,60,101,165,197,179,152,169,205,242,220,77,0],[160,109,88,246,178,201,149,87,31,51,232,88,242,76,67,49,77,219,230,32,218,34,150,26,58,19,28,35,122,240,6,94,28,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,217,104,2,205,247,31,93,89,11,90,89,107,251,131,185,81,83,161,190,86,25,121,206,187,203,29,150,252,10,114,84,152,0],[160,255,127,172,140,207,186,55,167,95,116,41,134,244,104,35,250,76,133,72,61,226,154,33,140,208,109,238,92,203,41,2,27,0],[160,195,60,117,219,145,77,172,53,162,133,84,144,116,108,2,107,71,239,142,172,150,159,147,94,176,15,5,160,121,124,170,83,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,241,160,109,216,93,222,155,153,61,132,158,228,250,192,233,44,235,132,85,38,84,84,197,164,164,46,249,235,220,102,79,174,255,174,160,119,192,111,89,214,12,8,99,235,152,208,21,169,200,194,155,211,59,154,117,101,33,156,80,121,155,159,21,216,100,170,108,160,142,254,100,2,170,195,173,99,52,230,246,199,244,115,200,47,250,208,106,93,107,250,250,94,59,237,44,58,12,96,110,158,160,158,108,135,162,225,93,149,217,62,153,173,242,203,20,170,113,43,17,9,59,73,62,20,44,181,209,157,240,245,97,35,215,160,56,166,134,201,116,135,98,96,91,66,98,144,26,48,94,51,55,175,190,254,77,244,47,195,97,240,237,186,222,132,115,139,160,127,102,126,90,55,171,197,174,245,247,246,108,222,226,24,123,137,13,99,192,162,118,99,103,121,74,193,32,237,158,11,81,160,18,35,57,223,137,0,136,136,55,14,135,137,220,249,131,121,92,58,53,253,186,92,87,116,168,187,219,249,126,27,86,227,160,9,123,27,154,243,56,223,12,152,79,78,168,112,125,59,60,127,186,64,205,149,171,15,173,23,61,106,193,210,190,171,250,160,17,21,118,48,219,45,37,151,225,249,153,166,45,81,99,112,198,151,84,139,105,216,200,137,73,162,112,24,251,34,210,152,160,249,104,84,77,213,78,214,4,165,35,127,232,26,87,209,108,253,103,154,151,117,112,33,73,12,11,210,240,6,41,230,18,160,70,175,188,69,169,55,224,158,2,195,0,50,15,48,44,134,6,14,74,12,151,60,101,165,197,179,152,169,205,242,220,77,160,109,88,246,178,201,149,87,31,51,232,88,242,76,67,49,77,219,230,32,218,34,150,26,58,19,28,35,122,240,6,94,28,128,160,217,104,2,205,247,31,93,89,11,90,89,107,251,131,185,81,83,161,190,86,25,121,206,187,203,29,150,252,10,114,84,152,160,255,127,172,140,207,186,55,167,95,116,41,134,244,104,35,250,76,133,72,61,226,154,33,140,208,109,238,92,203,41,2,27,160,195,60,117,219,145,77,172,53,162,133,84,144,116,108,2,107,71,239,142,172,150,159,147,94,176,15,5,160,121,124,170,83,128],[249,1,241,160,109,216,93,222,155,153,61,132,158,228,250,192,233,44,235,132,85,38,84,84,197,164,164,46,249,235,220,102,79,174,255,174,160,119,192,111,89,214,12,8,99,235,152,208,21,169,200,194,155,211,59,154,117,101,33,156,80,121,155,159,21,216,100,170,108,160,142,254,100,2,170,195,173,99,52,230,246,199,244,115,200,47,250,208,106,93,107,250,250,94,59,237,44,58,12,96,110,158,160,158,108,135,162,225,93,149,217,62,153,173,242,203,20,170,113,43,17,9,59,73,62,20,44,181,209,157,240,245,97,35,215,160,56,166,134,201,116,135,98,96,91,66,98,144,26,48,94,51,55,175,190,254,77,244,47,195,97,240,237,186,222,132,115,139,160,127,102,126,90,55,171,197,174,245,247,246,108,222,226,24,123,137,13,99,192,162,118,99,103,121,74,193,32,237,158,11,81,160,18,35,57,223,137,0,136,136,55,14,135,137,220,249,131,121,92,58,53,253,186,92,87,116,168,187,219,249,126,27,86,227,160,9,123,27,154,243,56,223,12,152,79,78,168,112,125,59,60,127,186,64,205,149,171,15,173,23,61,106,193,210,190,171,250,160,17,21,118,48,219,45,37,151,225,249,153,166,45,81,99,112,198,151,84,139,105,216,200,137,73,162,112,24,251,34,210,152,160,249,104,84,77,213,78,214,4,165,35,127,232,26,87,209,108,253,103,154,151,117,112,33,73,12,11,210,240,6,41,230,18,160,70,175,188,69,169,55,224,158,2,195,0,50,15,48,44,134,6,14,74,12,151,60,101,165,197,179,152,169,205,242,220,77,160,109,88,246,178,201,149,87,31,51,232,88,242,76,67,49,77,219,230,32,218,34,150,26,58,19,28,35,122,240,6,94,28,128,160,217,104,2,205,247,31,93,89,11,90,89,107,251,131,185,81,83,161,190,86,25,121,206,187,203,29,150,252,10,114,84,152,160,255,127,172,140,207,186,55,167,95,116,41,134,244,104,35,250,76,133,72,61,226,154,33,140,208,109,238,92,203,41,2,27,160,195,60,117,219,145,77,172,53,162,133,84,144,116,108,2,107,71,239,142,172,150,159,147,94,176,15,5,160,121,124,170,83,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[248,145],[248,145]]}},"account":null,"storage":null,"values":[[160,49,147,37,57,223,197,133,205,247,21,170,162,88,34,138,138,140,72,96,182,189,17,243,184,3,170,108,226,136,194,179,79,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,72,33,193,255,166,32,87,221,72,17,3,12,78,58,161,92,153,250,64,220,101,238,119,139,95,175,219,176,156,79,225,35,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,49,147,37,57,223,197,133,205,247,21,170,162,88,34,138,138,140,72,96,182,189,17,243,184,3,170,108,226,136,194,179,79,0],[160,97,133,19,253,20,177,243,216,51,3,233,99,48,179,224,37,159,9,66,70,185,19,212,133,175,98,195,1,74,8,215,10,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,108,139,184,46,43,52,91,97,194,100,196,243,137,176,38,120,201,178,162,224,33,73,97,149,84,48,79,30,76,187,226,134,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,145,128,160,72,33,193,255,166,32,87,221,72,17,3,12,78,58,161,92,153,250,64,220,101,238,119,139,95,175,219,176,156,79,225,35,128,128,128,128,128,128,160,49,147,37,57,223,197,133,205,247,21,170,162,88,34,138,138,140,72,96,182,189,17,243,184,3,170,108,226,136,194,179,79,160,97,133,19,253,20,177,243,216,51,3,233,99,48,179,224,37,159,9,66,70,185,19,212,133,175,98,195,1,74,8,215,10,128,128,128,160,108,139,184,46,43,52,91,97,194,100,196,243,137,176,38,120,201,178,162,224,33,73,97,149,84,48,79,30,76,187,226,134,128,128,128],[248,145,128,160,72,33,193,255,166,32,87,221,72,17,3,12,78,58,161,92,153,250,64,220,101,238,119,139,95,175,219,176,156,79,225,35,128,128,128,128,128,128,160,49,147,37,57,223,197,133,205,247,21,170,162,88,34,138,138,140,72,96,182,189,17,243,184,3,170,108,226,136,194,179,79,160,97,133,19,253,20,177,243,216,51,3,233,99,48,179,224,37,159,9,66,70,185,19,212,133,175,98,195,1,74,8,215,10,128,128,128,160,108,139,184,46,43,52,91,97,194,100,196,243,137,176,38,120,201,178,162,224,33,73,97,149,84,48,79,30,76,187,226,134,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[80,239,191,18,88,1,56,188,98,60,149,117,114,134,223,78,36,235,129,201],"key":[222,120,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184],"list_rlp_bytes":[[248,104],[248,104]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,104]},"storage":null,"values":[[159,32,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,0,0],[159,32,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,40,202,45,146,142,54,74,34,215,62,205,51,98,137,208,115,191,30,250,160,113,137,69,62,163,196,170,139,53,18,81,96,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,40,202,45,146,142,54,74,34,215,62,205,51,98,137,208,115,191,30,250,160,113,137,69,62,163,196,170,139,53,18,81,96,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,32,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,0,0]],"keccak_data":[[248,104,159,32,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,184,70,248,68,128,128,160,40,202,45,146,142,54,74,34,215,62,205,51,98,137,208,115,191,30,250,160,113,137,69,62,163,196,170,139,53,18,81,96,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,104,159,32,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,184,70,248,68,128,128,160,40,202,45,146,142,54,74,34,215,62,205,51,98,137,208,115,191,30,250,160,113,137,69,62,163,196,170,139,53,18,81,96,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[80,239,191,18,88,1,56,188,98,60,149,117,114,134,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[247]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[237],[237]]}},"account":null,"storage":null,"values":[[206,140,48,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[206,140,48,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[206,140,48,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,131,32,100,192,26,10,249,123,103,55,126,227,156,51,43,248,141,13,184,86,199,239,167,52,34,242,212,138,29,106,251,72,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,131,32,100,192,26,10,249,123,103,55,126,227,156,51,43,248,141,13,184,86,199,239,167,52,34,242,212,138,29,106,251,72,0]],"keccak_data":[[237,128,206,140,48,0,0,0,0,0,0,0,0,0,0,0,17,128,206,140,48,0,0,0,0,0,0,0,0,0,0,0,17,128,128,128,128,128,128,128,128,128,128,128,128,128],[237,128,206,140,48,0,0,0,0,0,0,0,0,0,0,0,17,128,206,140,48,0,0,0,0,0,0,0,0,0,0,0,17,128,128,128,128,128,128,128,128,128,128,128,128,128],[247,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,131,32,100,192,26,10,249,123,103,55,126,227,156,51,43,248,141,13,184,86,199,239,167,52,34,242,212,138,29,106,251,72],[247,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,131,32,100,192,26,10,249,123,103,55,126,227,156,51,43,248,141,13,184,86,199,239,167,52,34,242,212,138,29,106,251,72]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0],"key":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0],"list_rlp_bytes":[[206],[206]],"value_rlp_bytes":[[17],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[140,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[140,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[206,140,48,0,0,0,0,0,0,0,0,0,0,0,17],[206,140,48,0,0,0,0,0,0,0,0,0,0,0,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/LeafWithOneNibble.json b/zkevm-circuits/src/mpt_circuit/tests/LeafWithOneNibble.json new file mode 100644 index 0000000000..d048aca1b5 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/LeafWithOneNibble.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":true,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,95,155,106,188,61,1,197,146,141,248,54,187,177,227,247,203,196,68,164,92,1,181,178,137,237,20,181,78,105,166,8,73,0],[160,17,60,118,72,2,154,48,107,126,111,136,36,164,58,44,140,134,229,128,58,175,114,12,183,137,16,224,125,236,217,247,219,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,5,56,105,247,23,44,74,128,203,215,176,249,24,109,188,39,196,15,100,133,242,136,240,245,87,7,118,53,25,195,224,57,0],[160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,0],[160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,0],[160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,0],[160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,0],[160,78,68,202,236,255,69,201,137,31,116,246,162,21,103,53,136,110,237,246,241,167,51,98,142,188,128,46,199,157,132,70,72,0],[160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,0],[160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,0],[160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,0],[160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,0],[160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,0],[160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,0],[160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,0],[160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,0],[160,106,9,61,252,117,15,57,137,120,69,22,201,95,32,72,223,62,74,224,181,236,168,134,36,169,159,229,72,138,46,248,19,0],[160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,0],[160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,160,78,68,202,236,255,69,201,137,31,116,246,162,21,103,53,136,110,237,246,241,167,51,98,142,188,128,46,199,157,132,70,72,160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,160,106,9,61,252,117,15,57,137,120,69,22,201,95,32,72,223,62,74,224,181,236,168,134,36,169,159,229,72,138,46,248,19,160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,128],[249,2,17,160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,160,78,68,202,236,255,69,201,137,31,116,246,162,21,103,53,136,110,237,246,241,167,51,98,142,188,128,46,199,157,132,70,72,160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,160,5,56,105,247,23,44,74,128,203,215,176,249,24,109,188,39,196,15,100,133,242,136,240,245,87,7,118,53,25,195,224,57,160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,188,90,122,129,237,138,52,76,253,155,92,168,243,32,150,182,211,117,180,3,33,68,140,231,151,255,229,125,151,144,248,35,0],[160,83,204,74,9,193,206,183,37,118,178,161,220,90,22,133,196,15,213,65,141,119,159,75,33,66,54,17,193,247,88,238,179,0],[160,105,111,159,238,102,32,198,144,35,119,199,128,235,43,192,31,124,141,149,6,64,208,172,52,103,48,187,40,71,116,33,104,0],[160,90,170,127,179,67,12,123,71,79,23,122,229,29,213,122,34,69,181,254,203,6,243,201,181,233,44,238,146,240,103,139,18,0],[160,18,211,61,40,55,234,247,33,7,159,159,174,64,123,239,20,102,13,187,67,159,98,146,21,222,108,138,32,76,187,244,21,0],[160,54,243,254,76,6,88,205,53,74,124,175,199,98,89,194,33,243,175,131,71,90,215,207,24,48,25,17,82,169,7,59,167,0],[160,170,69,217,55,220,175,55,227,159,109,196,254,133,192,107,242,152,205,241,45,188,144,213,236,83,234,118,125,181,238,137,172,0],[160,7,42,104,160,164,108,24,150,155,80,19,239,191,17,249,33,235,95,45,142,104,158,207,124,80,86,9,28,35,231,198,165,0],[160,143,188,52,103,215,28,93,231,36,56,33,12,100,67,242,235,119,47,66,242,170,75,121,9,67,184,107,64,125,164,244,110,0],[160,93,19,99,229,98,232,246,242,174,142,205,231,229,230,95,69,31,207,171,249,73,149,43,140,96,80,182,222,134,49,185,33,0],[160,207,46,85,51,238,92,187,32,3,128,217,105,234,234,37,174,140,179,58,48,52,46,148,220,133,59,208,228,223,128,196,59,0],[160,62,42,203,162,37,31,200,41,44,42,106,163,111,252,210,32,117,1,93,147,127,235,54,252,166,177,134,96,49,74,243,173,0],[160,120,196,156,2,116,243,133,85,34,208,110,157,55,98,169,50,8,243,180,83,51,35,218,45,79,17,193,33,87,3,136,43,0],[160,207,102,94,227,215,112,30,109,156,167,165,19,68,226,34,46,146,31,113,229,145,221,170,49,223,199,165,77,29,112,212,226,0],[160,25,174,119,134,195,119,9,119,223,57,217,190,101,16,179,154,23,195,203,106,183,151,251,207,30,103,142,3,51,81,194,229,0],[160,94,15,126,142,41,150,113,168,56,168,71,0,204,83,185,63,53,142,115,83,108,72,82,235,149,151,88,238,224,125,11,249,0],[160,180,87,26,138,14,5,91,78,153,42,57,87,43,71,55,8,212,215,64,0,0,239,199,158,24,162,149,5,22,23,165,213,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,83,204,74,9,193,206,183,37,118,178,161,220,90,22,133,196,15,213,65,141,119,159,75,33,66,54,17,193,247,88,238,179,160,105,111,159,238,102,32,198,144,35,119,199,128,235,43,192,31,124,141,149,6,64,208,172,52,103,48,187,40,71,116,33,104,160,90,170,127,179,67,12,123,71,79,23,122,229,29,213,122,34,69,181,254,203,6,243,201,181,233,44,238,146,240,103,139,18,160,18,211,61,40,55,234,247,33,7,159,159,174,64,123,239,20,102,13,187,67,159,98,146,21,222,108,138,32,76,187,244,21,160,54,243,254,76,6,88,205,53,74,124,175,199,98,89,194,33,243,175,131,71,90,215,207,24,48,25,17,82,169,7,59,167,160,170,69,217,55,220,175,55,227,159,109,196,254,133,192,107,242,152,205,241,45,188,144,213,236,83,234,118,125,181,238,137,172,160,7,42,104,160,164,108,24,150,155,80,19,239,191,17,249,33,235,95,45,142,104,158,207,124,80,86,9,28,35,231,198,165,160,143,188,52,103,215,28,93,231,36,56,33,12,100,67,242,235,119,47,66,242,170,75,121,9,67,184,107,64,125,164,244,110,160,93,19,99,229,98,232,246,242,174,142,205,231,229,230,95,69,31,207,171,249,73,149,43,140,96,80,182,222,134,49,185,33,160,207,46,85,51,238,92,187,32,3,128,217,105,234,234,37,174,140,179,58,48,52,46,148,220,133,59,208,228,223,128,196,59,160,62,42,203,162,37,31,200,41,44,42,106,163,111,252,210,32,117,1,93,147,127,235,54,252,166,177,134,96,49,74,243,173,160,120,196,156,2,116,243,133,85,34,208,110,157,55,98,169,50,8,243,180,83,51,35,218,45,79,17,193,33,87,3,136,43,160,207,102,94,227,215,112,30,109,156,167,165,19,68,226,34,46,146,31,113,229,145,221,170,49,223,199,165,77,29,112,212,226,160,25,174,119,134,195,119,9,119,223,57,217,190,101,16,179,154,23,195,203,106,183,151,251,207,30,103,142,3,51,81,194,229,160,94,15,126,142,41,150,113,168,56,168,71,0,204,83,185,63,53,142,115,83,108,72,82,235,149,151,88,238,224,125,11,249,160,180,87,26,138,14,5,91,78,153,42,57,87,43,71,55,8,212,215,64,0,0,239,199,158,24,162,149,5,22,23,165,213,128],[249,2,17,160,83,204,74,9,193,206,183,37,118,178,161,220,90,22,133,196,15,213,65,141,119,159,75,33,66,54,17,193,247,88,238,179,160,105,111,159,238,102,32,198,144,35,119,199,128,235,43,192,31,124,141,149,6,64,208,172,52,103,48,187,40,71,116,33,104,160,90,170,127,179,67,12,123,71,79,23,122,229,29,213,122,34,69,181,254,203,6,243,201,181,233,44,238,146,240,103,139,18,160,18,211,61,40,55,234,247,33,7,159,159,174,64,123,239,20,102,13,187,67,159,98,146,21,222,108,138,32,76,187,244,21,160,54,243,254,76,6,88,205,53,74,124,175,199,98,89,194,33,243,175,131,71,90,215,207,24,48,25,17,82,169,7,59,167,160,170,69,217,55,220,175,55,227,159,109,196,254,133,192,107,242,152,205,241,45,188,144,213,236,83,234,118,125,181,238,137,172,160,7,42,104,160,164,108,24,150,155,80,19,239,191,17,249,33,235,95,45,142,104,158,207,124,80,86,9,28,35,231,198,165,160,143,188,52,103,215,28,93,231,36,56,33,12,100,67,242,235,119,47,66,242,170,75,121,9,67,184,107,64,125,164,244,110,160,93,19,99,229,98,232,246,242,174,142,205,231,229,230,95,69,31,207,171,249,73,149,43,140,96,80,182,222,134,49,185,33,160,207,46,85,51,238,92,187,32,3,128,217,105,234,234,37,174,140,179,58,48,52,46,148,220,133,59,208,228,223,128,196,59,160,62,42,203,162,37,31,200,41,44,42,106,163,111,252,210,32,117,1,93,147,127,235,54,252,166,177,134,96,49,74,243,173,160,120,196,156,2,116,243,133,85,34,208,110,157,55,98,169,50,8,243,180,83,51,35,218,45,79,17,193,33,87,3,136,43,160,207,102,94,227,215,112,30,109,156,167,165,19,68,226,34,46,146,31,113,229,145,221,170,49,223,199,165,77,29,112,212,226,160,25,174,119,134,195,119,9,119,223,57,217,190,101,16,179,154,23,195,203,106,183,151,251,207,30,103,142,3,51,81,194,229,160,188,90,122,129,237,138,52,76,253,155,92,168,243,32,150,182,211,117,180,3,33,68,140,231,151,255,229,125,151,144,248,35,160,180,87,26,138,14,5,91,78,153,42,57,87,43,71,55,8,212,215,64,0,0,239,199,158,24,162,149,5,22,23,165,213,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,1,241],[249,1,241]]}},"account":null,"storage":null,"values":[[160,103,0,152,105,44,97,53,18,70,217,124,84,93,153,183,235,97,119,6,200,226,88,107,154,96,60,86,223,186,232,139,129,0],[160,109,216,93,222,155,153,61,132,158,228,250,192,233,44,235,132,85,38,84,84,197,164,164,46,249,235,220,102,79,174,255,174,0],[160,119,192,111,89,214,12,8,99,235,152,208,21,169,200,194,155,211,59,154,117,101,33,156,80,121,155,159,21,216,100,170,108,0],[160,142,254,100,2,170,195,173,99,52,230,246,199,244,115,200,47,250,208,106,93,107,250,250,94,59,237,44,58,12,96,110,158,0],[160,158,108,135,162,225,93,149,217,62,153,173,242,203,20,170,113,43,17,9,59,73,62,20,44,181,209,157,240,245,97,35,215,0],[160,56,166,134,201,116,135,98,96,91,66,98,144,26,48,94,51,55,175,190,254,77,244,47,195,97,240,237,186,222,132,115,139,0],[160,127,102,126,90,55,171,197,174,245,247,246,108,222,226,24,123,137,13,99,192,162,118,99,103,121,74,193,32,237,158,11,81,0],[160,18,35,57,223,137,0,136,136,55,14,135,137,220,249,131,121,92,58,53,253,186,92,87,116,168,187,219,249,126,27,86,227,0],[160,194,45,246,147,192,250,233,66,162,130,96,199,32,84,111,232,19,72,222,179,82,162,39,206,63,64,97,207,175,141,184,116,0],[160,17,21,118,48,219,45,37,151,225,249,153,166,45,81,99,112,198,151,84,139,105,216,200,137,73,162,112,24,251,34,210,152,0],[160,249,104,84,77,213,78,214,4,165,35,127,232,26,87,209,108,253,103,154,151,117,112,33,73,12,11,210,240,6,41,230,18,0],[160,70,175,188,69,169,55,224,158,2,195,0,50,15,48,44,134,6,14,74,12,151,60,101,165,197,179,152,169,205,242,220,77,0],[160,109,88,246,178,201,149,87,31,51,232,88,242,76,67,49,77,219,230,32,218,34,150,26,58,19,28,35,122,240,6,94,28,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,217,104,2,205,247,31,93,89,11,90,89,107,251,131,185,81,83,161,190,86,25,121,206,187,203,29,150,252,10,114,84,152,0],[160,255,127,172,140,207,186,55,167,95,116,41,134,244,104,35,250,76,133,72,61,226,154,33,140,208,109,238,92,203,41,2,27,0],[160,195,60,117,219,145,77,172,53,162,133,84,144,116,108,2,107,71,239,142,172,150,159,147,94,176,15,5,160,121,124,170,83,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,241,160,109,216,93,222,155,153,61,132,158,228,250,192,233,44,235,132,85,38,84,84,197,164,164,46,249,235,220,102,79,174,255,174,160,119,192,111,89,214,12,8,99,235,152,208,21,169,200,194,155,211,59,154,117,101,33,156,80,121,155,159,21,216,100,170,108,160,142,254,100,2,170,195,173,99,52,230,246,199,244,115,200,47,250,208,106,93,107,250,250,94,59,237,44,58,12,96,110,158,160,158,108,135,162,225,93,149,217,62,153,173,242,203,20,170,113,43,17,9,59,73,62,20,44,181,209,157,240,245,97,35,215,160,56,166,134,201,116,135,98,96,91,66,98,144,26,48,94,51,55,175,190,254,77,244,47,195,97,240,237,186,222,132,115,139,160,127,102,126,90,55,171,197,174,245,247,246,108,222,226,24,123,137,13,99,192,162,118,99,103,121,74,193,32,237,158,11,81,160,18,35,57,223,137,0,136,136,55,14,135,137,220,249,131,121,92,58,53,253,186,92,87,116,168,187,219,249,126,27,86,227,160,194,45,246,147,192,250,233,66,162,130,96,199,32,84,111,232,19,72,222,179,82,162,39,206,63,64,97,207,175,141,184,116,160,17,21,118,48,219,45,37,151,225,249,153,166,45,81,99,112,198,151,84,139,105,216,200,137,73,162,112,24,251,34,210,152,160,249,104,84,77,213,78,214,4,165,35,127,232,26,87,209,108,253,103,154,151,117,112,33,73,12,11,210,240,6,41,230,18,160,70,175,188,69,169,55,224,158,2,195,0,50,15,48,44,134,6,14,74,12,151,60,101,165,197,179,152,169,205,242,220,77,160,109,88,246,178,201,149,87,31,51,232,88,242,76,67,49,77,219,230,32,218,34,150,26,58,19,28,35,122,240,6,94,28,128,160,217,104,2,205,247,31,93,89,11,90,89,107,251,131,185,81,83,161,190,86,25,121,206,187,203,29,150,252,10,114,84,152,160,255,127,172,140,207,186,55,167,95,116,41,134,244,104,35,250,76,133,72,61,226,154,33,140,208,109,238,92,203,41,2,27,160,195,60,117,219,145,77,172,53,162,133,84,144,116,108,2,107,71,239,142,172,150,159,147,94,176,15,5,160,121,124,170,83,128],[249,1,241,160,109,216,93,222,155,153,61,132,158,228,250,192,233,44,235,132,85,38,84,84,197,164,164,46,249,235,220,102,79,174,255,174,160,119,192,111,89,214,12,8,99,235,152,208,21,169,200,194,155,211,59,154,117,101,33,156,80,121,155,159,21,216,100,170,108,160,142,254,100,2,170,195,173,99,52,230,246,199,244,115,200,47,250,208,106,93,107,250,250,94,59,237,44,58,12,96,110,158,160,158,108,135,162,225,93,149,217,62,153,173,242,203,20,170,113,43,17,9,59,73,62,20,44,181,209,157,240,245,97,35,215,160,56,166,134,201,116,135,98,96,91,66,98,144,26,48,94,51,55,175,190,254,77,244,47,195,97,240,237,186,222,132,115,139,160,127,102,126,90,55,171,197,174,245,247,246,108,222,226,24,123,137,13,99,192,162,118,99,103,121,74,193,32,237,158,11,81,160,18,35,57,223,137,0,136,136,55,14,135,137,220,249,131,121,92,58,53,253,186,92,87,116,168,187,219,249,126,27,86,227,160,103,0,152,105,44,97,53,18,70,217,124,84,93,153,183,235,97,119,6,200,226,88,107,154,96,60,86,223,186,232,139,129,160,17,21,118,48,219,45,37,151,225,249,153,166,45,81,99,112,198,151,84,139,105,216,200,137,73,162,112,24,251,34,210,152,160,249,104,84,77,213,78,214,4,165,35,127,232,26,87,209,108,253,103,154,151,117,112,33,73,12,11,210,240,6,41,230,18,160,70,175,188,69,169,55,224,158,2,195,0,50,15,48,44,134,6,14,74,12,151,60,101,165,197,179,152,169,205,242,220,77,160,109,88,246,178,201,149,87,31,51,232,88,242,76,67,49,77,219,230,32,218,34,150,26,58,19,28,35,122,240,6,94,28,128,160,217,104,2,205,247,31,93,89,11,90,89,107,251,131,185,81,83,161,190,86,25,121,206,187,203,29,150,252,10,114,84,152,160,255,127,172,140,207,186,55,167,95,116,41,134,244,104,35,250,76,133,72,61,226,154,33,140,208,109,238,92,203,41,2,27,160,195,60,117,219,145,77,172,53,162,133,84,144,116,108,2,107,71,239,142,172,150,159,147,94,176,15,5,160,121,124,170,83,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[248,145],[248,145]]}},"account":null,"storage":null,"values":[[160,51,62,189,72,136,190,111,252,97,171,143,21,205,125,241,199,116,194,187,21,206,211,61,218,139,241,22,180,122,151,180,180,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,72,33,193,255,166,32,87,221,72,17,3,12,78,58,161,92,153,250,64,220,101,238,119,139,95,175,219,176,156,79,225,35,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,139,181,184,227,159,13,151,185,111,175,5,39,242,127,10,231,74,99,176,235,166,142,159,184,132,26,101,96,35,140,27,253,0],[160,97,133,19,253,20,177,243,216,51,3,233,99,48,179,224,37,159,9,66,70,185,19,212,133,175,98,195,1,74,8,215,10,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,108,139,184,46,43,52,91,97,194,100,196,243,137,176,38,120,201,178,162,224,33,73,97,149,84,48,79,30,76,187,226,134,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,145,128,160,72,33,193,255,166,32,87,221,72,17,3,12,78,58,161,92,153,250,64,220,101,238,119,139,95,175,219,176,156,79,225,35,128,128,128,128,128,128,160,139,181,184,227,159,13,151,185,111,175,5,39,242,127,10,231,74,99,176,235,166,142,159,184,132,26,101,96,35,140,27,253,160,97,133,19,253,20,177,243,216,51,3,233,99,48,179,224,37,159,9,66,70,185,19,212,133,175,98,195,1,74,8,215,10,128,128,128,160,108,139,184,46,43,52,91,97,194,100,196,243,137,176,38,120,201,178,162,224,33,73,97,149,84,48,79,30,76,187,226,134,128,128,128],[248,145,128,160,72,33,193,255,166,32,87,221,72,17,3,12,78,58,161,92,153,250,64,220,101,238,119,139,95,175,219,176,156,79,225,35,128,128,128,128,128,128,160,51,62,189,72,136,190,111,252,97,171,143,21,205,125,241,199,116,194,187,21,206,211,61,218,139,241,22,180,122,151,180,180,160,97,133,19,253,20,177,243,216,51,3,233,99,48,179,224,37,159,9,66,70,185,19,212,133,175,98,195,1,74,8,215,10,128,128,128,160,108,139,184,46,43,52,91,97,194,100,196,243,137,176,38,120,201,178,162,224,33,73,97,149,84,48,79,30,76,187,226,134,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[80,239,191,18,88,1,56,188,98,60,149,117,114,134,223,78,36,235,129,201],"key":[222,120,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184],"list_rlp_bytes":[[248,104],[248,104]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,104]},"storage":null,"values":[[159,32,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,0,0],[159,32,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,142,49,68,184,167,115,149,121,142,251,109,168,13,207,117,21,127,33,57,64,235,61,194,235,197,205,248,136,62,94,241,59,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,235,25,110,2,142,130,249,199,51,110,237,28,224,162,68,1,129,46,191,7,171,85,37,52,54,153,11,108,125,91,3,68,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,32,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,0,0]],"keccak_data":[[248,104,159,32,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,184,70,248,68,128,128,160,142,49,68,184,167,115,149,121,142,251,109,168,13,207,117,21,127,33,57,64,235,61,194,235,197,205,248,136,62,94,241,59,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,104,159,32,246,184,198,61,33,45,197,58,196,129,133,210,48,128,228,223,90,105,143,227,55,221,219,111,227,231,120,76,129,184,184,70,248,68,128,128,160,235,25,110,2,142,130,249,199,51,110,237,28,224,162,68,1,129,46,191,7,171,85,37,52,54,153,11,108,125,91,3,68,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[80,239,191,18,88,1,56,188,98,60,149,117,114,134,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":true,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[247]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[213],[213]]}},"account":null,"storage":null,"values":[[194,48,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[194,48,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[194,48,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[213,128,194,48,1,128,194,48,1,128,128,128,128,128,128,128,128,128,128,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[213,128,194,48,17,128,194,48,1,128,128,128,128,128,128,128,128,128,128,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[213,128,194,48,1,128,194,48,1,128,128,128,128,128,128,128,128,128,128,128,128,128],[213,128,194,48,17,128,194,48,1,128,128,128,128,128,128,128,128,128,128,128,128,128],[247,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,128,194,48,1,128,194,48,1,128,128,128,128,128,128,128,128,128,128,128,128,128],[247,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,128,194,48,17,128,194,48,1,128,128,128,128,128,128,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16],"key":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16],"list_rlp_bytes":[[194],[194]],"value_rlp_bytes":[[1],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[194,48,1],[194,48,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/NonExistingAccount.json b/zkevm-circuits/src/mpt_circuit/tests/NonExistingAccount.json new file mode 100644 index 0000000000..e64b9cb5f8 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/NonExistingAccount.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"AccountDoesNotExist"},"extension_branch":null,"account":null,"storage":null,"values":[[160,92,69,153,141,251,249,206,112,188,187,128,87,78,215,166,34,146,45,44,119,94,10,35,49,254,90,139,141,204,153,244,144,0],[160,92,69,153,141,251,249,206,112,188,187,128,87,78,215,166,34,146,45,44,119,94,10,35,49,254,90,139,141,204,153,244,144,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,102,201,63,187,90,100,67,28,66,169,235,107,142,189,159,208,34,47,59,148,229,29,242,190,206,105,91,103,217,108,220,3,0],[160,62,81,246,216,50,34,109,164,244,230,118,34,30,57,143,168,201,163,53,157,138,200,83,22,217,54,9,12,142,74,113,119,0],[160,110,58,129,42,7,242,95,48,22,117,24,235,247,115,27,159,148,240,189,82,238,245,24,104,4,88,96,153,87,62,124,87,0],[160,23,125,132,126,57,77,125,108,183,122,223,20,200,11,140,116,8,197,125,77,164,229,34,187,130,255,11,5,123,106,18,226,0],[160,34,142,142,168,173,99,151,78,20,223,49,167,173,193,155,22,185,57,77,94,140,81,219,8,205,119,152,79,221,53,32,207,0],[160,47,68,110,156,219,87,42,252,153,153,146,44,71,68,241,42,115,255,196,172,147,166,193,209,18,197,101,149,78,252,80,101,0],[160,177,72,39,32,231,101,153,80,19,87,43,118,153,180,111,107,120,208,26,121,107,122,223,78,248,252,112,146,129,121,183,249,0],[160,166,43,253,9,132,156,69,206,240,132,245,215,140,18,136,28,76,115,232,35,55,46,97,106,111,29,136,215,243,244,104,17,0],[160,81,197,227,235,119,136,89,180,1,44,243,14,3,35,252,32,39,239,6,187,20,67,5,160,124,3,15,223,92,185,169,242,0],[160,149,116,118,68,110,184,206,46,175,107,154,14,16,171,116,53,96,139,243,244,119,49,149,255,105,200,203,196,178,219,6,82,0],[160,110,155,225,108,252,161,111,115,34,161,168,254,20,210,73,55,53,84,44,62,235,227,145,125,56,152,100,115,68,140,102,72,0],[160,215,32,96,214,100,112,201,119,187,39,102,186,145,221,83,195,0,96,163,123,49,150,62,117,25,68,3,71,226,217,71,5,0],[160,216,77,122,185,166,60,76,175,212,143,31,218,53,223,132,60,243,170,247,163,51,217,81,184,10,173,42,95,228,91,232,94,0],[160,102,201,63,187,90,100,67,28,66,169,235,107,142,189,159,208,34,47,59,148,229,29,242,190,206,105,91,103,217,108,220,3,0],[160,130,214,88,212,94,182,185,119,29,142,174,223,89,224,222,59,117,224,157,226,110,51,196,90,175,27,158,67,104,153,87,154,0],[160,32,215,128,174,120,163,233,16,26,195,200,23,79,233,122,253,170,114,110,149,85,164,70,233,70,156,107,147,254,209,174,11,0],[160,193,92,89,242,135,228,231,76,186,23,253,187,202,250,103,245,131,178,24,164,47,129,106,19,179,50,117,153,14,62,38,242,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,62,81,246,216,50,34,109,164,244,230,118,34,30,57,143,168,201,163,53,157,138,200,83,22,217,54,9,12,142,74,113,119,160,110,58,129,42,7,242,95,48,22,117,24,235,247,115,27,159,148,240,189,82,238,245,24,104,4,88,96,153,87,62,124,87,160,23,125,132,126,57,77,125,108,183,122,223,20,200,11,140,116,8,197,125,77,164,229,34,187,130,255,11,5,123,106,18,226,160,34,142,142,168,173,99,151,78,20,223,49,167,173,193,155,22,185,57,77,94,140,81,219,8,205,119,152,79,221,53,32,207,160,47,68,110,156,219,87,42,252,153,153,146,44,71,68,241,42,115,255,196,172,147,166,193,209,18,197,101,149,78,252,80,101,160,177,72,39,32,231,101,153,80,19,87,43,118,153,180,111,107,120,208,26,121,107,122,223,78,248,252,112,146,129,121,183,249,160,166,43,253,9,132,156,69,206,240,132,245,215,140,18,136,28,76,115,232,35,55,46,97,106,111,29,136,215,243,244,104,17,160,81,197,227,235,119,136,89,180,1,44,243,14,3,35,252,32,39,239,6,187,20,67,5,160,124,3,15,223,92,185,169,242,160,149,116,118,68,110,184,206,46,175,107,154,14,16,171,116,53,96,139,243,244,119,49,149,255,105,200,203,196,178,219,6,82,160,110,155,225,108,252,161,111,115,34,161,168,254,20,210,73,55,53,84,44,62,235,227,145,125,56,152,100,115,68,140,102,72,160,215,32,96,214,100,112,201,119,187,39,102,186,145,221,83,195,0,96,163,123,49,150,62,117,25,68,3,71,226,217,71,5,160,216,77,122,185,166,60,76,175,212,143,31,218,53,223,132,60,243,170,247,163,51,217,81,184,10,173,42,95,228,91,232,94,160,102,201,63,187,90,100,67,28,66,169,235,107,142,189,159,208,34,47,59,148,229,29,242,190,206,105,91,103,217,108,220,3,160,130,214,88,212,94,182,185,119,29,142,174,223,89,224,222,59,117,224,157,226,110,51,196,90,175,27,158,67,104,153,87,154,160,32,215,128,174,120,163,233,16,26,195,200,23,79,233,122,253,170,114,110,149,85,164,70,233,70,156,107,147,254,209,174,11,160,193,92,89,242,135,228,231,76,186,23,253,187,202,250,103,245,131,178,24,164,47,129,106,19,179,50,117,153,14,62,38,242,128],[249,2,17,160,62,81,246,216,50,34,109,164,244,230,118,34,30,57,143,168,201,163,53,157,138,200,83,22,217,54,9,12,142,74,113,119,160,110,58,129,42,7,242,95,48,22,117,24,235,247,115,27,159,148,240,189,82,238,245,24,104,4,88,96,153,87,62,124,87,160,23,125,132,126,57,77,125,108,183,122,223,20,200,11,140,116,8,197,125,77,164,229,34,187,130,255,11,5,123,106,18,226,160,34,142,142,168,173,99,151,78,20,223,49,167,173,193,155,22,185,57,77,94,140,81,219,8,205,119,152,79,221,53,32,207,160,47,68,110,156,219,87,42,252,153,153,146,44,71,68,241,42,115,255,196,172,147,166,193,209,18,197,101,149,78,252,80,101,160,177,72,39,32,231,101,153,80,19,87,43,118,153,180,111,107,120,208,26,121,107,122,223,78,248,252,112,146,129,121,183,249,160,166,43,253,9,132,156,69,206,240,132,245,215,140,18,136,28,76,115,232,35,55,46,97,106,111,29,136,215,243,244,104,17,160,81,197,227,235,119,136,89,180,1,44,243,14,3,35,252,32,39,239,6,187,20,67,5,160,124,3,15,223,92,185,169,242,160,149,116,118,68,110,184,206,46,175,107,154,14,16,171,116,53,96,139,243,244,119,49,149,255,105,200,203,196,178,219,6,82,160,110,155,225,108,252,161,111,115,34,161,168,254,20,210,73,55,53,84,44,62,235,227,145,125,56,152,100,115,68,140,102,72,160,215,32,96,214,100,112,201,119,187,39,102,186,145,221,83,195,0,96,163,123,49,150,62,117,25,68,3,71,226,217,71,5,160,216,77,122,185,166,60,76,175,212,143,31,218,53,223,132,60,243,170,247,163,51,217,81,184,10,173,42,95,228,91,232,94,160,102,201,63,187,90,100,67,28,66,169,235,107,142,189,159,208,34,47,59,148,229,29,242,190,206,105,91,103,217,108,220,3,160,130,214,88,212,94,182,185,119,29,142,174,223,89,224,222,59,117,224,157,226,110,51,196,90,175,27,158,67,104,153,87,154,160,32,215,128,174,120,163,233,16,26,195,200,23,79,233,122,253,170,114,110,149,85,164,70,233,70,156,107,147,254,209,174,11,160,193,92,89,242,135,228,231,76,186,23,253,187,202,250,103,245,131,178,24,164,47,129,106,19,179,50,117,153,14,62,38,242,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,221,162,147,55,34,170,139,142,218,244,84,132,181,168,39,246,188,198,8,193,144,16,119,237,138,12,69,220,76,152,153,153,0],[160,243,248,117,132,135,179,242,217,170,170,147,202,41,30,49,202,235,19,91,182,154,115,189,49,71,95,213,18,134,202,205,168,0],[160,248,214,27,163,48,89,69,124,39,200,95,223,46,31,254,156,7,133,69,242,252,178,116,213,90,11,24,2,233,210,95,159,0],[160,71,79,93,73,42,149,57,51,225,103,235,189,110,188,70,240,193,23,63,219,116,110,243,110,149,7,153,50,68,75,57,255,0],[160,247,151,249,133,151,231,1,67,135,51,218,198,210,129,152,142,23,144,43,153,113,15,227,167,123,200,117,134,246,144,41,89,0],[160,64,41,80,117,176,86,114,226,155,222,42,78,189,238,210,98,213,168,109,98,43,187,53,78,43,64,239,233,108,49,103,145,0],[160,81,130,213,232,226,141,41,38,167,145,141,254,200,67,223,12,25,155,31,46,162,105,182,222,2,233,159,55,73,58,81,8,0],[160,26,77,61,137,205,196,204,129,210,129,10,70,241,189,76,121,69,162,6,215,188,152,126,170,249,149,72,157,147,95,113,240,0],[160,76,38,106,162,112,134,133,37,202,39,149,12,3,108,165,104,174,60,185,97,253,218,30,38,19,121,89,102,165,245,8,216,0],[160,52,133,159,70,24,244,195,146,2,17,195,222,204,211,129,28,126,50,191,31,4,148,37,228,107,40,143,95,15,239,188,142,0],[160,30,36,232,235,34,123,13,63,36,1,92,189,49,255,191,152,101,81,234,45,170,78,228,224,41,77,6,235,75,41,95,228,0],[160,53,118,183,248,110,40,9,128,63,159,4,146,88,128,57,182,207,231,204,72,18,102,249,225,183,253,26,165,204,221,133,107,0],[160,47,211,121,43,20,152,236,53,207,92,248,102,254,75,207,136,49,232,147,125,59,184,15,14,62,136,58,5,56,132,135,139,0],[160,146,83,193,207,181,29,203,52,47,58,114,231,161,55,66,1,75,127,145,210,118,37,82,232,135,3,183,30,255,240,248,11,0],[160,74,111,171,71,106,196,108,204,154,49,109,206,164,6,195,104,55,35,226,133,78,86,140,154,197,163,105,253,218,72,68,52,0],[160,221,162,147,55,34,170,139,142,218,244,84,132,181,168,39,246,188,198,8,193,144,16,119,237,138,12,69,220,76,152,153,153,0],[160,250,100,42,85,168,208,19,121,181,167,41,37,110,73,50,34,56,59,218,49,242,70,153,106,217,4,105,151,51,36,134,125,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,243,248,117,132,135,179,242,217,170,170,147,202,41,30,49,202,235,19,91,182,154,115,189,49,71,95,213,18,134,202,205,168,160,248,214,27,163,48,89,69,124,39,200,95,223,46,31,254,156,7,133,69,242,252,178,116,213,90,11,24,2,233,210,95,159,160,71,79,93,73,42,149,57,51,225,103,235,189,110,188,70,240,193,23,63,219,116,110,243,110,149,7,153,50,68,75,57,255,160,247,151,249,133,151,231,1,67,135,51,218,198,210,129,152,142,23,144,43,153,113,15,227,167,123,200,117,134,246,144,41,89,160,64,41,80,117,176,86,114,226,155,222,42,78,189,238,210,98,213,168,109,98,43,187,53,78,43,64,239,233,108,49,103,145,160,81,130,213,232,226,141,41,38,167,145,141,254,200,67,223,12,25,155,31,46,162,105,182,222,2,233,159,55,73,58,81,8,160,26,77,61,137,205,196,204,129,210,129,10,70,241,189,76,121,69,162,6,215,188,152,126,170,249,149,72,157,147,95,113,240,160,76,38,106,162,112,134,133,37,202,39,149,12,3,108,165,104,174,60,185,97,253,218,30,38,19,121,89,102,165,245,8,216,160,52,133,159,70,24,244,195,146,2,17,195,222,204,211,129,28,126,50,191,31,4,148,37,228,107,40,143,95,15,239,188,142,160,30,36,232,235,34,123,13,63,36,1,92,189,49,255,191,152,101,81,234,45,170,78,228,224,41,77,6,235,75,41,95,228,160,53,118,183,248,110,40,9,128,63,159,4,146,88,128,57,182,207,231,204,72,18,102,249,225,183,253,26,165,204,221,133,107,160,47,211,121,43,20,152,236,53,207,92,248,102,254,75,207,136,49,232,147,125,59,184,15,14,62,136,58,5,56,132,135,139,160,146,83,193,207,181,29,203,52,47,58,114,231,161,55,66,1,75,127,145,210,118,37,82,232,135,3,183,30,255,240,248,11,160,74,111,171,71,106,196,108,204,154,49,109,206,164,6,195,104,55,35,226,133,78,86,140,154,197,163,105,253,218,72,68,52,160,221,162,147,55,34,170,139,142,218,244,84,132,181,168,39,246,188,198,8,193,144,16,119,237,138,12,69,220,76,152,153,153,160,250,100,42,85,168,208,19,121,181,167,41,37,110,73,50,34,56,59,218,49,242,70,153,106,217,4,105,151,51,36,134,125,128],[249,2,17,160,243,248,117,132,135,179,242,217,170,170,147,202,41,30,49,202,235,19,91,182,154,115,189,49,71,95,213,18,134,202,205,168,160,248,214,27,163,48,89,69,124,39,200,95,223,46,31,254,156,7,133,69,242,252,178,116,213,90,11,24,2,233,210,95,159,160,71,79,93,73,42,149,57,51,225,103,235,189,110,188,70,240,193,23,63,219,116,110,243,110,149,7,153,50,68,75,57,255,160,247,151,249,133,151,231,1,67,135,51,218,198,210,129,152,142,23,144,43,153,113,15,227,167,123,200,117,134,246,144,41,89,160,64,41,80,117,176,86,114,226,155,222,42,78,189,238,210,98,213,168,109,98,43,187,53,78,43,64,239,233,108,49,103,145,160,81,130,213,232,226,141,41,38,167,145,141,254,200,67,223,12,25,155,31,46,162,105,182,222,2,233,159,55,73,58,81,8,160,26,77,61,137,205,196,204,129,210,129,10,70,241,189,76,121,69,162,6,215,188,152,126,170,249,149,72,157,147,95,113,240,160,76,38,106,162,112,134,133,37,202,39,149,12,3,108,165,104,174,60,185,97,253,218,30,38,19,121,89,102,165,245,8,216,160,52,133,159,70,24,244,195,146,2,17,195,222,204,211,129,28,126,50,191,31,4,148,37,228,107,40,143,95,15,239,188,142,160,30,36,232,235,34,123,13,63,36,1,92,189,49,255,191,152,101,81,234,45,170,78,228,224,41,77,6,235,75,41,95,228,160,53,118,183,248,110,40,9,128,63,159,4,146,88,128,57,182,207,231,204,72,18,102,249,225,183,253,26,165,204,221,133,107,160,47,211,121,43,20,152,236,53,207,92,248,102,254,75,207,136,49,232,147,125,59,184,15,14,62,136,58,5,56,132,135,139,160,146,83,193,207,181,29,203,52,47,58,114,231,161,55,66,1,75,127,145,210,118,37,82,232,135,3,183,30,255,240,248,11,160,74,111,171,71,106,196,108,204,154,49,109,206,164,6,195,104,55,35,226,133,78,86,140,154,197,163,105,253,218,72,68,52,160,221,162,147,55,34,170,139,142,218,244,84,132,181,168,39,246,188,198,8,193,144,16,119,237,138,12,69,220,76,152,153,153,160,250,100,42,85,168,208,19,121,181,167,41,37,110,73,50,34,56,59,218,49,242,70,153,106,217,4,105,151,51,36,134,125,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,125,205,12,44,38,14,115,188,176,89,248,149,162,236,64,246,24,91,125,70,183,125,37,100,214,54,174,74,207,71,185,190,0],[160,161,128,1,12,47,16,128,58,172,109,97,186,101,50,211,24,116,166,152,209,189,185,191,39,125,163,235,50,169,86,158,229,0],[160,43,180,202,90,212,89,144,118,139,227,102,232,30,186,65,236,181,5,130,247,53,26,255,110,32,164,81,96,121,240,13,252,0],[160,222,100,177,157,75,143,240,145,16,36,58,46,51,139,107,7,196,233,64,182,153,253,203,175,129,102,22,111,153,168,150,26,0],[160,94,231,69,12,111,229,77,99,71,17,141,11,41,112,27,177,218,61,40,30,213,193,247,27,173,123,94,162,194,11,64,110,0],[160,148,241,5,249,211,104,221,226,140,197,193,238,210,173,105,8,129,244,154,57,13,253,109,216,177,158,110,36,172,122,110,88,0],[160,49,101,31,195,122,182,161,106,170,190,126,247,114,74,123,53,20,100,9,186,33,38,17,167,168,229,10,220,151,18,196,241,0],[160,73,246,226,153,120,139,128,58,10,194,85,4,186,39,18,220,239,252,50,159,22,196,125,122,103,50,247,196,37,68,58,169,0],[160,15,132,108,63,247,99,185,92,140,54,8,64,230,186,45,30,61,193,8,165,18,74,107,200,87,45,33,232,22,58,219,43,0],[160,171,6,213,180,15,77,228,71,174,54,254,251,111,241,218,40,233,3,107,112,164,163,132,133,85,121,0,128,188,237,176,38,0],[160,190,202,142,180,181,1,250,241,49,215,108,185,216,23,205,142,139,158,85,162,252,156,118,150,43,152,194,183,178,218,159,221,0],[160,116,118,116,254,111,169,77,111,65,32,203,133,193,209,164,92,7,21,222,137,239,153,10,17,202,156,229,253,242,229,50,66,0],[160,245,182,9,212,150,185,219,26,154,17,0,141,168,125,166,152,114,219,87,156,42,77,206,233,29,211,176,18,46,29,86,118,0],[160,125,173,37,34,63,10,10,105,35,138,170,159,170,58,203,218,96,174,159,130,118,216,137,144,59,203,221,237,109,28,197,14,0],[160,125,205,12,44,38,14,115,188,176,89,248,149,162,236,64,246,24,91,125,70,183,125,37,100,214,54,174,74,207,71,185,190,0],[160,9,167,144,133,57,89,194,210,118,41,249,242,60,234,105,179,15,125,163,86,11,161,61,242,89,222,67,163,239,141,115,22,0],[160,229,254,113,96,76,247,87,54,147,166,26,241,48,108,149,89,115,6,35,119,201,191,233,239,90,99,195,93,22,222,43,126,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,161,128,1,12,47,16,128,58,172,109,97,186,101,50,211,24,116,166,152,209,189,185,191,39,125,163,235,50,169,86,158,229,160,43,180,202,90,212,89,144,118,139,227,102,232,30,186,65,236,181,5,130,247,53,26,255,110,32,164,81,96,121,240,13,252,160,222,100,177,157,75,143,240,145,16,36,58,46,51,139,107,7,196,233,64,182,153,253,203,175,129,102,22,111,153,168,150,26,160,94,231,69,12,111,229,77,99,71,17,141,11,41,112,27,177,218,61,40,30,213,193,247,27,173,123,94,162,194,11,64,110,160,148,241,5,249,211,104,221,226,140,197,193,238,210,173,105,8,129,244,154,57,13,253,109,216,177,158,110,36,172,122,110,88,160,49,101,31,195,122,182,161,106,170,190,126,247,114,74,123,53,20,100,9,186,33,38,17,167,168,229,10,220,151,18,196,241,160,73,246,226,153,120,139,128,58,10,194,85,4,186,39,18,220,239,252,50,159,22,196,125,122,103,50,247,196,37,68,58,169,160,15,132,108,63,247,99,185,92,140,54,8,64,230,186,45,30,61,193,8,165,18,74,107,200,87,45,33,232,22,58,219,43,160,171,6,213,180,15,77,228,71,174,54,254,251,111,241,218,40,233,3,107,112,164,163,132,133,85,121,0,128,188,237,176,38,160,190,202,142,180,181,1,250,241,49,215,108,185,216,23,205,142,139,158,85,162,252,156,118,150,43,152,194,183,178,218,159,221,160,116,118,116,254,111,169,77,111,65,32,203,133,193,209,164,92,7,21,222,137,239,153,10,17,202,156,229,253,242,229,50,66,160,245,182,9,212,150,185,219,26,154,17,0,141,168,125,166,152,114,219,87,156,42,77,206,233,29,211,176,18,46,29,86,118,160,125,173,37,34,63,10,10,105,35,138,170,159,170,58,203,218,96,174,159,130,118,216,137,144,59,203,221,237,109,28,197,14,160,125,205,12,44,38,14,115,188,176,89,248,149,162,236,64,246,24,91,125,70,183,125,37,100,214,54,174,74,207,71,185,190,160,9,167,144,133,57,89,194,210,118,41,249,242,60,234,105,179,15,125,163,86,11,161,61,242,89,222,67,163,239,141,115,22,160,229,254,113,96,76,247,87,54,147,166,26,241,48,108,149,89,115,6,35,119,201,191,233,239,90,99,195,93,22,222,43,126,128],[249,2,17,160,161,128,1,12,47,16,128,58,172,109,97,186,101,50,211,24,116,166,152,209,189,185,191,39,125,163,235,50,169,86,158,229,160,43,180,202,90,212,89,144,118,139,227,102,232,30,186,65,236,181,5,130,247,53,26,255,110,32,164,81,96,121,240,13,252,160,222,100,177,157,75,143,240,145,16,36,58,46,51,139,107,7,196,233,64,182,153,253,203,175,129,102,22,111,153,168,150,26,160,94,231,69,12,111,229,77,99,71,17,141,11,41,112,27,177,218,61,40,30,213,193,247,27,173,123,94,162,194,11,64,110,160,148,241,5,249,211,104,221,226,140,197,193,238,210,173,105,8,129,244,154,57,13,253,109,216,177,158,110,36,172,122,110,88,160,49,101,31,195,122,182,161,106,170,190,126,247,114,74,123,53,20,100,9,186,33,38,17,167,168,229,10,220,151,18,196,241,160,73,246,226,153,120,139,128,58,10,194,85,4,186,39,18,220,239,252,50,159,22,196,125,122,103,50,247,196,37,68,58,169,160,15,132,108,63,247,99,185,92,140,54,8,64,230,186,45,30,61,193,8,165,18,74,107,200,87,45,33,232,22,58,219,43,160,171,6,213,180,15,77,228,71,174,54,254,251,111,241,218,40,233,3,107,112,164,163,132,133,85,121,0,128,188,237,176,38,160,190,202,142,180,181,1,250,241,49,215,108,185,216,23,205,142,139,158,85,162,252,156,118,150,43,152,194,183,178,218,159,221,160,116,118,116,254,111,169,77,111,65,32,203,133,193,209,164,92,7,21,222,137,239,153,10,17,202,156,229,253,242,229,50,66,160,245,182,9,212,150,185,219,26,154,17,0,141,168,125,166,152,114,219,87,156,42,77,206,233,29,211,176,18,46,29,86,118,160,125,173,37,34,63,10,10,105,35,138,170,159,170,58,203,218,96,174,159,130,118,216,137,144,59,203,221,237,109,28,197,14,160,125,205,12,44,38,14,115,188,176,89,248,149,162,236,64,246,24,91,125,70,183,125,37,100,214,54,174,74,207,71,185,190,160,9,167,144,133,57,89,194,210,118,41,249,242,60,234,105,179,15,125,163,86,11,161,61,242,89,222,67,163,239,141,115,22,160,229,254,113,96,76,247,87,54,147,166,26,241,48,108,149,89,115,6,35,119,201,191,233,239,90,99,195,93,22,222,43,126,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,33,36,191,50,11,87,222,33,182,77,167,63,136,123,248,241,74,182,24,11,174,247,239,125,99,202,207,255,128,35,52,165,0],[160,1,140,240,73,75,204,201,222,156,243,213,94,33,163,61,8,206,249,37,116,57,74,97,38,98,157,136,8,8,58,80,150,0],[160,195,199,196,181,116,185,85,110,248,215,152,211,207,168,41,60,203,5,86,141,59,163,78,219,9,213,111,185,55,120,19,233,0],[160,140,202,218,220,242,107,140,113,118,132,7,69,53,214,70,230,137,184,171,129,43,48,107,81,80,73,247,0,177,229,219,121,0],[160,33,36,191,50,11,87,222,33,182,77,167,63,136,123,248,241,74,182,24,11,174,247,239,125,99,202,207,255,128,35,52,165,0],[160,149,249,75,250,81,105,43,241,150,173,198,3,252,180,149,96,0,111,180,34,118,196,43,123,93,132,160,96,250,100,217,45,0],[160,32,39,96,173,133,195,109,50,97,77,73,185,128,89,4,150,255,132,58,164,43,120,193,117,186,32,133,65,91,116,162,173,0],[160,98,239,63,98,146,213,134,176,5,254,159,193,14,251,162,124,237,62,243,94,97,73,108,47,3,76,184,133,162,93,214,124,0],[160,24,110,66,31,239,73,37,228,27,69,165,214,234,132,223,109,118,39,20,166,141,25,228,24,156,85,122,60,112,195,235,154,0],[160,124,4,254,255,41,243,241,33,206,19,170,136,141,252,149,202,221,147,172,85,213,237,197,110,71,174,111,101,127,85,205,59,0],[160,23,49,65,202,234,196,28,65,205,115,198,37,246,143,124,72,166,37,205,232,162,25,22,39,127,188,14,26,18,214,240,152,0],[160,51,21,215,92,255,202,104,15,118,167,53,140,39,4,142,82,127,133,147,230,204,253,47,54,99,23,226,78,113,129,89,185,0],[160,239,123,251,65,188,11,107,22,9,46,42,104,47,193,60,78,205,118,242,12,136,145,137,46,214,157,184,26,255,37,206,38,0],[160,179,163,103,185,250,53,96,32,14,9,248,46,117,61,151,70,245,116,155,44,163,22,115,1,102,242,244,157,45,81,102,14,0],[160,120,51,181,75,204,140,26,229,78,145,104,6,122,193,149,189,178,100,84,118,214,32,148,10,91,248,41,39,153,51,148,250,0],[160,152,64,28,199,229,115,92,129,39,229,199,166,105,168,252,23,227,109,56,225,3,255,171,233,92,155,115,43,225,156,231,35,0],[160,79,205,115,234,146,184,235,250,60,154,252,244,30,28,214,37,12,114,43,159,140,167,245,162,159,65,188,1,113,43,38,143,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,1,140,240,73,75,204,201,222,156,243,213,94,33,163,61,8,206,249,37,116,57,74,97,38,98,157,136,8,8,58,80,150,160,195,199,196,181,116,185,85,110,248,215,152,211,207,168,41,60,203,5,86,141,59,163,78,219,9,213,111,185,55,120,19,233,160,140,202,218,220,242,107,140,113,118,132,7,69,53,214,70,230,137,184,171,129,43,48,107,81,80,73,247,0,177,229,219,121,160,33,36,191,50,11,87,222,33,182,77,167,63,136,123,248,241,74,182,24,11,174,247,239,125,99,202,207,255,128,35,52,165,160,149,249,75,250,81,105,43,241,150,173,198,3,252,180,149,96,0,111,180,34,118,196,43,123,93,132,160,96,250,100,217,45,160,32,39,96,173,133,195,109,50,97,77,73,185,128,89,4,150,255,132,58,164,43,120,193,117,186,32,133,65,91,116,162,173,160,98,239,63,98,146,213,134,176,5,254,159,193,14,251,162,124,237,62,243,94,97,73,108,47,3,76,184,133,162,93,214,124,160,24,110,66,31,239,73,37,228,27,69,165,214,234,132,223,109,118,39,20,166,141,25,228,24,156,85,122,60,112,195,235,154,160,124,4,254,255,41,243,241,33,206,19,170,136,141,252,149,202,221,147,172,85,213,237,197,110,71,174,111,101,127,85,205,59,160,23,49,65,202,234,196,28,65,205,115,198,37,246,143,124,72,166,37,205,232,162,25,22,39,127,188,14,26,18,214,240,152,160,51,21,215,92,255,202,104,15,118,167,53,140,39,4,142,82,127,133,147,230,204,253,47,54,99,23,226,78,113,129,89,185,160,239,123,251,65,188,11,107,22,9,46,42,104,47,193,60,78,205,118,242,12,136,145,137,46,214,157,184,26,255,37,206,38,160,179,163,103,185,250,53,96,32,14,9,248,46,117,61,151,70,245,116,155,44,163,22,115,1,102,242,244,157,45,81,102,14,160,120,51,181,75,204,140,26,229,78,145,104,6,122,193,149,189,178,100,84,118,214,32,148,10,91,248,41,39,153,51,148,250,160,152,64,28,199,229,115,92,129,39,229,199,166,105,168,252,23,227,109,56,225,3,255,171,233,92,155,115,43,225,156,231,35,160,79,205,115,234,146,184,235,250,60,154,252,244,30,28,214,37,12,114,43,159,140,167,245,162,159,65,188,1,113,43,38,143,128],[249,2,17,160,1,140,240,73,75,204,201,222,156,243,213,94,33,163,61,8,206,249,37,116,57,74,97,38,98,157,136,8,8,58,80,150,160,195,199,196,181,116,185,85,110,248,215,152,211,207,168,41,60,203,5,86,141,59,163,78,219,9,213,111,185,55,120,19,233,160,140,202,218,220,242,107,140,113,118,132,7,69,53,214,70,230,137,184,171,129,43,48,107,81,80,73,247,0,177,229,219,121,160,33,36,191,50,11,87,222,33,182,77,167,63,136,123,248,241,74,182,24,11,174,247,239,125,99,202,207,255,128,35,52,165,160,149,249,75,250,81,105,43,241,150,173,198,3,252,180,149,96,0,111,180,34,118,196,43,123,93,132,160,96,250,100,217,45,160,32,39,96,173,133,195,109,50,97,77,73,185,128,89,4,150,255,132,58,164,43,120,193,117,186,32,133,65,91,116,162,173,160,98,239,63,98,146,213,134,176,5,254,159,193,14,251,162,124,237,62,243,94,97,73,108,47,3,76,184,133,162,93,214,124,160,24,110,66,31,239,73,37,228,27,69,165,214,234,132,223,109,118,39,20,166,141,25,228,24,156,85,122,60,112,195,235,154,160,124,4,254,255,41,243,241,33,206,19,170,136,141,252,149,202,221,147,172,85,213,237,197,110,71,174,111,101,127,85,205,59,160,23,49,65,202,234,196,28,65,205,115,198,37,246,143,124,72,166,37,205,232,162,25,22,39,127,188,14,26,18,214,240,152,160,51,21,215,92,255,202,104,15,118,167,53,140,39,4,142,82,127,133,147,230,204,253,47,54,99,23,226,78,113,129,89,185,160,239,123,251,65,188,11,107,22,9,46,42,104,47,193,60,78,205,118,242,12,136,145,137,46,214,157,184,26,255,37,206,38,160,179,163,103,185,250,53,96,32,14,9,248,46,117,61,151,70,245,116,155,44,163,22,115,1,102,242,244,157,45,81,102,14,160,120,51,181,75,204,140,26,229,78,145,104,6,122,193,149,189,178,100,84,118,214,32,148,10,91,248,41,39,153,51,148,250,160,152,64,28,199,229,115,92,129,39,229,199,166,105,168,252,23,227,109,56,225,3,255,171,233,92,155,115,43,225,156,231,35,160,79,205,115,234,146,184,235,250,60,154,252,244,30,28,214,37,12,114,43,159,140,167,245,162,159,65,188,1,113,43,38,143,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,52,5,132,223,20,125,125,152,77,21,29,239,159,211,65,174,156,121,107,233,188,67,44,242,54,70,100,18,159,243,207,206,0],[160,245,105,73,55,130,156,85,160,31,141,126,218,15,74,121,147,147,14,234,12,31,2,207,74,132,213,9,173,180,149,183,107,0],[160,221,130,180,81,176,155,200,100,168,4,254,92,101,171,36,147,95,202,31,177,191,39,28,78,15,253,236,77,124,115,149,137,0],[160,8,37,3,52,123,198,42,148,211,79,179,98,105,89,161,130,151,2,137,5,198,34,114,85,180,47,176,126,179,111,60,206,0],[160,232,217,161,8,22,169,40,66,131,228,203,23,191,255,11,201,101,138,145,67,49,60,150,125,179,56,59,152,181,26,174,138,0],[160,52,5,132,223,20,125,125,152,77,21,29,239,159,211,65,174,156,121,107,233,188,67,44,242,54,70,100,18,159,243,207,206,0],[160,224,250,15,5,72,187,58,246,78,193,251,188,67,94,94,63,151,23,215,194,99,44,14,23,45,34,254,220,3,94,41,58,0],[160,6,105,60,12,5,193,169,245,176,112,146,23,69,42,0,33,177,13,230,213,165,102,152,203,58,175,135,4,16,128,172,8,0],[160,151,152,86,204,166,248,67,223,250,77,31,100,237,11,43,191,90,23,20,54,199,92,11,215,145,50,87,90,167,159,57,165,0],[160,1,232,26,222,47,23,75,176,90,187,251,204,93,173,132,158,36,225,142,226,147,28,202,173,168,228,182,229,123,127,49,117,0],[160,247,78,159,238,239,170,53,113,45,18,48,98,112,234,117,104,97,108,138,230,14,76,168,84,236,172,64,67,208,57,6,73,0],[160,46,68,248,146,220,227,97,0,41,252,210,9,44,117,251,227,165,196,13,189,174,150,34,139,203,17,200,40,245,122,167,206,0],[160,26,216,79,208,48,103,203,251,178,213,93,58,82,104,200,119,234,228,233,252,208,91,195,35,224,229,183,69,89,175,14,229,0],[160,246,209,205,0,213,119,26,186,142,93,94,61,153,28,165,149,49,176,155,119,213,241,208,245,15,163,38,131,125,219,108,170,0],[160,89,143,190,130,47,255,40,170,85,219,138,46,139,251,126,68,17,241,5,216,204,86,127,71,120,116,170,149,237,137,28,227,0],[160,79,246,250,96,218,39,3,222,92,140,84,169,44,51,184,140,136,139,201,154,119,208,207,98,29,112,62,108,254,3,142,180,0],[160,130,179,74,86,218,213,192,18,132,24,134,63,237,50,86,187,20,97,174,221,173,83,84,97,186,105,52,78,209,101,251,138,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,245,105,73,55,130,156,85,160,31,141,126,218,15,74,121,147,147,14,234,12,31,2,207,74,132,213,9,173,180,149,183,107,160,221,130,180,81,176,155,200,100,168,4,254,92,101,171,36,147,95,202,31,177,191,39,28,78,15,253,236,77,124,115,149,137,160,8,37,3,52,123,198,42,148,211,79,179,98,105,89,161,130,151,2,137,5,198,34,114,85,180,47,176,126,179,111,60,206,160,232,217,161,8,22,169,40,66,131,228,203,23,191,255,11,201,101,138,145,67,49,60,150,125,179,56,59,152,181,26,174,138,160,52,5,132,223,20,125,125,152,77,21,29,239,159,211,65,174,156,121,107,233,188,67,44,242,54,70,100,18,159,243,207,206,160,224,250,15,5,72,187,58,246,78,193,251,188,67,94,94,63,151,23,215,194,99,44,14,23,45,34,254,220,3,94,41,58,160,6,105,60,12,5,193,169,245,176,112,146,23,69,42,0,33,177,13,230,213,165,102,152,203,58,175,135,4,16,128,172,8,160,151,152,86,204,166,248,67,223,250,77,31,100,237,11,43,191,90,23,20,54,199,92,11,215,145,50,87,90,167,159,57,165,160,1,232,26,222,47,23,75,176,90,187,251,204,93,173,132,158,36,225,142,226,147,28,202,173,168,228,182,229,123,127,49,117,160,247,78,159,238,239,170,53,113,45,18,48,98,112,234,117,104,97,108,138,230,14,76,168,84,236,172,64,67,208,57,6,73,160,46,68,248,146,220,227,97,0,41,252,210,9,44,117,251,227,165,196,13,189,174,150,34,139,203,17,200,40,245,122,167,206,160,26,216,79,208,48,103,203,251,178,213,93,58,82,104,200,119,234,228,233,252,208,91,195,35,224,229,183,69,89,175,14,229,160,246,209,205,0,213,119,26,186,142,93,94,61,153,28,165,149,49,176,155,119,213,241,208,245,15,163,38,131,125,219,108,170,160,89,143,190,130,47,255,40,170,85,219,138,46,139,251,126,68,17,241,5,216,204,86,127,71,120,116,170,149,237,137,28,227,160,79,246,250,96,218,39,3,222,92,140,84,169,44,51,184,140,136,139,201,154,119,208,207,98,29,112,62,108,254,3,142,180,160,130,179,74,86,218,213,192,18,132,24,134,63,237,50,86,187,20,97,174,221,173,83,84,97,186,105,52,78,209,101,251,138,128],[249,2,17,160,245,105,73,55,130,156,85,160,31,141,126,218,15,74,121,147,147,14,234,12,31,2,207,74,132,213,9,173,180,149,183,107,160,221,130,180,81,176,155,200,100,168,4,254,92,101,171,36,147,95,202,31,177,191,39,28,78,15,253,236,77,124,115,149,137,160,8,37,3,52,123,198,42,148,211,79,179,98,105,89,161,130,151,2,137,5,198,34,114,85,180,47,176,126,179,111,60,206,160,232,217,161,8,22,169,40,66,131,228,203,23,191,255,11,201,101,138,145,67,49,60,150,125,179,56,59,152,181,26,174,138,160,52,5,132,223,20,125,125,152,77,21,29,239,159,211,65,174,156,121,107,233,188,67,44,242,54,70,100,18,159,243,207,206,160,224,250,15,5,72,187,58,246,78,193,251,188,67,94,94,63,151,23,215,194,99,44,14,23,45,34,254,220,3,94,41,58,160,6,105,60,12,5,193,169,245,176,112,146,23,69,42,0,33,177,13,230,213,165,102,152,203,58,175,135,4,16,128,172,8,160,151,152,86,204,166,248,67,223,250,77,31,100,237,11,43,191,90,23,20,54,199,92,11,215,145,50,87,90,167,159,57,165,160,1,232,26,222,47,23,75,176,90,187,251,204,93,173,132,158,36,225,142,226,147,28,202,173,168,228,182,229,123,127,49,117,160,247,78,159,238,239,170,53,113,45,18,48,98,112,234,117,104,97,108,138,230,14,76,168,84,236,172,64,67,208,57,6,73,160,46,68,248,146,220,227,97,0,41,252,210,9,44,117,251,227,165,196,13,189,174,150,34,139,203,17,200,40,245,122,167,206,160,26,216,79,208,48,103,203,251,178,213,93,58,82,104,200,119,234,228,233,252,208,91,195,35,224,229,183,69,89,175,14,229,160,246,209,205,0,213,119,26,186,142,93,94,61,153,28,165,149,49,176,155,119,213,241,208,245,15,163,38,131,125,219,108,170,160,89,143,190,130,47,255,40,170,85,219,138,46,139,251,126,68,17,241,5,216,204,86,127,71,120,116,170,149,237,137,28,227,160,79,246,250,96,218,39,3,222,92,140,84,169,44,51,184,140,136,139,201,154,119,208,207,98,29,112,62,108,254,3,142,180,160,130,179,74,86,218,213,192,18,132,24,134,63,237,50,86,187,20,97,174,221,173,83,84,97,186,105,52,78,209,101,251,138,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[248,241],[248,241]]}},"account":null,"storage":null,"values":[[160,255,151,217,75,103,5,122,115,224,137,233,146,50,189,95,178,178,247,44,237,22,101,231,39,198,40,14,249,60,251,151,15,0],[160,255,151,217,75,103,5,122,115,224,137,233,146,50,189,95,178,178,247,44,237,22,101,231,39,198,40,14,249,60,251,151,15,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,60,79,85,51,115,192,158,157,93,223,211,100,62,94,72,146,251,82,116,111,190,139,246,12,252,146,211,122,66,110,206,20,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,120,190,160,200,253,109,255,226,49,189,87,112,136,160,23,77,119,59,173,185,188,145,251,156,155,144,100,217,100,114,109,106,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,69,72,113,186,79,146,63,86,46,218,1,200,131,76,71,142,217,35,30,209,101,239,91,47,163,221,136,130,249,155,236,112,0],[160,49,65,26,94,193,156,227,78,42,198,56,211,105,254,0,33,31,96,41,208,40,13,215,156,51,173,132,112,34,192,121,49,0],[160,244,154,252,18,232,96,245,36,84,15,253,182,157,226,247,165,106,144,166,1,2,140,228,170,110,87,112,80,140,149,162,43,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,20,103,6,95,163,140,21,238,207,84,226,60,134,0,183,217,11,213,185,123,139,201,37,22,227,234,220,30,160,20,244,115,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,241,160,255,151,217,75,103,5,122,115,224,137,233,146,50,189,95,178,178,247,44,237,22,101,231,39,198,40,14,249,60,251,151,15,128,128,128,128,160,60,79,85,51,115,192,158,157,93,223,211,100,62,94,72,146,251,82,116,111,190,139,246,12,252,146,211,122,66,110,206,20,128,160,120,190,160,200,253,109,255,226,49,189,87,112,136,160,23,77,119,59,173,185,188,145,251,156,155,144,100,217,100,114,109,106,128,160,69,72,113,186,79,146,63,86,46,218,1,200,131,76,71,142,217,35,30,209,101,239,91,47,163,221,136,130,249,155,236,112,160,49,65,26,94,193,156,227,78,42,198,56,211,105,254,0,33,31,96,41,208,40,13,215,156,51,173,132,112,34,192,121,49,160,244,154,252,18,232,96,245,36,84,15,253,182,157,226,247,165,106,144,166,1,2,140,228,170,110,87,112,80,140,149,162,43,128,160,20,103,6,95,163,140,21,238,207,84,226,60,134,0,183,217,11,213,185,123,139,201,37,22,227,234,220,30,160,20,244,115,128,128,128],[248,241,160,255,151,217,75,103,5,122,115,224,137,233,146,50,189,95,178,178,247,44,237,22,101,231,39,198,40,14,249,60,251,151,15,128,128,128,128,160,60,79,85,51,115,192,158,157,93,223,211,100,62,94,72,146,251,82,116,111,190,139,246,12,252,146,211,122,66,110,206,20,128,160,120,190,160,200,253,109,255,226,49,189,87,112,136,160,23,77,119,59,173,185,188,145,251,156,155,144,100,217,100,114,109,106,128,160,69,72,113,186,79,146,63,86,46,218,1,200,131,76,71,142,217,35,30,209,101,239,91,47,163,221,136,130,249,155,236,112,160,49,65,26,94,193,156,227,78,42,198,56,211,105,254,0,33,31,96,41,208,40,13,215,156,51,173,132,112,34,192,121,49,160,244,154,252,18,232,96,245,36,84,15,253,182,157,226,247,165,106,144,166,1,2,140,228,170,110,87,112,80,140,149,162,43,128,160,20,103,6,95,163,140,21,238,207,84,226,60,134,0,183,217,11,213,185,123,139,201,37,22,227,234,220,30,160,20,244,115,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33],"key":[252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,55,236,125,29,155,142,209,241,75,145,144,143,254,65,81,209,56,13,192,157,236,195,213,73,132,11,251,149,241,0,0,0,0],[157,55,236,125,29,155,142,209,241,75,145,144,143,254,65,81,209,56,13,192,157,236,195,213,73,132,11,251,149,241,0,0,0,0],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,112,158,181,221,162,20,124,79,184,25,162,13,167,162,146,25,237,242,59,120,184,154,118,137,92,181,187,152,115,82,223,48,0],[160,7,190,1,231,231,32,111,227,30,206,233,26,215,93,173,166,90,214,186,67,58,230,71,161,185,51,4,105,247,198,103,124,0],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,112,158,181,221,162,20,124,79,184,25,162,13,167,162,146,25,237,242,59,120,184,154,118,137,92,181,187,152,115,82,223,48,0],[160,7,190,1,231,231,32,111,227,30,206,233,26,215,93,173,166,90,214,186,67,58,230,71,161,185,51,4,105,247,198,103,124,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,56,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,0,0,0,0]],"keccak_data":[[248,102,157,55,236,125,29,155,142,209,241,75,145,144,143,254,65,81,209,56,13,192,157,236,195,213,73,132,11,251,149,241,184,70,248,68,1,128,160,112,158,181,221,162,20,124,79,184,25,162,13,167,162,146,25,237,242,59,120,184,154,118,137,92,181,187,152,115,82,223,48,160,7,190,1,231,231,32,111,227,30,206,233,26,215,93,173,166,90,214,186,67,58,230,71,161,185,51,4,105,247,198,103,124],[248,102,157,55,236,125,29,155,142,209,241,75,145,144,143,254,65,81,209,56,13,192,157,236,195,213,73,132,11,251,149,241,184,70,248,68,1,128,160,112,158,181,221,162,20,124,79,184,25,162,13,167,162,146,25,237,242,59,120,184,154,118,137,92,181,187,152,115,82,223,48,160,7,190,1,231,231,32,111,227,30,206,233,26,215,93,173,166,90,214,186,67,58,230,71,161,185,51,4,105,247,198,103,124],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/NonExistingAccountAfterFirstLevel.json b/zkevm-circuits/src/mpt_circuit/tests/NonExistingAccountAfterFirstLevel.json new file mode 100644 index 0000000000..aa4f6f51aa --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/NonExistingAccountAfterFirstLevel.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"AccountDoesNotExist"},"extension_branch":null,"account":null,"storage":null,"values":[[160,80,57,92,254,92,192,163,254,147,39,40,110,123,228,55,231,199,43,174,249,179,139,115,105,190,202,194,91,50,152,38,157,0],[160,80,57,92,254,92,192,163,254,147,39,40,110,123,228,55,231,199,43,174,249,179,139,115,105,190,202,194,91,50,152,38,157,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,102,167,102,40,17,73,27,61,53,46,150,149,6,180,32,210,105,232,181,26,34,79,87,75,59,56,179,70,63,67,240,9,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,171,140,219,128,140,131,3,187,97,251,72,226,118,33,123,233,119,15,168,62,207,63,144,242,35,77,85,136,133,245,171,241,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,209,194,147,52,245,42,90,105,74,201,185,72,11,49,56,252,120,235,36,47,214,22,67,153,206,248,232,10,54,165,108,47,0],[160,181,215,169,27,229,238,39,60,206,39,226,173,154,22,13,47,170,221,90,107,165,24,211,132,1,155,104,114,138,79,98,244,0],[160,194,199,153,182,10,12,214,172,212,44,16,21,81,40,114,232,108,24,107,207,25,110,133,6,30,118,132,47,59,124,248,96,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,46,13,134,195,190,253,23,127,87,74,32,172,99,128,69,50,136,144,119,233,85,50,12,147,97,205,16,183,204,111,88,9,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,99,1,179,155,46,168,164,77,248,176,53,97,32,219,100,183,136,231,31,82,225,215,166,48,157,13,46,91,134,254,231,203,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,27,119,121,225,73,202,223,36,212,255,183,124,167,225,19,20,184,219,112,151,228,215,11,42,23,52,147,21,60,162,229,160,0],[160,102,167,102,40,17,73,27,61,53,46,150,149,6,180,32,210,105,232,181,26,34,79,87,75,59,56,179,70,63,67,240,9,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,128,160,171,140,219,128,140,131,3,187,97,251,72,226,118,33,123,233,119,15,168,62,207,63,144,242,35,77,85,136,133,245,171,241,128,128,160,209,194,147,52,245,42,90,105,74,201,185,72,11,49,56,252,120,235,36,47,214,22,67,153,206,248,232,10,54,165,108,47,160,181,215,169,27,229,238,39,60,206,39,226,173,154,22,13,47,170,221,90,107,165,24,211,132,1,155,104,114,138,79,98,244,160,194,199,153,182,10,12,214,172,212,44,16,21,81,40,114,232,108,24,107,207,25,110,133,6,30,118,132,47,59,124,248,96,128,160,46,13,134,195,190,253,23,127,87,74,32,172,99,128,69,50,136,144,119,233,85,50,12,147,97,205,16,183,204,111,88,9,128,160,99,1,179,155,46,168,164,77,248,176,53,97,32,219,100,183,136,231,31,82,225,215,166,48,157,13,46,91,134,254,231,203,128,128,160,27,119,121,225,73,202,223,36,212,255,183,124,167,225,19,20,184,219,112,151,228,215,11,42,23,52,147,21,60,162,229,160,160,102,167,102,40,17,73,27,61,53,46,150,149,6,180,32,210,105,232,181,26,34,79,87,75,59,56,179,70,63,67,240,9,128,128],[249,1,17,128,160,171,140,219,128,140,131,3,187,97,251,72,226,118,33,123,233,119,15,168,62,207,63,144,242,35,77,85,136,133,245,171,241,128,128,160,209,194,147,52,245,42,90,105,74,201,185,72,11,49,56,252,120,235,36,47,214,22,67,153,206,248,232,10,54,165,108,47,160,181,215,169,27,229,238,39,60,206,39,226,173,154,22,13,47,170,221,90,107,165,24,211,132,1,155,104,114,138,79,98,244,160,194,199,153,182,10,12,214,172,212,44,16,21,81,40,114,232,108,24,107,207,25,110,133,6,30,118,132,47,59,124,248,96,128,160,46,13,134,195,190,253,23,127,87,74,32,172,99,128,69,50,136,144,119,233,85,50,12,147,97,205,16,183,204,111,88,9,128,160,99,1,179,155,46,168,164,77,248,176,53,97,32,219,100,183,136,231,31,82,225,215,166,48,157,13,46,91,134,254,231,203,128,128,160,27,119,121,225,73,202,223,36,212,255,183,124,167,225,19,20,184,219,112,151,228,215,11,42,23,52,147,21,60,162,229,160,160,102,167,102,40,17,73,27,61,53,46,150,149,6,180,32,210,105,232,181,26,34,79,87,75,59,56,179,70,63,67,240,9,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34],"key":[227,108,15,21,74,54,94,8,108,104,112,80,206,231,75,221,222,153,151,161,222,222,176,229,82,23,54,140,10,182,186,164],"list_rlp_bytes":[[248,105],[248,105]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,105]},"storage":null,"values":[[160,54,144,178,57,186,58,175,153,62,68,58,225,74,239,252,68,207,141,153,49,167,155,174,217,250,20,29,14,69,6,225,49,0],[160,54,144,178,57,186,58,175,153,62,68,58,225,74,239,252,68,207,141,153,49,167,155,174,217,250,20,29,14,69,6,225,49,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,51,108,15,21,74,54,94,8,108,104,112,80,206,231,75,221,222,153,151,161,222,222,176,229,82,23,54,140,10,182,186,164,0]],"keccak_data":[[248,105,160,54,144,178,57,186,58,175,153,62,68,58,225,74,239,252,68,207,141,153,49,167,155,174,217,250,20,29,14,69,6,225,49,184,70,248,68,128,1,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,105,160,54,144,178,57,186,58,175,153,62,68,58,225,74,239,252,68,207,141,153,49,167,155,174,217,250,20,29,14,69,6,225,49,184,70,248,68,128,1,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/NonExistingAccountInFirstLevel.json b/zkevm-circuits/src/mpt_circuit/tests/NonExistingAccountInFirstLevel.json new file mode 100644 index 0000000000..dd61452367 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/NonExistingAccountInFirstLevel.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"AccountDoesNotExist"},"extension_branch":null,"account":null,"storage":null,"values":[[160,221,24,245,128,128,59,139,211,67,24,104,53,120,169,108,45,65,161,228,168,133,165,58,10,91,89,4,118,58,162,186,61,0],[160,221,24,245,128,128,59,139,211,67,24,104,53,120,169,108,45,65,161,228,168,133,165,58,10,91,89,4,118,58,162,186,61,0]],"keccak_data":[]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16],"key":[144,176,210,137,234,33,29,202,142,2,12,156,200,197,214,186,47,65,111,225,95,166,146,180,113,132,164,185,70,178,33,77],"list_rlp_bytes":[[248,106],[248,106]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,106]},"storage":null,"values":[[161,32,252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73],[161,32,252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[161,32,144,176,210,137,234,33,29,202,142,2,12,156,200,197,214,186,47,65,111,225,95,166,146,180,113,132,164,185,70,178,33,77]],"keccak_data":[[248,106,161,32,252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,184,70,248,68,128,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,106,161,32,252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,184,70,248,68,128,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/NonExistingAccountNilObject.json b/zkevm-circuits/src/mpt_circuit/tests/NonExistingAccountNilObject.json new file mode 100644 index 0000000000..6c230f0e16 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/NonExistingAccountNilObject.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"AccountDoesNotExist"},"extension_branch":null,"account":null,"storage":null,"values":[[160,214,126,77,69,3,67,4,100,37,174,66,113,71,67,83,133,122,184,96,219,192,161,221,230,75,65,181,205,58,83,43,243,0],[160,214,126,77,69,3,67,4,100,37,174,66,113,71,67,83,133,122,184,96,219,192,161,221,230,75,65,181,205,58,83,43,243,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,0],[160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,0],[160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,0],[160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,0],[160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,0],[160,217,207,245,213,242,65,138,253,22,164,218,92,34,31,220,139,212,117,32,197,146,121,34,246,154,104,23,123,100,218,106,192,0],[160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,0],[160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,0],[160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,0],[160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,0],[160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,0],[160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,0],[160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,0],[160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,0],[160,123,28,84,241,94,41,155,213,139,223,239,151,65,83,140,120,40,181,215,209,26,72,159,156,32,208,82,179,71,29,244,117,0],[160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,0],[160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,160,217,207,245,213,242,65,138,253,22,164,218,92,34,31,220,139,212,117,32,197,146,121,34,246,154,104,23,123,100,218,106,192,160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,160,123,28,84,241,94,41,155,213,139,223,239,151,65,83,140,120,40,181,215,209,26,72,159,156,32,208,82,179,71,29,244,117,160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,128],[249,2,17,160,144,220,175,136,196,12,123,188,149,169,18,203,221,230,124,23,87,103,179,17,115,223,158,228,176,215,51,191,221,81,28,67,160,186,190,54,159,107,18,9,47,73,24,26,224,76,161,115,251,104,209,165,69,111,24,210,15,163,44,186,115,149,64,82,189,160,71,62,207,138,126,54,168,41,231,80,57,163,176,85,229,27,131,50,203,240,51,36,171,74,242,6,107,189,111,191,0,33,160,187,218,52,117,61,122,166,195,142,96,63,54,2,68,232,245,150,17,146,29,158,31,18,131,114,254,192,213,134,212,249,224,160,217,207,245,213,242,65,138,253,22,164,218,92,34,31,220,139,212,117,32,197,146,121,34,246,154,104,23,123,100,218,106,192,160,165,243,242,247,84,33,72,201,115,151,124,138,30,21,76,67,0,254,201,47,117,95,120,70,241,183,52,211,171,29,144,231,160,232,35,133,15,80,191,114,186,174,157,23,51,163,106,68,74,182,93,10,111,170,186,64,79,5,131,206,12,164,218,217,45,160,247,160,12,190,125,75,48,177,31,174,163,174,97,183,241,242,179,21,182,29,159,107,214,139,254,88,122,208,238,206,183,33,160,113,23,239,159,201,50,241,168,142,144,142,174,173,133,101,193,155,86,69,220,158,91,27,110,132,28,94,219,223,215,22,129,160,105,235,45,226,131,243,44,17,248,89,215,188,249,61,162,57,144,211,230,98,147,94,212,214,179,156,227,103,62,200,68,114,160,32,61,38,69,99,18,187,196,218,92,210,147,183,91,132,15,197,4,94,73,61,111,144,77,24,8,35,236,34,191,237,142,160,146,135,181,194,31,34,84,175,78,100,252,167,106,204,92,216,115,153,199,241,237,232,24,219,67,38,201,140,226,220,34,8,160,111,194,215,84,227,4,196,140,230,165,23,117,60,98,177,169,193,213,146,91,137,112,116,134,215,252,8,145,158,10,148,236,160,123,28,84,241,94,41,155,213,139,223,239,151,65,83,140,120,40,181,215,209,26,72,159,156,32,208,82,179,71,29,244,117,160,81,249,221,55,57,169,39,200,158,53,117,128,164,201,123,64,35,74,160,30,211,213,224,57,13,201,130,167,151,88,128,160,160,137,214,19,242,97,89,175,67,97,111,217,69,91,180,97,244,134,155,254,222,38,242,19,8,53,237,6,122,139,150,123,251,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,153,11,242,211,42,155,107,237,88,100,219,214,126,177,12,26,208,44,151,202,156,90,102,134,114,49,56,71,180,103,83,155,0],[160,194,161,194,230,101,254,160,95,77,48,211,27,39,42,140,4,122,172,243,209,160,183,193,160,238,144,110,96,160,53,201,176,0],[160,250,10,79,191,155,218,123,133,247,187,164,39,212,171,124,199,15,61,52,217,80,166,252,43,206,177,62,170,118,143,250,130,0],[160,108,102,161,204,241,214,151,12,80,163,235,72,19,184,65,25,37,28,43,113,212,14,119,160,157,125,65,13,140,22,81,190,0],[160,245,247,207,229,123,97,61,242,10,237,62,241,112,223,174,20,21,134,98,167,15,69,64,87,208,137,239,130,24,225,217,69,0],[160,30,98,56,45,136,244,48,122,241,246,213,147,38,112,85,225,114,131,195,165,25,146,5,1,23,56,98,204,84,80,107,55,0],[160,13,130,198,244,51,130,38,64,159,240,127,232,249,153,1,46,213,170,213,218,230,166,137,75,171,46,198,189,169,81,129,186,0],[160,229,29,41,136,113,129,3,220,51,225,243,185,32,77,145,131,244,109,144,247,2,225,2,109,44,231,85,92,179,219,46,140,0],[160,227,50,165,83,125,101,94,90,180,34,108,124,83,107,32,6,40,120,220,212,90,176,135,180,166,38,78,212,164,7,245,229,0],[160,153,11,242,211,42,155,107,237,88,100,219,214,126,177,12,26,208,44,151,202,156,90,102,134,114,49,56,71,180,103,83,155,0],[160,71,164,38,186,162,94,167,107,171,137,209,18,250,139,176,186,4,118,148,176,251,124,23,138,249,89,144,1,84,248,27,55,0],[160,52,112,5,32,127,130,195,189,56,88,183,178,155,208,74,148,123,54,232,217,185,32,49,156,71,67,15,17,2,49,204,243,0],[160,170,23,213,11,235,134,180,70,232,51,146,38,58,251,66,201,29,6,217,33,53,126,153,255,165,144,117,128,91,14,16,43,0],[160,148,51,14,129,178,95,21,66,170,110,219,0,237,74,184,241,156,135,49,91,139,227,83,112,52,218,111,108,140,199,255,219,0],[160,222,192,22,245,232,111,105,228,68,180,87,180,31,116,42,56,93,1,147,1,207,113,217,240,248,143,123,135,213,26,66,139,0],[160,239,77,239,217,232,159,0,139,212,31,73,0,211,56,197,222,20,67,13,26,183,202,29,28,187,243,0,57,12,134,3,140,0],[160,174,27,143,154,179,94,7,70,236,47,69,149,186,217,141,122,66,236,237,90,80,133,141,159,145,213,6,253,155,38,62,98,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,194,161,194,230,101,254,160,95,77,48,211,27,39,42,140,4,122,172,243,209,160,183,193,160,238,144,110,96,160,53,201,176,160,250,10,79,191,155,218,123,133,247,187,164,39,212,171,124,199,15,61,52,217,80,166,252,43,206,177,62,170,118,143,250,130,160,108,102,161,204,241,214,151,12,80,163,235,72,19,184,65,25,37,28,43,113,212,14,119,160,157,125,65,13,140,22,81,190,160,245,247,207,229,123,97,61,242,10,237,62,241,112,223,174,20,21,134,98,167,15,69,64,87,208,137,239,130,24,225,217,69,160,30,98,56,45,136,244,48,122,241,246,213,147,38,112,85,225,114,131,195,165,25,146,5,1,23,56,98,204,84,80,107,55,160,13,130,198,244,51,130,38,64,159,240,127,232,249,153,1,46,213,170,213,218,230,166,137,75,171,46,198,189,169,81,129,186,160,229,29,41,136,113,129,3,220,51,225,243,185,32,77,145,131,244,109,144,247,2,225,2,109,44,231,85,92,179,219,46,140,160,227,50,165,83,125,101,94,90,180,34,108,124,83,107,32,6,40,120,220,212,90,176,135,180,166,38,78,212,164,7,245,229,160,153,11,242,211,42,155,107,237,88,100,219,214,126,177,12,26,208,44,151,202,156,90,102,134,114,49,56,71,180,103,83,155,160,71,164,38,186,162,94,167,107,171,137,209,18,250,139,176,186,4,118,148,176,251,124,23,138,249,89,144,1,84,248,27,55,160,52,112,5,32,127,130,195,189,56,88,183,178,155,208,74,148,123,54,232,217,185,32,49,156,71,67,15,17,2,49,204,243,160,170,23,213,11,235,134,180,70,232,51,146,38,58,251,66,201,29,6,217,33,53,126,153,255,165,144,117,128,91,14,16,43,160,148,51,14,129,178,95,21,66,170,110,219,0,237,74,184,241,156,135,49,91,139,227,83,112,52,218,111,108,140,199,255,219,160,222,192,22,245,232,111,105,228,68,180,87,180,31,116,42,56,93,1,147,1,207,113,217,240,248,143,123,135,213,26,66,139,160,239,77,239,217,232,159,0,139,212,31,73,0,211,56,197,222,20,67,13,26,183,202,29,28,187,243,0,57,12,134,3,140,160,174,27,143,154,179,94,7,70,236,47,69,149,186,217,141,122,66,236,237,90,80,133,141,159,145,213,6,253,155,38,62,98,128],[249,2,17,160,194,161,194,230,101,254,160,95,77,48,211,27,39,42,140,4,122,172,243,209,160,183,193,160,238,144,110,96,160,53,201,176,160,250,10,79,191,155,218,123,133,247,187,164,39,212,171,124,199,15,61,52,217,80,166,252,43,206,177,62,170,118,143,250,130,160,108,102,161,204,241,214,151,12,80,163,235,72,19,184,65,25,37,28,43,113,212,14,119,160,157,125,65,13,140,22,81,190,160,245,247,207,229,123,97,61,242,10,237,62,241,112,223,174,20,21,134,98,167,15,69,64,87,208,137,239,130,24,225,217,69,160,30,98,56,45,136,244,48,122,241,246,213,147,38,112,85,225,114,131,195,165,25,146,5,1,23,56,98,204,84,80,107,55,160,13,130,198,244,51,130,38,64,159,240,127,232,249,153,1,46,213,170,213,218,230,166,137,75,171,46,198,189,169,81,129,186,160,229,29,41,136,113,129,3,220,51,225,243,185,32,77,145,131,244,109,144,247,2,225,2,109,44,231,85,92,179,219,46,140,160,227,50,165,83,125,101,94,90,180,34,108,124,83,107,32,6,40,120,220,212,90,176,135,180,166,38,78,212,164,7,245,229,160,153,11,242,211,42,155,107,237,88,100,219,214,126,177,12,26,208,44,151,202,156,90,102,134,114,49,56,71,180,103,83,155,160,71,164,38,186,162,94,167,107,171,137,209,18,250,139,176,186,4,118,148,176,251,124,23,138,249,89,144,1,84,248,27,55,160,52,112,5,32,127,130,195,189,56,88,183,178,155,208,74,148,123,54,232,217,185,32,49,156,71,67,15,17,2,49,204,243,160,170,23,213,11,235,134,180,70,232,51,146,38,58,251,66,201,29,6,217,33,53,126,153,255,165,144,117,128,91,14,16,43,160,148,51,14,129,178,95,21,66,170,110,219,0,237,74,184,241,156,135,49,91,139,227,83,112,52,218,111,108,140,199,255,219,160,222,192,22,245,232,111,105,228,68,180,87,180,31,116,42,56,93,1,147,1,207,113,217,240,248,143,123,135,213,26,66,139,160,239,77,239,217,232,159,0,139,212,31,73,0,211,56,197,222,20,67,13,26,183,202,29,28,187,243,0,57,12,134,3,140,160,174,27,143,154,179,94,7,70,236,47,69,149,186,217,141,122,66,236,237,90,80,133,141,159,145,213,6,253,155,38,62,98,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,1,241],[249,1,241]]}},"account":null,"storage":null,"values":[[160,28,112,123,243,58,65,19,173,193,62,43,196,68,11,199,175,196,53,79,221,234,57,235,71,250,241,172,58,120,76,168,217,0],[160,118,7,164,153,100,57,90,154,30,0,132,181,165,29,36,198,58,44,76,97,239,47,37,177,191,34,92,76,241,19,47,94,0],[160,46,34,26,12,126,235,135,79,110,204,251,192,231,83,198,108,124,65,171,229,253,211,251,65,212,206,12,190,210,183,234,20,0],[160,224,197,106,11,198,50,194,19,158,253,80,223,164,183,241,23,64,168,71,165,108,101,245,129,13,135,141,128,243,212,58,136,0],[160,154,188,169,221,11,40,133,220,40,23,84,96,133,124,6,24,145,50,158,186,225,79,156,243,79,157,191,46,202,228,116,45,0],[160,101,106,135,142,233,228,56,130,2,230,168,173,72,92,95,95,72,138,18,205,234,66,58,111,124,122,115,39,149,234,142,65,0],[160,92,203,247,191,21,27,33,100,88,238,173,241,57,84,16,21,154,15,98,233,168,236,45,101,62,138,169,99,20,246,199,180,0],[160,180,92,247,111,158,28,57,148,203,72,82,23,123,108,136,31,116,208,22,126,99,192,40,25,134,34,0,68,97,29,209,205,0],[160,189,240,142,201,255,115,229,75,221,46,28,254,224,96,249,93,114,58,42,106,182,133,165,73,22,103,228,48,78,75,210,41,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,228,188,6,163,117,73,6,69,7,72,145,92,254,178,24,206,5,249,71,115,251,136,163,185,24,35,186,20,24,55,230,170,0],[160,140,237,204,190,22,29,102,222,151,44,132,113,246,67,213,84,224,22,149,128,33,33,180,168,29,238,117,1,169,54,238,81,0],[160,196,248,47,123,243,93,49,203,5,232,213,184,40,188,187,27,103,137,133,70,75,220,228,144,70,51,216,100,24,144,80,108,0],[160,148,60,145,205,168,58,189,238,39,184,40,235,191,82,185,191,84,220,104,112,6,113,34,188,43,20,36,80,222,48,33,46,0],[160,22,118,116,216,102,36,81,233,167,172,29,8,114,58,60,74,239,119,168,37,174,234,243,147,173,91,54,70,18,103,166,48,0],[160,28,112,123,243,58,65,19,173,193,62,43,196,68,11,199,175,196,53,79,221,234,57,235,71,250,241,172,58,120,76,168,217,0],[160,246,48,79,85,101,158,175,5,227,79,143,178,102,111,85,252,55,35,113,53,68,107,226,66,254,21,132,83,150,50,43,30,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,241,160,118,7,164,153,100,57,90,154,30,0,132,181,165,29,36,198,58,44,76,97,239,47,37,177,191,34,92,76,241,19,47,94,160,46,34,26,12,126,235,135,79,110,204,251,192,231,83,198,108,124,65,171,229,253,211,251,65,212,206,12,190,210,183,234,20,160,224,197,106,11,198,50,194,19,158,253,80,223,164,183,241,23,64,168,71,165,108,101,245,129,13,135,141,128,243,212,58,136,160,154,188,169,221,11,40,133,220,40,23,84,96,133,124,6,24,145,50,158,186,225,79,156,243,79,157,191,46,202,228,116,45,160,101,106,135,142,233,228,56,130,2,230,168,173,72,92,95,95,72,138,18,205,234,66,58,111,124,122,115,39,149,234,142,65,160,92,203,247,191,21,27,33,100,88,238,173,241,57,84,16,21,154,15,98,233,168,236,45,101,62,138,169,99,20,246,199,180,160,180,92,247,111,158,28,57,148,203,72,82,23,123,108,136,31,116,208,22,126,99,192,40,25,134,34,0,68,97,29,209,205,160,189,240,142,201,255,115,229,75,221,46,28,254,224,96,249,93,114,58,42,106,182,133,165,73,22,103,228,48,78,75,210,41,128,160,228,188,6,163,117,73,6,69,7,72,145,92,254,178,24,206,5,249,71,115,251,136,163,185,24,35,186,20,24,55,230,170,160,140,237,204,190,22,29,102,222,151,44,132,113,246,67,213,84,224,22,149,128,33,33,180,168,29,238,117,1,169,54,238,81,160,196,248,47,123,243,93,49,203,5,232,213,184,40,188,187,27,103,137,133,70,75,220,228,144,70,51,216,100,24,144,80,108,160,148,60,145,205,168,58,189,238,39,184,40,235,191,82,185,191,84,220,104,112,6,113,34,188,43,20,36,80,222,48,33,46,160,22,118,116,216,102,36,81,233,167,172,29,8,114,58,60,74,239,119,168,37,174,234,243,147,173,91,54,70,18,103,166,48,160,28,112,123,243,58,65,19,173,193,62,43,196,68,11,199,175,196,53,79,221,234,57,235,71,250,241,172,58,120,76,168,217,160,246,48,79,85,101,158,175,5,227,79,143,178,102,111,85,252,55,35,113,53,68,107,226,66,254,21,132,83,150,50,43,30,128],[249,1,241,160,118,7,164,153,100,57,90,154,30,0,132,181,165,29,36,198,58,44,76,97,239,47,37,177,191,34,92,76,241,19,47,94,160,46,34,26,12,126,235,135,79,110,204,251,192,231,83,198,108,124,65,171,229,253,211,251,65,212,206,12,190,210,183,234,20,160,224,197,106,11,198,50,194,19,158,253,80,223,164,183,241,23,64,168,71,165,108,101,245,129,13,135,141,128,243,212,58,136,160,154,188,169,221,11,40,133,220,40,23,84,96,133,124,6,24,145,50,158,186,225,79,156,243,79,157,191,46,202,228,116,45,160,101,106,135,142,233,228,56,130,2,230,168,173,72,92,95,95,72,138,18,205,234,66,58,111,124,122,115,39,149,234,142,65,160,92,203,247,191,21,27,33,100,88,238,173,241,57,84,16,21,154,15,98,233,168,236,45,101,62,138,169,99,20,246,199,180,160,180,92,247,111,158,28,57,148,203,72,82,23,123,108,136,31,116,208,22,126,99,192,40,25,134,34,0,68,97,29,209,205,160,189,240,142,201,255,115,229,75,221,46,28,254,224,96,249,93,114,58,42,106,182,133,165,73,22,103,228,48,78,75,210,41,128,160,228,188,6,163,117,73,6,69,7,72,145,92,254,178,24,206,5,249,71,115,251,136,163,185,24,35,186,20,24,55,230,170,160,140,237,204,190,22,29,102,222,151,44,132,113,246,67,213,84,224,22,149,128,33,33,180,168,29,238,117,1,169,54,238,81,160,196,248,47,123,243,93,49,203,5,232,213,184,40,188,187,27,103,137,133,70,75,220,228,144,70,51,216,100,24,144,80,108,160,148,60,145,205,168,58,189,238,39,184,40,235,191,82,185,191,84,220,104,112,6,113,34,188,43,20,36,80,222,48,33,46,160,22,118,116,216,102,36,81,233,167,172,29,8,114,58,60,74,239,119,168,37,174,234,243,147,173,91,54,70,18,103,166,48,160,28,112,123,243,58,65,19,173,193,62,43,196,68,11,199,175,196,53,79,221,234,57,235,71,250,241,172,58,120,76,168,217,160,246,48,79,85,101,158,175,5,227,79,143,178,102,111,85,252,55,35,113,53,68,107,226,66,254,21,132,83,150,50,43,30,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,31,135,73,204,174,167,159,229,36,59,217,161,39,71,252,185,59,171,62,199,226,95,101,195,206,134,71,61,127,129,37,56,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,203,196,24,180,91,92,42,155,178,224,138,157,186,202,85,129,212,160,95,196,131,76,51,38,251,230,158,133,225,177,41,135,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,128,128,128,128,160,31,135,73,204,174,167,159,229,36,59,217,161,39,71,252,185,59,171,62,199,226,95,101,195,206,134,71,61,127,129,37,56,128,160,203,196,24,180,91,92,42,155,178,224,138,157,186,202,85,129,212,160,95,196,131,76,51,38,251,230,158,133,225,177,41,135,128,128,128,128,128],[248,81,128,128,128,128,128,128,128,128,128,160,31,135,73,204,174,167,159,229,36,59,217,161,39,71,252,185,59,171,62,199,226,95,101,195,206,134,71,61,127,129,37,56,128,160,203,196,24,180,91,92,42,155,178,224,138,157,186,202,85,129,212,160,95,196,131,76,51,38,251,230,158,133,225,177,41,135,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[170,172,207,18,88,1,56,188,43,188,238,234,161,17,223,78,66,171,129,171],"key":[152,225,119,223,167,154,212,87,64,146,72,80,232,124,99,244,129,117,156,137,200,71,85,240,47,81,246,247,59,192,177,160],"list_rlp_bytes":[[248,104],[248,104]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,104]},"storage":null,"values":[[159,32,119,223,167,154,212,87,64,146,72,80,232,124,99,244,129,117,156,137,200,71,85,240,47,81,246,247,59,192,177,160,0,0],[159,32,119,223,167,154,212,87,64,146,72,80,232,124,99,244,129,117,156,137,200,71,85,240,47,81,246,247,59,192,177,160,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,32,119,223,167,154,212,87,64,146,72,80,232,124,99,244,129,117,156,137,200,71,85,240,47,81,246,247,59,192,177,160,0,0]],"keccak_data":[[248,104,159,32,119,223,167,154,212,87,64,146,72,80,232,124,99,244,129,117,156,137,200,71,85,240,47,81,246,247,59,192,177,160,184,0,248,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[248,104,159,32,119,223,167,154,212,87,64,146,72,80,232,124,99,244,129,117,156,137,200,71,85,240,47,81,246,247,59,192,177,160,184,0,248,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[170,172,207,18,88,1,56,188,43,188,238,234,161,17,223,78,66,171,129,171]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/NonExistingAccountNilObjectInFirstLevel.json b/zkevm-circuits/src/mpt_circuit/tests/NonExistingAccountNilObjectInFirstLevel.json new file mode 100644 index 0000000000..db98b5f36e --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/NonExistingAccountNilObjectInFirstLevel.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"AccountDoesNotExist"},"extension_branch":null,"account":null,"storage":null,"values":[[160,80,57,92,254,92,192,163,254,147,39,40,110,123,228,55,231,199,43,174,249,179,139,115,105,190,202,194,91,50,152,38,157,0],[160,80,57,92,254,92,192,163,254,147,39,40,110,123,228,55,231,199,43,174,249,179,139,115,105,190,202,194,91,50,152,38,157,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,171,140,219,128,140,131,3,187,97,251,72,226,118,33,123,233,119,15,168,62,207,63,144,242,35,77,85,136,133,245,171,241,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,209,194,147,52,245,42,90,105,74,201,185,72,11,49,56,252,120,235,36,47,214,22,67,153,206,248,232,10,54,165,108,47,0],[160,181,215,169,27,229,238,39,60,206,39,226,173,154,22,13,47,170,221,90,107,165,24,211,132,1,155,104,114,138,79,98,244,0],[160,194,199,153,182,10,12,214,172,212,44,16,21,81,40,114,232,108,24,107,207,25,110,133,6,30,118,132,47,59,124,248,96,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,46,13,134,195,190,253,23,127,87,74,32,172,99,128,69,50,136,144,119,233,85,50,12,147,97,205,16,183,204,111,88,9,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,99,1,179,155,46,168,164,77,248,176,53,97,32,219,100,183,136,231,31,82,225,215,166,48,157,13,46,91,134,254,231,203,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,27,119,121,225,73,202,223,36,212,255,183,124,167,225,19,20,184,219,112,151,228,215,11,42,23,52,147,21,60,162,229,160,0],[160,102,167,102,40,17,73,27,61,53,46,150,149,6,180,32,210,105,232,181,26,34,79,87,75,59,56,179,70,63,67,240,9,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,128,160,171,140,219,128,140,131,3,187,97,251,72,226,118,33,123,233,119,15,168,62,207,63,144,242,35,77,85,136,133,245,171,241,128,128,160,209,194,147,52,245,42,90,105,74,201,185,72,11,49,56,252,120,235,36,47,214,22,67,153,206,248,232,10,54,165,108,47,160,181,215,169,27,229,238,39,60,206,39,226,173,154,22,13,47,170,221,90,107,165,24,211,132,1,155,104,114,138,79,98,244,160,194,199,153,182,10,12,214,172,212,44,16,21,81,40,114,232,108,24,107,207,25,110,133,6,30,118,132,47,59,124,248,96,128,160,46,13,134,195,190,253,23,127,87,74,32,172,99,128,69,50,136,144,119,233,85,50,12,147,97,205,16,183,204,111,88,9,128,160,99,1,179,155,46,168,164,77,248,176,53,97,32,219,100,183,136,231,31,82,225,215,166,48,157,13,46,91,134,254,231,203,128,128,160,27,119,121,225,73,202,223,36,212,255,183,124,167,225,19,20,184,219,112,151,228,215,11,42,23,52,147,21,60,162,229,160,160,102,167,102,40,17,73,27,61,53,46,150,149,6,180,32,210,105,232,181,26,34,79,87,75,59,56,179,70,63,67,240,9,128,128],[249,1,17,128,160,171,140,219,128,140,131,3,187,97,251,72,226,118,33,123,233,119,15,168,62,207,63,144,242,35,77,85,136,133,245,171,241,128,128,160,209,194,147,52,245,42,90,105,74,201,185,72,11,49,56,252,120,235,36,47,214,22,67,153,206,248,232,10,54,165,108,47,160,181,215,169,27,229,238,39,60,206,39,226,173,154,22,13,47,170,221,90,107,165,24,211,132,1,155,104,114,138,79,98,244,160,194,199,153,182,10,12,214,172,212,44,16,21,81,40,114,232,108,24,107,207,25,110,133,6,30,118,132,47,59,124,248,96,128,160,46,13,134,195,190,253,23,127,87,74,32,172,99,128,69,50,136,144,119,233,85,50,12,147,97,205,16,183,204,111,88,9,128,160,99,1,179,155,46,168,164,77,248,176,53,97,32,219,100,183,136,231,31,82,225,215,166,48,157,13,46,91,134,254,231,203,128,128,160,27,119,121,225,73,202,223,36,212,255,183,124,167,225,19,20,184,219,112,151,228,215,11,42,23,52,147,21,60,162,229,160,160,102,167,102,40,17,73,27,61,53,46,150,149,6,180,32,210,105,232,181,26,34,79,87,75,59,56,179,70,63,67,240,9,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33],"key":[252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73],"list_rlp_bytes":[[248,105],[248,105]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,105]},"storage":null,"values":[[160,60,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,0],[160,60,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,60,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,0]],"keccak_data":[[248,105,160,60,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,184,0,248,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[248,105,160,60,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,184,0,248,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/NonExistingStorage.json b/zkevm-circuits/src/mpt_circuit/tests/NonExistingStorage.json new file mode 100644 index 0000000000..b478594020 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/NonExistingStorage.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageDoesNotExist"},"extension_branch":null,"account":null,"storage":null,"values":[[160,51,249,190,25,92,195,96,144,163,223,3,204,51,198,92,180,19,6,89,244,90,113,203,1,243,202,105,41,218,208,136,76,0],[160,51,249,190,25,92,195,96,144,163,223,3,204,51,198,92,180,19,6,89,244,90,113,203,1,243,202,105,41,218,208,136,76,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,81,161,102,91,160,19,144,108,131,101,101,23,128,254,23,127,21,66,253,142,104,3,221,12,246,12,75,151,83,165,8,247,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,81,161,102,91,160,19,144,108,131,101,101,23,128,254,23,127,21,66,253,142,104,3,221,12,246,12,75,151,83,165,8,247,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,81,161,102,91,160,19,144,108,131,101,101,23,128,254,23,127,21,66,253,142,104,3,221,12,246,12,75,151,83,165,8,247,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,81,161,102,91,160,19,144,108,131,101,101,23,128,254,23,127,21,66,253,142,104,3,221,12,246,12,75,151,83,165,8,247,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,11,161,79,203,76,0,94,197,247,21,34,15,237,251,186,101,156,155,254,196,0,173,231,220,178,64,214,23,193,146,249,233,0],[160,32,114,50,12,62,189,106,20,134,185,146,28,23,254,217,42,238,29,2,23,26,44,204,98,23,49,136,43,60,200,131,203,0],[160,10,122,174,89,193,94,170,119,181,105,68,128,225,99,30,47,203,11,219,63,185,212,28,135,191,38,229,164,205,251,29,178,0],[160,196,56,120,16,50,206,164,153,42,137,240,168,48,191,84,89,147,194,236,15,27,79,106,86,147,188,114,238,224,245,134,237,0],[160,110,98,248,22,245,45,207,250,31,51,65,156,160,157,187,161,111,44,138,199,254,61,51,142,225,57,123,216,229,126,111,230,0],[160,43,111,2,145,226,86,104,84,88,106,96,162,207,2,192,64,233,219,19,142,115,84,245,190,9,221,204,102,175,1,218,152,0],[160,91,124,51,211,9,235,73,230,129,79,76,57,179,252,147,61,46,222,55,49,156,35,181,181,217,140,199,194,135,126,239,251,0],[160,198,173,47,15,24,247,123,29,143,238,210,5,76,44,0,7,148,217,241,207,46,233,29,69,86,104,40,186,220,153,45,109,0],[160,11,161,79,203,76,0,94,197,247,21,34,15,237,251,186,101,156,155,254,196,0,173,231,220,178,64,214,23,193,146,249,233,0],[160,94,170,238,196,129,29,127,164,98,174,87,50,178,177,9,46,2,110,163,58,47,215,198,105,189,243,131,59,129,53,180,89,0],[160,100,67,185,240,66,4,48,205,115,127,26,88,222,95,211,125,147,9,222,53,50,52,5,236,92,121,225,7,231,129,183,118,0],[160,98,103,206,41,116,82,141,170,215,102,145,113,216,126,189,19,11,241,144,204,193,255,163,78,123,38,167,60,204,134,150,138,0],[160,14,57,61,55,77,138,237,254,201,136,74,118,169,27,32,212,0,81,198,68,17,205,32,97,149,86,102,107,103,216,158,108,0],[160,151,89,46,200,117,181,97,231,220,224,98,192,154,217,203,140,50,96,138,63,225,123,181,80,33,237,168,148,72,146,50,208,0],[160,70,252,166,157,14,188,140,228,37,115,14,85,160,172,150,194,35,108,206,222,246,77,148,119,39,187,37,14,249,50,33,252,0],[160,162,242,182,77,88,97,208,25,129,240,64,131,25,157,85,189,101,121,176,49,54,69,9,103,38,30,211,249,183,129,23,209,0],[160,189,254,23,52,6,11,216,25,233,79,162,217,173,14,166,14,30,113,114,183,249,21,18,130,138,13,247,166,235,118,154,23,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,32,114,50,12,62,189,106,20,134,185,146,28,23,254,217,42,238,29,2,23,26,44,204,98,23,49,136,43,60,200,131,203,160,10,122,174,89,193,94,170,119,181,105,68,128,225,99,30,47,203,11,219,63,185,212,28,135,191,38,229,164,205,251,29,178,160,196,56,120,16,50,206,164,153,42,137,240,168,48,191,84,89,147,194,236,15,27,79,106,86,147,188,114,238,224,245,134,237,160,110,98,248,22,245,45,207,250,31,51,65,156,160,157,187,161,111,44,138,199,254,61,51,142,225,57,123,216,229,126,111,230,160,43,111,2,145,226,86,104,84,88,106,96,162,207,2,192,64,233,219,19,142,115,84,245,190,9,221,204,102,175,1,218,152,160,91,124,51,211,9,235,73,230,129,79,76,57,179,252,147,61,46,222,55,49,156,35,181,181,217,140,199,194,135,126,239,251,160,198,173,47,15,24,247,123,29,143,238,210,5,76,44,0,7,148,217,241,207,46,233,29,69,86,104,40,186,220,153,45,109,160,11,161,79,203,76,0,94,197,247,21,34,15,237,251,186,101,156,155,254,196,0,173,231,220,178,64,214,23,193,146,249,233,160,94,170,238,196,129,29,127,164,98,174,87,50,178,177,9,46,2,110,163,58,47,215,198,105,189,243,131,59,129,53,180,89,160,100,67,185,240,66,4,48,205,115,127,26,88,222,95,211,125,147,9,222,53,50,52,5,236,92,121,225,7,231,129,183,118,160,98,103,206,41,116,82,141,170,215,102,145,113,216,126,189,19,11,241,144,204,193,255,163,78,123,38,167,60,204,134,150,138,160,14,57,61,55,77,138,237,254,201,136,74,118,169,27,32,212,0,81,198,68,17,205,32,97,149,86,102,107,103,216,158,108,160,151,89,46,200,117,181,97,231,220,224,98,192,154,217,203,140,50,96,138,63,225,123,181,80,33,237,168,148,72,146,50,208,160,70,252,166,157,14,188,140,228,37,115,14,85,160,172,150,194,35,108,206,222,246,77,148,119,39,187,37,14,249,50,33,252,160,162,242,182,77,88,97,208,25,129,240,64,131,25,157,85,189,101,121,176,49,54,69,9,103,38,30,211,249,183,129,23,209,160,189,254,23,52,6,11,216,25,233,79,162,217,173,14,166,14,30,113,114,183,249,21,18,130,138,13,247,166,235,118,154,23,128],[249,2,17,160,32,114,50,12,62,189,106,20,134,185,146,28,23,254,217,42,238,29,2,23,26,44,204,98,23,49,136,43,60,200,131,203,160,10,122,174,89,193,94,170,119,181,105,68,128,225,99,30,47,203,11,219,63,185,212,28,135,191,38,229,164,205,251,29,178,160,196,56,120,16,50,206,164,153,42,137,240,168,48,191,84,89,147,194,236,15,27,79,106,86,147,188,114,238,224,245,134,237,160,110,98,248,22,245,45,207,250,31,51,65,156,160,157,187,161,111,44,138,199,254,61,51,142,225,57,123,216,229,126,111,230,160,43,111,2,145,226,86,104,84,88,106,96,162,207,2,192,64,233,219,19,142,115,84,245,190,9,221,204,102,175,1,218,152,160,91,124,51,211,9,235,73,230,129,79,76,57,179,252,147,61,46,222,55,49,156,35,181,181,217,140,199,194,135,126,239,251,160,198,173,47,15,24,247,123,29,143,238,210,5,76,44,0,7,148,217,241,207,46,233,29,69,86,104,40,186,220,153,45,109,160,11,161,79,203,76,0,94,197,247,21,34,15,237,251,186,101,156,155,254,196,0,173,231,220,178,64,214,23,193,146,249,233,160,94,170,238,196,129,29,127,164,98,174,87,50,178,177,9,46,2,110,163,58,47,215,198,105,189,243,131,59,129,53,180,89,160,100,67,185,240,66,4,48,205,115,127,26,88,222,95,211,125,147,9,222,53,50,52,5,236,92,121,225,7,231,129,183,118,160,98,103,206,41,116,82,141,170,215,102,145,113,216,126,189,19,11,241,144,204,193,255,163,78,123,38,167,60,204,134,150,138,160,14,57,61,55,77,138,237,254,201,136,74,118,169,27,32,212,0,81,198,68,17,205,32,97,149,86,102,107,103,216,158,108,160,151,89,46,200,117,181,97,231,220,224,98,192,154,217,203,140,50,96,138,63,225,123,181,80,33,237,168,148,72,146,50,208,160,70,252,166,157,14,188,140,228,37,115,14,85,160,172,150,194,35,108,206,222,246,77,148,119,39,187,37,14,249,50,33,252,160,162,242,182,77,88,97,208,25,129,240,64,131,25,157,85,189,101,121,176,49,54,69,9,103,38,30,211,249,183,129,23,209,160,189,254,23,52,6,11,216,25,233,79,162,217,173,14,166,14,30,113,114,183,249,21,18,130,138,13,247,166,235,118,154,23,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,143,224,89,30,184,196,153,96,132,8,72,89,237,23,38,198,197,52,213,48,160,163,90,143,21,246,48,48,243,27,57,233,0],[160,80,148,255,185,38,251,16,216,144,46,115,25,219,9,156,208,216,2,63,88,215,254,38,196,107,216,121,200,104,112,41,166,0],[160,232,64,114,15,200,106,11,109,160,11,185,172,141,121,247,148,195,206,231,233,199,129,249,71,91,217,235,116,232,212,187,23,0],[160,22,24,113,187,195,199,19,22,220,222,38,68,10,149,249,10,83,196,145,149,30,216,79,55,240,137,14,190,167,183,11,248,0],[160,26,80,98,123,95,183,78,86,169,116,95,134,0,242,193,10,159,55,133,145,50,232,89,49,77,88,236,254,190,119,46,179,0],[160,219,11,189,199,146,209,207,184,241,225,225,82,254,168,36,177,54,129,136,43,174,3,69,132,76,68,238,217,185,64,76,188,0],[160,255,255,49,52,51,148,215,160,44,11,164,35,64,77,116,244,205,109,34,105,83,191,185,98,61,152,31,107,47,93,226,182,0],[160,141,207,26,39,186,93,5,76,248,240,96,160,123,14,221,226,176,218,191,61,55,177,128,23,185,89,251,26,120,1,137,73,0],[160,35,20,61,139,93,25,155,182,10,41,79,55,103,14,165,89,100,101,112,251,202,56,255,204,172,35,165,18,191,59,191,42,0],[160,143,224,89,30,184,196,153,96,132,8,72,89,237,23,38,198,197,52,213,48,160,163,90,143,21,246,48,48,243,27,57,233,0],[160,161,117,24,172,49,150,116,109,36,187,48,213,144,170,125,36,153,110,226,55,47,140,26,254,184,244,194,140,147,47,42,231,0],[160,80,215,25,106,21,12,101,148,138,219,184,184,188,40,58,115,84,38,142,85,198,23,126,169,205,238,223,41,50,89,224,22,0],[160,117,137,133,54,28,123,80,12,122,22,182,143,154,153,195,240,131,11,204,239,47,187,92,198,160,194,159,23,63,110,69,23,0],[160,192,126,139,172,39,190,85,65,175,44,222,171,235,106,94,226,10,102,215,144,5,84,241,252,249,77,74,39,235,161,155,27,0],[160,196,6,129,141,159,153,225,109,54,205,224,250,103,31,169,248,190,191,252,11,209,179,82,134,242,212,102,162,34,226,61,112,0],[160,194,89,55,164,148,35,149,201,62,178,116,127,182,51,153,157,6,43,147,76,67,31,130,227,50,40,178,162,17,107,171,35,0],[160,117,214,70,75,202,75,148,198,51,170,204,17,106,206,189,79,195,252,21,147,184,128,92,162,208,14,202,231,35,190,240,162,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,80,148,255,185,38,251,16,216,144,46,115,25,219,9,156,208,216,2,63,88,215,254,38,196,107,216,121,200,104,112,41,166,160,232,64,114,15,200,106,11,109,160,11,185,172,141,121,247,148,195,206,231,233,199,129,249,71,91,217,235,116,232,212,187,23,160,22,24,113,187,195,199,19,22,220,222,38,68,10,149,249,10,83,196,145,149,30,216,79,55,240,137,14,190,167,183,11,248,160,26,80,98,123,95,183,78,86,169,116,95,134,0,242,193,10,159,55,133,145,50,232,89,49,77,88,236,254,190,119,46,179,160,219,11,189,199,146,209,207,184,241,225,225,82,254,168,36,177,54,129,136,43,174,3,69,132,76,68,238,217,185,64,76,188,160,255,255,49,52,51,148,215,160,44,11,164,35,64,77,116,244,205,109,34,105,83,191,185,98,61,152,31,107,47,93,226,182,160,141,207,26,39,186,93,5,76,248,240,96,160,123,14,221,226,176,218,191,61,55,177,128,23,185,89,251,26,120,1,137,73,160,35,20,61,139,93,25,155,182,10,41,79,55,103,14,165,89,100,101,112,251,202,56,255,204,172,35,165,18,191,59,191,42,160,143,224,89,30,184,196,153,96,132,8,72,89,237,23,38,198,197,52,213,48,160,163,90,143,21,246,48,48,243,27,57,233,160,161,117,24,172,49,150,116,109,36,187,48,213,144,170,125,36,153,110,226,55,47,140,26,254,184,244,194,140,147,47,42,231,160,80,215,25,106,21,12,101,148,138,219,184,184,188,40,58,115,84,38,142,85,198,23,126,169,205,238,223,41,50,89,224,22,160,117,137,133,54,28,123,80,12,122,22,182,143,154,153,195,240,131,11,204,239,47,187,92,198,160,194,159,23,63,110,69,23,160,192,126,139,172,39,190,85,65,175,44,222,171,235,106,94,226,10,102,215,144,5,84,241,252,249,77,74,39,235,161,155,27,160,196,6,129,141,159,153,225,109,54,205,224,250,103,31,169,248,190,191,252,11,209,179,82,134,242,212,102,162,34,226,61,112,160,194,89,55,164,148,35,149,201,62,178,116,127,182,51,153,157,6,43,147,76,67,31,130,227,50,40,178,162,17,107,171,35,160,117,214,70,75,202,75,148,198,51,170,204,17,106,206,189,79,195,252,21,147,184,128,92,162,208,14,202,231,35,190,240,162,128],[249,2,17,160,80,148,255,185,38,251,16,216,144,46,115,25,219,9,156,208,216,2,63,88,215,254,38,196,107,216,121,200,104,112,41,166,160,232,64,114,15,200,106,11,109,160,11,185,172,141,121,247,148,195,206,231,233,199,129,249,71,91,217,235,116,232,212,187,23,160,22,24,113,187,195,199,19,22,220,222,38,68,10,149,249,10,83,196,145,149,30,216,79,55,240,137,14,190,167,183,11,248,160,26,80,98,123,95,183,78,86,169,116,95,134,0,242,193,10,159,55,133,145,50,232,89,49,77,88,236,254,190,119,46,179,160,219,11,189,199,146,209,207,184,241,225,225,82,254,168,36,177,54,129,136,43,174,3,69,132,76,68,238,217,185,64,76,188,160,255,255,49,52,51,148,215,160,44,11,164,35,64,77,116,244,205,109,34,105,83,191,185,98,61,152,31,107,47,93,226,182,160,141,207,26,39,186,93,5,76,248,240,96,160,123,14,221,226,176,218,191,61,55,177,128,23,185,89,251,26,120,1,137,73,160,35,20,61,139,93,25,155,182,10,41,79,55,103,14,165,89,100,101,112,251,202,56,255,204,172,35,165,18,191,59,191,42,160,143,224,89,30,184,196,153,96,132,8,72,89,237,23,38,198,197,52,213,48,160,163,90,143,21,246,48,48,243,27,57,233,160,161,117,24,172,49,150,116,109,36,187,48,213,144,170,125,36,153,110,226,55,47,140,26,254,184,244,194,140,147,47,42,231,160,80,215,25,106,21,12,101,148,138,219,184,184,188,40,58,115,84,38,142,85,198,23,126,169,205,238,223,41,50,89,224,22,160,117,137,133,54,28,123,80,12,122,22,182,143,154,153,195,240,131,11,204,239,47,187,92,198,160,194,159,23,63,110,69,23,160,192,126,139,172,39,190,85,65,175,44,222,171,235,106,94,226,10,102,215,144,5,84,241,252,249,77,74,39,235,161,155,27,160,196,6,129,141,159,153,225,109,54,205,224,250,103,31,169,248,190,191,252,11,209,179,82,134,242,212,102,162,34,226,61,112,160,194,89,55,164,148,35,149,201,62,178,116,127,182,51,153,157,6,43,147,76,67,31,130,227,50,40,178,162,17,107,171,35,160,117,214,70,75,202,75,148,198,51,170,204,17,106,206,189,79,195,252,21,147,184,128,92,162,208,14,202,231,35,190,240,162,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,128,210,64,36,232,87,25,151,157,53,5,163,236,235,238,238,244,222,96,49,29,31,13,153,104,5,231,22,7,200,223,157,0],[160,50,134,227,121,222,107,41,253,160,126,236,53,159,171,4,233,12,192,130,29,187,146,42,103,75,238,149,5,228,164,51,219,0],[160,109,223,240,132,44,244,231,89,34,238,116,54,182,126,145,33,158,218,129,84,25,117,193,93,57,54,129,207,71,158,10,239,0],[160,137,71,32,30,231,144,195,14,161,165,205,202,106,148,96,107,179,11,204,136,166,237,106,5,140,223,195,49,2,38,252,37,0],[160,10,16,12,178,172,155,142,38,79,250,185,38,8,229,41,242,146,125,222,231,178,85,169,113,65,235,192,3,221,253,133,121,0],[160,118,155,214,194,160,124,204,154,165,83,205,21,77,129,218,30,159,182,4,232,144,206,128,190,236,186,178,127,98,184,35,118,0],[160,242,87,113,63,110,51,159,220,10,125,93,196,79,30,80,58,128,111,185,193,117,25,116,202,155,203,154,233,77,106,251,95,0],[160,179,216,217,227,32,241,45,244,75,203,37,4,51,184,112,104,40,154,140,239,221,64,49,88,53,119,11,221,100,30,115,147,0],[160,123,86,224,58,55,134,195,209,93,93,167,112,126,144,159,207,30,2,157,97,66,237,247,243,246,61,16,108,150,69,42,216,0],[160,198,153,173,222,150,149,89,189,206,216,72,55,211,25,7,209,20,124,201,116,255,43,245,33,132,248,22,100,146,228,180,33,0],[160,18,207,94,155,112,54,113,255,83,129,204,156,94,155,128,87,24,190,90,35,118,51,118,49,201,101,169,161,53,195,204,212,0],[160,38,148,237,87,162,36,238,225,7,186,236,165,131,196,134,87,58,128,154,30,76,224,193,106,231,54,167,127,2,63,242,235,0],[160,65,15,250,185,115,180,192,8,106,46,90,186,76,63,247,99,101,120,4,178,131,76,104,150,74,77,30,88,24,180,2,165,0],[160,27,195,248,41,48,169,202,25,179,195,80,92,28,41,117,203,45,106,247,70,163,164,155,57,204,247,48,8,150,255,69,103,0],[160,77,29,23,199,242,162,32,107,153,219,31,93,210,56,39,34,133,30,238,106,236,197,206,47,158,52,226,240,22,66,24,152,0],[160,128,210,64,36,232,87,25,151,157,53,5,163,236,235,238,238,244,222,96,49,29,31,13,153,104,5,231,22,7,200,223,157,0],[160,254,142,169,167,195,251,188,33,233,78,222,45,23,253,255,129,174,132,231,175,11,153,146,70,137,247,100,109,26,106,12,199,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,50,134,227,121,222,107,41,253,160,126,236,53,159,171,4,233,12,192,130,29,187,146,42,103,75,238,149,5,228,164,51,219,160,109,223,240,132,44,244,231,89,34,238,116,54,182,126,145,33,158,218,129,84,25,117,193,93,57,54,129,207,71,158,10,239,160,137,71,32,30,231,144,195,14,161,165,205,202,106,148,96,107,179,11,204,136,166,237,106,5,140,223,195,49,2,38,252,37,160,10,16,12,178,172,155,142,38,79,250,185,38,8,229,41,242,146,125,222,231,178,85,169,113,65,235,192,3,221,253,133,121,160,118,155,214,194,160,124,204,154,165,83,205,21,77,129,218,30,159,182,4,232,144,206,128,190,236,186,178,127,98,184,35,118,160,242,87,113,63,110,51,159,220,10,125,93,196,79,30,80,58,128,111,185,193,117,25,116,202,155,203,154,233,77,106,251,95,160,179,216,217,227,32,241,45,244,75,203,37,4,51,184,112,104,40,154,140,239,221,64,49,88,53,119,11,221,100,30,115,147,160,123,86,224,58,55,134,195,209,93,93,167,112,126,144,159,207,30,2,157,97,66,237,247,243,246,61,16,108,150,69,42,216,160,198,153,173,222,150,149,89,189,206,216,72,55,211,25,7,209,20,124,201,116,255,43,245,33,132,248,22,100,146,228,180,33,160,18,207,94,155,112,54,113,255,83,129,204,156,94,155,128,87,24,190,90,35,118,51,118,49,201,101,169,161,53,195,204,212,160,38,148,237,87,162,36,238,225,7,186,236,165,131,196,134,87,58,128,154,30,76,224,193,106,231,54,167,127,2,63,242,235,160,65,15,250,185,115,180,192,8,106,46,90,186,76,63,247,99,101,120,4,178,131,76,104,150,74,77,30,88,24,180,2,165,160,27,195,248,41,48,169,202,25,179,195,80,92,28,41,117,203,45,106,247,70,163,164,155,57,204,247,48,8,150,255,69,103,160,77,29,23,199,242,162,32,107,153,219,31,93,210,56,39,34,133,30,238,106,236,197,206,47,158,52,226,240,22,66,24,152,160,128,210,64,36,232,87,25,151,157,53,5,163,236,235,238,238,244,222,96,49,29,31,13,153,104,5,231,22,7,200,223,157,160,254,142,169,167,195,251,188,33,233,78,222,45,23,253,255,129,174,132,231,175,11,153,146,70,137,247,100,109,26,106,12,199,128],[249,2,17,160,50,134,227,121,222,107,41,253,160,126,236,53,159,171,4,233,12,192,130,29,187,146,42,103,75,238,149,5,228,164,51,219,160,109,223,240,132,44,244,231,89,34,238,116,54,182,126,145,33,158,218,129,84,25,117,193,93,57,54,129,207,71,158,10,239,160,137,71,32,30,231,144,195,14,161,165,205,202,106,148,96,107,179,11,204,136,166,237,106,5,140,223,195,49,2,38,252,37,160,10,16,12,178,172,155,142,38,79,250,185,38,8,229,41,242,146,125,222,231,178,85,169,113,65,235,192,3,221,253,133,121,160,118,155,214,194,160,124,204,154,165,83,205,21,77,129,218,30,159,182,4,232,144,206,128,190,236,186,178,127,98,184,35,118,160,242,87,113,63,110,51,159,220,10,125,93,196,79,30,80,58,128,111,185,193,117,25,116,202,155,203,154,233,77,106,251,95,160,179,216,217,227,32,241,45,244,75,203,37,4,51,184,112,104,40,154,140,239,221,64,49,88,53,119,11,221,100,30,115,147,160,123,86,224,58,55,134,195,209,93,93,167,112,126,144,159,207,30,2,157,97,66,237,247,243,246,61,16,108,150,69,42,216,160,198,153,173,222,150,149,89,189,206,216,72,55,211,25,7,209,20,124,201,116,255,43,245,33,132,248,22,100,146,228,180,33,160,18,207,94,155,112,54,113,255,83,129,204,156,94,155,128,87,24,190,90,35,118,51,118,49,201,101,169,161,53,195,204,212,160,38,148,237,87,162,36,238,225,7,186,236,165,131,196,134,87,58,128,154,30,76,224,193,106,231,54,167,127,2,63,242,235,160,65,15,250,185,115,180,192,8,106,46,90,186,76,63,247,99,101,120,4,178,131,76,104,150,74,77,30,88,24,180,2,165,160,27,195,248,41,48,169,202,25,179,195,80,92,28,41,117,203,45,106,247,70,163,164,155,57,204,247,48,8,150,255,69,103,160,77,29,23,199,242,162,32,107,153,219,31,93,210,56,39,34,133,30,238,106,236,197,206,47,158,52,226,240,22,66,24,152,160,128,210,64,36,232,87,25,151,157,53,5,163,236,235,238,238,244,222,96,49,29,31,13,153,104,5,231,22,7,200,223,157,160,254,142,169,167,195,251,188,33,233,78,222,45,23,253,255,129,174,132,231,175,11,153,146,70,137,247,100,109,26,106,12,199,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,22,24,108,63,110,11,171,135,168,27,40,62,80,124,232,38,247,70,47,131,50,237,27,177,116,224,97,0,220,105,0,207,0],[160,51,241,12,122,223,81,152,154,37,130,73,169,73,174,190,217,162,228,6,125,211,205,215,202,77,228,212,82,225,163,237,192,0],[160,108,57,248,46,203,51,108,5,211,233,36,199,112,197,41,226,231,139,145,164,37,226,96,51,179,184,38,179,18,214,14,227,0],[160,216,159,123,174,245,114,217,222,163,30,130,28,130,112,42,41,60,19,247,247,77,30,167,48,212,24,142,109,140,167,139,82,0],[160,22,24,108,63,110,11,171,135,168,27,40,62,80,124,232,38,247,70,47,131,50,237,27,177,116,224,97,0,220,105,0,207,0],[160,27,32,153,65,20,139,14,102,94,202,123,191,220,51,10,53,15,90,91,208,231,17,74,83,74,152,198,129,106,142,107,134,0],[160,16,34,203,96,5,245,23,207,43,83,207,130,98,43,103,126,11,36,249,214,34,87,112,151,109,81,5,82,255,10,70,82,0],[160,132,190,217,18,224,217,151,188,25,206,221,116,137,199,19,252,252,99,167,60,24,250,47,2,99,252,223,58,210,71,103,12,0],[160,135,48,207,246,58,141,50,138,56,71,148,180,41,114,250,70,187,44,46,24,129,201,137,5,131,252,164,150,132,206,7,211,0],[160,7,209,151,13,253,160,217,6,204,0,47,210,144,219,252,152,90,3,87,48,29,26,178,0,169,194,214,154,68,243,197,216,0],[160,168,128,138,221,38,113,12,138,148,57,231,108,100,18,221,11,59,37,117,212,20,18,79,176,177,24,166,101,83,116,36,59,0],[160,144,107,197,69,239,225,195,211,211,21,4,18,41,56,121,142,55,91,224,216,214,151,57,52,247,120,231,250,1,211,193,23,0],[160,252,108,69,245,6,88,254,119,86,9,126,110,214,65,71,203,229,188,14,60,46,204,216,105,26,210,18,15,27,254,12,175,0],[160,56,164,46,14,139,85,27,222,5,117,226,241,232,26,221,205,195,150,196,115,106,141,181,231,173,150,150,86,230,174,230,118,0],[160,96,9,107,203,131,222,63,178,190,68,100,198,163,179,53,14,232,10,145,138,227,125,133,153,241,162,90,61,106,174,48,209,0],[160,162,80,140,238,232,172,104,178,189,11,3,53,206,103,224,50,105,110,53,97,36,158,83,102,72,24,88,21,28,158,125,203,0],[160,230,193,57,145,215,135,56,63,27,141,34,161,66,40,124,150,99,218,110,125,26,203,193,93,106,20,228,191,226,53,27,240,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,51,241,12,122,223,81,152,154,37,130,73,169,73,174,190,217,162,228,6,125,211,205,215,202,77,228,212,82,225,163,237,192,160,108,57,248,46,203,51,108,5,211,233,36,199,112,197,41,226,231,139,145,164,37,226,96,51,179,184,38,179,18,214,14,227,160,216,159,123,174,245,114,217,222,163,30,130,28,130,112,42,41,60,19,247,247,77,30,167,48,212,24,142,109,140,167,139,82,160,22,24,108,63,110,11,171,135,168,27,40,62,80,124,232,38,247,70,47,131,50,237,27,177,116,224,97,0,220,105,0,207,160,27,32,153,65,20,139,14,102,94,202,123,191,220,51,10,53,15,90,91,208,231,17,74,83,74,152,198,129,106,142,107,134,160,16,34,203,96,5,245,23,207,43,83,207,130,98,43,103,126,11,36,249,214,34,87,112,151,109,81,5,82,255,10,70,82,160,132,190,217,18,224,217,151,188,25,206,221,116,137,199,19,252,252,99,167,60,24,250,47,2,99,252,223,58,210,71,103,12,160,135,48,207,246,58,141,50,138,56,71,148,180,41,114,250,70,187,44,46,24,129,201,137,5,131,252,164,150,132,206,7,211,160,7,209,151,13,253,160,217,6,204,0,47,210,144,219,252,152,90,3,87,48,29,26,178,0,169,194,214,154,68,243,197,216,160,168,128,138,221,38,113,12,138,148,57,231,108,100,18,221,11,59,37,117,212,20,18,79,176,177,24,166,101,83,116,36,59,160,144,107,197,69,239,225,195,211,211,21,4,18,41,56,121,142,55,91,224,216,214,151,57,52,247,120,231,250,1,211,193,23,160,252,108,69,245,6,88,254,119,86,9,126,110,214,65,71,203,229,188,14,60,46,204,216,105,26,210,18,15,27,254,12,175,160,56,164,46,14,139,85,27,222,5,117,226,241,232,26,221,205,195,150,196,115,106,141,181,231,173,150,150,86,230,174,230,118,160,96,9,107,203,131,222,63,178,190,68,100,198,163,179,53,14,232,10,145,138,227,125,133,153,241,162,90,61,106,174,48,209,160,162,80,140,238,232,172,104,178,189,11,3,53,206,103,224,50,105,110,53,97,36,158,83,102,72,24,88,21,28,158,125,203,160,230,193,57,145,215,135,56,63,27,141,34,161,66,40,124,150,99,218,110,125,26,203,193,93,106,20,228,191,226,53,27,240,128],[249,2,17,160,51,241,12,122,223,81,152,154,37,130,73,169,73,174,190,217,162,228,6,125,211,205,215,202,77,228,212,82,225,163,237,192,160,108,57,248,46,203,51,108,5,211,233,36,199,112,197,41,226,231,139,145,164,37,226,96,51,179,184,38,179,18,214,14,227,160,216,159,123,174,245,114,217,222,163,30,130,28,130,112,42,41,60,19,247,247,77,30,167,48,212,24,142,109,140,167,139,82,160,22,24,108,63,110,11,171,135,168,27,40,62,80,124,232,38,247,70,47,131,50,237,27,177,116,224,97,0,220,105,0,207,160,27,32,153,65,20,139,14,102,94,202,123,191,220,51,10,53,15,90,91,208,231,17,74,83,74,152,198,129,106,142,107,134,160,16,34,203,96,5,245,23,207,43,83,207,130,98,43,103,126,11,36,249,214,34,87,112,151,109,81,5,82,255,10,70,82,160,132,190,217,18,224,217,151,188,25,206,221,116,137,199,19,252,252,99,167,60,24,250,47,2,99,252,223,58,210,71,103,12,160,135,48,207,246,58,141,50,138,56,71,148,180,41,114,250,70,187,44,46,24,129,201,137,5,131,252,164,150,132,206,7,211,160,7,209,151,13,253,160,217,6,204,0,47,210,144,219,252,152,90,3,87,48,29,26,178,0,169,194,214,154,68,243,197,216,160,168,128,138,221,38,113,12,138,148,57,231,108,100,18,221,11,59,37,117,212,20,18,79,176,177,24,166,101,83,116,36,59,160,144,107,197,69,239,225,195,211,211,21,4,18,41,56,121,142,55,91,224,216,214,151,57,52,247,120,231,250,1,211,193,23,160,252,108,69,245,6,88,254,119,86,9,126,110,214,65,71,203,229,188,14,60,46,204,216,105,26,210,18,15,27,254,12,175,160,56,164,46,14,139,85,27,222,5,117,226,241,232,26,221,205,195,150,196,115,106,141,181,231,173,150,150,86,230,174,230,118,160,96,9,107,203,131,222,63,178,190,68,100,198,163,179,53,14,232,10,145,138,227,125,133,153,241,162,90,61,106,174,48,209,160,162,80,140,238,232,172,104,178,189,11,3,53,206,103,224,50,105,110,53,97,36,158,83,102,72,24,88,21,28,158,125,203,160,230,193,57,145,215,135,56,63,27,141,34,161,66,40,124,150,99,218,110,125,26,203,193,93,106,20,228,191,226,53,27,240,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,152,114,105,120,10,10,91,38,126,46,99,128,203,158,68,32,150,137,142,142,220,103,7,68,247,231,125,68,50,69,173,31,0],[160,33,39,1,20,248,247,235,8,83,14,6,51,208,30,213,108,102,237,221,215,232,228,70,187,27,78,176,0,8,163,95,170,0],[160,170,99,98,103,42,49,51,254,9,177,205,247,241,15,60,230,117,203,102,101,101,117,218,172,171,136,197,129,129,130,31,135,0],[160,117,64,244,64,112,120,157,17,156,151,58,2,245,143,63,101,157,15,87,248,32,196,84,75,122,84,59,46,48,185,191,98,0],[160,152,57,96,242,252,200,111,209,46,155,238,44,25,164,134,150,12,61,86,57,75,184,111,192,204,68,72,77,18,170,16,245,0],[160,122,244,234,173,129,12,158,231,23,76,102,97,134,68,156,85,77,238,116,20,225,160,149,10,98,208,198,250,39,121,27,120,0],[160,196,241,34,116,90,96,56,131,49,177,20,26,140,119,178,238,103,214,185,234,93,9,46,201,69,146,50,75,219,126,18,104,0],[160,47,54,175,158,157,10,125,127,125,79,46,159,240,21,120,207,129,232,177,59,69,144,48,48,133,172,168,167,82,56,85,246,0],[160,234,182,79,195,232,90,25,45,147,29,63,169,129,218,194,0,227,65,134,220,75,104,160,206,99,71,160,250,166,59,33,254,0],[160,30,163,206,180,138,61,188,189,238,35,29,37,221,22,221,228,190,56,109,233,40,189,149,208,125,22,132,212,243,222,162,48,0],[160,168,86,17,145,160,253,175,87,189,242,36,138,180,171,181,57,203,52,179,52,152,169,215,250,29,11,216,22,173,124,244,48,0],[160,160,23,89,94,237,247,112,172,230,48,73,35,139,102,199,84,73,192,236,59,221,22,192,197,215,139,186,217,1,41,82,148,0],[160,152,114,105,120,10,10,91,38,126,46,99,128,203,158,68,32,150,137,142,142,220,103,7,68,247,231,125,68,50,69,173,31,0],[160,232,192,193,129,55,246,219,2,21,95,185,215,91,77,57,159,231,197,191,216,110,12,90,42,102,228,47,143,187,182,239,195,0],[160,221,159,32,235,93,231,122,178,230,101,161,192,173,79,175,184,59,126,75,86,134,254,172,15,3,234,37,200,238,16,226,190,0],[160,38,143,194,58,172,99,153,99,15,216,34,169,236,44,42,7,158,105,155,130,175,192,127,236,79,21,193,223,173,150,50,180,0],[160,2,127,2,197,234,36,175,155,248,175,204,19,60,74,97,151,82,20,50,241,248,141,215,153,181,193,58,87,151,184,73,254,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,33,39,1,20,248,247,235,8,83,14,6,51,208,30,213,108,102,237,221,215,232,228,70,187,27,78,176,0,8,163,95,170,160,170,99,98,103,42,49,51,254,9,177,205,247,241,15,60,230,117,203,102,101,101,117,218,172,171,136,197,129,129,130,31,135,160,117,64,244,64,112,120,157,17,156,151,58,2,245,143,63,101,157,15,87,248,32,196,84,75,122,84,59,46,48,185,191,98,160,152,57,96,242,252,200,111,209,46,155,238,44,25,164,134,150,12,61,86,57,75,184,111,192,204,68,72,77,18,170,16,245,160,122,244,234,173,129,12,158,231,23,76,102,97,134,68,156,85,77,238,116,20,225,160,149,10,98,208,198,250,39,121,27,120,160,196,241,34,116,90,96,56,131,49,177,20,26,140,119,178,238,103,214,185,234,93,9,46,201,69,146,50,75,219,126,18,104,160,47,54,175,158,157,10,125,127,125,79,46,159,240,21,120,207,129,232,177,59,69,144,48,48,133,172,168,167,82,56,85,246,160,234,182,79,195,232,90,25,45,147,29,63,169,129,218,194,0,227,65,134,220,75,104,160,206,99,71,160,250,166,59,33,254,160,30,163,206,180,138,61,188,189,238,35,29,37,221,22,221,228,190,56,109,233,40,189,149,208,125,22,132,212,243,222,162,48,160,168,86,17,145,160,253,175,87,189,242,36,138,180,171,181,57,203,52,179,52,152,169,215,250,29,11,216,22,173,124,244,48,160,160,23,89,94,237,247,112,172,230,48,73,35,139,102,199,84,73,192,236,59,221,22,192,197,215,139,186,217,1,41,82,148,160,152,114,105,120,10,10,91,38,126,46,99,128,203,158,68,32,150,137,142,142,220,103,7,68,247,231,125,68,50,69,173,31,160,232,192,193,129,55,246,219,2,21,95,185,215,91,77,57,159,231,197,191,216,110,12,90,42,102,228,47,143,187,182,239,195,160,221,159,32,235,93,231,122,178,230,101,161,192,173,79,175,184,59,126,75,86,134,254,172,15,3,234,37,200,238,16,226,190,160,38,143,194,58,172,99,153,99,15,216,34,169,236,44,42,7,158,105,155,130,175,192,127,236,79,21,193,223,173,150,50,180,160,2,127,2,197,234,36,175,155,248,175,204,19,60,74,97,151,82,20,50,241,248,141,215,153,181,193,58,87,151,184,73,254,128],[249,2,17,160,33,39,1,20,248,247,235,8,83,14,6,51,208,30,213,108,102,237,221,215,232,228,70,187,27,78,176,0,8,163,95,170,160,170,99,98,103,42,49,51,254,9,177,205,247,241,15,60,230,117,203,102,101,101,117,218,172,171,136,197,129,129,130,31,135,160,117,64,244,64,112,120,157,17,156,151,58,2,245,143,63,101,157,15,87,248,32,196,84,75,122,84,59,46,48,185,191,98,160,152,57,96,242,252,200,111,209,46,155,238,44,25,164,134,150,12,61,86,57,75,184,111,192,204,68,72,77,18,170,16,245,160,122,244,234,173,129,12,158,231,23,76,102,97,134,68,156,85,77,238,116,20,225,160,149,10,98,208,198,250,39,121,27,120,160,196,241,34,116,90,96,56,131,49,177,20,26,140,119,178,238,103,214,185,234,93,9,46,201,69,146,50,75,219,126,18,104,160,47,54,175,158,157,10,125,127,125,79,46,159,240,21,120,207,129,232,177,59,69,144,48,48,133,172,168,167,82,56,85,246,160,234,182,79,195,232,90,25,45,147,29,63,169,129,218,194,0,227,65,134,220,75,104,160,206,99,71,160,250,166,59,33,254,160,30,163,206,180,138,61,188,189,238,35,29,37,221,22,221,228,190,56,109,233,40,189,149,208,125,22,132,212,243,222,162,48,160,168,86,17,145,160,253,175,87,189,242,36,138,180,171,181,57,203,52,179,52,152,169,215,250,29,11,216,22,173,124,244,48,160,160,23,89,94,237,247,112,172,230,48,73,35,139,102,199,84,73,192,236,59,221,22,192,197,215,139,186,217,1,41,82,148,160,152,114,105,120,10,10,91,38,126,46,99,128,203,158,68,32,150,137,142,142,220,103,7,68,247,231,125,68,50,69,173,31,160,232,192,193,129,55,246,219,2,21,95,185,215,91,77,57,159,231,197,191,216,110,12,90,42,102,228,47,143,187,182,239,195,160,221,159,32,235,93,231,122,178,230,101,161,192,173,79,175,184,59,126,75,86,134,254,172,15,3,234,37,200,238,16,226,190,160,38,143,194,58,172,99,153,99,15,216,34,169,236,44,42,7,158,105,155,130,175,192,127,236,79,21,193,223,173,150,50,180,160,2,127,2,197,234,36,175,155,248,175,204,19,60,74,97,151,82,20,50,241,248,141,215,153,181,193,58,87,151,184,73,254,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,1,49],[249,1,49]]}},"account":null,"storage":null,"values":[[160,185,48,236,239,154,158,161,183,121,156,86,53,176,75,170,145,108,209,199,136,127,25,169,15,172,38,79,212,229,151,21,78,0],[160,119,73,17,92,128,20,103,104,232,32,124,19,16,87,60,164,208,90,161,44,211,37,10,22,234,211,119,99,38,103,198,198,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,197,2,59,23,137,170,248,2,213,118,95,76,155,251,48,153,90,243,215,96,187,113,77,106,134,162,144,12,225,177,150,82,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,163,49,39,187,25,224,238,70,65,179,76,107,218,25,133,29,45,119,79,102,88,247,235,233,62,172,199,17,252,137,160,132,0],[160,228,247,244,44,169,159,121,241,37,203,87,229,189,5,235,105,253,45,60,197,77,122,58,147,64,9,131,17,17,142,20,155,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,205,29,5,65,38,9,46,153,141,104,202,181,91,192,0,13,172,218,7,199,83,1,165,46,186,0,114,232,249,237,55,86,0],[160,95,199,183,163,77,23,5,95,41,107,232,12,194,66,48,248,191,156,189,227,198,181,71,183,94,67,71,52,31,231,186,220,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,72,154,12,74,44,172,232,136,12,112,213,212,84,199,60,155,180,189,250,131,119,235,245,179,231,69,41,210,95,2,102,69,0],[160,185,48,236,239,154,158,161,183,121,156,86,53,176,75,170,145,108,209,199,136,127,25,169,15,172,38,79,212,229,151,21,78,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,168,42,10,43,57,84,192,82,188,77,84,115,130,173,36,32,174,129,104,109,48,102,57,116,53,12,2,1,10,219,36,135,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,49,160,119,73,17,92,128,20,103,104,232,32,124,19,16,87,60,164,208,90,161,44,211,37,10,22,234,211,119,99,38,103,198,198,128,128,160,197,2,59,23,137,170,248,2,213,118,95,76,155,251,48,153,90,243,215,96,187,113,77,106,134,162,144,12,225,177,150,82,128,160,163,49,39,187,25,224,238,70,65,179,76,107,218,25,133,29,45,119,79,102,88,247,235,233,62,172,199,17,252,137,160,132,160,228,247,244,44,169,159,121,241,37,203,87,229,189,5,235,105,253,45,60,197,77,122,58,147,64,9,131,17,17,142,20,155,128,128,160,205,29,5,65,38,9,46,153,141,104,202,181,91,192,0,13,172,218,7,199,83,1,165,46,186,0,114,232,249,237,55,86,160,95,199,183,163,77,23,5,95,41,107,232,12,194,66,48,248,191,156,189,227,198,181,71,183,94,67,71,52,31,231,186,220,128,160,72,154,12,74,44,172,232,136,12,112,213,212,84,199,60,155,180,189,250,131,119,235,245,179,231,69,41,210,95,2,102,69,160,185,48,236,239,154,158,161,183,121,156,86,53,176,75,170,145,108,209,199,136,127,25,169,15,172,38,79,212,229,151,21,78,128,160,168,42,10,43,57,84,192,82,188,77,84,115,130,173,36,32,174,129,104,109,48,102,57,116,53,12,2,1,10,219,36,135,128],[249,1,49,160,119,73,17,92,128,20,103,104,232,32,124,19,16,87,60,164,208,90,161,44,211,37,10,22,234,211,119,99,38,103,198,198,128,128,160,197,2,59,23,137,170,248,2,213,118,95,76,155,251,48,153,90,243,215,96,187,113,77,106,134,162,144,12,225,177,150,82,128,160,163,49,39,187,25,224,238,70,65,179,76,107,218,25,133,29,45,119,79,102,88,247,235,233,62,172,199,17,252,137,160,132,160,228,247,244,44,169,159,121,241,37,203,87,229,189,5,235,105,253,45,60,197,77,122,58,147,64,9,131,17,17,142,20,155,128,128,160,205,29,5,65,38,9,46,153,141,104,202,181,91,192,0,13,172,218,7,199,83,1,165,46,186,0,114,232,249,237,55,86,160,95,199,183,163,77,23,5,95,41,107,232,12,194,66,48,248,191,156,189,227,198,181,71,183,94,67,71,52,31,231,186,220,128,160,72,154,12,74,44,172,232,136,12,112,213,212,84,199,60,155,180,189,250,131,119,235,245,179,231,69,41,210,95,2,102,69,160,185,48,236,239,154,158,161,183,121,156,86,53,176,75,170,145,108,209,199,136,127,25,169,15,172,38,79,212,229,151,21,78,128,160,168,42,10,43,57,84,192,82,188,77,84,115,130,173,36,32,174,129,104,109,48,102,57,116,53,12,2,1,10,219,36,135,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,172,239,18,160,24,131,194,179,252,87,149,120,38,223,78,36,232,186,170],"key":[55,142,59,217,47,8,36,135,220,3,79,164,170,203,106,91,189,74,36,174,197,127,223,251,73,189,128,179,24,228,185,158],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,57,47,8,36,135,220,3,79,164,170,203,106,91,189,74,36,174,197,127,223,251,73,189,128,179,24,228,185,158,0,0,0,0],[157,57,47,8,36,135,220,3,79,164,170,203,106,91,189,74,36,174,197,127,223,251,73,189,128,179,24,228,185,158,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,108,175,176,92,138,97,66,88,92,163,20,133,186,14,202,83,61,132,245,179,24,124,92,74,69,199,166,219,149,87,245,197,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,108,175,176,92,138,97,66,88,92,163,20,133,186,14,202,83,61,132,245,179,24,124,92,74,69,199,166,219,149,87,245,197,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,57,47,8,36,135,220,3,79,164,170,203,106,91,189,74,36,174,197,127,223,251,73,189,128,179,24,228,185,158,0,0,0,0]],"keccak_data":[[248,102,157,57,47,8,36,135,220,3,79,164,170,203,106,91,189,74,36,174,197,127,223,251,73,189,128,179,24,228,185,158,184,70,248,68,128,128,160,108,175,176,92,138,97,66,88,92,163,20,133,186,14,202,83,61,132,245,179,24,124,92,74,69,199,166,219,149,87,245,197,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,57,47,8,36,135,220,3,79,164,170,203,106,91,189,74,36,174,197,127,223,251,73,189,128,179,24,228,185,158,184,70,248,68,128,128,160,108,175,176,92,138,97,66,88,92,163,20,133,186,14,202,83,61,132,245,179,24,124,92,74,69,199,166,219,149,87,245,197,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,172,239,18,160,24,131,194,179,252,87,149,120,38,223,78,36,232,186,170]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,147,31,200,131,19,49,103,136,46,1,167,47,128,146,235,40,179,181,1,99,210,43,90,113,42,63,194,216,20,174,42,218,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,147,31,200,131,19,49,103,136,46,1,167,47,128,146,235,40,179,181,1,99,210,43,90,113,42,63,194,216,20,174,42,218,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,160,147,31,200,131,19,49,103,136,46,1,167,47,128,146,235,40,179,181,1,99,210,43,90,113,42,63,194,216,20,174,42,218,128,128,128,128,128,128,128,160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,128,128,128,128,128],[248,81,128,128,128,160,147,31,200,131,19,49,103,136,46,1,167,47,128,146,235,40,179,181,1,99,210,43,90,113,42,63,194,216,20,174,42,218,128,128,128,128,128,128,128,160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33],"key":[58,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112],"list_rlp_bytes":[[226],[226]],"value_rlp_bytes":[[1],[1]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[226]},"values":[[160,49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,58,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112,0]],"keccak_data":[[226,160,49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,1],[226,160,49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,1],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/NonExistingStorageLong.json b/zkevm-circuits/src/mpt_circuit/tests/NonExistingStorageLong.json new file mode 100644 index 0000000000..3df8f3d07b --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/NonExistingStorageLong.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageDoesNotExist"},"extension_branch":null,"account":null,"storage":null,"values":[[160,164,5,249,201,155,99,135,16,183,236,179,0,79,228,183,169,127,92,58,41,41,23,56,192,65,111,106,21,157,48,41,168,0],[160,164,5,249,201,155,99,135,16,183,236,179,0,79,228,183,169,127,92,58,41,41,23,56,192,65,111,106,21,157,48,41,168,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,91,90,100,21,60,97,18,135,96,21,187,90,82,60,232,214,123,22,224,116,254,155,184,185,194,205,29,116,231,32,129,175,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,91,90,100,21,60,97,18,135,96,21,187,90,82,60,232,214,123,22,224,116,254,155,184,185,194,205,29,116,231,32,129,175,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,91,90,100,21,60,97,18,135,96,21,187,90,82,60,232,214,123,22,224,116,254,155,184,185,194,205,29,116,231,32,129,175,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,91,90,100,21,60,97,18,135,96,21,187,90,82,60,232,214,123,22,224,116,254,155,184,185,194,205,29,116,231,32,129,175,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,199,151,38,229,9,60,78,6,209,87,90,253,217,35,135,162,166,127,39,223,32,108,123,160,66,118,38,51,250,98,173,217,0],[160,237,182,105,79,104,208,126,49,252,206,78,156,192,147,164,35,120,108,183,236,100,148,85,140,92,28,223,165,102,55,86,152,0],[160,208,227,66,140,67,3,90,187,102,137,24,154,144,254,214,124,157,150,35,37,38,29,34,154,130,164,129,218,167,7,63,116,0],[160,37,118,223,176,80,231,43,47,201,249,24,136,42,247,156,62,113,153,46,254,158,220,224,34,50,233,103,80,187,42,184,159,0],[160,79,66,152,128,30,145,24,183,253,219,92,250,211,0,113,247,158,206,75,244,251,133,116,99,214,59,0,52,179,135,145,87,0],[160,184,137,88,140,54,51,176,10,79,149,136,163,5,83,94,5,0,40,211,150,22,52,247,20,120,163,135,63,143,7,169,190,0],[160,237,162,212,53,158,58,165,72,131,162,130,5,185,224,219,59,9,197,130,45,26,29,223,93,27,98,130,90,39,75,189,129,0],[160,139,244,136,88,68,215,234,245,176,54,201,14,207,103,13,23,159,206,43,235,171,35,161,227,137,71,137,92,155,142,8,178,0],[160,147,157,115,143,197,23,61,34,86,142,225,162,167,170,105,243,165,215,186,203,199,201,119,33,70,20,221,154,24,61,95,145,0],[160,73,24,182,232,174,25,112,167,31,94,208,61,168,39,10,155,64,95,33,19,80,236,190,212,235,48,213,5,71,78,38,136,0],[160,62,96,144,21,112,157,83,141,78,245,181,166,170,184,161,126,127,255,106,59,88,56,171,112,51,3,87,3,249,101,162,51,0],[160,199,151,38,229,9,60,78,6,209,87,90,253,217,35,135,162,166,127,39,223,32,108,123,160,66,118,38,51,250,98,173,217,0],[160,86,82,75,0,94,174,49,78,2,9,30,77,230,18,249,190,184,23,126,58,220,100,63,49,160,35,90,117,51,105,68,165,0],[160,21,47,178,240,162,147,86,238,169,237,243,107,35,20,166,53,110,212,60,218,253,48,5,208,241,159,36,148,209,51,244,56,0],[160,90,115,57,142,208,123,106,170,231,228,10,112,101,74,176,6,253,222,229,208,225,99,4,206,17,84,236,222,103,73,199,110,0],[160,14,139,50,8,236,128,63,0,55,171,26,204,87,220,49,111,80,9,155,59,180,24,186,96,24,2,207,93,222,225,141,218,0],[160,190,84,186,130,71,158,86,7,12,46,139,175,139,164,108,202,46,121,38,193,23,58,60,11,25,168,134,192,209,192,181,29,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,237,182,105,79,104,208,126,49,252,206,78,156,192,147,164,35,120,108,183,236,100,148,85,140,92,28,223,165,102,55,86,152,160,208,227,66,140,67,3,90,187,102,137,24,154,144,254,214,124,157,150,35,37,38,29,34,154,130,164,129,218,167,7,63,116,160,37,118,223,176,80,231,43,47,201,249,24,136,42,247,156,62,113,153,46,254,158,220,224,34,50,233,103,80,187,42,184,159,160,79,66,152,128,30,145,24,183,253,219,92,250,211,0,113,247,158,206,75,244,251,133,116,99,214,59,0,52,179,135,145,87,160,184,137,88,140,54,51,176,10,79,149,136,163,5,83,94,5,0,40,211,150,22,52,247,20,120,163,135,63,143,7,169,190,160,237,162,212,53,158,58,165,72,131,162,130,5,185,224,219,59,9,197,130,45,26,29,223,93,27,98,130,90,39,75,189,129,160,139,244,136,88,68,215,234,245,176,54,201,14,207,103,13,23,159,206,43,235,171,35,161,227,137,71,137,92,155,142,8,178,160,147,157,115,143,197,23,61,34,86,142,225,162,167,170,105,243,165,215,186,203,199,201,119,33,70,20,221,154,24,61,95,145,160,73,24,182,232,174,25,112,167,31,94,208,61,168,39,10,155,64,95,33,19,80,236,190,212,235,48,213,5,71,78,38,136,160,62,96,144,21,112,157,83,141,78,245,181,166,170,184,161,126,127,255,106,59,88,56,171,112,51,3,87,3,249,101,162,51,160,199,151,38,229,9,60,78,6,209,87,90,253,217,35,135,162,166,127,39,223,32,108,123,160,66,118,38,51,250,98,173,217,160,86,82,75,0,94,174,49,78,2,9,30,77,230,18,249,190,184,23,126,58,220,100,63,49,160,35,90,117,51,105,68,165,160,21,47,178,240,162,147,86,238,169,237,243,107,35,20,166,53,110,212,60,218,253,48,5,208,241,159,36,148,209,51,244,56,160,90,115,57,142,208,123,106,170,231,228,10,112,101,74,176,6,253,222,229,208,225,99,4,206,17,84,236,222,103,73,199,110,160,14,139,50,8,236,128,63,0,55,171,26,204,87,220,49,111,80,9,155,59,180,24,186,96,24,2,207,93,222,225,141,218,160,190,84,186,130,71,158,86,7,12,46,139,175,139,164,108,202,46,121,38,193,23,58,60,11,25,168,134,192,209,192,181,29,128],[249,2,17,160,237,182,105,79,104,208,126,49,252,206,78,156,192,147,164,35,120,108,183,236,100,148,85,140,92,28,223,165,102,55,86,152,160,208,227,66,140,67,3,90,187,102,137,24,154,144,254,214,124,157,150,35,37,38,29,34,154,130,164,129,218,167,7,63,116,160,37,118,223,176,80,231,43,47,201,249,24,136,42,247,156,62,113,153,46,254,158,220,224,34,50,233,103,80,187,42,184,159,160,79,66,152,128,30,145,24,183,253,219,92,250,211,0,113,247,158,206,75,244,251,133,116,99,214,59,0,52,179,135,145,87,160,184,137,88,140,54,51,176,10,79,149,136,163,5,83,94,5,0,40,211,150,22,52,247,20,120,163,135,63,143,7,169,190,160,237,162,212,53,158,58,165,72,131,162,130,5,185,224,219,59,9,197,130,45,26,29,223,93,27,98,130,90,39,75,189,129,160,139,244,136,88,68,215,234,245,176,54,201,14,207,103,13,23,159,206,43,235,171,35,161,227,137,71,137,92,155,142,8,178,160,147,157,115,143,197,23,61,34,86,142,225,162,167,170,105,243,165,215,186,203,199,201,119,33,70,20,221,154,24,61,95,145,160,73,24,182,232,174,25,112,167,31,94,208,61,168,39,10,155,64,95,33,19,80,236,190,212,235,48,213,5,71,78,38,136,160,62,96,144,21,112,157,83,141,78,245,181,166,170,184,161,126,127,255,106,59,88,56,171,112,51,3,87,3,249,101,162,51,160,199,151,38,229,9,60,78,6,209,87,90,253,217,35,135,162,166,127,39,223,32,108,123,160,66,118,38,51,250,98,173,217,160,86,82,75,0,94,174,49,78,2,9,30,77,230,18,249,190,184,23,126,58,220,100,63,49,160,35,90,117,51,105,68,165,160,21,47,178,240,162,147,86,238,169,237,243,107,35,20,166,53,110,212,60,218,253,48,5,208,241,159,36,148,209,51,244,56,160,90,115,57,142,208,123,106,170,231,228,10,112,101,74,176,6,253,222,229,208,225,99,4,206,17,84,236,222,103,73,199,110,160,14,139,50,8,236,128,63,0,55,171,26,204,87,220,49,111,80,9,155,59,180,24,186,96,24,2,207,93,222,225,141,218,160,190,84,186,130,71,158,86,7,12,46,139,175,139,164,108,202,46,121,38,193,23,58,60,11,25,168,134,192,209,192,181,29,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,105,130,128,74,115,134,13,134,231,146,88,193,234,132,179,206,55,95,69,122,215,246,230,123,169,120,158,220,198,147,103,4,0],[160,123,53,177,6,41,106,248,70,53,24,33,250,186,211,65,77,74,44,71,81,240,85,137,100,37,153,137,177,93,172,88,139,0],[160,40,199,193,86,65,81,171,251,31,157,115,130,190,204,49,191,136,31,127,47,95,118,175,118,194,127,108,223,43,225,230,47,0],[160,233,54,217,131,118,2,178,1,209,179,105,48,58,214,132,133,15,78,167,45,66,182,111,244,197,187,218,77,51,175,69,43,0],[160,221,213,147,251,21,53,201,233,126,143,161,242,220,199,130,49,204,55,141,125,233,9,170,221,199,80,120,234,220,120,176,38,0],[160,105,130,128,74,115,134,13,134,231,146,88,193,234,132,179,206,55,95,69,122,215,246,230,123,169,120,158,220,198,147,103,4,0],[160,101,151,65,125,14,108,87,123,160,196,130,209,66,96,54,119,109,126,209,209,3,214,31,7,47,173,231,75,209,249,20,79,0],[160,66,17,229,126,244,232,27,44,176,229,112,80,2,8,62,167,182,217,249,166,109,223,237,114,86,148,125,125,89,168,203,108,0],[160,240,79,201,7,212,223,242,137,200,23,170,195,76,70,223,95,120,218,60,63,104,55,31,17,232,77,160,128,241,43,186,250,0],[160,143,63,99,109,209,121,169,243,156,182,145,219,206,114,112,150,40,138,95,81,229,41,138,81,231,58,159,139,150,59,218,33,0],[160,10,236,238,158,221,171,83,236,186,38,181,136,98,160,69,102,146,33,116,73,82,113,46,202,242,74,72,190,227,123,149,88,0],[160,95,63,77,129,14,81,253,106,110,43,33,14,170,224,154,241,79,188,245,96,109,169,200,205,185,0,198,129,74,201,204,15,0],[160,44,195,245,24,121,241,189,175,189,8,161,85,234,223,208,222,173,145,128,51,37,26,167,142,4,0,188,151,89,188,167,113,0],[160,55,63,32,94,141,145,145,99,34,93,169,5,190,197,175,242,50,5,19,160,204,52,5,244,234,74,164,87,86,66,63,231,0],[160,217,71,157,58,177,41,102,231,28,191,171,238,246,247,251,91,217,39,245,35,101,57,11,92,107,212,185,234,40,64,13,39,0],[160,190,175,151,197,195,178,105,115,231,174,143,15,193,210,53,89,2,74,176,227,167,100,193,245,118,88,225,161,212,249,214,128,0],[160,91,120,21,32,120,103,112,223,70,19,171,181,141,169,70,15,7,200,242,235,139,220,71,103,148,177,1,218,171,1,201,194,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,123,53,177,6,41,106,248,70,53,24,33,250,186,211,65,77,74,44,71,81,240,85,137,100,37,153,137,177,93,172,88,139,160,40,199,193,86,65,81,171,251,31,157,115,130,190,204,49,191,136,31,127,47,95,118,175,118,194,127,108,223,43,225,230,47,160,233,54,217,131,118,2,178,1,209,179,105,48,58,214,132,133,15,78,167,45,66,182,111,244,197,187,218,77,51,175,69,43,160,221,213,147,251,21,53,201,233,126,143,161,242,220,199,130,49,204,55,141,125,233,9,170,221,199,80,120,234,220,120,176,38,160,105,130,128,74,115,134,13,134,231,146,88,193,234,132,179,206,55,95,69,122,215,246,230,123,169,120,158,220,198,147,103,4,160,101,151,65,125,14,108,87,123,160,196,130,209,66,96,54,119,109,126,209,209,3,214,31,7,47,173,231,75,209,249,20,79,160,66,17,229,126,244,232,27,44,176,229,112,80,2,8,62,167,182,217,249,166,109,223,237,114,86,148,125,125,89,168,203,108,160,240,79,201,7,212,223,242,137,200,23,170,195,76,70,223,95,120,218,60,63,104,55,31,17,232,77,160,128,241,43,186,250,160,143,63,99,109,209,121,169,243,156,182,145,219,206,114,112,150,40,138,95,81,229,41,138,81,231,58,159,139,150,59,218,33,160,10,236,238,158,221,171,83,236,186,38,181,136,98,160,69,102,146,33,116,73,82,113,46,202,242,74,72,190,227,123,149,88,160,95,63,77,129,14,81,253,106,110,43,33,14,170,224,154,241,79,188,245,96,109,169,200,205,185,0,198,129,74,201,204,15,160,44,195,245,24,121,241,189,175,189,8,161,85,234,223,208,222,173,145,128,51,37,26,167,142,4,0,188,151,89,188,167,113,160,55,63,32,94,141,145,145,99,34,93,169,5,190,197,175,242,50,5,19,160,204,52,5,244,234,74,164,87,86,66,63,231,160,217,71,157,58,177,41,102,231,28,191,171,238,246,247,251,91,217,39,245,35,101,57,11,92,107,212,185,234,40,64,13,39,160,190,175,151,197,195,178,105,115,231,174,143,15,193,210,53,89,2,74,176,227,167,100,193,245,118,88,225,161,212,249,214,128,160,91,120,21,32,120,103,112,223,70,19,171,181,141,169,70,15,7,200,242,235,139,220,71,103,148,177,1,218,171,1,201,194,128],[249,2,17,160,123,53,177,6,41,106,248,70,53,24,33,250,186,211,65,77,74,44,71,81,240,85,137,100,37,153,137,177,93,172,88,139,160,40,199,193,86,65,81,171,251,31,157,115,130,190,204,49,191,136,31,127,47,95,118,175,118,194,127,108,223,43,225,230,47,160,233,54,217,131,118,2,178,1,209,179,105,48,58,214,132,133,15,78,167,45,66,182,111,244,197,187,218,77,51,175,69,43,160,221,213,147,251,21,53,201,233,126,143,161,242,220,199,130,49,204,55,141,125,233,9,170,221,199,80,120,234,220,120,176,38,160,105,130,128,74,115,134,13,134,231,146,88,193,234,132,179,206,55,95,69,122,215,246,230,123,169,120,158,220,198,147,103,4,160,101,151,65,125,14,108,87,123,160,196,130,209,66,96,54,119,109,126,209,209,3,214,31,7,47,173,231,75,209,249,20,79,160,66,17,229,126,244,232,27,44,176,229,112,80,2,8,62,167,182,217,249,166,109,223,237,114,86,148,125,125,89,168,203,108,160,240,79,201,7,212,223,242,137,200,23,170,195,76,70,223,95,120,218,60,63,104,55,31,17,232,77,160,128,241,43,186,250,160,143,63,99,109,209,121,169,243,156,182,145,219,206,114,112,150,40,138,95,81,229,41,138,81,231,58,159,139,150,59,218,33,160,10,236,238,158,221,171,83,236,186,38,181,136,98,160,69,102,146,33,116,73,82,113,46,202,242,74,72,190,227,123,149,88,160,95,63,77,129,14,81,253,106,110,43,33,14,170,224,154,241,79,188,245,96,109,169,200,205,185,0,198,129,74,201,204,15,160,44,195,245,24,121,241,189,175,189,8,161,85,234,223,208,222,173,145,128,51,37,26,167,142,4,0,188,151,89,188,167,113,160,55,63,32,94,141,145,145,99,34,93,169,5,190,197,175,242,50,5,19,160,204,52,5,244,234,74,164,87,86,66,63,231,160,217,71,157,58,177,41,102,231,28,191,171,238,246,247,251,91,217,39,245,35,101,57,11,92,107,212,185,234,40,64,13,39,160,190,175,151,197,195,178,105,115,231,174,143,15,193,210,53,89,2,74,176,227,167,100,193,245,118,88,225,161,212,249,214,128,160,91,120,21,32,120,103,112,223,70,19,171,181,141,169,70,15,7,200,242,235,139,220,71,103,148,177,1,218,171,1,201,194,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":6,"drifted_index":6,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,129,103,83,127,82,116,230,206,168,220,218,71,239,39,86,166,136,38,237,137,0,142,199,113,122,193,27,185,199,80,39,137,0],[160,139,87,125,242,116,165,208,189,142,51,124,65,207,245,72,19,50,129,126,183,234,163,41,196,98,235,181,113,125,78,23,166,0],[160,180,204,224,39,117,84,85,112,150,96,196,51,133,26,248,7,34,233,67,138,18,182,213,18,127,14,150,76,240,244,145,158,0],[160,170,238,233,48,72,229,230,237,28,196,147,172,36,81,152,10,162,86,83,206,137,50,134,7,54,77,253,203,201,141,158,109,0],[160,71,154,162,30,110,37,221,206,210,80,69,150,253,234,240,224,29,192,147,238,162,53,114,69,64,12,184,178,211,142,78,251,0],[160,35,118,160,4,170,184,187,169,240,105,112,7,203,59,154,177,87,170,9,108,172,175,119,161,189,253,132,51,123,64,255,99,0],[160,73,24,1,202,216,81,73,9,183,140,40,248,84,18,198,67,137,106,1,83,215,114,217,55,183,50,196,227,85,52,168,19,0],[160,129,103,83,127,82,116,230,206,168,220,218,71,239,39,86,166,136,38,237,137,0,142,199,113,122,193,27,185,199,80,39,137,0],[160,110,167,23,121,182,179,115,241,60,186,83,63,247,41,222,203,160,31,82,180,69,241,203,180,222,83,18,133,218,44,181,72,0],[160,53,183,127,132,148,70,93,129,175,187,105,98,9,141,18,253,57,52,169,211,111,38,155,164,206,139,107,58,32,95,237,73,0],[160,193,53,196,35,150,25,179,161,247,84,155,154,238,201,134,145,77,173,16,132,13,104,220,14,84,32,47,139,111,47,208,81,0],[160,29,106,10,72,101,25,6,228,51,46,147,7,32,88,56,70,155,39,66,49,67,6,117,223,239,218,63,19,197,142,91,46,0],[160,156,41,190,49,2,225,64,58,218,0,15,85,150,222,137,200,185,218,103,180,120,39,25,151,195,239,153,189,101,125,132,253,0],[160,179,84,233,104,7,107,250,152,65,159,163,149,192,123,200,192,65,124,108,200,161,161,15,34,147,230,121,32,222,89,37,105,0],[160,39,126,151,229,15,70,112,195,197,204,14,202,162,72,238,38,56,224,111,207,221,68,33,0,191,66,223,59,187,35,103,242,0],[160,54,230,171,224,204,103,175,10,106,221,149,171,15,184,59,161,77,177,31,2,28,187,141,193,149,222,207,199,218,146,97,230,0],[160,247,168,224,222,36,174,32,171,127,214,65,21,251,96,167,63,103,149,233,214,230,207,193,45,118,58,205,31,60,21,202,223,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,139,87,125,242,116,165,208,189,142,51,124,65,207,245,72,19,50,129,126,183,234,163,41,196,98,235,181,113,125,78,23,166,160,180,204,224,39,117,84,85,112,150,96,196,51,133,26,248,7,34,233,67,138,18,182,213,18,127,14,150,76,240,244,145,158,160,170,238,233,48,72,229,230,237,28,196,147,172,36,81,152,10,162,86,83,206,137,50,134,7,54,77,253,203,201,141,158,109,160,71,154,162,30,110,37,221,206,210,80,69,150,253,234,240,224,29,192,147,238,162,53,114,69,64,12,184,178,211,142,78,251,160,35,118,160,4,170,184,187,169,240,105,112,7,203,59,154,177,87,170,9,108,172,175,119,161,189,253,132,51,123,64,255,99,160,73,24,1,202,216,81,73,9,183,140,40,248,84,18,198,67,137,106,1,83,215,114,217,55,183,50,196,227,85,52,168,19,160,129,103,83,127,82,116,230,206,168,220,218,71,239,39,86,166,136,38,237,137,0,142,199,113,122,193,27,185,199,80,39,137,160,110,167,23,121,182,179,115,241,60,186,83,63,247,41,222,203,160,31,82,180,69,241,203,180,222,83,18,133,218,44,181,72,160,53,183,127,132,148,70,93,129,175,187,105,98,9,141,18,253,57,52,169,211,111,38,155,164,206,139,107,58,32,95,237,73,160,193,53,196,35,150,25,179,161,247,84,155,154,238,201,134,145,77,173,16,132,13,104,220,14,84,32,47,139,111,47,208,81,160,29,106,10,72,101,25,6,228,51,46,147,7,32,88,56,70,155,39,66,49,67,6,117,223,239,218,63,19,197,142,91,46,160,156,41,190,49,2,225,64,58,218,0,15,85,150,222,137,200,185,218,103,180,120,39,25,151,195,239,153,189,101,125,132,253,160,179,84,233,104,7,107,250,152,65,159,163,149,192,123,200,192,65,124,108,200,161,161,15,34,147,230,121,32,222,89,37,105,160,39,126,151,229,15,70,112,195,197,204,14,202,162,72,238,38,56,224,111,207,221,68,33,0,191,66,223,59,187,35,103,242,160,54,230,171,224,204,103,175,10,106,221,149,171,15,184,59,161,77,177,31,2,28,187,141,193,149,222,207,199,218,146,97,230,160,247,168,224,222,36,174,32,171,127,214,65,21,251,96,167,63,103,149,233,214,230,207,193,45,118,58,205,31,60,21,202,223,128],[249,2,17,160,139,87,125,242,116,165,208,189,142,51,124,65,207,245,72,19,50,129,126,183,234,163,41,196,98,235,181,113,125,78,23,166,160,180,204,224,39,117,84,85,112,150,96,196,51,133,26,248,7,34,233,67,138,18,182,213,18,127,14,150,76,240,244,145,158,160,170,238,233,48,72,229,230,237,28,196,147,172,36,81,152,10,162,86,83,206,137,50,134,7,54,77,253,203,201,141,158,109,160,71,154,162,30,110,37,221,206,210,80,69,150,253,234,240,224,29,192,147,238,162,53,114,69,64,12,184,178,211,142,78,251,160,35,118,160,4,170,184,187,169,240,105,112,7,203,59,154,177,87,170,9,108,172,175,119,161,189,253,132,51,123,64,255,99,160,73,24,1,202,216,81,73,9,183,140,40,248,84,18,198,67,137,106,1,83,215,114,217,55,183,50,196,227,85,52,168,19,160,129,103,83,127,82,116,230,206,168,220,218,71,239,39,86,166,136,38,237,137,0,142,199,113,122,193,27,185,199,80,39,137,160,110,167,23,121,182,179,115,241,60,186,83,63,247,41,222,203,160,31,82,180,69,241,203,180,222,83,18,133,218,44,181,72,160,53,183,127,132,148,70,93,129,175,187,105,98,9,141,18,253,57,52,169,211,111,38,155,164,206,139,107,58,32,95,237,73,160,193,53,196,35,150,25,179,161,247,84,155,154,238,201,134,145,77,173,16,132,13,104,220,14,84,32,47,139,111,47,208,81,160,29,106,10,72,101,25,6,228,51,46,147,7,32,88,56,70,155,39,66,49,67,6,117,223,239,218,63,19,197,142,91,46,160,156,41,190,49,2,225,64,58,218,0,15,85,150,222,137,200,185,218,103,180,120,39,25,151,195,239,153,189,101,125,132,253,160,179,84,233,104,7,107,250,152,65,159,163,149,192,123,200,192,65,124,108,200,161,161,15,34,147,230,121,32,222,89,37,105,160,39,126,151,229,15,70,112,195,197,204,14,202,162,72,238,38,56,224,111,207,221,68,33,0,191,66,223,59,187,35,103,242,160,54,230,171,224,204,103,175,10,106,221,149,171,15,184,59,161,77,177,31,2,28,187,141,193,149,222,207,199,218,146,97,230,160,247,168,224,222,36,174,32,171,127,214,65,21,251,96,167,63,103,149,233,214,230,207,193,45,118,58,205,31,60,21,202,223,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,42,69,74,233,51,55,125,49,134,79,5,11,23,237,229,204,137,171,175,160,3,203,122,137,115,53,181,134,199,219,126,34,0],[160,186,120,50,187,77,90,188,101,236,23,224,168,50,233,97,33,8,252,71,148,51,225,65,53,97,165,241,123,79,230,197,226,0],[160,87,249,154,161,87,108,160,38,150,10,71,98,85,108,197,115,179,21,136,210,0,173,99,171,90,120,141,211,85,47,74,9,0],[160,158,194,31,13,66,219,255,194,107,139,155,47,58,233,9,167,34,240,74,55,211,99,136,187,160,57,136,92,162,40,21,185,0],[160,7,22,14,240,96,245,189,81,95,249,98,56,205,118,150,96,240,227,34,134,86,26,90,213,243,83,133,203,87,244,212,14,0],[160,53,107,83,118,132,150,236,108,77,129,218,220,95,143,197,7,147,202,168,6,138,253,71,184,253,169,133,170,48,141,163,142,0],[160,37,182,103,107,119,130,81,38,250,63,164,18,60,40,32,2,117,148,189,194,218,179,3,89,41,173,189,94,78,213,224,44,0],[160,27,156,161,228,42,14,191,152,87,248,156,237,32,25,205,11,240,213,82,138,167,213,162,206,133,224,42,82,84,217,156,179,0],[160,95,192,157,205,29,60,221,215,224,83,139,69,204,148,99,195,15,125,217,102,199,100,60,58,198,193,152,245,109,109,90,216,0],[160,71,177,110,59,171,123,226,64,218,100,157,24,188,213,154,238,160,139,144,42,215,22,177,21,175,39,203,2,120,179,197,246,0],[160,24,119,127,141,163,51,62,104,2,80,64,133,197,69,95,204,142,96,151,164,181,148,211,31,210,37,96,222,226,119,190,165,0],[160,42,69,74,233,51,55,125,49,134,79,5,11,23,237,229,204,137,171,175,160,3,203,122,137,115,53,181,134,199,219,126,34,0],[160,74,232,147,77,242,197,121,16,176,74,164,51,26,128,56,141,247,126,87,115,226,38,144,38,201,225,182,15,114,41,115,179,0],[160,201,238,237,16,208,91,54,223,100,55,122,151,106,126,98,160,227,15,200,75,56,159,162,171,221,66,85,57,131,29,102,74,0],[160,59,15,113,37,211,99,166,201,205,207,197,126,184,63,231,111,129,255,209,35,97,141,32,170,62,131,119,13,151,206,238,208,0],[160,33,169,135,179,81,23,187,79,50,233,198,203,156,155,169,160,147,134,35,173,137,144,76,16,126,247,144,97,30,20,73,178,0],[160,102,2,198,141,178,155,28,113,155,89,204,45,189,203,119,70,36,225,156,195,176,63,61,193,198,13,23,125,53,154,120,43,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,186,120,50,187,77,90,188,101,236,23,224,168,50,233,97,33,8,252,71,148,51,225,65,53,97,165,241,123,79,230,197,226,160,87,249,154,161,87,108,160,38,150,10,71,98,85,108,197,115,179,21,136,210,0,173,99,171,90,120,141,211,85,47,74,9,160,158,194,31,13,66,219,255,194,107,139,155,47,58,233,9,167,34,240,74,55,211,99,136,187,160,57,136,92,162,40,21,185,160,7,22,14,240,96,245,189,81,95,249,98,56,205,118,150,96,240,227,34,134,86,26,90,213,243,83,133,203,87,244,212,14,160,53,107,83,118,132,150,236,108,77,129,218,220,95,143,197,7,147,202,168,6,138,253,71,184,253,169,133,170,48,141,163,142,160,37,182,103,107,119,130,81,38,250,63,164,18,60,40,32,2,117,148,189,194,218,179,3,89,41,173,189,94,78,213,224,44,160,27,156,161,228,42,14,191,152,87,248,156,237,32,25,205,11,240,213,82,138,167,213,162,206,133,224,42,82,84,217,156,179,160,95,192,157,205,29,60,221,215,224,83,139,69,204,148,99,195,15,125,217,102,199,100,60,58,198,193,152,245,109,109,90,216,160,71,177,110,59,171,123,226,64,218,100,157,24,188,213,154,238,160,139,144,42,215,22,177,21,175,39,203,2,120,179,197,246,160,24,119,127,141,163,51,62,104,2,80,64,133,197,69,95,204,142,96,151,164,181,148,211,31,210,37,96,222,226,119,190,165,160,42,69,74,233,51,55,125,49,134,79,5,11,23,237,229,204,137,171,175,160,3,203,122,137,115,53,181,134,199,219,126,34,160,74,232,147,77,242,197,121,16,176,74,164,51,26,128,56,141,247,126,87,115,226,38,144,38,201,225,182,15,114,41,115,179,160,201,238,237,16,208,91,54,223,100,55,122,151,106,126,98,160,227,15,200,75,56,159,162,171,221,66,85,57,131,29,102,74,160,59,15,113,37,211,99,166,201,205,207,197,126,184,63,231,111,129,255,209,35,97,141,32,170,62,131,119,13,151,206,238,208,160,33,169,135,179,81,23,187,79,50,233,198,203,156,155,169,160,147,134,35,173,137,144,76,16,126,247,144,97,30,20,73,178,160,102,2,198,141,178,155,28,113,155,89,204,45,189,203,119,70,36,225,156,195,176,63,61,193,198,13,23,125,53,154,120,43,128],[249,2,17,160,186,120,50,187,77,90,188,101,236,23,224,168,50,233,97,33,8,252,71,148,51,225,65,53,97,165,241,123,79,230,197,226,160,87,249,154,161,87,108,160,38,150,10,71,98,85,108,197,115,179,21,136,210,0,173,99,171,90,120,141,211,85,47,74,9,160,158,194,31,13,66,219,255,194,107,139,155,47,58,233,9,167,34,240,74,55,211,99,136,187,160,57,136,92,162,40,21,185,160,7,22,14,240,96,245,189,81,95,249,98,56,205,118,150,96,240,227,34,134,86,26,90,213,243,83,133,203,87,244,212,14,160,53,107,83,118,132,150,236,108,77,129,218,220,95,143,197,7,147,202,168,6,138,253,71,184,253,169,133,170,48,141,163,142,160,37,182,103,107,119,130,81,38,250,63,164,18,60,40,32,2,117,148,189,194,218,179,3,89,41,173,189,94,78,213,224,44,160,27,156,161,228,42,14,191,152,87,248,156,237,32,25,205,11,240,213,82,138,167,213,162,206,133,224,42,82,84,217,156,179,160,95,192,157,205,29,60,221,215,224,83,139,69,204,148,99,195,15,125,217,102,199,100,60,58,198,193,152,245,109,109,90,216,160,71,177,110,59,171,123,226,64,218,100,157,24,188,213,154,238,160,139,144,42,215,22,177,21,175,39,203,2,120,179,197,246,160,24,119,127,141,163,51,62,104,2,80,64,133,197,69,95,204,142,96,151,164,181,148,211,31,210,37,96,222,226,119,190,165,160,42,69,74,233,51,55,125,49,134,79,5,11,23,237,229,204,137,171,175,160,3,203,122,137,115,53,181,134,199,219,126,34,160,74,232,147,77,242,197,121,16,176,74,164,51,26,128,56,141,247,126,87,115,226,38,144,38,201,225,182,15,114,41,115,179,160,201,238,237,16,208,91,54,223,100,55,122,151,106,126,98,160,227,15,200,75,56,159,162,171,221,66,85,57,131,29,102,74,160,59,15,113,37,211,99,166,201,205,207,197,126,184,63,231,111,129,255,209,35,97,141,32,170,62,131,119,13,151,206,238,208,160,33,169,135,179,81,23,187,79,50,233,198,203,156,155,169,160,147,134,35,173,137,144,76,16,126,247,144,97,30,20,73,178,160,102,2,198,141,178,155,28,113,155,89,204,45,189,203,119,70,36,225,156,195,176,63,61,193,198,13,23,125,53,154,120,43,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":6,"drifted_index":6,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,207,145,8,113,104,80,200,249,25,156,71,69,100,199,215,231,208,144,224,51,149,195,70,84,132,70,110,198,60,215,179,86,0],[160,224,125,102,123,183,190,76,240,80,150,72,55,49,27,152,3,145,181,23,228,121,1,125,91,111,149,48,136,145,243,118,75,0],[160,16,45,78,125,107,92,17,100,182,41,159,253,210,223,148,148,118,85,163,229,210,117,94,191,90,199,209,157,0,45,12,94,0],[160,135,204,214,122,72,22,138,20,226,31,197,27,55,221,40,18,76,166,172,114,135,50,230,36,182,115,167,224,1,89,241,249,0],[160,18,9,87,230,106,92,117,196,38,50,108,201,168,246,157,252,172,161,104,104,69,186,128,168,250,61,34,34,140,44,38,252,0],[160,242,88,126,18,229,21,213,202,133,171,52,72,15,80,243,141,174,198,127,223,103,206,97,52,146,164,167,100,250,0,5,170,0],[160,140,93,78,229,19,235,65,234,232,74,57,148,253,185,175,120,242,140,182,199,32,230,6,127,233,243,137,156,221,201,2,208,0],[160,207,145,8,113,104,80,200,249,25,156,71,69,100,199,215,231,208,144,224,51,149,195,70,84,132,70,110,198,60,215,179,86,0],[160,100,123,24,104,228,153,81,134,31,178,215,239,57,76,131,204,50,15,92,230,212,237,157,117,129,190,111,248,242,97,16,149,0],[160,17,230,165,122,150,80,107,10,226,20,164,12,154,129,31,207,26,59,65,180,212,177,145,121,65,106,73,111,217,116,4,57,0],[160,249,99,44,90,113,150,184,202,77,110,150,4,27,72,115,42,22,126,226,205,5,62,83,224,62,30,59,121,247,152,50,122,0],[160,93,55,116,72,40,251,109,115,84,167,198,118,25,89,85,119,186,188,163,40,152,4,181,235,91,142,98,53,190,29,162,212,0],[160,216,114,84,193,79,74,28,121,215,157,202,47,207,132,102,47,228,52,41,28,199,222,56,49,84,102,15,240,4,177,201,13,0],[160,38,11,71,185,180,81,53,82,226,200,59,192,164,62,61,62,211,118,86,79,61,227,194,64,192,217,227,11,50,195,45,125,0],[160,152,45,63,210,126,121,44,158,246,180,28,21,141,134,125,254,177,233,180,103,3,122,24,217,158,217,101,7,195,34,30,225,0],[160,111,94,174,37,212,36,95,243,92,94,153,8,241,110,254,148,224,198,147,144,15,28,35,183,171,90,166,36,14,116,22,114,0],[160,91,247,135,40,23,214,173,50,15,119,96,7,26,236,163,154,124,246,185,56,62,170,162,213,33,138,21,60,178,192,112,255,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,224,125,102,123,183,190,76,240,80,150,72,55,49,27,152,3,145,181,23,228,121,1,125,91,111,149,48,136,145,243,118,75,160,16,45,78,125,107,92,17,100,182,41,159,253,210,223,148,148,118,85,163,229,210,117,94,191,90,199,209,157,0,45,12,94,160,135,204,214,122,72,22,138,20,226,31,197,27,55,221,40,18,76,166,172,114,135,50,230,36,182,115,167,224,1,89,241,249,160,18,9,87,230,106,92,117,196,38,50,108,201,168,246,157,252,172,161,104,104,69,186,128,168,250,61,34,34,140,44,38,252,160,242,88,126,18,229,21,213,202,133,171,52,72,15,80,243,141,174,198,127,223,103,206,97,52,146,164,167,100,250,0,5,170,160,140,93,78,229,19,235,65,234,232,74,57,148,253,185,175,120,242,140,182,199,32,230,6,127,233,243,137,156,221,201,2,208,160,207,145,8,113,104,80,200,249,25,156,71,69,100,199,215,231,208,144,224,51,149,195,70,84,132,70,110,198,60,215,179,86,160,100,123,24,104,228,153,81,134,31,178,215,239,57,76,131,204,50,15,92,230,212,237,157,117,129,190,111,248,242,97,16,149,160,17,230,165,122,150,80,107,10,226,20,164,12,154,129,31,207,26,59,65,180,212,177,145,121,65,106,73,111,217,116,4,57,160,249,99,44,90,113,150,184,202,77,110,150,4,27,72,115,42,22,126,226,205,5,62,83,224,62,30,59,121,247,152,50,122,160,93,55,116,72,40,251,109,115,84,167,198,118,25,89,85,119,186,188,163,40,152,4,181,235,91,142,98,53,190,29,162,212,160,216,114,84,193,79,74,28,121,215,157,202,47,207,132,102,47,228,52,41,28,199,222,56,49,84,102,15,240,4,177,201,13,160,38,11,71,185,180,81,53,82,226,200,59,192,164,62,61,62,211,118,86,79,61,227,194,64,192,217,227,11,50,195,45,125,160,152,45,63,210,126,121,44,158,246,180,28,21,141,134,125,254,177,233,180,103,3,122,24,217,158,217,101,7,195,34,30,225,160,111,94,174,37,212,36,95,243,92,94,153,8,241,110,254,148,224,198,147,144,15,28,35,183,171,90,166,36,14,116,22,114,160,91,247,135,40,23,214,173,50,15,119,96,7,26,236,163,154,124,246,185,56,62,170,162,213,33,138,21,60,178,192,112,255,128],[249,2,17,160,224,125,102,123,183,190,76,240,80,150,72,55,49,27,152,3,145,181,23,228,121,1,125,91,111,149,48,136,145,243,118,75,160,16,45,78,125,107,92,17,100,182,41,159,253,210,223,148,148,118,85,163,229,210,117,94,191,90,199,209,157,0,45,12,94,160,135,204,214,122,72,22,138,20,226,31,197,27,55,221,40,18,76,166,172,114,135,50,230,36,182,115,167,224,1,89,241,249,160,18,9,87,230,106,92,117,196,38,50,108,201,168,246,157,252,172,161,104,104,69,186,128,168,250,61,34,34,140,44,38,252,160,242,88,126,18,229,21,213,202,133,171,52,72,15,80,243,141,174,198,127,223,103,206,97,52,146,164,167,100,250,0,5,170,160,140,93,78,229,19,235,65,234,232,74,57,148,253,185,175,120,242,140,182,199,32,230,6,127,233,243,137,156,221,201,2,208,160,207,145,8,113,104,80,200,249,25,156,71,69,100,199,215,231,208,144,224,51,149,195,70,84,132,70,110,198,60,215,179,86,160,100,123,24,104,228,153,81,134,31,178,215,239,57,76,131,204,50,15,92,230,212,237,157,117,129,190,111,248,242,97,16,149,160,17,230,165,122,150,80,107,10,226,20,164,12,154,129,31,207,26,59,65,180,212,177,145,121,65,106,73,111,217,116,4,57,160,249,99,44,90,113,150,184,202,77,110,150,4,27,72,115,42,22,126,226,205,5,62,83,224,62,30,59,121,247,152,50,122,160,93,55,116,72,40,251,109,115,84,167,198,118,25,89,85,119,186,188,163,40,152,4,181,235,91,142,98,53,190,29,162,212,160,216,114,84,193,79,74,28,121,215,157,202,47,207,132,102,47,228,52,41,28,199,222,56,49,84,102,15,240,4,177,201,13,160,38,11,71,185,180,81,53,82,226,200,59,192,164,62,61,62,211,118,86,79,61,227,194,64,192,217,227,11,50,195,45,125,160,152,45,63,210,126,121,44,158,246,180,28,21,141,134,125,254,177,233,180,103,3,122,24,217,158,217,101,7,195,34,30,225,160,111,94,174,37,212,36,95,243,92,94,153,8,241,110,254,148,224,198,147,144,15,28,35,183,171,90,166,36,14,116,22,114,160,91,247,135,40,23,214,173,50,15,119,96,7,26,236,163,154,124,246,185,56,62,170,162,213,33,138,21,60,178,192,112,255,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,210,18,153,129,9,16,109,118,224,110,219,219,227,254,219,187,210,121,21,214,121,115,230,154,173,190,226,160,131,181,148,83,0],[160,69,111,93,97,16,10,85,79,112,187,177,173,107,36,208,199,70,69,49,204,155,166,132,6,103,17,52,210,244,231,166,214,0],[160,104,218,247,233,65,160,14,254,179,240,12,33,141,176,116,30,75,151,217,123,99,26,89,142,135,39,255,107,146,54,96,2,0],[160,34,6,56,163,188,214,134,47,143,78,51,197,151,237,211,183,161,133,209,12,200,150,86,248,224,14,36,169,174,141,243,115,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,187,8,33,80,96,206,196,250,134,134,112,42,91,42,57,171,4,137,203,82,72,146,26,225,5,84,122,184,204,86,157,49,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,23,153,85,176,241,174,136,189,104,158,131,95,184,160,5,221,130,113,181,30,249,40,22,18,52,16,116,49,223,13,17,123,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,19,115,77,235,127,68,44,78,62,74,164,234,167,26,189,226,50,203,156,107,145,45,147,193,53,225,78,87,254,134,171,180,0],[160,210,18,153,129,9,16,109,118,224,110,219,219,227,254,219,187,210,121,21,214,121,115,230,154,173,190,226,160,131,181,148,83,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,197,44,219,124,244,146,81,14,102,63,55,83,8,179,18,25,9,155,204,135,154,73,231,38,118,138,238,135,249,177,241,54,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,160,69,111,93,97,16,10,85,79,112,187,177,173,107,36,208,199,70,69,49,204,155,166,132,6,103,17,52,210,244,231,166,214,160,104,218,247,233,65,160,14,254,179,240,12,33,141,176,116,30,75,151,217,123,99,26,89,142,135,39,255,107,146,54,96,2,160,34,6,56,163,188,214,134,47,143,78,51,197,151,237,211,183,161,133,209,12,200,150,86,248,224,14,36,169,174,141,243,115,128,128,160,187,8,33,80,96,206,196,250,134,134,112,42,91,42,57,171,4,137,203,82,72,146,26,225,5,84,122,184,204,86,157,49,128,128,128,128,160,23,153,85,176,241,174,136,189,104,158,131,95,184,160,5,221,130,113,181,30,249,40,22,18,52,16,116,49,223,13,17,123,128,160,19,115,77,235,127,68,44,78,62,74,164,234,167,26,189,226,50,203,156,107,145,45,147,193,53,225,78,87,254,134,171,180,160,210,18,153,129,9,16,109,118,224,110,219,219,227,254,219,187,210,121,21,214,121,115,230,154,173,190,226,160,131,181,148,83,128,160,197,44,219,124,244,146,81,14,102,63,55,83,8,179,18,25,9,155,204,135,154,73,231,38,118,138,238,135,249,177,241,54,128],[249,1,17,160,69,111,93,97,16,10,85,79,112,187,177,173,107,36,208,199,70,69,49,204,155,166,132,6,103,17,52,210,244,231,166,214,160,104,218,247,233,65,160,14,254,179,240,12,33,141,176,116,30,75,151,217,123,99,26,89,142,135,39,255,107,146,54,96,2,160,34,6,56,163,188,214,134,47,143,78,51,197,151,237,211,183,161,133,209,12,200,150,86,248,224,14,36,169,174,141,243,115,128,128,160,187,8,33,80,96,206,196,250,134,134,112,42,91,42,57,171,4,137,203,82,72,146,26,225,5,84,122,184,204,86,157,49,128,128,128,128,160,23,153,85,176,241,174,136,189,104,158,131,95,184,160,5,221,130,113,181,30,249,40,22,18,52,16,116,49,223,13,17,123,128,160,19,115,77,235,127,68,44,78,62,74,164,234,167,26,189,226,50,203,156,107,145,45,147,193,53,225,78,87,254,134,171,180,160,210,18,153,129,9,16,109,118,224,110,219,219,227,254,219,187,210,121,21,214,121,115,230,154,173,190,226,160,131,181,148,83,128,160,197,44,219,124,244,146,81,14,102,63,55,83,8,179,18,25,9,155,204,135,154,73,231,38,118,138,238,135,249,177,241,54,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,172,239,18,160,24,131,194,179,252,87,149,120,38,223,78,36,232,177,156],"key":[170,70,166,220,65,240,27,213,104,207,131,191,50,93,7,12,58,101,202,54,249,141,201,161,159,238,126,8,87,174,206,104],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,60,65,240,27,213,104,207,131,191,50,93,7,12,58,101,202,54,249,141,201,161,159,238,126,8,87,174,206,104,0,0,0,0],[157,60,65,240,27,213,104,207,131,191,50,93,7,12,58,101,202,54,249,141,201,161,159,238,126,8,87,174,206,104,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,243,180,122,255,168,251,76,111,113,241,104,225,225,93,38,173,150,5,201,44,175,118,224,190,143,85,238,209,187,163,73,26,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,243,180,122,255,168,251,76,111,113,241,104,225,225,93,38,173,150,5,201,44,175,118,224,190,143,85,238,209,187,163,73,26,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,60,65,240,27,213,104,207,131,191,50,93,7,12,58,101,202,54,249,141,201,161,159,238,126,8,87,174,206,104,0,0,0,0]],"keccak_data":[[248,102,157,60,65,240,27,213,104,207,131,191,50,93,7,12,58,101,202,54,249,141,201,161,159,238,126,8,87,174,206,104,184,70,248,68,128,128,160,243,180,122,255,168,251,76,111,113,241,104,225,225,93,38,173,150,5,201,44,175,118,224,190,143,85,238,209,187,163,73,26,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,60,65,240,27,213,104,207,131,191,50,93,7,12,58,101,202,54,249,141,201,161,159,238,126,8,87,174,206,104,184,70,248,68,128,128,160,243,180,122,255,168,251,76,111,113,241,104,225,225,93,38,173,150,5,201,44,175,118,224,190,143,85,238,209,187,163,73,26,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,172,239,18,160,24,131,194,179,252,87,149,120,38,223,78,36,232,177,156]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,242,180,228,187,147,246,33,143,128,29,243,225,170,107,37,128,253,77,222,159,38,5,104,197,96,11,130,42,56,11,208,21,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,242,180,228,187,147,246,33,143,128,29,243,225,170,107,37,128,253,77,222,159,38,5,104,197,96,11,130,42,56,11,208,21,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,51,211,230,140,132,150,119,250,25,123,206,227,49,78,34,35,22,71,85,31,180,179,128,72,6,170,22,74,193,10,55,116,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,160,242,180,228,187,147,246,33,143,128,29,243,225,170,107,37,128,253,77,222,159,38,5,104,197,96,11,130,42,56,11,208,21,128,128,128,128,128,128,128,160,51,211,230,140,132,150,119,250,25,123,206,227,49,78,34,35,22,71,85,31,180,179,128,72,6,170,22,74,193,10,55,116,128,128,128,128,128],[248,81,128,128,128,160,242,180,228,187,147,246,33,143,128,29,243,225,170,107,37,128,253,77,222,159,38,5,104,197,96,11,130,42,56,11,208,21,128,128,128,128,128,128,128,160,51,211,230,140,132,150,119,250,25,123,206,227,49,78,34,35,22,71,85,31,180,179,128,72,6,170,22,74,193,10,55,116,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33],"key":[58,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112],"list_rlp_bytes":[[248,67],[248,67]],"value_rlp_bytes":[[161],[161]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,67]},"values":[[160,49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,0],[160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170,0],[160,49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,0],[160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,58,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112,0]],"keccak_data":[[248,67,160,49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,161,160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170],[248,67,160,49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,161,160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/NonExistingStorageNil.json b/zkevm-circuits/src/mpt_circuit/tests/NonExistingStorageNil.json new file mode 100644 index 0000000000..bc341057e6 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/NonExistingStorageNil.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageDoesNotExist"},"extension_branch":null,"account":null,"storage":null,"values":[[160,51,249,190,25,92,195,96,144,163,223,3,204,51,198,92,180,19,6,89,244,90,113,203,1,243,202,105,41,218,208,136,76,0],[160,51,249,190,25,92,195,96,144,163,223,3,204,51,198,92,180,19,6,89,244,90,113,203,1,243,202,105,41,218,208,136,76,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,81,161,102,91,160,19,144,108,131,101,101,23,128,254,23,127,21,66,253,142,104,3,221,12,246,12,75,151,83,165,8,247,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,81,161,102,91,160,19,144,108,131,101,101,23,128,254,23,127,21,66,253,142,104,3,221,12,246,12,75,151,83,165,8,247,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,81,161,102,91,160,19,144,108,131,101,101,23,128,254,23,127,21,66,253,142,104,3,221,12,246,12,75,151,83,165,8,247,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,81,161,102,91,160,19,144,108,131,101,101,23,128,254,23,127,21,66,253,142,104,3,221,12,246,12,75,151,83,165,8,247,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,11,161,79,203,76,0,94,197,247,21,34,15,237,251,186,101,156,155,254,196,0,173,231,220,178,64,214,23,193,146,249,233,0],[160,32,114,50,12,62,189,106,20,134,185,146,28,23,254,217,42,238,29,2,23,26,44,204,98,23,49,136,43,60,200,131,203,0],[160,10,122,174,89,193,94,170,119,181,105,68,128,225,99,30,47,203,11,219,63,185,212,28,135,191,38,229,164,205,251,29,178,0],[160,196,56,120,16,50,206,164,153,42,137,240,168,48,191,84,89,147,194,236,15,27,79,106,86,147,188,114,238,224,245,134,237,0],[160,110,98,248,22,245,45,207,250,31,51,65,156,160,157,187,161,111,44,138,199,254,61,51,142,225,57,123,216,229,126,111,230,0],[160,43,111,2,145,226,86,104,84,88,106,96,162,207,2,192,64,233,219,19,142,115,84,245,190,9,221,204,102,175,1,218,152,0],[160,91,124,51,211,9,235,73,230,129,79,76,57,179,252,147,61,46,222,55,49,156,35,181,181,217,140,199,194,135,126,239,251,0],[160,198,173,47,15,24,247,123,29,143,238,210,5,76,44,0,7,148,217,241,207,46,233,29,69,86,104,40,186,220,153,45,109,0],[160,11,161,79,203,76,0,94,197,247,21,34,15,237,251,186,101,156,155,254,196,0,173,231,220,178,64,214,23,193,146,249,233,0],[160,94,170,238,196,129,29,127,164,98,174,87,50,178,177,9,46,2,110,163,58,47,215,198,105,189,243,131,59,129,53,180,89,0],[160,100,67,185,240,66,4,48,205,115,127,26,88,222,95,211,125,147,9,222,53,50,52,5,236,92,121,225,7,231,129,183,118,0],[160,98,103,206,41,116,82,141,170,215,102,145,113,216,126,189,19,11,241,144,204,193,255,163,78,123,38,167,60,204,134,150,138,0],[160,14,57,61,55,77,138,237,254,201,136,74,118,169,27,32,212,0,81,198,68,17,205,32,97,149,86,102,107,103,216,158,108,0],[160,151,89,46,200,117,181,97,231,220,224,98,192,154,217,203,140,50,96,138,63,225,123,181,80,33,237,168,148,72,146,50,208,0],[160,70,252,166,157,14,188,140,228,37,115,14,85,160,172,150,194,35,108,206,222,246,77,148,119,39,187,37,14,249,50,33,252,0],[160,162,242,182,77,88,97,208,25,129,240,64,131,25,157,85,189,101,121,176,49,54,69,9,103,38,30,211,249,183,129,23,209,0],[160,189,254,23,52,6,11,216,25,233,79,162,217,173,14,166,14,30,113,114,183,249,21,18,130,138,13,247,166,235,118,154,23,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,32,114,50,12,62,189,106,20,134,185,146,28,23,254,217,42,238,29,2,23,26,44,204,98,23,49,136,43,60,200,131,203,160,10,122,174,89,193,94,170,119,181,105,68,128,225,99,30,47,203,11,219,63,185,212,28,135,191,38,229,164,205,251,29,178,160,196,56,120,16,50,206,164,153,42,137,240,168,48,191,84,89,147,194,236,15,27,79,106,86,147,188,114,238,224,245,134,237,160,110,98,248,22,245,45,207,250,31,51,65,156,160,157,187,161,111,44,138,199,254,61,51,142,225,57,123,216,229,126,111,230,160,43,111,2,145,226,86,104,84,88,106,96,162,207,2,192,64,233,219,19,142,115,84,245,190,9,221,204,102,175,1,218,152,160,91,124,51,211,9,235,73,230,129,79,76,57,179,252,147,61,46,222,55,49,156,35,181,181,217,140,199,194,135,126,239,251,160,198,173,47,15,24,247,123,29,143,238,210,5,76,44,0,7,148,217,241,207,46,233,29,69,86,104,40,186,220,153,45,109,160,11,161,79,203,76,0,94,197,247,21,34,15,237,251,186,101,156,155,254,196,0,173,231,220,178,64,214,23,193,146,249,233,160,94,170,238,196,129,29,127,164,98,174,87,50,178,177,9,46,2,110,163,58,47,215,198,105,189,243,131,59,129,53,180,89,160,100,67,185,240,66,4,48,205,115,127,26,88,222,95,211,125,147,9,222,53,50,52,5,236,92,121,225,7,231,129,183,118,160,98,103,206,41,116,82,141,170,215,102,145,113,216,126,189,19,11,241,144,204,193,255,163,78,123,38,167,60,204,134,150,138,160,14,57,61,55,77,138,237,254,201,136,74,118,169,27,32,212,0,81,198,68,17,205,32,97,149,86,102,107,103,216,158,108,160,151,89,46,200,117,181,97,231,220,224,98,192,154,217,203,140,50,96,138,63,225,123,181,80,33,237,168,148,72,146,50,208,160,70,252,166,157,14,188,140,228,37,115,14,85,160,172,150,194,35,108,206,222,246,77,148,119,39,187,37,14,249,50,33,252,160,162,242,182,77,88,97,208,25,129,240,64,131,25,157,85,189,101,121,176,49,54,69,9,103,38,30,211,249,183,129,23,209,160,189,254,23,52,6,11,216,25,233,79,162,217,173,14,166,14,30,113,114,183,249,21,18,130,138,13,247,166,235,118,154,23,128],[249,2,17,160,32,114,50,12,62,189,106,20,134,185,146,28,23,254,217,42,238,29,2,23,26,44,204,98,23,49,136,43,60,200,131,203,160,10,122,174,89,193,94,170,119,181,105,68,128,225,99,30,47,203,11,219,63,185,212,28,135,191,38,229,164,205,251,29,178,160,196,56,120,16,50,206,164,153,42,137,240,168,48,191,84,89,147,194,236,15,27,79,106,86,147,188,114,238,224,245,134,237,160,110,98,248,22,245,45,207,250,31,51,65,156,160,157,187,161,111,44,138,199,254,61,51,142,225,57,123,216,229,126,111,230,160,43,111,2,145,226,86,104,84,88,106,96,162,207,2,192,64,233,219,19,142,115,84,245,190,9,221,204,102,175,1,218,152,160,91,124,51,211,9,235,73,230,129,79,76,57,179,252,147,61,46,222,55,49,156,35,181,181,217,140,199,194,135,126,239,251,160,198,173,47,15,24,247,123,29,143,238,210,5,76,44,0,7,148,217,241,207,46,233,29,69,86,104,40,186,220,153,45,109,160,11,161,79,203,76,0,94,197,247,21,34,15,237,251,186,101,156,155,254,196,0,173,231,220,178,64,214,23,193,146,249,233,160,94,170,238,196,129,29,127,164,98,174,87,50,178,177,9,46,2,110,163,58,47,215,198,105,189,243,131,59,129,53,180,89,160,100,67,185,240,66,4,48,205,115,127,26,88,222,95,211,125,147,9,222,53,50,52,5,236,92,121,225,7,231,129,183,118,160,98,103,206,41,116,82,141,170,215,102,145,113,216,126,189,19,11,241,144,204,193,255,163,78,123,38,167,60,204,134,150,138,160,14,57,61,55,77,138,237,254,201,136,74,118,169,27,32,212,0,81,198,68,17,205,32,97,149,86,102,107,103,216,158,108,160,151,89,46,200,117,181,97,231,220,224,98,192,154,217,203,140,50,96,138,63,225,123,181,80,33,237,168,148,72,146,50,208,160,70,252,166,157,14,188,140,228,37,115,14,85,160,172,150,194,35,108,206,222,246,77,148,119,39,187,37,14,249,50,33,252,160,162,242,182,77,88,97,208,25,129,240,64,131,25,157,85,189,101,121,176,49,54,69,9,103,38,30,211,249,183,129,23,209,160,189,254,23,52,6,11,216,25,233,79,162,217,173,14,166,14,30,113,114,183,249,21,18,130,138,13,247,166,235,118,154,23,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,143,224,89,30,184,196,153,96,132,8,72,89,237,23,38,198,197,52,213,48,160,163,90,143,21,246,48,48,243,27,57,233,0],[160,80,148,255,185,38,251,16,216,144,46,115,25,219,9,156,208,216,2,63,88,215,254,38,196,107,216,121,200,104,112,41,166,0],[160,232,64,114,15,200,106,11,109,160,11,185,172,141,121,247,148,195,206,231,233,199,129,249,71,91,217,235,116,232,212,187,23,0],[160,22,24,113,187,195,199,19,22,220,222,38,68,10,149,249,10,83,196,145,149,30,216,79,55,240,137,14,190,167,183,11,248,0],[160,26,80,98,123,95,183,78,86,169,116,95,134,0,242,193,10,159,55,133,145,50,232,89,49,77,88,236,254,190,119,46,179,0],[160,219,11,189,199,146,209,207,184,241,225,225,82,254,168,36,177,54,129,136,43,174,3,69,132,76,68,238,217,185,64,76,188,0],[160,255,255,49,52,51,148,215,160,44,11,164,35,64,77,116,244,205,109,34,105,83,191,185,98,61,152,31,107,47,93,226,182,0],[160,141,207,26,39,186,93,5,76,248,240,96,160,123,14,221,226,176,218,191,61,55,177,128,23,185,89,251,26,120,1,137,73,0],[160,35,20,61,139,93,25,155,182,10,41,79,55,103,14,165,89,100,101,112,251,202,56,255,204,172,35,165,18,191,59,191,42,0],[160,143,224,89,30,184,196,153,96,132,8,72,89,237,23,38,198,197,52,213,48,160,163,90,143,21,246,48,48,243,27,57,233,0],[160,161,117,24,172,49,150,116,109,36,187,48,213,144,170,125,36,153,110,226,55,47,140,26,254,184,244,194,140,147,47,42,231,0],[160,80,215,25,106,21,12,101,148,138,219,184,184,188,40,58,115,84,38,142,85,198,23,126,169,205,238,223,41,50,89,224,22,0],[160,117,137,133,54,28,123,80,12,122,22,182,143,154,153,195,240,131,11,204,239,47,187,92,198,160,194,159,23,63,110,69,23,0],[160,192,126,139,172,39,190,85,65,175,44,222,171,235,106,94,226,10,102,215,144,5,84,241,252,249,77,74,39,235,161,155,27,0],[160,196,6,129,141,159,153,225,109,54,205,224,250,103,31,169,248,190,191,252,11,209,179,82,134,242,212,102,162,34,226,61,112,0],[160,194,89,55,164,148,35,149,201,62,178,116,127,182,51,153,157,6,43,147,76,67,31,130,227,50,40,178,162,17,107,171,35,0],[160,117,214,70,75,202,75,148,198,51,170,204,17,106,206,189,79,195,252,21,147,184,128,92,162,208,14,202,231,35,190,240,162,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,80,148,255,185,38,251,16,216,144,46,115,25,219,9,156,208,216,2,63,88,215,254,38,196,107,216,121,200,104,112,41,166,160,232,64,114,15,200,106,11,109,160,11,185,172,141,121,247,148,195,206,231,233,199,129,249,71,91,217,235,116,232,212,187,23,160,22,24,113,187,195,199,19,22,220,222,38,68,10,149,249,10,83,196,145,149,30,216,79,55,240,137,14,190,167,183,11,248,160,26,80,98,123,95,183,78,86,169,116,95,134,0,242,193,10,159,55,133,145,50,232,89,49,77,88,236,254,190,119,46,179,160,219,11,189,199,146,209,207,184,241,225,225,82,254,168,36,177,54,129,136,43,174,3,69,132,76,68,238,217,185,64,76,188,160,255,255,49,52,51,148,215,160,44,11,164,35,64,77,116,244,205,109,34,105,83,191,185,98,61,152,31,107,47,93,226,182,160,141,207,26,39,186,93,5,76,248,240,96,160,123,14,221,226,176,218,191,61,55,177,128,23,185,89,251,26,120,1,137,73,160,35,20,61,139,93,25,155,182,10,41,79,55,103,14,165,89,100,101,112,251,202,56,255,204,172,35,165,18,191,59,191,42,160,143,224,89,30,184,196,153,96,132,8,72,89,237,23,38,198,197,52,213,48,160,163,90,143,21,246,48,48,243,27,57,233,160,161,117,24,172,49,150,116,109,36,187,48,213,144,170,125,36,153,110,226,55,47,140,26,254,184,244,194,140,147,47,42,231,160,80,215,25,106,21,12,101,148,138,219,184,184,188,40,58,115,84,38,142,85,198,23,126,169,205,238,223,41,50,89,224,22,160,117,137,133,54,28,123,80,12,122,22,182,143,154,153,195,240,131,11,204,239,47,187,92,198,160,194,159,23,63,110,69,23,160,192,126,139,172,39,190,85,65,175,44,222,171,235,106,94,226,10,102,215,144,5,84,241,252,249,77,74,39,235,161,155,27,160,196,6,129,141,159,153,225,109,54,205,224,250,103,31,169,248,190,191,252,11,209,179,82,134,242,212,102,162,34,226,61,112,160,194,89,55,164,148,35,149,201,62,178,116,127,182,51,153,157,6,43,147,76,67,31,130,227,50,40,178,162,17,107,171,35,160,117,214,70,75,202,75,148,198,51,170,204,17,106,206,189,79,195,252,21,147,184,128,92,162,208,14,202,231,35,190,240,162,128],[249,2,17,160,80,148,255,185,38,251,16,216,144,46,115,25,219,9,156,208,216,2,63,88,215,254,38,196,107,216,121,200,104,112,41,166,160,232,64,114,15,200,106,11,109,160,11,185,172,141,121,247,148,195,206,231,233,199,129,249,71,91,217,235,116,232,212,187,23,160,22,24,113,187,195,199,19,22,220,222,38,68,10,149,249,10,83,196,145,149,30,216,79,55,240,137,14,190,167,183,11,248,160,26,80,98,123,95,183,78,86,169,116,95,134,0,242,193,10,159,55,133,145,50,232,89,49,77,88,236,254,190,119,46,179,160,219,11,189,199,146,209,207,184,241,225,225,82,254,168,36,177,54,129,136,43,174,3,69,132,76,68,238,217,185,64,76,188,160,255,255,49,52,51,148,215,160,44,11,164,35,64,77,116,244,205,109,34,105,83,191,185,98,61,152,31,107,47,93,226,182,160,141,207,26,39,186,93,5,76,248,240,96,160,123,14,221,226,176,218,191,61,55,177,128,23,185,89,251,26,120,1,137,73,160,35,20,61,139,93,25,155,182,10,41,79,55,103,14,165,89,100,101,112,251,202,56,255,204,172,35,165,18,191,59,191,42,160,143,224,89,30,184,196,153,96,132,8,72,89,237,23,38,198,197,52,213,48,160,163,90,143,21,246,48,48,243,27,57,233,160,161,117,24,172,49,150,116,109,36,187,48,213,144,170,125,36,153,110,226,55,47,140,26,254,184,244,194,140,147,47,42,231,160,80,215,25,106,21,12,101,148,138,219,184,184,188,40,58,115,84,38,142,85,198,23,126,169,205,238,223,41,50,89,224,22,160,117,137,133,54,28,123,80,12,122,22,182,143,154,153,195,240,131,11,204,239,47,187,92,198,160,194,159,23,63,110,69,23,160,192,126,139,172,39,190,85,65,175,44,222,171,235,106,94,226,10,102,215,144,5,84,241,252,249,77,74,39,235,161,155,27,160,196,6,129,141,159,153,225,109,54,205,224,250,103,31,169,248,190,191,252,11,209,179,82,134,242,212,102,162,34,226,61,112,160,194,89,55,164,148,35,149,201,62,178,116,127,182,51,153,157,6,43,147,76,67,31,130,227,50,40,178,162,17,107,171,35,160,117,214,70,75,202,75,148,198,51,170,204,17,106,206,189,79,195,252,21,147,184,128,92,162,208,14,202,231,35,190,240,162,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,128,210,64,36,232,87,25,151,157,53,5,163,236,235,238,238,244,222,96,49,29,31,13,153,104,5,231,22,7,200,223,157,0],[160,50,134,227,121,222,107,41,253,160,126,236,53,159,171,4,233,12,192,130,29,187,146,42,103,75,238,149,5,228,164,51,219,0],[160,109,223,240,132,44,244,231,89,34,238,116,54,182,126,145,33,158,218,129,84,25,117,193,93,57,54,129,207,71,158,10,239,0],[160,137,71,32,30,231,144,195,14,161,165,205,202,106,148,96,107,179,11,204,136,166,237,106,5,140,223,195,49,2,38,252,37,0],[160,10,16,12,178,172,155,142,38,79,250,185,38,8,229,41,242,146,125,222,231,178,85,169,113,65,235,192,3,221,253,133,121,0],[160,118,155,214,194,160,124,204,154,165,83,205,21,77,129,218,30,159,182,4,232,144,206,128,190,236,186,178,127,98,184,35,118,0],[160,242,87,113,63,110,51,159,220,10,125,93,196,79,30,80,58,128,111,185,193,117,25,116,202,155,203,154,233,77,106,251,95,0],[160,179,216,217,227,32,241,45,244,75,203,37,4,51,184,112,104,40,154,140,239,221,64,49,88,53,119,11,221,100,30,115,147,0],[160,123,86,224,58,55,134,195,209,93,93,167,112,126,144,159,207,30,2,157,97,66,237,247,243,246,61,16,108,150,69,42,216,0],[160,198,153,173,222,150,149,89,189,206,216,72,55,211,25,7,209,20,124,201,116,255,43,245,33,132,248,22,100,146,228,180,33,0],[160,18,207,94,155,112,54,113,255,83,129,204,156,94,155,128,87,24,190,90,35,118,51,118,49,201,101,169,161,53,195,204,212,0],[160,38,148,237,87,162,36,238,225,7,186,236,165,131,196,134,87,58,128,154,30,76,224,193,106,231,54,167,127,2,63,242,235,0],[160,65,15,250,185,115,180,192,8,106,46,90,186,76,63,247,99,101,120,4,178,131,76,104,150,74,77,30,88,24,180,2,165,0],[160,27,195,248,41,48,169,202,25,179,195,80,92,28,41,117,203,45,106,247,70,163,164,155,57,204,247,48,8,150,255,69,103,0],[160,77,29,23,199,242,162,32,107,153,219,31,93,210,56,39,34,133,30,238,106,236,197,206,47,158,52,226,240,22,66,24,152,0],[160,128,210,64,36,232,87,25,151,157,53,5,163,236,235,238,238,244,222,96,49,29,31,13,153,104,5,231,22,7,200,223,157,0],[160,254,142,169,167,195,251,188,33,233,78,222,45,23,253,255,129,174,132,231,175,11,153,146,70,137,247,100,109,26,106,12,199,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,50,134,227,121,222,107,41,253,160,126,236,53,159,171,4,233,12,192,130,29,187,146,42,103,75,238,149,5,228,164,51,219,160,109,223,240,132,44,244,231,89,34,238,116,54,182,126,145,33,158,218,129,84,25,117,193,93,57,54,129,207,71,158,10,239,160,137,71,32,30,231,144,195,14,161,165,205,202,106,148,96,107,179,11,204,136,166,237,106,5,140,223,195,49,2,38,252,37,160,10,16,12,178,172,155,142,38,79,250,185,38,8,229,41,242,146,125,222,231,178,85,169,113,65,235,192,3,221,253,133,121,160,118,155,214,194,160,124,204,154,165,83,205,21,77,129,218,30,159,182,4,232,144,206,128,190,236,186,178,127,98,184,35,118,160,242,87,113,63,110,51,159,220,10,125,93,196,79,30,80,58,128,111,185,193,117,25,116,202,155,203,154,233,77,106,251,95,160,179,216,217,227,32,241,45,244,75,203,37,4,51,184,112,104,40,154,140,239,221,64,49,88,53,119,11,221,100,30,115,147,160,123,86,224,58,55,134,195,209,93,93,167,112,126,144,159,207,30,2,157,97,66,237,247,243,246,61,16,108,150,69,42,216,160,198,153,173,222,150,149,89,189,206,216,72,55,211,25,7,209,20,124,201,116,255,43,245,33,132,248,22,100,146,228,180,33,160,18,207,94,155,112,54,113,255,83,129,204,156,94,155,128,87,24,190,90,35,118,51,118,49,201,101,169,161,53,195,204,212,160,38,148,237,87,162,36,238,225,7,186,236,165,131,196,134,87,58,128,154,30,76,224,193,106,231,54,167,127,2,63,242,235,160,65,15,250,185,115,180,192,8,106,46,90,186,76,63,247,99,101,120,4,178,131,76,104,150,74,77,30,88,24,180,2,165,160,27,195,248,41,48,169,202,25,179,195,80,92,28,41,117,203,45,106,247,70,163,164,155,57,204,247,48,8,150,255,69,103,160,77,29,23,199,242,162,32,107,153,219,31,93,210,56,39,34,133,30,238,106,236,197,206,47,158,52,226,240,22,66,24,152,160,128,210,64,36,232,87,25,151,157,53,5,163,236,235,238,238,244,222,96,49,29,31,13,153,104,5,231,22,7,200,223,157,160,254,142,169,167,195,251,188,33,233,78,222,45,23,253,255,129,174,132,231,175,11,153,146,70,137,247,100,109,26,106,12,199,128],[249,2,17,160,50,134,227,121,222,107,41,253,160,126,236,53,159,171,4,233,12,192,130,29,187,146,42,103,75,238,149,5,228,164,51,219,160,109,223,240,132,44,244,231,89,34,238,116,54,182,126,145,33,158,218,129,84,25,117,193,93,57,54,129,207,71,158,10,239,160,137,71,32,30,231,144,195,14,161,165,205,202,106,148,96,107,179,11,204,136,166,237,106,5,140,223,195,49,2,38,252,37,160,10,16,12,178,172,155,142,38,79,250,185,38,8,229,41,242,146,125,222,231,178,85,169,113,65,235,192,3,221,253,133,121,160,118,155,214,194,160,124,204,154,165,83,205,21,77,129,218,30,159,182,4,232,144,206,128,190,236,186,178,127,98,184,35,118,160,242,87,113,63,110,51,159,220,10,125,93,196,79,30,80,58,128,111,185,193,117,25,116,202,155,203,154,233,77,106,251,95,160,179,216,217,227,32,241,45,244,75,203,37,4,51,184,112,104,40,154,140,239,221,64,49,88,53,119,11,221,100,30,115,147,160,123,86,224,58,55,134,195,209,93,93,167,112,126,144,159,207,30,2,157,97,66,237,247,243,246,61,16,108,150,69,42,216,160,198,153,173,222,150,149,89,189,206,216,72,55,211,25,7,209,20,124,201,116,255,43,245,33,132,248,22,100,146,228,180,33,160,18,207,94,155,112,54,113,255,83,129,204,156,94,155,128,87,24,190,90,35,118,51,118,49,201,101,169,161,53,195,204,212,160,38,148,237,87,162,36,238,225,7,186,236,165,131,196,134,87,58,128,154,30,76,224,193,106,231,54,167,127,2,63,242,235,160,65,15,250,185,115,180,192,8,106,46,90,186,76,63,247,99,101,120,4,178,131,76,104,150,74,77,30,88,24,180,2,165,160,27,195,248,41,48,169,202,25,179,195,80,92,28,41,117,203,45,106,247,70,163,164,155,57,204,247,48,8,150,255,69,103,160,77,29,23,199,242,162,32,107,153,219,31,93,210,56,39,34,133,30,238,106,236,197,206,47,158,52,226,240,22,66,24,152,160,128,210,64,36,232,87,25,151,157,53,5,163,236,235,238,238,244,222,96,49,29,31,13,153,104,5,231,22,7,200,223,157,160,254,142,169,167,195,251,188,33,233,78,222,45,23,253,255,129,174,132,231,175,11,153,146,70,137,247,100,109,26,106,12,199,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,22,24,108,63,110,11,171,135,168,27,40,62,80,124,232,38,247,70,47,131,50,237,27,177,116,224,97,0,220,105,0,207,0],[160,51,241,12,122,223,81,152,154,37,130,73,169,73,174,190,217,162,228,6,125,211,205,215,202,77,228,212,82,225,163,237,192,0],[160,108,57,248,46,203,51,108,5,211,233,36,199,112,197,41,226,231,139,145,164,37,226,96,51,179,184,38,179,18,214,14,227,0],[160,216,159,123,174,245,114,217,222,163,30,130,28,130,112,42,41,60,19,247,247,77,30,167,48,212,24,142,109,140,167,139,82,0],[160,22,24,108,63,110,11,171,135,168,27,40,62,80,124,232,38,247,70,47,131,50,237,27,177,116,224,97,0,220,105,0,207,0],[160,27,32,153,65,20,139,14,102,94,202,123,191,220,51,10,53,15,90,91,208,231,17,74,83,74,152,198,129,106,142,107,134,0],[160,16,34,203,96,5,245,23,207,43,83,207,130,98,43,103,126,11,36,249,214,34,87,112,151,109,81,5,82,255,10,70,82,0],[160,132,190,217,18,224,217,151,188,25,206,221,116,137,199,19,252,252,99,167,60,24,250,47,2,99,252,223,58,210,71,103,12,0],[160,135,48,207,246,58,141,50,138,56,71,148,180,41,114,250,70,187,44,46,24,129,201,137,5,131,252,164,150,132,206,7,211,0],[160,7,209,151,13,253,160,217,6,204,0,47,210,144,219,252,152,90,3,87,48,29,26,178,0,169,194,214,154,68,243,197,216,0],[160,168,128,138,221,38,113,12,138,148,57,231,108,100,18,221,11,59,37,117,212,20,18,79,176,177,24,166,101,83,116,36,59,0],[160,144,107,197,69,239,225,195,211,211,21,4,18,41,56,121,142,55,91,224,216,214,151,57,52,247,120,231,250,1,211,193,23,0],[160,252,108,69,245,6,88,254,119,86,9,126,110,214,65,71,203,229,188,14,60,46,204,216,105,26,210,18,15,27,254,12,175,0],[160,56,164,46,14,139,85,27,222,5,117,226,241,232,26,221,205,195,150,196,115,106,141,181,231,173,150,150,86,230,174,230,118,0],[160,96,9,107,203,131,222,63,178,190,68,100,198,163,179,53,14,232,10,145,138,227,125,133,153,241,162,90,61,106,174,48,209,0],[160,162,80,140,238,232,172,104,178,189,11,3,53,206,103,224,50,105,110,53,97,36,158,83,102,72,24,88,21,28,158,125,203,0],[160,230,193,57,145,215,135,56,63,27,141,34,161,66,40,124,150,99,218,110,125,26,203,193,93,106,20,228,191,226,53,27,240,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,51,241,12,122,223,81,152,154,37,130,73,169,73,174,190,217,162,228,6,125,211,205,215,202,77,228,212,82,225,163,237,192,160,108,57,248,46,203,51,108,5,211,233,36,199,112,197,41,226,231,139,145,164,37,226,96,51,179,184,38,179,18,214,14,227,160,216,159,123,174,245,114,217,222,163,30,130,28,130,112,42,41,60,19,247,247,77,30,167,48,212,24,142,109,140,167,139,82,160,22,24,108,63,110,11,171,135,168,27,40,62,80,124,232,38,247,70,47,131,50,237,27,177,116,224,97,0,220,105,0,207,160,27,32,153,65,20,139,14,102,94,202,123,191,220,51,10,53,15,90,91,208,231,17,74,83,74,152,198,129,106,142,107,134,160,16,34,203,96,5,245,23,207,43,83,207,130,98,43,103,126,11,36,249,214,34,87,112,151,109,81,5,82,255,10,70,82,160,132,190,217,18,224,217,151,188,25,206,221,116,137,199,19,252,252,99,167,60,24,250,47,2,99,252,223,58,210,71,103,12,160,135,48,207,246,58,141,50,138,56,71,148,180,41,114,250,70,187,44,46,24,129,201,137,5,131,252,164,150,132,206,7,211,160,7,209,151,13,253,160,217,6,204,0,47,210,144,219,252,152,90,3,87,48,29,26,178,0,169,194,214,154,68,243,197,216,160,168,128,138,221,38,113,12,138,148,57,231,108,100,18,221,11,59,37,117,212,20,18,79,176,177,24,166,101,83,116,36,59,160,144,107,197,69,239,225,195,211,211,21,4,18,41,56,121,142,55,91,224,216,214,151,57,52,247,120,231,250,1,211,193,23,160,252,108,69,245,6,88,254,119,86,9,126,110,214,65,71,203,229,188,14,60,46,204,216,105,26,210,18,15,27,254,12,175,160,56,164,46,14,139,85,27,222,5,117,226,241,232,26,221,205,195,150,196,115,106,141,181,231,173,150,150,86,230,174,230,118,160,96,9,107,203,131,222,63,178,190,68,100,198,163,179,53,14,232,10,145,138,227,125,133,153,241,162,90,61,106,174,48,209,160,162,80,140,238,232,172,104,178,189,11,3,53,206,103,224,50,105,110,53,97,36,158,83,102,72,24,88,21,28,158,125,203,160,230,193,57,145,215,135,56,63,27,141,34,161,66,40,124,150,99,218,110,125,26,203,193,93,106,20,228,191,226,53,27,240,128],[249,2,17,160,51,241,12,122,223,81,152,154,37,130,73,169,73,174,190,217,162,228,6,125,211,205,215,202,77,228,212,82,225,163,237,192,160,108,57,248,46,203,51,108,5,211,233,36,199,112,197,41,226,231,139,145,164,37,226,96,51,179,184,38,179,18,214,14,227,160,216,159,123,174,245,114,217,222,163,30,130,28,130,112,42,41,60,19,247,247,77,30,167,48,212,24,142,109,140,167,139,82,160,22,24,108,63,110,11,171,135,168,27,40,62,80,124,232,38,247,70,47,131,50,237,27,177,116,224,97,0,220,105,0,207,160,27,32,153,65,20,139,14,102,94,202,123,191,220,51,10,53,15,90,91,208,231,17,74,83,74,152,198,129,106,142,107,134,160,16,34,203,96,5,245,23,207,43,83,207,130,98,43,103,126,11,36,249,214,34,87,112,151,109,81,5,82,255,10,70,82,160,132,190,217,18,224,217,151,188,25,206,221,116,137,199,19,252,252,99,167,60,24,250,47,2,99,252,223,58,210,71,103,12,160,135,48,207,246,58,141,50,138,56,71,148,180,41,114,250,70,187,44,46,24,129,201,137,5,131,252,164,150,132,206,7,211,160,7,209,151,13,253,160,217,6,204,0,47,210,144,219,252,152,90,3,87,48,29,26,178,0,169,194,214,154,68,243,197,216,160,168,128,138,221,38,113,12,138,148,57,231,108,100,18,221,11,59,37,117,212,20,18,79,176,177,24,166,101,83,116,36,59,160,144,107,197,69,239,225,195,211,211,21,4,18,41,56,121,142,55,91,224,216,214,151,57,52,247,120,231,250,1,211,193,23,160,252,108,69,245,6,88,254,119,86,9,126,110,214,65,71,203,229,188,14,60,46,204,216,105,26,210,18,15,27,254,12,175,160,56,164,46,14,139,85,27,222,5,117,226,241,232,26,221,205,195,150,196,115,106,141,181,231,173,150,150,86,230,174,230,118,160,96,9,107,203,131,222,63,178,190,68,100,198,163,179,53,14,232,10,145,138,227,125,133,153,241,162,90,61,106,174,48,209,160,162,80,140,238,232,172,104,178,189,11,3,53,206,103,224,50,105,110,53,97,36,158,83,102,72,24,88,21,28,158,125,203,160,230,193,57,145,215,135,56,63,27,141,34,161,66,40,124,150,99,218,110,125,26,203,193,93,106,20,228,191,226,53,27,240,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,152,114,105,120,10,10,91,38,126,46,99,128,203,158,68,32,150,137,142,142,220,103,7,68,247,231,125,68,50,69,173,31,0],[160,33,39,1,20,248,247,235,8,83,14,6,51,208,30,213,108,102,237,221,215,232,228,70,187,27,78,176,0,8,163,95,170,0],[160,170,99,98,103,42,49,51,254,9,177,205,247,241,15,60,230,117,203,102,101,101,117,218,172,171,136,197,129,129,130,31,135,0],[160,117,64,244,64,112,120,157,17,156,151,58,2,245,143,63,101,157,15,87,248,32,196,84,75,122,84,59,46,48,185,191,98,0],[160,152,57,96,242,252,200,111,209,46,155,238,44,25,164,134,150,12,61,86,57,75,184,111,192,204,68,72,77,18,170,16,245,0],[160,122,244,234,173,129,12,158,231,23,76,102,97,134,68,156,85,77,238,116,20,225,160,149,10,98,208,198,250,39,121,27,120,0],[160,196,241,34,116,90,96,56,131,49,177,20,26,140,119,178,238,103,214,185,234,93,9,46,201,69,146,50,75,219,126,18,104,0],[160,47,54,175,158,157,10,125,127,125,79,46,159,240,21,120,207,129,232,177,59,69,144,48,48,133,172,168,167,82,56,85,246,0],[160,234,182,79,195,232,90,25,45,147,29,63,169,129,218,194,0,227,65,134,220,75,104,160,206,99,71,160,250,166,59,33,254,0],[160,30,163,206,180,138,61,188,189,238,35,29,37,221,22,221,228,190,56,109,233,40,189,149,208,125,22,132,212,243,222,162,48,0],[160,168,86,17,145,160,253,175,87,189,242,36,138,180,171,181,57,203,52,179,52,152,169,215,250,29,11,216,22,173,124,244,48,0],[160,160,23,89,94,237,247,112,172,230,48,73,35,139,102,199,84,73,192,236,59,221,22,192,197,215,139,186,217,1,41,82,148,0],[160,152,114,105,120,10,10,91,38,126,46,99,128,203,158,68,32,150,137,142,142,220,103,7,68,247,231,125,68,50,69,173,31,0],[160,232,192,193,129,55,246,219,2,21,95,185,215,91,77,57,159,231,197,191,216,110,12,90,42,102,228,47,143,187,182,239,195,0],[160,221,159,32,235,93,231,122,178,230,101,161,192,173,79,175,184,59,126,75,86,134,254,172,15,3,234,37,200,238,16,226,190,0],[160,38,143,194,58,172,99,153,99,15,216,34,169,236,44,42,7,158,105,155,130,175,192,127,236,79,21,193,223,173,150,50,180,0],[160,2,127,2,197,234,36,175,155,248,175,204,19,60,74,97,151,82,20,50,241,248,141,215,153,181,193,58,87,151,184,73,254,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,33,39,1,20,248,247,235,8,83,14,6,51,208,30,213,108,102,237,221,215,232,228,70,187,27,78,176,0,8,163,95,170,160,170,99,98,103,42,49,51,254,9,177,205,247,241,15,60,230,117,203,102,101,101,117,218,172,171,136,197,129,129,130,31,135,160,117,64,244,64,112,120,157,17,156,151,58,2,245,143,63,101,157,15,87,248,32,196,84,75,122,84,59,46,48,185,191,98,160,152,57,96,242,252,200,111,209,46,155,238,44,25,164,134,150,12,61,86,57,75,184,111,192,204,68,72,77,18,170,16,245,160,122,244,234,173,129,12,158,231,23,76,102,97,134,68,156,85,77,238,116,20,225,160,149,10,98,208,198,250,39,121,27,120,160,196,241,34,116,90,96,56,131,49,177,20,26,140,119,178,238,103,214,185,234,93,9,46,201,69,146,50,75,219,126,18,104,160,47,54,175,158,157,10,125,127,125,79,46,159,240,21,120,207,129,232,177,59,69,144,48,48,133,172,168,167,82,56,85,246,160,234,182,79,195,232,90,25,45,147,29,63,169,129,218,194,0,227,65,134,220,75,104,160,206,99,71,160,250,166,59,33,254,160,30,163,206,180,138,61,188,189,238,35,29,37,221,22,221,228,190,56,109,233,40,189,149,208,125,22,132,212,243,222,162,48,160,168,86,17,145,160,253,175,87,189,242,36,138,180,171,181,57,203,52,179,52,152,169,215,250,29,11,216,22,173,124,244,48,160,160,23,89,94,237,247,112,172,230,48,73,35,139,102,199,84,73,192,236,59,221,22,192,197,215,139,186,217,1,41,82,148,160,152,114,105,120,10,10,91,38,126,46,99,128,203,158,68,32,150,137,142,142,220,103,7,68,247,231,125,68,50,69,173,31,160,232,192,193,129,55,246,219,2,21,95,185,215,91,77,57,159,231,197,191,216,110,12,90,42,102,228,47,143,187,182,239,195,160,221,159,32,235,93,231,122,178,230,101,161,192,173,79,175,184,59,126,75,86,134,254,172,15,3,234,37,200,238,16,226,190,160,38,143,194,58,172,99,153,99,15,216,34,169,236,44,42,7,158,105,155,130,175,192,127,236,79,21,193,223,173,150,50,180,160,2,127,2,197,234,36,175,155,248,175,204,19,60,74,97,151,82,20,50,241,248,141,215,153,181,193,58,87,151,184,73,254,128],[249,2,17,160,33,39,1,20,248,247,235,8,83,14,6,51,208,30,213,108,102,237,221,215,232,228,70,187,27,78,176,0,8,163,95,170,160,170,99,98,103,42,49,51,254,9,177,205,247,241,15,60,230,117,203,102,101,101,117,218,172,171,136,197,129,129,130,31,135,160,117,64,244,64,112,120,157,17,156,151,58,2,245,143,63,101,157,15,87,248,32,196,84,75,122,84,59,46,48,185,191,98,160,152,57,96,242,252,200,111,209,46,155,238,44,25,164,134,150,12,61,86,57,75,184,111,192,204,68,72,77,18,170,16,245,160,122,244,234,173,129,12,158,231,23,76,102,97,134,68,156,85,77,238,116,20,225,160,149,10,98,208,198,250,39,121,27,120,160,196,241,34,116,90,96,56,131,49,177,20,26,140,119,178,238,103,214,185,234,93,9,46,201,69,146,50,75,219,126,18,104,160,47,54,175,158,157,10,125,127,125,79,46,159,240,21,120,207,129,232,177,59,69,144,48,48,133,172,168,167,82,56,85,246,160,234,182,79,195,232,90,25,45,147,29,63,169,129,218,194,0,227,65,134,220,75,104,160,206,99,71,160,250,166,59,33,254,160,30,163,206,180,138,61,188,189,238,35,29,37,221,22,221,228,190,56,109,233,40,189,149,208,125,22,132,212,243,222,162,48,160,168,86,17,145,160,253,175,87,189,242,36,138,180,171,181,57,203,52,179,52,152,169,215,250,29,11,216,22,173,124,244,48,160,160,23,89,94,237,247,112,172,230,48,73,35,139,102,199,84,73,192,236,59,221,22,192,197,215,139,186,217,1,41,82,148,160,152,114,105,120,10,10,91,38,126,46,99,128,203,158,68,32,150,137,142,142,220,103,7,68,247,231,125,68,50,69,173,31,160,232,192,193,129,55,246,219,2,21,95,185,215,91,77,57,159,231,197,191,216,110,12,90,42,102,228,47,143,187,182,239,195,160,221,159,32,235,93,231,122,178,230,101,161,192,173,79,175,184,59,126,75,86,134,254,172,15,3,234,37,200,238,16,226,190,160,38,143,194,58,172,99,153,99,15,216,34,169,236,44,42,7,158,105,155,130,175,192,127,236,79,21,193,223,173,150,50,180,160,2,127,2,197,234,36,175,155,248,175,204,19,60,74,97,151,82,20,50,241,248,141,215,153,181,193,58,87,151,184,73,254,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,1,49],[249,1,49]]}},"account":null,"storage":null,"values":[[160,185,48,236,239,154,158,161,183,121,156,86,53,176,75,170,145,108,209,199,136,127,25,169,15,172,38,79,212,229,151,21,78,0],[160,119,73,17,92,128,20,103,104,232,32,124,19,16,87,60,164,208,90,161,44,211,37,10,22,234,211,119,99,38,103,198,198,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,197,2,59,23,137,170,248,2,213,118,95,76,155,251,48,153,90,243,215,96,187,113,77,106,134,162,144,12,225,177,150,82,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,163,49,39,187,25,224,238,70,65,179,76,107,218,25,133,29,45,119,79,102,88,247,235,233,62,172,199,17,252,137,160,132,0],[160,228,247,244,44,169,159,121,241,37,203,87,229,189,5,235,105,253,45,60,197,77,122,58,147,64,9,131,17,17,142,20,155,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,205,29,5,65,38,9,46,153,141,104,202,181,91,192,0,13,172,218,7,199,83,1,165,46,186,0,114,232,249,237,55,86,0],[160,95,199,183,163,77,23,5,95,41,107,232,12,194,66,48,248,191,156,189,227,198,181,71,183,94,67,71,52,31,231,186,220,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,72,154,12,74,44,172,232,136,12,112,213,212,84,199,60,155,180,189,250,131,119,235,245,179,231,69,41,210,95,2,102,69,0],[160,185,48,236,239,154,158,161,183,121,156,86,53,176,75,170,145,108,209,199,136,127,25,169,15,172,38,79,212,229,151,21,78,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,168,42,10,43,57,84,192,82,188,77,84,115,130,173,36,32,174,129,104,109,48,102,57,116,53,12,2,1,10,219,36,135,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,49,160,119,73,17,92,128,20,103,104,232,32,124,19,16,87,60,164,208,90,161,44,211,37,10,22,234,211,119,99,38,103,198,198,128,128,160,197,2,59,23,137,170,248,2,213,118,95,76,155,251,48,153,90,243,215,96,187,113,77,106,134,162,144,12,225,177,150,82,128,160,163,49,39,187,25,224,238,70,65,179,76,107,218,25,133,29,45,119,79,102,88,247,235,233,62,172,199,17,252,137,160,132,160,228,247,244,44,169,159,121,241,37,203,87,229,189,5,235,105,253,45,60,197,77,122,58,147,64,9,131,17,17,142,20,155,128,128,160,205,29,5,65,38,9,46,153,141,104,202,181,91,192,0,13,172,218,7,199,83,1,165,46,186,0,114,232,249,237,55,86,160,95,199,183,163,77,23,5,95,41,107,232,12,194,66,48,248,191,156,189,227,198,181,71,183,94,67,71,52,31,231,186,220,128,160,72,154,12,74,44,172,232,136,12,112,213,212,84,199,60,155,180,189,250,131,119,235,245,179,231,69,41,210,95,2,102,69,160,185,48,236,239,154,158,161,183,121,156,86,53,176,75,170,145,108,209,199,136,127,25,169,15,172,38,79,212,229,151,21,78,128,160,168,42,10,43,57,84,192,82,188,77,84,115,130,173,36,32,174,129,104,109,48,102,57,116,53,12,2,1,10,219,36,135,128],[249,1,49,160,119,73,17,92,128,20,103,104,232,32,124,19,16,87,60,164,208,90,161,44,211,37,10,22,234,211,119,99,38,103,198,198,128,128,160,197,2,59,23,137,170,248,2,213,118,95,76,155,251,48,153,90,243,215,96,187,113,77,106,134,162,144,12,225,177,150,82,128,160,163,49,39,187,25,224,238,70,65,179,76,107,218,25,133,29,45,119,79,102,88,247,235,233,62,172,199,17,252,137,160,132,160,228,247,244,44,169,159,121,241,37,203,87,229,189,5,235,105,253,45,60,197,77,122,58,147,64,9,131,17,17,142,20,155,128,128,160,205,29,5,65,38,9,46,153,141,104,202,181,91,192,0,13,172,218,7,199,83,1,165,46,186,0,114,232,249,237,55,86,160,95,199,183,163,77,23,5,95,41,107,232,12,194,66,48,248,191,156,189,227,198,181,71,183,94,67,71,52,31,231,186,220,128,160,72,154,12,74,44,172,232,136,12,112,213,212,84,199,60,155,180,189,250,131,119,235,245,179,231,69,41,210,95,2,102,69,160,185,48,236,239,154,158,161,183,121,156,86,53,176,75,170,145,108,209,199,136,127,25,169,15,172,38,79,212,229,151,21,78,128,160,168,42,10,43,57,84,192,82,188,77,84,115,130,173,36,32,174,129,104,109,48,102,57,116,53,12,2,1,10,219,36,135,128]]},{"start":null,"extension_branch":null,"account":{"address":[117,172,239,18,160,24,131,194,179,252,87,149,120,38,223,78,36,232,186,170],"key":[55,142,59,217,47,8,36,135,220,3,79,164,170,203,106,91,189,74,36,174,197,127,223,251,73,189,128,179,24,228,185,158],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,57,47,8,36,135,220,3,79,164,170,203,106,91,189,74,36,174,197,127,223,251,73,189,128,179,24,228,185,158,0,0,0,0],[157,57,47,8,36,135,220,3,79,164,170,203,106,91,189,74,36,174,197,127,223,251,73,189,128,179,24,228,185,158,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,108,175,176,92,138,97,66,88,92,163,20,133,186,14,202,83,61,132,245,179,24,124,92,74,69,199,166,219,149,87,245,197,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,108,175,176,92,138,97,66,88,92,163,20,133,186,14,202,83,61,132,245,179,24,124,92,74,69,199,166,219,149,87,245,197,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,57,47,8,36,135,220,3,79,164,170,203,106,91,189,74,36,174,197,127,223,251,73,189,128,179,24,228,185,158,0,0,0,0]],"keccak_data":[[248,102,157,57,47,8,36,135,220,3,79,164,170,203,106,91,189,74,36,174,197,127,223,251,73,189,128,179,24,228,185,158,184,70,248,68,128,128,160,108,175,176,92,138,97,66,88,92,163,20,133,186,14,202,83,61,132,245,179,24,124,92,74,69,199,166,219,149,87,245,197,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,57,47,8,36,135,220,3,79,164,170,203,106,91,189,74,36,174,197,127,223,251,73,189,128,179,24,228,185,158,184,70,248,68,128,128,160,108,175,176,92,138,97,66,88,92,163,20,133,186,14,202,83,61,132,245,179,24,124,92,74,69,199,166,219,149,87,245,197,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[117,172,239,18,160,24,131,194,179,252,87,149,120,38,223,78,36,232,186,170]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":6,"drifted_index":6,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,147,31,200,131,19,49,103,136,46,1,167,47,128,146,235,40,179,181,1,99,210,43,90,113,42,63,194,216,20,174,42,218,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,160,147,31,200,131,19,49,103,136,46,1,167,47,128,146,235,40,179,181,1,99,210,43,90,113,42,63,194,216,20,174,42,218,128,128,128,128,128,128,128,160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,128,128,128,128,128],[248,81,128,128,128,160,147,31,200,131,19,49,103,136,46,1,167,47,128,146,235,40,179,181,1,99,210,43,90,113,42,63,194,216,20,174,42,218,128,128,128,128,128,128,128,160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34],"key":[97,3,91,38,227,233,238,224,14,13,114,253,30,232,221,202,104,148,85,13,202,105,22,234,42,198,186,169,13,17,229,16],"list_rlp_bytes":[[226],[226]],"value_rlp_bytes":[[0],[0]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[226,160,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[226,160,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/NonceModCLong.json b/zkevm-circuits/src/mpt_circuit/tests/NonceModCLong.json new file mode 100644 index 0000000000..9985133c96 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/NonceModCLong.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"NonceChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,34,65,36,198,35,126,190,229,144,5,107,155,205,36,98,181,113,214,141,98,195,52,141,193,242,4,73,192,83,104,100,155,0],[160,198,183,47,38,225,29,26,234,81,5,12,88,122,8,118,67,222,115,89,103,32,10,194,75,102,113,66,196,200,108,72,242,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,68,187,161,221,246,100,243,250,23,217,174,19,90,246,222,223,176,60,37,22,58,4,18,3,67,136,128,17,238,163,121,216,0],[160,207,25,136,176,219,19,125,248,221,226,37,49,126,193,111,64,241,36,42,95,246,32,248,209,249,221,118,115,191,198,60,251,0],[160,82,137,39,131,73,246,17,181,228,41,231,138,20,214,96,57,89,233,241,115,173,101,182,209,11,226,190,180,241,175,169,48,0],[160,96,13,97,228,114,130,227,139,95,235,181,156,221,158,24,50,37,122,38,159,136,47,158,219,154,150,169,255,217,229,255,46,0],[160,219,139,73,171,247,198,84,124,16,5,239,28,69,184,190,3,10,137,135,153,59,96,150,2,6,55,143,216,10,40,57,14,0],[160,230,172,97,53,138,81,182,253,34,92,102,213,85,230,62,204,38,19,157,159,106,244,141,231,119,139,30,82,17,248,166,188,0],[160,165,195,18,63,220,15,211,53,125,206,92,137,136,20,42,255,173,88,99,87,117,223,170,169,219,3,246,177,111,130,214,240,0],[160,235,197,24,239,109,16,89,37,244,65,114,121,182,69,143,224,194,139,246,253,79,0,205,84,137,161,40,60,103,249,123,227,0],[160,185,247,60,119,144,31,158,231,72,186,57,228,125,4,215,127,211,178,160,137,36,48,31,211,106,150,113,76,58,138,78,84,0],[160,102,186,8,67,98,6,255,253,62,105,39,103,84,162,49,65,188,180,38,231,30,27,102,244,243,173,98,242,124,202,42,116,0],[160,222,152,116,39,82,245,17,9,75,20,236,207,29,254,224,131,101,95,156,83,203,73,42,77,232,93,162,148,191,25,189,83,0],[160,252,82,105,110,184,232,101,73,206,42,128,36,141,47,9,242,208,212,80,107,99,31,203,220,189,127,118,88,235,51,100,16,0],[160,140,144,226,152,9,143,184,98,75,119,140,138,189,41,16,86,90,220,7,160,255,163,234,160,65,226,99,185,209,175,87,153,0],[160,147,222,156,155,5,248,196,245,42,104,123,89,226,59,146,179,152,243,188,16,203,141,242,245,35,37,186,247,242,233,116,194,0],[160,77,181,94,55,60,65,150,213,94,128,208,85,225,56,182,170,255,62,173,249,192,27,109,46,165,176,52,102,165,181,158,123,0],[160,41,92,138,175,248,169,35,32,3,60,85,173,153,77,167,97,48,46,186,178,179,251,81,119,52,133,83,208,66,99,253,98,0],[160,210,90,148,32,152,241,40,152,156,177,245,3,137,19,75,169,109,138,85,24,212,56,152,150,112,147,170,123,101,171,194,235,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,207,25,136,176,219,19,125,248,221,226,37,49,126,193,111,64,241,36,42,95,246,32,248,209,249,221,118,115,191,198,60,251,160,82,137,39,131,73,246,17,181,228,41,231,138,20,214,96,57,89,233,241,115,173,101,182,209,11,226,190,180,241,175,169,48,160,96,13,97,228,114,130,227,139,95,235,181,156,221,158,24,50,37,122,38,159,136,47,158,219,154,150,169,255,217,229,255,46,160,219,139,73,171,247,198,84,124,16,5,239,28,69,184,190,3,10,137,135,153,59,96,150,2,6,55,143,216,10,40,57,14,160,230,172,97,53,138,81,182,253,34,92,102,213,85,230,62,204,38,19,157,159,106,244,141,231,119,139,30,82,17,248,166,188,160,165,195,18,63,220,15,211,53,125,206,92,137,136,20,42,255,173,88,99,87,117,223,170,169,219,3,246,177,111,130,214,240,160,235,197,24,239,109,16,89,37,244,65,114,121,182,69,143,224,194,139,246,253,79,0,205,84,137,161,40,60,103,249,123,227,160,185,247,60,119,144,31,158,231,72,186,57,228,125,4,215,127,211,178,160,137,36,48,31,211,106,150,113,76,58,138,78,84,160,102,186,8,67,98,6,255,253,62,105,39,103,84,162,49,65,188,180,38,231,30,27,102,244,243,173,98,242,124,202,42,116,160,222,152,116,39,82,245,17,9,75,20,236,207,29,254,224,131,101,95,156,83,203,73,42,77,232,93,162,148,191,25,189,83,160,252,82,105,110,184,232,101,73,206,42,128,36,141,47,9,242,208,212,80,107,99,31,203,220,189,127,118,88,235,51,100,16,160,140,144,226,152,9,143,184,98,75,119,140,138,189,41,16,86,90,220,7,160,255,163,234,160,65,226,99,185,209,175,87,153,160,147,222,156,155,5,248,196,245,42,104,123,89,226,59,146,179,152,243,188,16,203,141,242,245,35,37,186,247,242,233,116,194,160,77,181,94,55,60,65,150,213,94,128,208,85,225,56,182,170,255,62,173,249,192,27,109,46,165,176,52,102,165,181,158,123,160,41,92,138,175,248,169,35,32,3,60,85,173,153,77,167,97,48,46,186,178,179,251,81,119,52,133,83,208,66,99,253,98,160,210,90,148,32,152,241,40,152,156,177,245,3,137,19,75,169,109,138,85,24,212,56,152,150,112,147,170,123,101,171,194,235,128],[249,2,17,160,207,25,136,176,219,19,125,248,221,226,37,49,126,193,111,64,241,36,42,95,246,32,248,209,249,221,118,115,191,198,60,251,160,82,137,39,131,73,246,17,181,228,41,231,138,20,214,96,57,89,233,241,115,173,101,182,209,11,226,190,180,241,175,169,48,160,96,13,97,228,114,130,227,139,95,235,181,156,221,158,24,50,37,122,38,159,136,47,158,219,154,150,169,255,217,229,255,46,160,219,139,73,171,247,198,84,124,16,5,239,28,69,184,190,3,10,137,135,153,59,96,150,2,6,55,143,216,10,40,57,14,160,230,172,97,53,138,81,182,253,34,92,102,213,85,230,62,204,38,19,157,159,106,244,141,231,119,139,30,82,17,248,166,188,160,165,195,18,63,220,15,211,53,125,206,92,137,136,20,42,255,173,88,99,87,117,223,170,169,219,3,246,177,111,130,214,240,160,235,197,24,239,109,16,89,37,244,65,114,121,182,69,143,224,194,139,246,253,79,0,205,84,137,161,40,60,103,249,123,227,160,185,247,60,119,144,31,158,231,72,186,57,228,125,4,215,127,211,178,160,137,36,48,31,211,106,150,113,76,58,138,78,84,160,68,187,161,221,246,100,243,250,23,217,174,19,90,246,222,223,176,60,37,22,58,4,18,3,67,136,128,17,238,163,121,216,160,222,152,116,39,82,245,17,9,75,20,236,207,29,254,224,131,101,95,156,83,203,73,42,77,232,93,162,148,191,25,189,83,160,252,82,105,110,184,232,101,73,206,42,128,36,141,47,9,242,208,212,80,107,99,31,203,220,189,127,118,88,235,51,100,16,160,140,144,226,152,9,143,184,98,75,119,140,138,189,41,16,86,90,220,7,160,255,163,234,160,65,226,99,185,209,175,87,153,160,147,222,156,155,5,248,196,245,42,104,123,89,226,59,146,179,152,243,188,16,203,141,242,245,35,37,186,247,242,233,116,194,160,77,181,94,55,60,65,150,213,94,128,208,85,225,56,182,170,255,62,173,249,192,27,109,46,165,176,52,102,165,181,158,123,160,41,92,138,175,248,169,35,32,3,60,85,173,153,77,167,97,48,46,186,178,179,251,81,119,52,133,83,208,66,99,253,98,160,210,90,148,32,152,241,40,152,156,177,245,3,137,19,75,169,109,138,85,24,212,56,152,150,112,147,170,123,101,171,194,235,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,40,92,85,223,92,54,113,192,148,61,89,254,168,159,49,223,249,57,132,160,140,67,174,71,1,50,141,223,124,144,153,68,0],[160,185,207,200,213,56,7,110,102,114,221,36,17,44,235,96,72,24,56,89,108,86,25,30,79,142,33,131,71,233,234,181,53,0],[160,73,225,11,221,155,171,136,49,120,235,145,99,196,74,157,29,116,206,12,141,230,240,195,122,151,74,166,229,232,22,126,246,0],[160,80,121,156,28,53,99,88,164,230,39,136,203,232,55,255,231,249,102,78,170,251,114,92,88,217,145,226,183,95,56,223,187,0],[160,163,146,165,215,149,117,178,63,158,245,105,172,162,59,192,102,249,164,174,73,95,251,0,54,115,164,23,72,139,184,132,203,0],[160,199,144,43,186,140,137,173,182,131,253,32,36,241,162,191,119,76,210,253,224,175,251,96,61,250,99,36,153,3,5,186,2,0],[160,74,38,67,220,86,118,240,239,235,168,19,91,46,48,156,217,193,137,41,113,15,205,87,144,180,124,206,92,234,10,98,139,0],[160,17,254,87,83,176,176,229,225,60,18,165,3,202,24,112,143,102,201,90,198,108,91,168,43,214,75,128,7,109,128,23,98,0],[160,133,102,218,45,158,147,123,122,97,217,249,112,28,105,126,167,154,36,107,161,196,74,178,135,23,51,1,95,194,34,36,137,0],[160,126,200,198,169,56,20,34,219,73,169,9,233,102,150,54,162,188,91,24,142,171,180,116,104,168,242,207,200,61,76,17,172,0],[160,241,136,63,109,78,45,245,249,67,57,193,79,67,81,114,65,186,157,88,113,89,151,103,240,95,205,27,74,251,209,101,60,0],[160,72,66,199,55,66,98,231,100,248,214,163,161,178,9,3,151,146,129,204,192,117,185,14,162,124,244,44,143,119,191,209,57,0],[160,46,6,23,44,36,193,135,80,112,149,30,93,80,145,214,55,177,8,75,205,60,16,87,202,13,148,165,6,4,87,206,205,0],[160,222,107,212,28,198,70,135,254,132,167,233,46,165,59,213,112,176,97,182,63,239,60,2,100,225,78,86,219,121,17,195,165,0],[160,10,30,132,95,237,95,140,66,13,73,236,134,195,75,145,209,201,163,103,81,212,222,226,178,98,247,7,178,73,245,5,193,0],[160,157,204,128,152,104,49,2,63,107,10,187,28,158,78,250,173,237,229,135,244,83,245,231,116,59,113,36,104,183,66,41,8,0],[160,58,151,253,129,134,23,226,231,132,68,204,108,105,65,77,221,173,126,117,91,201,65,191,85,91,47,246,235,84,84,70,64,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,185,207,200,213,56,7,110,102,114,221,36,17,44,235,96,72,24,56,89,108,86,25,30,79,142,33,131,71,233,234,181,53,160,73,225,11,221,155,171,136,49,120,235,145,99,196,74,157,29,116,206,12,141,230,240,195,122,151,74,166,229,232,22,126,246,160,80,121,156,28,53,99,88,164,230,39,136,203,232,55,255,231,249,102,78,170,251,114,92,88,217,145,226,183,95,56,223,187,160,163,146,165,215,149,117,178,63,158,245,105,172,162,59,192,102,249,164,174,73,95,251,0,54,115,164,23,72,139,184,132,203,160,199,144,43,186,140,137,173,182,131,253,32,36,241,162,191,119,76,210,253,224,175,251,96,61,250,99,36,153,3,5,186,2,160,74,38,67,220,86,118,240,239,235,168,19,91,46,48,156,217,193,137,41,113,15,205,87,144,180,124,206,92,234,10,98,139,160,17,254,87,83,176,176,229,225,60,18,165,3,202,24,112,143,102,201,90,198,108,91,168,43,214,75,128,7,109,128,23,98,160,133,102,218,45,158,147,123,122,97,217,249,112,28,105,126,167,154,36,107,161,196,74,178,135,23,51,1,95,194,34,36,137,160,126,200,198,169,56,20,34,219,73,169,9,233,102,150,54,162,188,91,24,142,171,180,116,104,168,242,207,200,61,76,17,172,160,241,136,63,109,78,45,245,249,67,57,193,79,67,81,114,65,186,157,88,113,89,151,103,240,95,205,27,74,251,209,101,60,160,72,66,199,55,66,98,231,100,248,214,163,161,178,9,3,151,146,129,204,192,117,185,14,162,124,244,44,143,119,191,209,57,160,46,6,23,44,36,193,135,80,112,149,30,93,80,145,214,55,177,8,75,205,60,16,87,202,13,148,165,6,4,87,206,205,160,222,107,212,28,198,70,135,254,132,167,233,46,165,59,213,112,176,97,182,63,239,60,2,100,225,78,86,219,121,17,195,165,160,10,30,132,95,237,95,140,66,13,73,236,134,195,75,145,209,201,163,103,81,212,222,226,178,98,247,7,178,73,245,5,193,160,157,204,128,152,104,49,2,63,107,10,187,28,158,78,250,173,237,229,135,244,83,245,231,116,59,113,36,104,183,66,41,8,160,58,151,253,129,134,23,226,231,132,68,204,108,105,65,77,221,173,126,117,91,201,65,191,85,91,47,246,235,84,84,70,64,128],[249,2,17,160,185,207,200,213,56,7,110,102,114,221,36,17,44,235,96,72,24,56,89,108,86,25,30,79,142,33,131,71,233,234,181,53,160,73,225,11,221,155,171,136,49,120,235,145,99,196,74,157,29,116,206,12,141,230,240,195,122,151,74,166,229,232,22,126,246,160,80,121,156,28,53,99,88,164,230,39,136,203,232,55,255,231,249,102,78,170,251,114,92,88,217,145,226,183,95,56,223,187,160,40,92,85,223,92,54,113,192,148,61,89,254,168,159,49,223,249,57,132,160,140,67,174,71,1,50,141,223,124,144,153,68,160,199,144,43,186,140,137,173,182,131,253,32,36,241,162,191,119,76,210,253,224,175,251,96,61,250,99,36,153,3,5,186,2,160,74,38,67,220,86,118,240,239,235,168,19,91,46,48,156,217,193,137,41,113,15,205,87,144,180,124,206,92,234,10,98,139,160,17,254,87,83,176,176,229,225,60,18,165,3,202,24,112,143,102,201,90,198,108,91,168,43,214,75,128,7,109,128,23,98,160,133,102,218,45,158,147,123,122,97,217,249,112,28,105,126,167,154,36,107,161,196,74,178,135,23,51,1,95,194,34,36,137,160,126,200,198,169,56,20,34,219,73,169,9,233,102,150,54,162,188,91,24,142,171,180,116,104,168,242,207,200,61,76,17,172,160,241,136,63,109,78,45,245,249,67,57,193,79,67,81,114,65,186,157,88,113,89,151,103,240,95,205,27,74,251,209,101,60,160,72,66,199,55,66,98,231,100,248,214,163,161,178,9,3,151,146,129,204,192,117,185,14,162,124,244,44,143,119,191,209,57,160,46,6,23,44,36,193,135,80,112,149,30,93,80,145,214,55,177,8,75,205,60,16,87,202,13,148,165,6,4,87,206,205,160,222,107,212,28,198,70,135,254,132,167,233,46,165,59,213,112,176,97,182,63,239,60,2,100,225,78,86,219,121,17,195,165,160,10,30,132,95,237,95,140,66,13,73,236,134,195,75,145,209,201,163,103,81,212,222,226,178,98,247,7,178,73,245,5,193,160,157,204,128,152,104,49,2,63,107,10,187,28,158,78,250,173,237,229,135,244,83,245,231,116,59,113,36,104,183,66,41,8,160,58,151,253,129,134,23,226,231,132,68,204,108,105,65,77,221,173,126,117,91,201,65,191,85,91,47,246,235,84,84,70,64,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,222,198,183,130,177,60,116,145,217,51,212,87,19,20,26,241,42,120,239,244,45,114,202,246,55,108,126,152,44,254,104,39,0],[160,231,95,10,238,177,7,32,101,219,128,213,171,45,55,12,233,220,76,10,224,110,85,30,112,72,0,28,46,26,178,165,127,0],[160,68,154,48,77,211,155,158,122,103,65,28,151,165,177,139,126,155,242,209,98,172,22,197,196,198,164,160,1,191,248,201,14,0],[160,226,197,189,105,117,223,207,34,106,169,20,185,220,121,234,106,141,248,253,225,66,0,82,201,120,184,102,45,245,44,112,98,0],[160,193,198,74,20,172,24,242,204,247,133,105,88,206,172,223,183,62,184,143,158,6,143,103,24,224,178,189,126,10,74,113,190,0],[160,43,204,227,62,184,13,182,217,216,210,48,27,217,75,64,252,242,140,3,182,202,118,144,176,148,26,196,214,100,122,226,213,0],[160,182,138,23,200,65,150,48,56,62,198,76,160,173,67,61,225,22,190,139,168,55,26,90,185,230,228,40,91,80,196,239,196,0],[160,24,17,32,125,206,81,93,62,53,124,234,251,38,171,115,163,153,207,6,136,152,179,28,6,29,25,100,153,224,243,112,41,0],[160,148,208,38,239,167,118,27,229,171,172,83,173,11,119,101,8,199,167,146,213,184,195,245,195,143,154,141,98,23,156,71,88,0],[160,0,111,208,29,187,84,114,172,204,96,22,253,97,161,125,144,215,97,197,58,152,97,231,141,59,95,211,214,3,43,242,134,0],[160,73,5,38,184,154,125,53,252,236,115,226,160,8,168,26,90,196,99,74,104,6,166,65,105,63,117,232,48,156,232,46,118,0],[160,73,99,227,191,237,215,26,167,84,198,202,187,25,227,145,193,205,222,64,59,165,140,59,62,35,148,177,238,21,32,11,15,0],[160,182,143,57,152,26,221,220,117,161,83,198,55,123,86,61,249,223,186,182,187,217,120,183,22,189,45,172,118,52,230,240,112,0],[160,29,91,34,243,70,153,248,21,0,182,206,197,142,239,125,148,136,12,7,134,242,200,194,32,51,118,7,64,50,191,74,93,0],[160,155,201,134,3,164,120,172,75,74,243,23,75,138,17,227,228,164,186,195,71,91,141,88,190,216,173,246,40,142,41,31,43,0],[160,45,240,236,48,240,10,170,254,49,102,210,93,150,99,189,36,99,179,2,19,159,122,78,177,123,218,46,32,5,59,135,130,0],[160,33,228,67,177,101,177,233,17,253,0,69,14,223,236,194,30,3,1,227,229,162,15,240,155,49,8,162,92,86,210,197,143,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,231,95,10,238,177,7,32,101,219,128,213,171,45,55,12,233,220,76,10,224,110,85,30,112,72,0,28,46,26,178,165,127,160,68,154,48,77,211,155,158,122,103,65,28,151,165,177,139,126,155,242,209,98,172,22,197,196,198,164,160,1,191,248,201,14,160,226,197,189,105,117,223,207,34,106,169,20,185,220,121,234,106,141,248,253,225,66,0,82,201,120,184,102,45,245,44,112,98,160,193,198,74,20,172,24,242,204,247,133,105,88,206,172,223,183,62,184,143,158,6,143,103,24,224,178,189,126,10,74,113,190,160,43,204,227,62,184,13,182,217,216,210,48,27,217,75,64,252,242,140,3,182,202,118,144,176,148,26,196,214,100,122,226,213,160,182,138,23,200,65,150,48,56,62,198,76,160,173,67,61,225,22,190,139,168,55,26,90,185,230,228,40,91,80,196,239,196,160,24,17,32,125,206,81,93,62,53,124,234,251,38,171,115,163,153,207,6,136,152,179,28,6,29,25,100,153,224,243,112,41,160,148,208,38,239,167,118,27,229,171,172,83,173,11,119,101,8,199,167,146,213,184,195,245,195,143,154,141,98,23,156,71,88,160,0,111,208,29,187,84,114,172,204,96,22,253,97,161,125,144,215,97,197,58,152,97,231,141,59,95,211,214,3,43,242,134,160,73,5,38,184,154,125,53,252,236,115,226,160,8,168,26,90,196,99,74,104,6,166,65,105,63,117,232,48,156,232,46,118,160,73,99,227,191,237,215,26,167,84,198,202,187,25,227,145,193,205,222,64,59,165,140,59,62,35,148,177,238,21,32,11,15,160,182,143,57,152,26,221,220,117,161,83,198,55,123,86,61,249,223,186,182,187,217,120,183,22,189,45,172,118,52,230,240,112,160,29,91,34,243,70,153,248,21,0,182,206,197,142,239,125,148,136,12,7,134,242,200,194,32,51,118,7,64,50,191,74,93,160,155,201,134,3,164,120,172,75,74,243,23,75,138,17,227,228,164,186,195,71,91,141,88,190,216,173,246,40,142,41,31,43,160,45,240,236,48,240,10,170,254,49,102,210,93,150,99,189,36,99,179,2,19,159,122,78,177,123,218,46,32,5,59,135,130,160,33,228,67,177,101,177,233,17,253,0,69,14,223,236,194,30,3,1,227,229,162,15,240,155,49,8,162,92,86,210,197,143,128],[249,2,17,160,231,95,10,238,177,7,32,101,219,128,213,171,45,55,12,233,220,76,10,224,110,85,30,112,72,0,28,46,26,178,165,127,160,68,154,48,77,211,155,158,122,103,65,28,151,165,177,139,126,155,242,209,98,172,22,197,196,198,164,160,1,191,248,201,14,160,226,197,189,105,117,223,207,34,106,169,20,185,220,121,234,106,141,248,253,225,66,0,82,201,120,184,102,45,245,44,112,98,160,222,198,183,130,177,60,116,145,217,51,212,87,19,20,26,241,42,120,239,244,45,114,202,246,55,108,126,152,44,254,104,39,160,43,204,227,62,184,13,182,217,216,210,48,27,217,75,64,252,242,140,3,182,202,118,144,176,148,26,196,214,100,122,226,213,160,182,138,23,200,65,150,48,56,62,198,76,160,173,67,61,225,22,190,139,168,55,26,90,185,230,228,40,91,80,196,239,196,160,24,17,32,125,206,81,93,62,53,124,234,251,38,171,115,163,153,207,6,136,152,179,28,6,29,25,100,153,224,243,112,41,160,148,208,38,239,167,118,27,229,171,172,83,173,11,119,101,8,199,167,146,213,184,195,245,195,143,154,141,98,23,156,71,88,160,0,111,208,29,187,84,114,172,204,96,22,253,97,161,125,144,215,97,197,58,152,97,231,141,59,95,211,214,3,43,242,134,160,73,5,38,184,154,125,53,252,236,115,226,160,8,168,26,90,196,99,74,104,6,166,65,105,63,117,232,48,156,232,46,118,160,73,99,227,191,237,215,26,167,84,198,202,187,25,227,145,193,205,222,64,59,165,140,59,62,35,148,177,238,21,32,11,15,160,182,143,57,152,26,221,220,117,161,83,198,55,123,86,61,249,223,186,182,187,217,120,183,22,189,45,172,118,52,230,240,112,160,29,91,34,243,70,153,248,21,0,182,206,197,142,239,125,148,136,12,7,134,242,200,194,32,51,118,7,64,50,191,74,93,160,155,201,134,3,164,120,172,75,74,243,23,75,138,17,227,228,164,186,195,71,91,141,88,190,216,173,246,40,142,41,31,43,160,45,240,236,48,240,10,170,254,49,102,210,93,150,99,189,36,99,179,2,19,159,122,78,177,123,218,46,32,5,59,135,130,160,33,228,67,177,101,177,233,17,253,0,69,14,223,236,194,30,3,1,227,229,162,15,240,155,49,8,162,92,86,210,197,143,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":2,"drifted_index":2,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,178,150,22,224,254,226,0,191,77,18,171,2,214,146,150,17,26,44,136,193,250,36,119,87,30,58,135,201,116,2,158,179,0],[160,182,157,141,96,64,124,32,139,164,168,123,177,23,245,189,220,225,84,136,136,88,10,6,219,58,97,25,182,69,71,237,143,0],[160,206,250,250,126,150,206,40,106,250,64,172,109,90,20,29,206,199,98,71,103,243,57,48,153,235,158,226,15,248,33,24,173,0],[160,136,63,198,240,187,66,179,160,160,234,247,50,225,28,133,166,186,193,44,232,206,69,231,205,70,97,57,71,100,210,28,206,0],[160,83,100,153,220,8,108,102,77,228,175,197,32,215,192,58,6,109,5,74,102,136,20,58,206,184,63,3,33,8,16,153,30,0],[160,175,232,48,82,151,173,48,31,217,187,131,102,232,238,240,77,20,136,215,3,165,190,235,207,83,24,118,111,5,33,118,184,0],[160,110,54,181,109,232,73,221,100,78,199,234,224,211,152,43,47,140,143,161,231,189,203,125,26,62,143,67,142,233,89,170,151,0],[160,246,236,40,139,47,246,79,126,248,202,223,217,217,99,115,141,110,146,2,242,28,96,147,41,125,191,216,113,201,41,89,235,0],[160,91,59,237,40,226,216,243,244,208,125,68,191,111,236,9,112,23,15,133,69,16,47,245,247,83,174,149,186,162,56,186,253,0],[160,220,44,238,195,63,188,246,232,190,154,148,17,70,121,20,98,79,195,188,168,110,0,5,208,4,130,188,87,169,192,70,98,0],[160,92,101,86,144,21,242,104,190,28,237,87,193,148,105,92,120,133,227,203,0,122,152,144,116,26,192,140,242,105,209,149,100,0],[160,9,90,216,179,219,207,78,116,148,217,99,115,243,103,47,189,57,153,134,100,125,171,152,207,119,127,3,229,255,164,27,92,0],[160,31,78,79,236,47,83,65,173,98,239,70,162,185,140,118,72,2,219,95,127,244,126,251,190,151,219,22,40,18,96,202,62,0],[160,159,240,142,98,4,180,205,200,240,26,148,146,37,243,63,216,214,244,168,209,3,157,90,160,14,74,97,151,36,250,19,11,0],[160,157,182,12,187,163,248,170,80,34,55,159,70,9,174,92,138,75,211,86,41,85,220,251,35,21,219,63,243,66,254,202,139,0],[160,219,165,14,121,240,76,195,159,115,215,66,217,73,217,69,74,103,150,182,161,200,213,160,60,101,94,176,97,200,45,237,58,0],[160,199,43,123,101,125,33,151,100,53,219,109,222,209,241,245,149,13,132,146,115,151,223,49,52,200,134,90,176,44,55,175,7,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,182,157,141,96,64,124,32,139,164,168,123,177,23,245,189,220,225,84,136,136,88,10,6,219,58,97,25,182,69,71,237,143,160,206,250,250,126,150,206,40,106,250,64,172,109,90,20,29,206,199,98,71,103,243,57,48,153,235,158,226,15,248,33,24,173,160,136,63,198,240,187,66,179,160,160,234,247,50,225,28,133,166,186,193,44,232,206,69,231,205,70,97,57,71,100,210,28,206,160,83,100,153,220,8,108,102,77,228,175,197,32,215,192,58,6,109,5,74,102,136,20,58,206,184,63,3,33,8,16,153,30,160,175,232,48,82,151,173,48,31,217,187,131,102,232,238,240,77,20,136,215,3,165,190,235,207,83,24,118,111,5,33,118,184,160,110,54,181,109,232,73,221,100,78,199,234,224,211,152,43,47,140,143,161,231,189,203,125,26,62,143,67,142,233,89,170,151,160,246,236,40,139,47,246,79,126,248,202,223,217,217,99,115,141,110,146,2,242,28,96,147,41,125,191,216,113,201,41,89,235,160,91,59,237,40,226,216,243,244,208,125,68,191,111,236,9,112,23,15,133,69,16,47,245,247,83,174,149,186,162,56,186,253,160,220,44,238,195,63,188,246,232,190,154,148,17,70,121,20,98,79,195,188,168,110,0,5,208,4,130,188,87,169,192,70,98,160,92,101,86,144,21,242,104,190,28,237,87,193,148,105,92,120,133,227,203,0,122,152,144,116,26,192,140,242,105,209,149,100,160,9,90,216,179,219,207,78,116,148,217,99,115,243,103,47,189,57,153,134,100,125,171,152,207,119,127,3,229,255,164,27,92,160,31,78,79,236,47,83,65,173,98,239,70,162,185,140,118,72,2,219,95,127,244,126,251,190,151,219,22,40,18,96,202,62,160,159,240,142,98,4,180,205,200,240,26,148,146,37,243,63,216,214,244,168,209,3,157,90,160,14,74,97,151,36,250,19,11,160,157,182,12,187,163,248,170,80,34,55,159,70,9,174,92,138,75,211,86,41,85,220,251,35,21,219,63,243,66,254,202,139,160,219,165,14,121,240,76,195,159,115,215,66,217,73,217,69,74,103,150,182,161,200,213,160,60,101,94,176,97,200,45,237,58,160,199,43,123,101,125,33,151,100,53,219,109,222,209,241,245,149,13,132,146,115,151,223,49,52,200,134,90,176,44,55,175,7,128],[249,2,17,160,182,157,141,96,64,124,32,139,164,168,123,177,23,245,189,220,225,84,136,136,88,10,6,219,58,97,25,182,69,71,237,143,160,206,250,250,126,150,206,40,106,250,64,172,109,90,20,29,206,199,98,71,103,243,57,48,153,235,158,226,15,248,33,24,173,160,178,150,22,224,254,226,0,191,77,18,171,2,214,146,150,17,26,44,136,193,250,36,119,87,30,58,135,201,116,2,158,179,160,83,100,153,220,8,108,102,77,228,175,197,32,215,192,58,6,109,5,74,102,136,20,58,206,184,63,3,33,8,16,153,30,160,175,232,48,82,151,173,48,31,217,187,131,102,232,238,240,77,20,136,215,3,165,190,235,207,83,24,118,111,5,33,118,184,160,110,54,181,109,232,73,221,100,78,199,234,224,211,152,43,47,140,143,161,231,189,203,125,26,62,143,67,142,233,89,170,151,160,246,236,40,139,47,246,79,126,248,202,223,217,217,99,115,141,110,146,2,242,28,96,147,41,125,191,216,113,201,41,89,235,160,91,59,237,40,226,216,243,244,208,125,68,191,111,236,9,112,23,15,133,69,16,47,245,247,83,174,149,186,162,56,186,253,160,220,44,238,195,63,188,246,232,190,154,148,17,70,121,20,98,79,195,188,168,110,0,5,208,4,130,188,87,169,192,70,98,160,92,101,86,144,21,242,104,190,28,237,87,193,148,105,92,120,133,227,203,0,122,152,144,116,26,192,140,242,105,209,149,100,160,9,90,216,179,219,207,78,116,148,217,99,115,243,103,47,189,57,153,134,100,125,171,152,207,119,127,3,229,255,164,27,92,160,31,78,79,236,47,83,65,173,98,239,70,162,185,140,118,72,2,219,95,127,244,126,251,190,151,219,22,40,18,96,202,62,160,159,240,142,98,4,180,205,200,240,26,148,146,37,243,63,216,214,244,168,209,3,157,90,160,14,74,97,151,36,250,19,11,160,157,182,12,187,163,248,170,80,34,55,159,70,9,174,92,138,75,211,86,41,85,220,251,35,21,219,63,243,66,254,202,139,160,219,165,14,121,240,76,195,159,115,215,66,217,73,217,69,74,103,150,182,161,200,213,160,60,101,94,176,97,200,45,237,58,160,199,43,123,101,125,33,151,100,53,219,109,222,209,241,245,149,13,132,146,115,151,223,49,52,200,134,90,176,44,55,175,7,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,79,170,14,147,227,157,205,97,67,181,122,86,116,187,214,58,44,27,147,98,96,178,224,161,132,117,104,155,12,79,222,113,0],[160,94,252,119,184,230,20,198,249,59,8,100,146,111,65,47,251,132,45,206,155,80,65,126,116,167,153,242,240,123,240,219,99,0],[160,136,152,181,189,76,53,26,15,182,1,207,203,181,22,6,6,200,2,117,30,10,12,115,143,252,15,145,127,204,60,243,89,0],[160,220,30,215,238,90,91,227,27,252,122,162,159,24,234,129,3,159,224,19,187,27,83,48,15,194,51,93,128,98,157,138,157,0],[160,189,224,0,206,122,88,196,193,22,254,84,35,16,85,192,156,141,53,73,131,58,39,69,158,160,8,145,61,189,235,223,172,0],[160,114,153,151,230,187,111,213,97,69,112,10,63,102,200,249,107,110,250,160,87,251,68,253,164,14,129,92,155,189,90,78,88,0],[160,58,185,6,193,165,112,29,102,93,153,129,133,146,171,173,163,8,103,60,245,12,132,237,215,148,21,110,112,118,248,86,38,0],[160,111,220,186,200,71,25,68,52,188,156,193,114,61,192,144,212,204,60,135,63,82,83,10,142,115,170,123,28,163,217,36,227,0],[160,56,6,103,29,198,117,228,108,168,136,138,60,223,164,68,163,23,61,161,137,95,136,76,96,115,222,102,2,235,221,131,46,0],[160,114,17,201,128,234,225,166,71,56,220,19,66,16,131,173,40,153,210,136,106,131,141,13,99,71,22,175,191,215,15,101,78,0],[160,185,94,15,81,91,143,215,241,124,65,158,52,51,57,215,14,218,130,60,86,253,44,29,240,181,205,139,65,112,13,204,77,0],[160,102,26,69,87,205,75,63,40,155,121,13,81,117,150,138,155,228,114,16,26,25,140,7,141,100,248,101,132,115,4,176,105,0],[160,24,199,37,127,95,171,48,236,127,237,165,168,41,131,156,81,237,94,229,55,146,128,118,40,87,182,139,163,199,212,247,104,0],[160,88,158,172,54,18,109,167,144,70,74,13,42,228,254,248,175,66,26,133,108,92,146,251,242,220,149,1,111,47,94,63,199,0],[160,238,152,117,3,226,86,88,17,227,43,23,69,229,181,232,20,61,111,103,237,187,174,85,213,127,183,53,89,129,116,181,82,0],[160,114,27,51,178,26,231,177,85,151,61,247,26,27,148,202,167,234,150,130,31,112,34,35,32,39,117,137,3,38,130,233,116,0],[160,140,132,128,4,217,75,11,41,33,8,232,186,150,199,39,25,126,160,7,206,8,181,41,155,76,120,59,226,180,191,136,111,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,94,252,119,184,230,20,198,249,59,8,100,146,111,65,47,251,132,45,206,155,80,65,126,116,167,153,242,240,123,240,219,99,160,136,152,181,189,76,53,26,15,182,1,207,203,181,22,6,6,200,2,117,30,10,12,115,143,252,15,145,127,204,60,243,89,160,220,30,215,238,90,91,227,27,252,122,162,159,24,234,129,3,159,224,19,187,27,83,48,15,194,51,93,128,98,157,138,157,160,189,224,0,206,122,88,196,193,22,254,84,35,16,85,192,156,141,53,73,131,58,39,69,158,160,8,145,61,189,235,223,172,160,114,153,151,230,187,111,213,97,69,112,10,63,102,200,249,107,110,250,160,87,251,68,253,164,14,129,92,155,189,90,78,88,160,58,185,6,193,165,112,29,102,93,153,129,133,146,171,173,163,8,103,60,245,12,132,237,215,148,21,110,112,118,248,86,38,160,111,220,186,200,71,25,68,52,188,156,193,114,61,192,144,212,204,60,135,63,82,83,10,142,115,170,123,28,163,217,36,227,160,56,6,103,29,198,117,228,108,168,136,138,60,223,164,68,163,23,61,161,137,95,136,76,96,115,222,102,2,235,221,131,46,160,114,17,201,128,234,225,166,71,56,220,19,66,16,131,173,40,153,210,136,106,131,141,13,99,71,22,175,191,215,15,101,78,160,185,94,15,81,91,143,215,241,124,65,158,52,51,57,215,14,218,130,60,86,253,44,29,240,181,205,139,65,112,13,204,77,160,102,26,69,87,205,75,63,40,155,121,13,81,117,150,138,155,228,114,16,26,25,140,7,141,100,248,101,132,115,4,176,105,160,24,199,37,127,95,171,48,236,127,237,165,168,41,131,156,81,237,94,229,55,146,128,118,40,87,182,139,163,199,212,247,104,160,88,158,172,54,18,109,167,144,70,74,13,42,228,254,248,175,66,26,133,108,92,146,251,242,220,149,1,111,47,94,63,199,160,238,152,117,3,226,86,88,17,227,43,23,69,229,181,232,20,61,111,103,237,187,174,85,213,127,183,53,89,129,116,181,82,160,114,27,51,178,26,231,177,85,151,61,247,26,27,148,202,167,234,150,130,31,112,34,35,32,39,117,137,3,38,130,233,116,160,140,132,128,4,217,75,11,41,33,8,232,186,150,199,39,25,126,160,7,206,8,181,41,155,76,120,59,226,180,191,136,111,128],[249,2,17,160,94,252,119,184,230,20,198,249,59,8,100,146,111,65,47,251,132,45,206,155,80,65,126,116,167,153,242,240,123,240,219,99,160,136,152,181,189,76,53,26,15,182,1,207,203,181,22,6,6,200,2,117,30,10,12,115,143,252,15,145,127,204,60,243,89,160,220,30,215,238,90,91,227,27,252,122,162,159,24,234,129,3,159,224,19,187,27,83,48,15,194,51,93,128,98,157,138,157,160,189,224,0,206,122,88,196,193,22,254,84,35,16,85,192,156,141,53,73,131,58,39,69,158,160,8,145,61,189,235,223,172,160,114,153,151,230,187,111,213,97,69,112,10,63,102,200,249,107,110,250,160,87,251,68,253,164,14,129,92,155,189,90,78,88,160,58,185,6,193,165,112,29,102,93,153,129,133,146,171,173,163,8,103,60,245,12,132,237,215,148,21,110,112,118,248,86,38,160,111,220,186,200,71,25,68,52,188,156,193,114,61,192,144,212,204,60,135,63,82,83,10,142,115,170,123,28,163,217,36,227,160,56,6,103,29,198,117,228,108,168,136,138,60,223,164,68,163,23,61,161,137,95,136,76,96,115,222,102,2,235,221,131,46,160,114,17,201,128,234,225,166,71,56,220,19,66,16,131,173,40,153,210,136,106,131,141,13,99,71,22,175,191,215,15,101,78,160,185,94,15,81,91,143,215,241,124,65,158,52,51,57,215,14,218,130,60,86,253,44,29,240,181,205,139,65,112,13,204,77,160,102,26,69,87,205,75,63,40,155,121,13,81,117,150,138,155,228,114,16,26,25,140,7,141,100,248,101,132,115,4,176,105,160,24,199,37,127,95,171,48,236,127,237,165,168,41,131,156,81,237,94,229,55,146,128,118,40,87,182,139,163,199,212,247,104,160,88,158,172,54,18,109,167,144,70,74,13,42,228,254,248,175,66,26,133,108,92,146,251,242,220,149,1,111,47,94,63,199,160,238,152,117,3,226,86,88,17,227,43,23,69,229,181,232,20,61,111,103,237,187,174,85,213,127,183,53,89,129,116,181,82,160,114,27,51,178,26,231,177,85,151,61,247,26,27,148,202,167,234,150,130,31,112,34,35,32,39,117,137,3,38,130,233,116,160,79,170,14,147,227,157,205,97,67,181,122,86,116,187,214,58,44,27,147,98,96,178,224,161,132,117,104,155,12,79,222,113,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,38,249,141,253,93,67,46,122,45,2,79,8,9,168,189,76,209,6,20,39,202,82,118,88,101,31,81,236,89,46,146,90,0],[160,135,34,48,42,14,239,143,189,170,69,134,123,218,36,72,2,163,192,143,204,12,109,175,58,141,118,94,36,206,191,118,32,0],[160,220,109,24,106,232,29,109,176,46,233,215,10,243,92,45,248,25,115,230,121,148,2,36,148,57,81,160,129,219,132,31,115,0],[160,106,59,42,152,93,61,176,69,106,48,79,39,47,12,7,140,163,95,23,216,137,66,239,155,185,168,89,196,116,195,127,103,0],[160,115,205,37,159,79,247,182,93,148,163,41,97,209,195,10,86,168,109,224,153,110,249,227,211,101,70,158,44,49,24,252,132,0],[160,220,148,213,4,41,28,43,101,120,138,61,233,81,137,234,115,228,127,178,20,124,231,241,244,229,119,116,247,123,242,120,26,0],[160,154,118,186,142,199,193,20,16,163,132,141,63,7,178,219,12,148,172,137,136,236,174,187,174,159,205,156,149,131,54,1,168,0],[160,214,253,5,60,164,8,246,254,113,111,196,26,242,176,242,139,188,226,145,21,205,48,78,102,182,33,77,57,202,84,48,0,0],[160,139,204,186,196,107,226,228,156,235,35,141,205,116,232,148,130,127,218,131,190,210,69,245,210,248,108,18,23,84,107,240,100,0],[160,218,108,35,164,234,199,139,87,95,227,117,52,209,236,84,73,11,20,160,142,193,96,135,109,246,191,233,164,121,163,102,222,0],[160,83,49,6,15,200,239,117,94,151,2,193,125,234,124,185,47,102,60,209,122,158,206,117,224,225,12,240,4,226,144,7,96,0],[160,223,125,252,178,10,71,117,227,106,4,72,134,3,198,40,42,202,83,144,150,218,69,209,146,150,21,92,64,12,28,148,148,0],[160,218,47,230,215,64,200,192,227,20,116,145,120,75,245,133,123,166,240,80,80,89,158,211,208,26,119,201,245,23,210,190,49,0],[160,143,250,205,245,173,47,73,123,110,113,113,235,19,17,71,220,138,246,108,253,89,89,132,195,28,111,161,26,177,198,209,123,0],[160,147,222,183,53,197,59,92,88,124,124,72,194,252,43,86,200,183,156,45,134,208,56,244,68,132,49,132,11,3,114,203,240,0],[160,142,37,97,120,142,29,148,214,255,167,235,163,36,83,145,158,144,213,127,247,2,111,187,10,161,113,14,12,154,236,177,150,0],[160,219,159,168,42,142,113,65,118,52,111,17,22,108,65,85,127,75,84,187,233,116,143,64,189,231,69,236,121,249,87,243,227,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,135,34,48,42,14,239,143,189,170,69,134,123,218,36,72,2,163,192,143,204,12,109,175,58,141,118,94,36,206,191,118,32,160,220,109,24,106,232,29,109,176,46,233,215,10,243,92,45,248,25,115,230,121,148,2,36,148,57,81,160,129,219,132,31,115,160,106,59,42,152,93,61,176,69,106,48,79,39,47,12,7,140,163,95,23,216,137,66,239,155,185,168,89,196,116,195,127,103,160,115,205,37,159,79,247,182,93,148,163,41,97,209,195,10,86,168,109,224,153,110,249,227,211,101,70,158,44,49,24,252,132,160,220,148,213,4,41,28,43,101,120,138,61,233,81,137,234,115,228,127,178,20,124,231,241,244,229,119,116,247,123,242,120,26,160,154,118,186,142,199,193,20,16,163,132,141,63,7,178,219,12,148,172,137,136,236,174,187,174,159,205,156,149,131,54,1,168,160,214,253,5,60,164,8,246,254,113,111,196,26,242,176,242,139,188,226,145,21,205,48,78,102,182,33,77,57,202,84,48,0,160,139,204,186,196,107,226,228,156,235,35,141,205,116,232,148,130,127,218,131,190,210,69,245,210,248,108,18,23,84,107,240,100,160,218,108,35,164,234,199,139,87,95,227,117,52,209,236,84,73,11,20,160,142,193,96,135,109,246,191,233,164,121,163,102,222,160,83,49,6,15,200,239,117,94,151,2,193,125,234,124,185,47,102,60,209,122,158,206,117,224,225,12,240,4,226,144,7,96,160,223,125,252,178,10,71,117,227,106,4,72,134,3,198,40,42,202,83,144,150,218,69,209,146,150,21,92,64,12,28,148,148,160,218,47,230,215,64,200,192,227,20,116,145,120,75,245,133,123,166,240,80,80,89,158,211,208,26,119,201,245,23,210,190,49,160,143,250,205,245,173,47,73,123,110,113,113,235,19,17,71,220,138,246,108,253,89,89,132,195,28,111,161,26,177,198,209,123,160,147,222,183,53,197,59,92,88,124,124,72,194,252,43,86,200,183,156,45,134,208,56,244,68,132,49,132,11,3,114,203,240,160,142,37,97,120,142,29,148,214,255,167,235,163,36,83,145,158,144,213,127,247,2,111,187,10,161,113,14,12,154,236,177,150,160,219,159,168,42,142,113,65,118,52,111,17,22,108,65,85,127,75,84,187,233,116,143,64,189,231,69,236,121,249,87,243,227,128],[249,2,17,160,135,34,48,42,14,239,143,189,170,69,134,123,218,36,72,2,163,192,143,204,12,109,175,58,141,118,94,36,206,191,118,32,160,220,109,24,106,232,29,109,176,46,233,215,10,243,92,45,248,25,115,230,121,148,2,36,148,57,81,160,129,219,132,31,115,160,106,59,42,152,93,61,176,69,106,48,79,39,47,12,7,140,163,95,23,216,137,66,239,155,185,168,89,196,116,195,127,103,160,38,249,141,253,93,67,46,122,45,2,79,8,9,168,189,76,209,6,20,39,202,82,118,88,101,31,81,236,89,46,146,90,160,220,148,213,4,41,28,43,101,120,138,61,233,81,137,234,115,228,127,178,20,124,231,241,244,229,119,116,247,123,242,120,26,160,154,118,186,142,199,193,20,16,163,132,141,63,7,178,219,12,148,172,137,136,236,174,187,174,159,205,156,149,131,54,1,168,160,214,253,5,60,164,8,246,254,113,111,196,26,242,176,242,139,188,226,145,21,205,48,78,102,182,33,77,57,202,84,48,0,160,139,204,186,196,107,226,228,156,235,35,141,205,116,232,148,130,127,218,131,190,210,69,245,210,248,108,18,23,84,107,240,100,160,218,108,35,164,234,199,139,87,95,227,117,52,209,236,84,73,11,20,160,142,193,96,135,109,246,191,233,164,121,163,102,222,160,83,49,6,15,200,239,117,94,151,2,193,125,234,124,185,47,102,60,209,122,158,206,117,224,225,12,240,4,226,144,7,96,160,223,125,252,178,10,71,117,227,106,4,72,134,3,198,40,42,202,83,144,150,218,69,209,146,150,21,92,64,12,28,148,148,160,218,47,230,215,64,200,192,227,20,116,145,120,75,245,133,123,166,240,80,80,89,158,211,208,26,119,201,245,23,210,190,49,160,143,250,205,245,173,47,73,123,110,113,113,235,19,17,71,220,138,246,108,253,89,89,132,195,28,111,161,26,177,198,209,123,160,147,222,183,53,197,59,92,88,124,124,72,194,252,43,86,200,183,156,45,134,208,56,244,68,132,49,132,11,3,114,203,240,160,142,37,97,120,142,29,148,214,255,167,235,163,36,83,145,158,144,213,127,247,2,111,187,10,161,113,14,12,154,236,177,150,160,219,159,168,42,142,113,65,118,52,111,17,22,108,65,85,127,75,84,187,233,116,143,64,189,231,69,236,121,249,87,243,227,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[248,241],[248,241]]}},"account":null,"storage":null,"values":[[160,183,4,240,66,221,5,17,94,59,81,73,138,61,212,221,110,189,8,130,204,171,247,131,224,193,219,27,71,180,219,79,38,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,141,164,222,208,114,53,138,42,68,185,35,22,209,135,11,97,236,54,41,171,248,148,120,199,164,25,5,47,208,236,247,210,0],[160,208,177,229,217,205,98,195,68,182,154,209,69,75,36,206,247,42,217,69,77,176,29,182,159,27,47,146,195,212,187,71,199,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,102,101,11,70,156,88,24,31,7,55,179,211,135,114,238,179,201,6,208,181,163,120,106,23,174,138,148,70,209,38,35,198,0],[160,38,86,198,208,216,23,120,168,85,81,136,16,250,33,229,226,49,165,159,207,113,95,140,88,217,8,230,152,28,12,27,121,0],[160,4,47,26,239,50,241,69,138,14,179,226,234,13,64,122,236,209,53,87,153,54,206,120,176,192,254,19,85,51,100,217,101,0],[160,240,24,25,158,169,202,34,38,106,221,208,86,5,147,221,187,73,137,97,91,147,230,239,222,197,208,19,216,5,223,83,220,0],[160,154,40,44,216,26,128,75,165,2,28,255,39,10,252,225,252,114,120,145,118,215,194,126,79,235,164,46,153,237,126,129,100,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,241,128,128,128,128,160,141,164,222,208,114,53,138,42,68,185,35,22,209,135,11,97,236,54,41,171,248,148,120,199,164,25,5,47,208,236,247,210,160,208,177,229,217,205,98,195,68,182,154,209,69,75,36,206,247,42,217,69,77,176,29,182,159,27,47,146,195,212,187,71,199,128,160,102,101,11,70,156,88,24,31,7,55,179,211,135,114,238,179,201,6,208,181,163,120,106,23,174,138,148,70,209,38,35,198,160,38,86,198,208,216,23,120,168,85,81,136,16,250,33,229,226,49,165,159,207,113,95,140,88,217,8,230,152,28,12,27,121,160,4,47,26,239,50,241,69,138,14,179,226,234,13,64,122,236,209,53,87,153,54,206,120,176,192,254,19,85,51,100,217,101,160,240,24,25,158,169,202,34,38,106,221,208,86,5,147,221,187,73,137,97,91,147,230,239,222,197,208,19,216,5,223,83,220,160,154,40,44,216,26,128,75,165,2,28,255,39,10,252,225,252,114,120,145,118,215,194,126,79,235,164,46,153,237,126,129,100,128,128,128,128,128],[248,241,128,128,128,128,160,141,164,222,208,114,53,138,42,68,185,35,22,209,135,11,97,236,54,41,171,248,148,120,199,164,25,5,47,208,236,247,210,160,208,177,229,217,205,98,195,68,182,154,209,69,75,36,206,247,42,217,69,77,176,29,182,159,27,47,146,195,212,187,71,199,128,160,102,101,11,70,156,88,24,31,7,55,179,211,135,114,238,179,201,6,208,181,163,120,106,23,174,138,148,70,209,38,35,198,160,38,86,198,208,216,23,120,168,85,81,136,16,250,33,229,226,49,165,159,207,113,95,140,88,217,8,230,152,28,12,27,121,160,183,4,240,66,221,5,17,94,59,81,73,138,61,212,221,110,189,8,130,204,171,247,131,224,193,219,27,71,180,219,79,38,160,240,24,25,158,169,202,34,38,106,221,208,86,5,147,221,187,73,137,97,91,147,230,239,222,197,208,19,216,5,223,83,220,160,154,40,44,216,26,128,75,165,2,28,255,39,10,252,225,252,114,120,145,118,215,194,126,79,235,164,46,153,237,126,129,100,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[104,213,166,231,139,216,115,75,125,25,12,189,152,84,155,114,191,160,128,11],"key":[131,50,243,150,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196],"list_rlp_bytes":[[248,109],[248,110]],"value_rlp_bytes":[[184,77],[184,78]],"value_list_rlp_bytes":[[248,75],[248,76]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,110]},"storage":null,"values":[[157,54,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196,0,0,0,0],[157,54,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196,0,0,0,0],[7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[135,28,5,107,201,118,120,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[129,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[135,28,5,107,201,118,120,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,54,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196,0,0,0,0]],"keccak_data":[[248,109,157,54,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196,184,77,248,75,7,135,28,5,107,201,118,120,59,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,110,157,54,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196,184,78,248,76,129,142,135,28,5,107,201,118,120,59,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[104,213,166,231,139,216,115,75,125,25,12,189,152,84,155,114,191,160,128,11]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/NonceModCShort.json b/zkevm-circuits/src/mpt_circuit/tests/NonceModCShort.json new file mode 100644 index 0000000000..86a6990eab --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/NonceModCShort.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"NonceChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,34,65,36,198,35,126,190,229,144,5,107,155,205,36,98,181,113,214,141,98,195,52,141,193,242,4,73,192,83,104,100,155,0],[160,229,83,190,83,46,152,134,3,114,241,118,53,186,9,128,75,25,57,254,117,210,221,50,212,109,133,25,8,3,60,108,252,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,2,190,82,208,6,217,82,133,108,231,81,37,70,188,194,156,85,75,108,157,139,10,7,33,187,183,36,39,135,34,206,242,0],[160,207,25,136,176,219,19,125,248,221,226,37,49,126,193,111,64,241,36,42,95,246,32,248,209,249,221,118,115,191,198,60,251,0],[160,82,137,39,131,73,246,17,181,228,41,231,138,20,214,96,57,89,233,241,115,173,101,182,209,11,226,190,180,241,175,169,48,0],[160,96,13,97,228,114,130,227,139,95,235,181,156,221,158,24,50,37,122,38,159,136,47,158,219,154,150,169,255,217,229,255,46,0],[160,219,139,73,171,247,198,84,124,16,5,239,28,69,184,190,3,10,137,135,153,59,96,150,2,6,55,143,216,10,40,57,14,0],[160,230,172,97,53,138,81,182,253,34,92,102,213,85,230,62,204,38,19,157,159,106,244,141,231,119,139,30,82,17,248,166,188,0],[160,165,195,18,63,220,15,211,53,125,206,92,137,136,20,42,255,173,88,99,87,117,223,170,169,219,3,246,177,111,130,214,240,0],[160,235,197,24,239,109,16,89,37,244,65,114,121,182,69,143,224,194,139,246,253,79,0,205,84,137,161,40,60,103,249,123,227,0],[160,185,247,60,119,144,31,158,231,72,186,57,228,125,4,215,127,211,178,160,137,36,48,31,211,106,150,113,76,58,138,78,84,0],[160,102,186,8,67,98,6,255,253,62,105,39,103,84,162,49,65,188,180,38,231,30,27,102,244,243,173,98,242,124,202,42,116,0],[160,222,152,116,39,82,245,17,9,75,20,236,207,29,254,224,131,101,95,156,83,203,73,42,77,232,93,162,148,191,25,189,83,0],[160,252,82,105,110,184,232,101,73,206,42,128,36,141,47,9,242,208,212,80,107,99,31,203,220,189,127,118,88,235,51,100,16,0],[160,140,144,226,152,9,143,184,98,75,119,140,138,189,41,16,86,90,220,7,160,255,163,234,160,65,226,99,185,209,175,87,153,0],[160,147,222,156,155,5,248,196,245,42,104,123,89,226,59,146,179,152,243,188,16,203,141,242,245,35,37,186,247,242,233,116,194,0],[160,77,181,94,55,60,65,150,213,94,128,208,85,225,56,182,170,255,62,173,249,192,27,109,46,165,176,52,102,165,181,158,123,0],[160,41,92,138,175,248,169,35,32,3,60,85,173,153,77,167,97,48,46,186,178,179,251,81,119,52,133,83,208,66,99,253,98,0],[160,210,90,148,32,152,241,40,152,156,177,245,3,137,19,75,169,109,138,85,24,212,56,152,150,112,147,170,123,101,171,194,235,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,207,25,136,176,219,19,125,248,221,226,37,49,126,193,111,64,241,36,42,95,246,32,248,209,249,221,118,115,191,198,60,251,160,82,137,39,131,73,246,17,181,228,41,231,138,20,214,96,57,89,233,241,115,173,101,182,209,11,226,190,180,241,175,169,48,160,96,13,97,228,114,130,227,139,95,235,181,156,221,158,24,50,37,122,38,159,136,47,158,219,154,150,169,255,217,229,255,46,160,219,139,73,171,247,198,84,124,16,5,239,28,69,184,190,3,10,137,135,153,59,96,150,2,6,55,143,216,10,40,57,14,160,230,172,97,53,138,81,182,253,34,92,102,213,85,230,62,204,38,19,157,159,106,244,141,231,119,139,30,82,17,248,166,188,160,165,195,18,63,220,15,211,53,125,206,92,137,136,20,42,255,173,88,99,87,117,223,170,169,219,3,246,177,111,130,214,240,160,235,197,24,239,109,16,89,37,244,65,114,121,182,69,143,224,194,139,246,253,79,0,205,84,137,161,40,60,103,249,123,227,160,185,247,60,119,144,31,158,231,72,186,57,228,125,4,215,127,211,178,160,137,36,48,31,211,106,150,113,76,58,138,78,84,160,102,186,8,67,98,6,255,253,62,105,39,103,84,162,49,65,188,180,38,231,30,27,102,244,243,173,98,242,124,202,42,116,160,222,152,116,39,82,245,17,9,75,20,236,207,29,254,224,131,101,95,156,83,203,73,42,77,232,93,162,148,191,25,189,83,160,252,82,105,110,184,232,101,73,206,42,128,36,141,47,9,242,208,212,80,107,99,31,203,220,189,127,118,88,235,51,100,16,160,140,144,226,152,9,143,184,98,75,119,140,138,189,41,16,86,90,220,7,160,255,163,234,160,65,226,99,185,209,175,87,153,160,147,222,156,155,5,248,196,245,42,104,123,89,226,59,146,179,152,243,188,16,203,141,242,245,35,37,186,247,242,233,116,194,160,77,181,94,55,60,65,150,213,94,128,208,85,225,56,182,170,255,62,173,249,192,27,109,46,165,176,52,102,165,181,158,123,160,41,92,138,175,248,169,35,32,3,60,85,173,153,77,167,97,48,46,186,178,179,251,81,119,52,133,83,208,66,99,253,98,160,210,90,148,32,152,241,40,152,156,177,245,3,137,19,75,169,109,138,85,24,212,56,152,150,112,147,170,123,101,171,194,235,128],[249,2,17,160,207,25,136,176,219,19,125,248,221,226,37,49,126,193,111,64,241,36,42,95,246,32,248,209,249,221,118,115,191,198,60,251,160,82,137,39,131,73,246,17,181,228,41,231,138,20,214,96,57,89,233,241,115,173,101,182,209,11,226,190,180,241,175,169,48,160,96,13,97,228,114,130,227,139,95,235,181,156,221,158,24,50,37,122,38,159,136,47,158,219,154,150,169,255,217,229,255,46,160,219,139,73,171,247,198,84,124,16,5,239,28,69,184,190,3,10,137,135,153,59,96,150,2,6,55,143,216,10,40,57,14,160,230,172,97,53,138,81,182,253,34,92,102,213,85,230,62,204,38,19,157,159,106,244,141,231,119,139,30,82,17,248,166,188,160,165,195,18,63,220,15,211,53,125,206,92,137,136,20,42,255,173,88,99,87,117,223,170,169,219,3,246,177,111,130,214,240,160,235,197,24,239,109,16,89,37,244,65,114,121,182,69,143,224,194,139,246,253,79,0,205,84,137,161,40,60,103,249,123,227,160,185,247,60,119,144,31,158,231,72,186,57,228,125,4,215,127,211,178,160,137,36,48,31,211,106,150,113,76,58,138,78,84,160,2,190,82,208,6,217,82,133,108,231,81,37,70,188,194,156,85,75,108,157,139,10,7,33,187,183,36,39,135,34,206,242,160,222,152,116,39,82,245,17,9,75,20,236,207,29,254,224,131,101,95,156,83,203,73,42,77,232,93,162,148,191,25,189,83,160,252,82,105,110,184,232,101,73,206,42,128,36,141,47,9,242,208,212,80,107,99,31,203,220,189,127,118,88,235,51,100,16,160,140,144,226,152,9,143,184,98,75,119,140,138,189,41,16,86,90,220,7,160,255,163,234,160,65,226,99,185,209,175,87,153,160,147,222,156,155,5,248,196,245,42,104,123,89,226,59,146,179,152,243,188,16,203,141,242,245,35,37,186,247,242,233,116,194,160,77,181,94,55,60,65,150,213,94,128,208,85,225,56,182,170,255,62,173,249,192,27,109,46,165,176,52,102,165,181,158,123,160,41,92,138,175,248,169,35,32,3,60,85,173,153,77,167,97,48,46,186,178,179,251,81,119,52,133,83,208,66,99,253,98,160,210,90,148,32,152,241,40,152,156,177,245,3,137,19,75,169,109,138,85,24,212,56,152,150,112,147,170,123,101,171,194,235,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,90,39,182,93,145,205,248,84,147,44,245,4,23,183,229,74,176,45,48,168,134,0,185,71,225,8,255,13,208,251,148,255,0],[160,185,207,200,213,56,7,110,102,114,221,36,17,44,235,96,72,24,56,89,108,86,25,30,79,142,33,131,71,233,234,181,53,0],[160,73,225,11,221,155,171,136,49,120,235,145,99,196,74,157,29,116,206,12,141,230,240,195,122,151,74,166,229,232,22,126,246,0],[160,80,121,156,28,53,99,88,164,230,39,136,203,232,55,255,231,249,102,78,170,251,114,92,88,217,145,226,183,95,56,223,187,0],[160,163,146,165,215,149,117,178,63,158,245,105,172,162,59,192,102,249,164,174,73,95,251,0,54,115,164,23,72,139,184,132,203,0],[160,199,144,43,186,140,137,173,182,131,253,32,36,241,162,191,119,76,210,253,224,175,251,96,61,250,99,36,153,3,5,186,2,0],[160,74,38,67,220,86,118,240,239,235,168,19,91,46,48,156,217,193,137,41,113,15,205,87,144,180,124,206,92,234,10,98,139,0],[160,17,254,87,83,176,176,229,225,60,18,165,3,202,24,112,143,102,201,90,198,108,91,168,43,214,75,128,7,109,128,23,98,0],[160,133,102,218,45,158,147,123,122,97,217,249,112,28,105,126,167,154,36,107,161,196,74,178,135,23,51,1,95,194,34,36,137,0],[160,126,200,198,169,56,20,34,219,73,169,9,233,102,150,54,162,188,91,24,142,171,180,116,104,168,242,207,200,61,76,17,172,0],[160,241,136,63,109,78,45,245,249,67,57,193,79,67,81,114,65,186,157,88,113,89,151,103,240,95,205,27,74,251,209,101,60,0],[160,72,66,199,55,66,98,231,100,248,214,163,161,178,9,3,151,146,129,204,192,117,185,14,162,124,244,44,143,119,191,209,57,0],[160,46,6,23,44,36,193,135,80,112,149,30,93,80,145,214,55,177,8,75,205,60,16,87,202,13,148,165,6,4,87,206,205,0],[160,222,107,212,28,198,70,135,254,132,167,233,46,165,59,213,112,176,97,182,63,239,60,2,100,225,78,86,219,121,17,195,165,0],[160,10,30,132,95,237,95,140,66,13,73,236,134,195,75,145,209,201,163,103,81,212,222,226,178,98,247,7,178,73,245,5,193,0],[160,157,204,128,152,104,49,2,63,107,10,187,28,158,78,250,173,237,229,135,244,83,245,231,116,59,113,36,104,183,66,41,8,0],[160,58,151,253,129,134,23,226,231,132,68,204,108,105,65,77,221,173,126,117,91,201,65,191,85,91,47,246,235,84,84,70,64,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,185,207,200,213,56,7,110,102,114,221,36,17,44,235,96,72,24,56,89,108,86,25,30,79,142,33,131,71,233,234,181,53,160,73,225,11,221,155,171,136,49,120,235,145,99,196,74,157,29,116,206,12,141,230,240,195,122,151,74,166,229,232,22,126,246,160,80,121,156,28,53,99,88,164,230,39,136,203,232,55,255,231,249,102,78,170,251,114,92,88,217,145,226,183,95,56,223,187,160,163,146,165,215,149,117,178,63,158,245,105,172,162,59,192,102,249,164,174,73,95,251,0,54,115,164,23,72,139,184,132,203,160,199,144,43,186,140,137,173,182,131,253,32,36,241,162,191,119,76,210,253,224,175,251,96,61,250,99,36,153,3,5,186,2,160,74,38,67,220,86,118,240,239,235,168,19,91,46,48,156,217,193,137,41,113,15,205,87,144,180,124,206,92,234,10,98,139,160,17,254,87,83,176,176,229,225,60,18,165,3,202,24,112,143,102,201,90,198,108,91,168,43,214,75,128,7,109,128,23,98,160,133,102,218,45,158,147,123,122,97,217,249,112,28,105,126,167,154,36,107,161,196,74,178,135,23,51,1,95,194,34,36,137,160,126,200,198,169,56,20,34,219,73,169,9,233,102,150,54,162,188,91,24,142,171,180,116,104,168,242,207,200,61,76,17,172,160,241,136,63,109,78,45,245,249,67,57,193,79,67,81,114,65,186,157,88,113,89,151,103,240,95,205,27,74,251,209,101,60,160,72,66,199,55,66,98,231,100,248,214,163,161,178,9,3,151,146,129,204,192,117,185,14,162,124,244,44,143,119,191,209,57,160,46,6,23,44,36,193,135,80,112,149,30,93,80,145,214,55,177,8,75,205,60,16,87,202,13,148,165,6,4,87,206,205,160,222,107,212,28,198,70,135,254,132,167,233,46,165,59,213,112,176,97,182,63,239,60,2,100,225,78,86,219,121,17,195,165,160,10,30,132,95,237,95,140,66,13,73,236,134,195,75,145,209,201,163,103,81,212,222,226,178,98,247,7,178,73,245,5,193,160,157,204,128,152,104,49,2,63,107,10,187,28,158,78,250,173,237,229,135,244,83,245,231,116,59,113,36,104,183,66,41,8,160,58,151,253,129,134,23,226,231,132,68,204,108,105,65,77,221,173,126,117,91,201,65,191,85,91,47,246,235,84,84,70,64,128],[249,2,17,160,185,207,200,213,56,7,110,102,114,221,36,17,44,235,96,72,24,56,89,108,86,25,30,79,142,33,131,71,233,234,181,53,160,73,225,11,221,155,171,136,49,120,235,145,99,196,74,157,29,116,206,12,141,230,240,195,122,151,74,166,229,232,22,126,246,160,80,121,156,28,53,99,88,164,230,39,136,203,232,55,255,231,249,102,78,170,251,114,92,88,217,145,226,183,95,56,223,187,160,90,39,182,93,145,205,248,84,147,44,245,4,23,183,229,74,176,45,48,168,134,0,185,71,225,8,255,13,208,251,148,255,160,199,144,43,186,140,137,173,182,131,253,32,36,241,162,191,119,76,210,253,224,175,251,96,61,250,99,36,153,3,5,186,2,160,74,38,67,220,86,118,240,239,235,168,19,91,46,48,156,217,193,137,41,113,15,205,87,144,180,124,206,92,234,10,98,139,160,17,254,87,83,176,176,229,225,60,18,165,3,202,24,112,143,102,201,90,198,108,91,168,43,214,75,128,7,109,128,23,98,160,133,102,218,45,158,147,123,122,97,217,249,112,28,105,126,167,154,36,107,161,196,74,178,135,23,51,1,95,194,34,36,137,160,126,200,198,169,56,20,34,219,73,169,9,233,102,150,54,162,188,91,24,142,171,180,116,104,168,242,207,200,61,76,17,172,160,241,136,63,109,78,45,245,249,67,57,193,79,67,81,114,65,186,157,88,113,89,151,103,240,95,205,27,74,251,209,101,60,160,72,66,199,55,66,98,231,100,248,214,163,161,178,9,3,151,146,129,204,192,117,185,14,162,124,244,44,143,119,191,209,57,160,46,6,23,44,36,193,135,80,112,149,30,93,80,145,214,55,177,8,75,205,60,16,87,202,13,148,165,6,4,87,206,205,160,222,107,212,28,198,70,135,254,132,167,233,46,165,59,213,112,176,97,182,63,239,60,2,100,225,78,86,219,121,17,195,165,160,10,30,132,95,237,95,140,66,13,73,236,134,195,75,145,209,201,163,103,81,212,222,226,178,98,247,7,178,73,245,5,193,160,157,204,128,152,104,49,2,63,107,10,187,28,158,78,250,173,237,229,135,244,83,245,231,116,59,113,36,104,183,66,41,8,160,58,151,253,129,134,23,226,231,132,68,204,108,105,65,77,221,173,126,117,91,201,65,191,85,91,47,246,235,84,84,70,64,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,182,143,5,211,24,211,185,171,137,154,110,138,103,175,65,122,26,29,104,29,39,156,45,250,245,198,189,15,137,60,129,25,0],[160,231,95,10,238,177,7,32,101,219,128,213,171,45,55,12,233,220,76,10,224,110,85,30,112,72,0,28,46,26,178,165,127,0],[160,68,154,48,77,211,155,158,122,103,65,28,151,165,177,139,126,155,242,209,98,172,22,197,196,198,164,160,1,191,248,201,14,0],[160,226,197,189,105,117,223,207,34,106,169,20,185,220,121,234,106,141,248,253,225,66,0,82,201,120,184,102,45,245,44,112,98,0],[160,193,198,74,20,172,24,242,204,247,133,105,88,206,172,223,183,62,184,143,158,6,143,103,24,224,178,189,126,10,74,113,190,0],[160,43,204,227,62,184,13,182,217,216,210,48,27,217,75,64,252,242,140,3,182,202,118,144,176,148,26,196,214,100,122,226,213,0],[160,182,138,23,200,65,150,48,56,62,198,76,160,173,67,61,225,22,190,139,168,55,26,90,185,230,228,40,91,80,196,239,196,0],[160,24,17,32,125,206,81,93,62,53,124,234,251,38,171,115,163,153,207,6,136,152,179,28,6,29,25,100,153,224,243,112,41,0],[160,148,208,38,239,167,118,27,229,171,172,83,173,11,119,101,8,199,167,146,213,184,195,245,195,143,154,141,98,23,156,71,88,0],[160,0,111,208,29,187,84,114,172,204,96,22,253,97,161,125,144,215,97,197,58,152,97,231,141,59,95,211,214,3,43,242,134,0],[160,73,5,38,184,154,125,53,252,236,115,226,160,8,168,26,90,196,99,74,104,6,166,65,105,63,117,232,48,156,232,46,118,0],[160,73,99,227,191,237,215,26,167,84,198,202,187,25,227,145,193,205,222,64,59,165,140,59,62,35,148,177,238,21,32,11,15,0],[160,182,143,57,152,26,221,220,117,161,83,198,55,123,86,61,249,223,186,182,187,217,120,183,22,189,45,172,118,52,230,240,112,0],[160,29,91,34,243,70,153,248,21,0,182,206,197,142,239,125,148,136,12,7,134,242,200,194,32,51,118,7,64,50,191,74,93,0],[160,155,201,134,3,164,120,172,75,74,243,23,75,138,17,227,228,164,186,195,71,91,141,88,190,216,173,246,40,142,41,31,43,0],[160,45,240,236,48,240,10,170,254,49,102,210,93,150,99,189,36,99,179,2,19,159,122,78,177,123,218,46,32,5,59,135,130,0],[160,33,228,67,177,101,177,233,17,253,0,69,14,223,236,194,30,3,1,227,229,162,15,240,155,49,8,162,92,86,210,197,143,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,231,95,10,238,177,7,32,101,219,128,213,171,45,55,12,233,220,76,10,224,110,85,30,112,72,0,28,46,26,178,165,127,160,68,154,48,77,211,155,158,122,103,65,28,151,165,177,139,126,155,242,209,98,172,22,197,196,198,164,160,1,191,248,201,14,160,226,197,189,105,117,223,207,34,106,169,20,185,220,121,234,106,141,248,253,225,66,0,82,201,120,184,102,45,245,44,112,98,160,193,198,74,20,172,24,242,204,247,133,105,88,206,172,223,183,62,184,143,158,6,143,103,24,224,178,189,126,10,74,113,190,160,43,204,227,62,184,13,182,217,216,210,48,27,217,75,64,252,242,140,3,182,202,118,144,176,148,26,196,214,100,122,226,213,160,182,138,23,200,65,150,48,56,62,198,76,160,173,67,61,225,22,190,139,168,55,26,90,185,230,228,40,91,80,196,239,196,160,24,17,32,125,206,81,93,62,53,124,234,251,38,171,115,163,153,207,6,136,152,179,28,6,29,25,100,153,224,243,112,41,160,148,208,38,239,167,118,27,229,171,172,83,173,11,119,101,8,199,167,146,213,184,195,245,195,143,154,141,98,23,156,71,88,160,0,111,208,29,187,84,114,172,204,96,22,253,97,161,125,144,215,97,197,58,152,97,231,141,59,95,211,214,3,43,242,134,160,73,5,38,184,154,125,53,252,236,115,226,160,8,168,26,90,196,99,74,104,6,166,65,105,63,117,232,48,156,232,46,118,160,73,99,227,191,237,215,26,167,84,198,202,187,25,227,145,193,205,222,64,59,165,140,59,62,35,148,177,238,21,32,11,15,160,182,143,57,152,26,221,220,117,161,83,198,55,123,86,61,249,223,186,182,187,217,120,183,22,189,45,172,118,52,230,240,112,160,29,91,34,243,70,153,248,21,0,182,206,197,142,239,125,148,136,12,7,134,242,200,194,32,51,118,7,64,50,191,74,93,160,155,201,134,3,164,120,172,75,74,243,23,75,138,17,227,228,164,186,195,71,91,141,88,190,216,173,246,40,142,41,31,43,160,45,240,236,48,240,10,170,254,49,102,210,93,150,99,189,36,99,179,2,19,159,122,78,177,123,218,46,32,5,59,135,130,160,33,228,67,177,101,177,233,17,253,0,69,14,223,236,194,30,3,1,227,229,162,15,240,155,49,8,162,92,86,210,197,143,128],[249,2,17,160,231,95,10,238,177,7,32,101,219,128,213,171,45,55,12,233,220,76,10,224,110,85,30,112,72,0,28,46,26,178,165,127,160,68,154,48,77,211,155,158,122,103,65,28,151,165,177,139,126,155,242,209,98,172,22,197,196,198,164,160,1,191,248,201,14,160,226,197,189,105,117,223,207,34,106,169,20,185,220,121,234,106,141,248,253,225,66,0,82,201,120,184,102,45,245,44,112,98,160,182,143,5,211,24,211,185,171,137,154,110,138,103,175,65,122,26,29,104,29,39,156,45,250,245,198,189,15,137,60,129,25,160,43,204,227,62,184,13,182,217,216,210,48,27,217,75,64,252,242,140,3,182,202,118,144,176,148,26,196,214,100,122,226,213,160,182,138,23,200,65,150,48,56,62,198,76,160,173,67,61,225,22,190,139,168,55,26,90,185,230,228,40,91,80,196,239,196,160,24,17,32,125,206,81,93,62,53,124,234,251,38,171,115,163,153,207,6,136,152,179,28,6,29,25,100,153,224,243,112,41,160,148,208,38,239,167,118,27,229,171,172,83,173,11,119,101,8,199,167,146,213,184,195,245,195,143,154,141,98,23,156,71,88,160,0,111,208,29,187,84,114,172,204,96,22,253,97,161,125,144,215,97,197,58,152,97,231,141,59,95,211,214,3,43,242,134,160,73,5,38,184,154,125,53,252,236,115,226,160,8,168,26,90,196,99,74,104,6,166,65,105,63,117,232,48,156,232,46,118,160,73,99,227,191,237,215,26,167,84,198,202,187,25,227,145,193,205,222,64,59,165,140,59,62,35,148,177,238,21,32,11,15,160,182,143,57,152,26,221,220,117,161,83,198,55,123,86,61,249,223,186,182,187,217,120,183,22,189,45,172,118,52,230,240,112,160,29,91,34,243,70,153,248,21,0,182,206,197,142,239,125,148,136,12,7,134,242,200,194,32,51,118,7,64,50,191,74,93,160,155,201,134,3,164,120,172,75,74,243,23,75,138,17,227,228,164,186,195,71,91,141,88,190,216,173,246,40,142,41,31,43,160,45,240,236,48,240,10,170,254,49,102,210,93,150,99,189,36,99,179,2,19,159,122,78,177,123,218,46,32,5,59,135,130,160,33,228,67,177,101,177,233,17,253,0,69,14,223,236,194,30,3,1,227,229,162,15,240,155,49,8,162,92,86,210,197,143,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":2,"drifted_index":2,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,93,121,210,132,76,223,23,98,114,243,126,214,80,32,198,246,179,51,103,31,204,163,133,161,34,50,24,227,154,59,54,17,0],[160,182,157,141,96,64,124,32,139,164,168,123,177,23,245,189,220,225,84,136,136,88,10,6,219,58,97,25,182,69,71,237,143,0],[160,206,250,250,126,150,206,40,106,250,64,172,109,90,20,29,206,199,98,71,103,243,57,48,153,235,158,226,15,248,33,24,173,0],[160,136,63,198,240,187,66,179,160,160,234,247,50,225,28,133,166,186,193,44,232,206,69,231,205,70,97,57,71,100,210,28,206,0],[160,83,100,153,220,8,108,102,77,228,175,197,32,215,192,58,6,109,5,74,102,136,20,58,206,184,63,3,33,8,16,153,30,0],[160,175,232,48,82,151,173,48,31,217,187,131,102,232,238,240,77,20,136,215,3,165,190,235,207,83,24,118,111,5,33,118,184,0],[160,110,54,181,109,232,73,221,100,78,199,234,224,211,152,43,47,140,143,161,231,189,203,125,26,62,143,67,142,233,89,170,151,0],[160,246,236,40,139,47,246,79,126,248,202,223,217,217,99,115,141,110,146,2,242,28,96,147,41,125,191,216,113,201,41,89,235,0],[160,91,59,237,40,226,216,243,244,208,125,68,191,111,236,9,112,23,15,133,69,16,47,245,247,83,174,149,186,162,56,186,253,0],[160,220,44,238,195,63,188,246,232,190,154,148,17,70,121,20,98,79,195,188,168,110,0,5,208,4,130,188,87,169,192,70,98,0],[160,92,101,86,144,21,242,104,190,28,237,87,193,148,105,92,120,133,227,203,0,122,152,144,116,26,192,140,242,105,209,149,100,0],[160,9,90,216,179,219,207,78,116,148,217,99,115,243,103,47,189,57,153,134,100,125,171,152,207,119,127,3,229,255,164,27,92,0],[160,31,78,79,236,47,83,65,173,98,239,70,162,185,140,118,72,2,219,95,127,244,126,251,190,151,219,22,40,18,96,202,62,0],[160,159,240,142,98,4,180,205,200,240,26,148,146,37,243,63,216,214,244,168,209,3,157,90,160,14,74,97,151,36,250,19,11,0],[160,157,182,12,187,163,248,170,80,34,55,159,70,9,174,92,138,75,211,86,41,85,220,251,35,21,219,63,243,66,254,202,139,0],[160,219,165,14,121,240,76,195,159,115,215,66,217,73,217,69,74,103,150,182,161,200,213,160,60,101,94,176,97,200,45,237,58,0],[160,199,43,123,101,125,33,151,100,53,219,109,222,209,241,245,149,13,132,146,115,151,223,49,52,200,134,90,176,44,55,175,7,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,182,157,141,96,64,124,32,139,164,168,123,177,23,245,189,220,225,84,136,136,88,10,6,219,58,97,25,182,69,71,237,143,160,206,250,250,126,150,206,40,106,250,64,172,109,90,20,29,206,199,98,71,103,243,57,48,153,235,158,226,15,248,33,24,173,160,136,63,198,240,187,66,179,160,160,234,247,50,225,28,133,166,186,193,44,232,206,69,231,205,70,97,57,71,100,210,28,206,160,83,100,153,220,8,108,102,77,228,175,197,32,215,192,58,6,109,5,74,102,136,20,58,206,184,63,3,33,8,16,153,30,160,175,232,48,82,151,173,48,31,217,187,131,102,232,238,240,77,20,136,215,3,165,190,235,207,83,24,118,111,5,33,118,184,160,110,54,181,109,232,73,221,100,78,199,234,224,211,152,43,47,140,143,161,231,189,203,125,26,62,143,67,142,233,89,170,151,160,246,236,40,139,47,246,79,126,248,202,223,217,217,99,115,141,110,146,2,242,28,96,147,41,125,191,216,113,201,41,89,235,160,91,59,237,40,226,216,243,244,208,125,68,191,111,236,9,112,23,15,133,69,16,47,245,247,83,174,149,186,162,56,186,253,160,220,44,238,195,63,188,246,232,190,154,148,17,70,121,20,98,79,195,188,168,110,0,5,208,4,130,188,87,169,192,70,98,160,92,101,86,144,21,242,104,190,28,237,87,193,148,105,92,120,133,227,203,0,122,152,144,116,26,192,140,242,105,209,149,100,160,9,90,216,179,219,207,78,116,148,217,99,115,243,103,47,189,57,153,134,100,125,171,152,207,119,127,3,229,255,164,27,92,160,31,78,79,236,47,83,65,173,98,239,70,162,185,140,118,72,2,219,95,127,244,126,251,190,151,219,22,40,18,96,202,62,160,159,240,142,98,4,180,205,200,240,26,148,146,37,243,63,216,214,244,168,209,3,157,90,160,14,74,97,151,36,250,19,11,160,157,182,12,187,163,248,170,80,34,55,159,70,9,174,92,138,75,211,86,41,85,220,251,35,21,219,63,243,66,254,202,139,160,219,165,14,121,240,76,195,159,115,215,66,217,73,217,69,74,103,150,182,161,200,213,160,60,101,94,176,97,200,45,237,58,160,199,43,123,101,125,33,151,100,53,219,109,222,209,241,245,149,13,132,146,115,151,223,49,52,200,134,90,176,44,55,175,7,128],[249,2,17,160,182,157,141,96,64,124,32,139,164,168,123,177,23,245,189,220,225,84,136,136,88,10,6,219,58,97,25,182,69,71,237,143,160,206,250,250,126,150,206,40,106,250,64,172,109,90,20,29,206,199,98,71,103,243,57,48,153,235,158,226,15,248,33,24,173,160,93,121,210,132,76,223,23,98,114,243,126,214,80,32,198,246,179,51,103,31,204,163,133,161,34,50,24,227,154,59,54,17,160,83,100,153,220,8,108,102,77,228,175,197,32,215,192,58,6,109,5,74,102,136,20,58,206,184,63,3,33,8,16,153,30,160,175,232,48,82,151,173,48,31,217,187,131,102,232,238,240,77,20,136,215,3,165,190,235,207,83,24,118,111,5,33,118,184,160,110,54,181,109,232,73,221,100,78,199,234,224,211,152,43,47,140,143,161,231,189,203,125,26,62,143,67,142,233,89,170,151,160,246,236,40,139,47,246,79,126,248,202,223,217,217,99,115,141,110,146,2,242,28,96,147,41,125,191,216,113,201,41,89,235,160,91,59,237,40,226,216,243,244,208,125,68,191,111,236,9,112,23,15,133,69,16,47,245,247,83,174,149,186,162,56,186,253,160,220,44,238,195,63,188,246,232,190,154,148,17,70,121,20,98,79,195,188,168,110,0,5,208,4,130,188,87,169,192,70,98,160,92,101,86,144,21,242,104,190,28,237,87,193,148,105,92,120,133,227,203,0,122,152,144,116,26,192,140,242,105,209,149,100,160,9,90,216,179,219,207,78,116,148,217,99,115,243,103,47,189,57,153,134,100,125,171,152,207,119,127,3,229,255,164,27,92,160,31,78,79,236,47,83,65,173,98,239,70,162,185,140,118,72,2,219,95,127,244,126,251,190,151,219,22,40,18,96,202,62,160,159,240,142,98,4,180,205,200,240,26,148,146,37,243,63,216,214,244,168,209,3,157,90,160,14,74,97,151,36,250,19,11,160,157,182,12,187,163,248,170,80,34,55,159,70,9,174,92,138,75,211,86,41,85,220,251,35,21,219,63,243,66,254,202,139,160,219,165,14,121,240,76,195,159,115,215,66,217,73,217,69,74,103,150,182,161,200,213,160,60,101,94,176,97,200,45,237,58,160,199,43,123,101,125,33,151,100,53,219,109,222,209,241,245,149,13,132,146,115,151,223,49,52,200,134,90,176,44,55,175,7,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,186,1,181,85,104,108,251,26,77,80,123,220,39,96,193,86,89,152,0,73,89,67,184,174,182,108,231,102,239,13,186,28,0],[160,94,252,119,184,230,20,198,249,59,8,100,146,111,65,47,251,132,45,206,155,80,65,126,116,167,153,242,240,123,240,219,99,0],[160,136,152,181,189,76,53,26,15,182,1,207,203,181,22,6,6,200,2,117,30,10,12,115,143,252,15,145,127,204,60,243,89,0],[160,220,30,215,238,90,91,227,27,252,122,162,159,24,234,129,3,159,224,19,187,27,83,48,15,194,51,93,128,98,157,138,157,0],[160,189,224,0,206,122,88,196,193,22,254,84,35,16,85,192,156,141,53,73,131,58,39,69,158,160,8,145,61,189,235,223,172,0],[160,114,153,151,230,187,111,213,97,69,112,10,63,102,200,249,107,110,250,160,87,251,68,253,164,14,129,92,155,189,90,78,88,0],[160,58,185,6,193,165,112,29,102,93,153,129,133,146,171,173,163,8,103,60,245,12,132,237,215,148,21,110,112,118,248,86,38,0],[160,111,220,186,200,71,25,68,52,188,156,193,114,61,192,144,212,204,60,135,63,82,83,10,142,115,170,123,28,163,217,36,227,0],[160,56,6,103,29,198,117,228,108,168,136,138,60,223,164,68,163,23,61,161,137,95,136,76,96,115,222,102,2,235,221,131,46,0],[160,114,17,201,128,234,225,166,71,56,220,19,66,16,131,173,40,153,210,136,106,131,141,13,99,71,22,175,191,215,15,101,78,0],[160,185,94,15,81,91,143,215,241,124,65,158,52,51,57,215,14,218,130,60,86,253,44,29,240,181,205,139,65,112,13,204,77,0],[160,102,26,69,87,205,75,63,40,155,121,13,81,117,150,138,155,228,114,16,26,25,140,7,141,100,248,101,132,115,4,176,105,0],[160,24,199,37,127,95,171,48,236,127,237,165,168,41,131,156,81,237,94,229,55,146,128,118,40,87,182,139,163,199,212,247,104,0],[160,88,158,172,54,18,109,167,144,70,74,13,42,228,254,248,175,66,26,133,108,92,146,251,242,220,149,1,111,47,94,63,199,0],[160,238,152,117,3,226,86,88,17,227,43,23,69,229,181,232,20,61,111,103,237,187,174,85,213,127,183,53,89,129,116,181,82,0],[160,114,27,51,178,26,231,177,85,151,61,247,26,27,148,202,167,234,150,130,31,112,34,35,32,39,117,137,3,38,130,233,116,0],[160,140,132,128,4,217,75,11,41,33,8,232,186,150,199,39,25,126,160,7,206,8,181,41,155,76,120,59,226,180,191,136,111,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,94,252,119,184,230,20,198,249,59,8,100,146,111,65,47,251,132,45,206,155,80,65,126,116,167,153,242,240,123,240,219,99,160,136,152,181,189,76,53,26,15,182,1,207,203,181,22,6,6,200,2,117,30,10,12,115,143,252,15,145,127,204,60,243,89,160,220,30,215,238,90,91,227,27,252,122,162,159,24,234,129,3,159,224,19,187,27,83,48,15,194,51,93,128,98,157,138,157,160,189,224,0,206,122,88,196,193,22,254,84,35,16,85,192,156,141,53,73,131,58,39,69,158,160,8,145,61,189,235,223,172,160,114,153,151,230,187,111,213,97,69,112,10,63,102,200,249,107,110,250,160,87,251,68,253,164,14,129,92,155,189,90,78,88,160,58,185,6,193,165,112,29,102,93,153,129,133,146,171,173,163,8,103,60,245,12,132,237,215,148,21,110,112,118,248,86,38,160,111,220,186,200,71,25,68,52,188,156,193,114,61,192,144,212,204,60,135,63,82,83,10,142,115,170,123,28,163,217,36,227,160,56,6,103,29,198,117,228,108,168,136,138,60,223,164,68,163,23,61,161,137,95,136,76,96,115,222,102,2,235,221,131,46,160,114,17,201,128,234,225,166,71,56,220,19,66,16,131,173,40,153,210,136,106,131,141,13,99,71,22,175,191,215,15,101,78,160,185,94,15,81,91,143,215,241,124,65,158,52,51,57,215,14,218,130,60,86,253,44,29,240,181,205,139,65,112,13,204,77,160,102,26,69,87,205,75,63,40,155,121,13,81,117,150,138,155,228,114,16,26,25,140,7,141,100,248,101,132,115,4,176,105,160,24,199,37,127,95,171,48,236,127,237,165,168,41,131,156,81,237,94,229,55,146,128,118,40,87,182,139,163,199,212,247,104,160,88,158,172,54,18,109,167,144,70,74,13,42,228,254,248,175,66,26,133,108,92,146,251,242,220,149,1,111,47,94,63,199,160,238,152,117,3,226,86,88,17,227,43,23,69,229,181,232,20,61,111,103,237,187,174,85,213,127,183,53,89,129,116,181,82,160,114,27,51,178,26,231,177,85,151,61,247,26,27,148,202,167,234,150,130,31,112,34,35,32,39,117,137,3,38,130,233,116,160,140,132,128,4,217,75,11,41,33,8,232,186,150,199,39,25,126,160,7,206,8,181,41,155,76,120,59,226,180,191,136,111,128],[249,2,17,160,94,252,119,184,230,20,198,249,59,8,100,146,111,65,47,251,132,45,206,155,80,65,126,116,167,153,242,240,123,240,219,99,160,136,152,181,189,76,53,26,15,182,1,207,203,181,22,6,6,200,2,117,30,10,12,115,143,252,15,145,127,204,60,243,89,160,220,30,215,238,90,91,227,27,252,122,162,159,24,234,129,3,159,224,19,187,27,83,48,15,194,51,93,128,98,157,138,157,160,189,224,0,206,122,88,196,193,22,254,84,35,16,85,192,156,141,53,73,131,58,39,69,158,160,8,145,61,189,235,223,172,160,114,153,151,230,187,111,213,97,69,112,10,63,102,200,249,107,110,250,160,87,251,68,253,164,14,129,92,155,189,90,78,88,160,58,185,6,193,165,112,29,102,93,153,129,133,146,171,173,163,8,103,60,245,12,132,237,215,148,21,110,112,118,248,86,38,160,111,220,186,200,71,25,68,52,188,156,193,114,61,192,144,212,204,60,135,63,82,83,10,142,115,170,123,28,163,217,36,227,160,56,6,103,29,198,117,228,108,168,136,138,60,223,164,68,163,23,61,161,137,95,136,76,96,115,222,102,2,235,221,131,46,160,114,17,201,128,234,225,166,71,56,220,19,66,16,131,173,40,153,210,136,106,131,141,13,99,71,22,175,191,215,15,101,78,160,185,94,15,81,91,143,215,241,124,65,158,52,51,57,215,14,218,130,60,86,253,44,29,240,181,205,139,65,112,13,204,77,160,102,26,69,87,205,75,63,40,155,121,13,81,117,150,138,155,228,114,16,26,25,140,7,141,100,248,101,132,115,4,176,105,160,24,199,37,127,95,171,48,236,127,237,165,168,41,131,156,81,237,94,229,55,146,128,118,40,87,182,139,163,199,212,247,104,160,88,158,172,54,18,109,167,144,70,74,13,42,228,254,248,175,66,26,133,108,92,146,251,242,220,149,1,111,47,94,63,199,160,238,152,117,3,226,86,88,17,227,43,23,69,229,181,232,20,61,111,103,237,187,174,85,213,127,183,53,89,129,116,181,82,160,114,27,51,178,26,231,177,85,151,61,247,26,27,148,202,167,234,150,130,31,112,34,35,32,39,117,137,3,38,130,233,116,160,186,1,181,85,104,108,251,26,77,80,123,220,39,96,193,86,89,152,0,73,89,67,184,174,182,108,231,102,239,13,186,28,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,69,206,1,233,187,128,227,213,100,253,247,225,189,60,228,133,185,225,227,207,63,53,77,107,243,31,96,3,244,240,174,252,0],[160,135,34,48,42,14,239,143,189,170,69,134,123,218,36,72,2,163,192,143,204,12,109,175,58,141,118,94,36,206,191,118,32,0],[160,220,109,24,106,232,29,109,176,46,233,215,10,243,92,45,248,25,115,230,121,148,2,36,148,57,81,160,129,219,132,31,115,0],[160,106,59,42,152,93,61,176,69,106,48,79,39,47,12,7,140,163,95,23,216,137,66,239,155,185,168,89,196,116,195,127,103,0],[160,115,205,37,159,79,247,182,93,148,163,41,97,209,195,10,86,168,109,224,153,110,249,227,211,101,70,158,44,49,24,252,132,0],[160,220,148,213,4,41,28,43,101,120,138,61,233,81,137,234,115,228,127,178,20,124,231,241,244,229,119,116,247,123,242,120,26,0],[160,154,118,186,142,199,193,20,16,163,132,141,63,7,178,219,12,148,172,137,136,236,174,187,174,159,205,156,149,131,54,1,168,0],[160,214,253,5,60,164,8,246,254,113,111,196,26,242,176,242,139,188,226,145,21,205,48,78,102,182,33,77,57,202,84,48,0,0],[160,139,204,186,196,107,226,228,156,235,35,141,205,116,232,148,130,127,218,131,190,210,69,245,210,248,108,18,23,84,107,240,100,0],[160,218,108,35,164,234,199,139,87,95,227,117,52,209,236,84,73,11,20,160,142,193,96,135,109,246,191,233,164,121,163,102,222,0],[160,83,49,6,15,200,239,117,94,151,2,193,125,234,124,185,47,102,60,209,122,158,206,117,224,225,12,240,4,226,144,7,96,0],[160,223,125,252,178,10,71,117,227,106,4,72,134,3,198,40,42,202,83,144,150,218,69,209,146,150,21,92,64,12,28,148,148,0],[160,218,47,230,215,64,200,192,227,20,116,145,120,75,245,133,123,166,240,80,80,89,158,211,208,26,119,201,245,23,210,190,49,0],[160,143,250,205,245,173,47,73,123,110,113,113,235,19,17,71,220,138,246,108,253,89,89,132,195,28,111,161,26,177,198,209,123,0],[160,147,222,183,53,197,59,92,88,124,124,72,194,252,43,86,200,183,156,45,134,208,56,244,68,132,49,132,11,3,114,203,240,0],[160,142,37,97,120,142,29,148,214,255,167,235,163,36,83,145,158,144,213,127,247,2,111,187,10,161,113,14,12,154,236,177,150,0],[160,219,159,168,42,142,113,65,118,52,111,17,22,108,65,85,127,75,84,187,233,116,143,64,189,231,69,236,121,249,87,243,227,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,135,34,48,42,14,239,143,189,170,69,134,123,218,36,72,2,163,192,143,204,12,109,175,58,141,118,94,36,206,191,118,32,160,220,109,24,106,232,29,109,176,46,233,215,10,243,92,45,248,25,115,230,121,148,2,36,148,57,81,160,129,219,132,31,115,160,106,59,42,152,93,61,176,69,106,48,79,39,47,12,7,140,163,95,23,216,137,66,239,155,185,168,89,196,116,195,127,103,160,115,205,37,159,79,247,182,93,148,163,41,97,209,195,10,86,168,109,224,153,110,249,227,211,101,70,158,44,49,24,252,132,160,220,148,213,4,41,28,43,101,120,138,61,233,81,137,234,115,228,127,178,20,124,231,241,244,229,119,116,247,123,242,120,26,160,154,118,186,142,199,193,20,16,163,132,141,63,7,178,219,12,148,172,137,136,236,174,187,174,159,205,156,149,131,54,1,168,160,214,253,5,60,164,8,246,254,113,111,196,26,242,176,242,139,188,226,145,21,205,48,78,102,182,33,77,57,202,84,48,0,160,139,204,186,196,107,226,228,156,235,35,141,205,116,232,148,130,127,218,131,190,210,69,245,210,248,108,18,23,84,107,240,100,160,218,108,35,164,234,199,139,87,95,227,117,52,209,236,84,73,11,20,160,142,193,96,135,109,246,191,233,164,121,163,102,222,160,83,49,6,15,200,239,117,94,151,2,193,125,234,124,185,47,102,60,209,122,158,206,117,224,225,12,240,4,226,144,7,96,160,223,125,252,178,10,71,117,227,106,4,72,134,3,198,40,42,202,83,144,150,218,69,209,146,150,21,92,64,12,28,148,148,160,218,47,230,215,64,200,192,227,20,116,145,120,75,245,133,123,166,240,80,80,89,158,211,208,26,119,201,245,23,210,190,49,160,143,250,205,245,173,47,73,123,110,113,113,235,19,17,71,220,138,246,108,253,89,89,132,195,28,111,161,26,177,198,209,123,160,147,222,183,53,197,59,92,88,124,124,72,194,252,43,86,200,183,156,45,134,208,56,244,68,132,49,132,11,3,114,203,240,160,142,37,97,120,142,29,148,214,255,167,235,163,36,83,145,158,144,213,127,247,2,111,187,10,161,113,14,12,154,236,177,150,160,219,159,168,42,142,113,65,118,52,111,17,22,108,65,85,127,75,84,187,233,116,143,64,189,231,69,236,121,249,87,243,227,128],[249,2,17,160,135,34,48,42,14,239,143,189,170,69,134,123,218,36,72,2,163,192,143,204,12,109,175,58,141,118,94,36,206,191,118,32,160,220,109,24,106,232,29,109,176,46,233,215,10,243,92,45,248,25,115,230,121,148,2,36,148,57,81,160,129,219,132,31,115,160,106,59,42,152,93,61,176,69,106,48,79,39,47,12,7,140,163,95,23,216,137,66,239,155,185,168,89,196,116,195,127,103,160,69,206,1,233,187,128,227,213,100,253,247,225,189,60,228,133,185,225,227,207,63,53,77,107,243,31,96,3,244,240,174,252,160,220,148,213,4,41,28,43,101,120,138,61,233,81,137,234,115,228,127,178,20,124,231,241,244,229,119,116,247,123,242,120,26,160,154,118,186,142,199,193,20,16,163,132,141,63,7,178,219,12,148,172,137,136,236,174,187,174,159,205,156,149,131,54,1,168,160,214,253,5,60,164,8,246,254,113,111,196,26,242,176,242,139,188,226,145,21,205,48,78,102,182,33,77,57,202,84,48,0,160,139,204,186,196,107,226,228,156,235,35,141,205,116,232,148,130,127,218,131,190,210,69,245,210,248,108,18,23,84,107,240,100,160,218,108,35,164,234,199,139,87,95,227,117,52,209,236,84,73,11,20,160,142,193,96,135,109,246,191,233,164,121,163,102,222,160,83,49,6,15,200,239,117,94,151,2,193,125,234,124,185,47,102,60,209,122,158,206,117,224,225,12,240,4,226,144,7,96,160,223,125,252,178,10,71,117,227,106,4,72,134,3,198,40,42,202,83,144,150,218,69,209,146,150,21,92,64,12,28,148,148,160,218,47,230,215,64,200,192,227,20,116,145,120,75,245,133,123,166,240,80,80,89,158,211,208,26,119,201,245,23,210,190,49,160,143,250,205,245,173,47,73,123,110,113,113,235,19,17,71,220,138,246,108,253,89,89,132,195,28,111,161,26,177,198,209,123,160,147,222,183,53,197,59,92,88,124,124,72,194,252,43,86,200,183,156,45,134,208,56,244,68,132,49,132,11,3,114,203,240,160,142,37,97,120,142,29,148,214,255,167,235,163,36,83,145,158,144,213,127,247,2,111,187,10,161,113,14,12,154,236,177,150,160,219,159,168,42,142,113,65,118,52,111,17,22,108,65,85,127,75,84,187,233,116,143,64,189,231,69,236,121,249,87,243,227,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[248,241],[248,241]]}},"account":null,"storage":null,"values":[[160,173,241,121,252,219,232,112,193,203,190,214,68,33,3,167,252,156,180,134,240,13,109,92,59,76,74,94,32,194,188,177,2,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,141,164,222,208,114,53,138,42,68,185,35,22,209,135,11,97,236,54,41,171,248,148,120,199,164,25,5,47,208,236,247,210,0],[160,208,177,229,217,205,98,195,68,182,154,209,69,75,36,206,247,42,217,69,77,176,29,182,159,27,47,146,195,212,187,71,199,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,102,101,11,70,156,88,24,31,7,55,179,211,135,114,238,179,201,6,208,181,163,120,106,23,174,138,148,70,209,38,35,198,0],[160,38,86,198,208,216,23,120,168,85,81,136,16,250,33,229,226,49,165,159,207,113,95,140,88,217,8,230,152,28,12,27,121,0],[160,4,47,26,239,50,241,69,138,14,179,226,234,13,64,122,236,209,53,87,153,54,206,120,176,192,254,19,85,51,100,217,101,0],[160,240,24,25,158,169,202,34,38,106,221,208,86,5,147,221,187,73,137,97,91,147,230,239,222,197,208,19,216,5,223,83,220,0],[160,154,40,44,216,26,128,75,165,2,28,255,39,10,252,225,252,114,120,145,118,215,194,126,79,235,164,46,153,237,126,129,100,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,241,128,128,128,128,160,141,164,222,208,114,53,138,42,68,185,35,22,209,135,11,97,236,54,41,171,248,148,120,199,164,25,5,47,208,236,247,210,160,208,177,229,217,205,98,195,68,182,154,209,69,75,36,206,247,42,217,69,77,176,29,182,159,27,47,146,195,212,187,71,199,128,160,102,101,11,70,156,88,24,31,7,55,179,211,135,114,238,179,201,6,208,181,163,120,106,23,174,138,148,70,209,38,35,198,160,38,86,198,208,216,23,120,168,85,81,136,16,250,33,229,226,49,165,159,207,113,95,140,88,217,8,230,152,28,12,27,121,160,4,47,26,239,50,241,69,138,14,179,226,234,13,64,122,236,209,53,87,153,54,206,120,176,192,254,19,85,51,100,217,101,160,240,24,25,158,169,202,34,38,106,221,208,86,5,147,221,187,73,137,97,91,147,230,239,222,197,208,19,216,5,223,83,220,160,154,40,44,216,26,128,75,165,2,28,255,39,10,252,225,252,114,120,145,118,215,194,126,79,235,164,46,153,237,126,129,100,128,128,128,128,128],[248,241,128,128,128,128,160,141,164,222,208,114,53,138,42,68,185,35,22,209,135,11,97,236,54,41,171,248,148,120,199,164,25,5,47,208,236,247,210,160,208,177,229,217,205,98,195,68,182,154,209,69,75,36,206,247,42,217,69,77,176,29,182,159,27,47,146,195,212,187,71,199,128,160,102,101,11,70,156,88,24,31,7,55,179,211,135,114,238,179,201,6,208,181,163,120,106,23,174,138,148,70,209,38,35,198,160,38,86,198,208,216,23,120,168,85,81,136,16,250,33,229,226,49,165,159,207,113,95,140,88,217,8,230,152,28,12,27,121,160,173,241,121,252,219,232,112,193,203,190,214,68,33,3,167,252,156,180,134,240,13,109,92,59,76,74,94,32,194,188,177,2,160,240,24,25,158,169,202,34,38,106,221,208,86,5,147,221,187,73,137,97,91,147,230,239,222,197,208,19,216,5,223,83,220,160,154,40,44,216,26,128,75,165,2,28,255,39,10,252,225,252,114,120,145,118,215,194,126,79,235,164,46,153,237,126,129,100,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[104,213,166,231,139,216,115,75,125,25,12,189,152,84,155,114,191,160,128,11],"key":[131,50,243,150,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196],"list_rlp_bytes":[[248,109],[248,109]],"value_rlp_bytes":[[184,77],[184,77]],"value_list_rlp_bytes":[[248,75],[248,75]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,109]},"storage":null,"values":[[157,54,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196,0,0,0,0],[157,54,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196,0,0,0,0],[7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[135,28,5,107,201,118,120,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[135,28,5,107,201,118,120,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,54,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196,0,0,0,0]],"keccak_data":[[248,109,157,54,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196,184,77,248,75,7,135,28,5,107,201,118,120,59,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,109,157,54,78,45,163,246,31,221,209,37,66,130,163,38,94,65,21,49,33,144,26,224,129,86,215,87,175,200,105,196,184,77,248,75,33,135,28,5,107,201,118,120,59,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[104,213,166,231,139,216,115,75,125,25,12,189,152,84,155,114,191,160,128,11]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/OnlyLeafInStorageProof.json b/zkevm-circuits/src/mpt_circuit/tests/OnlyLeafInStorageProof.json new file mode 100644 index 0000000000..eff771d309 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/OnlyLeafInStorageProof.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,23,127,202,250,39,77,156,111,117,43,200,180,61,186,99,132,16,29,111,232,235,202,1,247,14,11,125,93,42,208,238,115,0],[160,234,105,242,143,179,56,214,244,252,55,130,188,152,155,122,20,62,46,72,95,26,169,185,115,121,129,24,250,165,238,51,227,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,81,67,86,69,9,158,200,231,209,73,75,147,155,90,137,6,77,86,176,248,183,58,21,150,19,51,6,198,224,217,7,18,0],[160,60,198,250,158,115,39,34,35,105,195,43,121,101,109,173,74,106,25,132,220,162,30,175,136,98,150,158,247,168,55,37,60,0],[160,81,34,74,212,150,170,41,121,103,15,146,119,212,94,49,14,76,4,77,215,246,168,131,155,169,136,242,162,27,212,162,170,0],[160,228,22,39,137,146,1,54,178,148,126,99,207,86,182,62,197,202,118,166,61,87,166,185,130,236,68,47,191,54,77,22,233,0],[160,121,80,214,152,190,234,180,180,171,118,80,255,215,197,12,59,73,13,191,230,150,10,27,94,63,2,178,4,166,214,1,215,0],[160,112,168,159,233,233,180,238,192,124,144,26,7,99,53,92,70,197,152,136,189,54,123,182,50,86,211,20,83,144,207,252,139,0],[160,83,223,208,215,143,101,122,196,185,68,163,82,143,9,137,91,224,243,203,75,63,188,239,206,87,108,190,215,37,243,76,242,0],[160,75,162,241,232,163,219,82,112,195,201,127,167,65,198,3,69,87,172,65,114,250,3,171,191,186,225,80,57,234,0,69,232,0],[160,127,109,135,5,91,14,52,158,3,58,197,241,234,122,209,246,80,189,236,71,170,202,179,225,117,89,145,217,161,88,47,221,0],[160,130,89,138,158,232,170,174,131,222,86,82,63,113,45,63,172,159,248,227,154,225,38,68,6,123,11,20,44,73,22,208,245,0],[160,228,141,31,209,214,192,178,116,232,111,183,225,107,177,191,236,239,12,234,76,35,3,4,185,246,219,146,41,177,16,235,82,0],[160,67,201,47,145,5,245,179,22,162,115,24,127,33,73,67,134,127,184,149,224,209,139,130,237,14,13,157,113,244,162,185,142,0],[160,35,24,83,139,246,120,41,145,224,109,131,133,74,121,110,213,183,151,106,227,38,206,153,182,140,195,245,147,183,166,255,106,0],[160,115,55,215,251,247,190,44,206,83,59,75,46,234,152,195,151,225,149,203,164,167,128,164,83,169,118,98,165,191,203,121,208,0],[160,207,52,88,28,243,113,89,151,204,35,148,247,86,45,105,50,41,10,127,16,234,231,222,250,213,233,192,209,40,230,82,102,0],[160,131,14,117,4,199,136,223,98,123,88,152,103,88,41,186,137,138,33,139,237,38,8,219,151,231,42,129,135,20,205,103,42,0],[160,178,27,227,169,202,248,237,160,156,114,67,166,251,197,166,44,240,127,48,176,214,213,138,242,210,37,98,41,242,28,114,195,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,60,198,250,158,115,39,34,35,105,195,43,121,101,109,173,74,106,25,132,220,162,30,175,136,98,150,158,247,168,55,37,60,160,81,34,74,212,150,170,41,121,103,15,146,119,212,94,49,14,76,4,77,215,246,168,131,155,169,136,242,162,27,212,162,170,160,228,22,39,137,146,1,54,178,148,126,99,207,86,182,62,197,202,118,166,61,87,166,185,130,236,68,47,191,54,77,22,233,160,121,80,214,152,190,234,180,180,171,118,80,255,215,197,12,59,73,13,191,230,150,10,27,94,63,2,178,4,166,214,1,215,160,112,168,159,233,233,180,238,192,124,144,26,7,99,53,92,70,197,152,136,189,54,123,182,50,86,211,20,83,144,207,252,139,160,83,223,208,215,143,101,122,196,185,68,163,82,143,9,137,91,224,243,203,75,63,188,239,206,87,108,190,215,37,243,76,242,160,75,162,241,232,163,219,82,112,195,201,127,167,65,198,3,69,87,172,65,114,250,3,171,191,186,225,80,57,234,0,69,232,160,127,109,135,5,91,14,52,158,3,58,197,241,234,122,209,246,80,189,236,71,170,202,179,225,117,89,145,217,161,88,47,221,160,130,89,138,158,232,170,174,131,222,86,82,63,113,45,63,172,159,248,227,154,225,38,68,6,123,11,20,44,73,22,208,245,160,228,141,31,209,214,192,178,116,232,111,183,225,107,177,191,236,239,12,234,76,35,3,4,185,246,219,146,41,177,16,235,82,160,67,201,47,145,5,245,179,22,162,115,24,127,33,73,67,134,127,184,149,224,209,139,130,237,14,13,157,113,244,162,185,142,160,35,24,83,139,246,120,41,145,224,109,131,133,74,121,110,213,183,151,106,227,38,206,153,182,140,195,245,147,183,166,255,106,160,115,55,215,251,247,190,44,206,83,59,75,46,234,152,195,151,225,149,203,164,167,128,164,83,169,118,98,165,191,203,121,208,160,207,52,88,28,243,113,89,151,204,35,148,247,86,45,105,50,41,10,127,16,234,231,222,250,213,233,192,209,40,230,82,102,160,131,14,117,4,199,136,223,98,123,88,152,103,88,41,186,137,138,33,139,237,38,8,219,151,231,42,129,135,20,205,103,42,160,178,27,227,169,202,248,237,160,156,114,67,166,251,197,166,44,240,127,48,176,214,213,138,242,210,37,98,41,242,28,114,195,128],[249,2,17,160,60,198,250,158,115,39,34,35,105,195,43,121,101,109,173,74,106,25,132,220,162,30,175,136,98,150,158,247,168,55,37,60,160,81,34,74,212,150,170,41,121,103,15,146,119,212,94,49,14,76,4,77,215,246,168,131,155,169,136,242,162,27,212,162,170,160,228,22,39,137,146,1,54,178,148,126,99,207,86,182,62,197,202,118,166,61,87,166,185,130,236,68,47,191,54,77,22,233,160,121,80,214,152,190,234,180,180,171,118,80,255,215,197,12,59,73,13,191,230,150,10,27,94,63,2,178,4,166,214,1,215,160,112,168,159,233,233,180,238,192,124,144,26,7,99,53,92,70,197,152,136,189,54,123,182,50,86,211,20,83,144,207,252,139,160,81,67,86,69,9,158,200,231,209,73,75,147,155,90,137,6,77,86,176,248,183,58,21,150,19,51,6,198,224,217,7,18,160,75,162,241,232,163,219,82,112,195,201,127,167,65,198,3,69,87,172,65,114,250,3,171,191,186,225,80,57,234,0,69,232,160,127,109,135,5,91,14,52,158,3,58,197,241,234,122,209,246,80,189,236,71,170,202,179,225,117,89,145,217,161,88,47,221,160,130,89,138,158,232,170,174,131,222,86,82,63,113,45,63,172,159,248,227,154,225,38,68,6,123,11,20,44,73,22,208,245,160,228,141,31,209,214,192,178,116,232,111,183,225,107,177,191,236,239,12,234,76,35,3,4,185,246,219,146,41,177,16,235,82,160,67,201,47,145,5,245,179,22,162,115,24,127,33,73,67,134,127,184,149,224,209,139,130,237,14,13,157,113,244,162,185,142,160,35,24,83,139,246,120,41,145,224,109,131,133,74,121,110,213,183,151,106,227,38,206,153,182,140,195,245,147,183,166,255,106,160,115,55,215,251,247,190,44,206,83,59,75,46,234,152,195,151,225,149,203,164,167,128,164,83,169,118,98,165,191,203,121,208,160,207,52,88,28,243,113,89,151,204,35,148,247,86,45,105,50,41,10,127,16,234,231,222,250,213,233,192,209,40,230,82,102,160,131,14,117,4,199,136,223,98,123,88,152,103,88,41,186,137,138,33,139,237,38,8,219,151,231,42,129,135,20,205,103,42,160,178,27,227,169,202,248,237,160,156,114,67,166,251,197,166,44,240,127,48,176,214,213,138,242,210,37,98,41,242,28,114,195,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,238,238,154,153,110,253,96,67,79,198,126,249,230,139,148,61,190,232,37,25,239,85,153,60,129,98,44,106,102,77,74,110,0],[160,224,160,204,190,106,167,16,212,235,11,226,108,59,160,52,125,3,125,243,15,78,7,190,253,109,248,53,214,201,201,135,57,0],[160,17,84,74,151,98,196,80,82,72,186,173,203,204,31,89,3,74,232,235,66,236,154,177,103,147,10,142,218,202,116,159,78,0],[160,219,8,183,90,235,109,52,204,204,61,58,195,223,208,61,23,236,15,60,255,59,137,37,215,155,122,155,101,129,65,230,109,0],[160,219,39,168,105,170,148,33,138,92,66,165,202,94,178,218,54,178,164,107,163,226,140,194,2,108,29,58,34,49,24,35,154,0],[160,20,201,48,125,106,95,70,245,43,40,78,34,127,24,131,45,249,87,197,126,200,97,136,55,1,32,185,140,1,37,42,165,0],[160,109,94,163,82,0,89,36,85,167,245,93,62,24,177,135,248,110,173,175,72,125,142,151,15,199,63,156,209,150,219,35,97,0],[160,159,64,83,229,94,17,127,129,72,92,132,106,33,193,203,131,245,97,158,94,150,215,130,236,16,152,23,172,122,252,183,237,0],[160,162,93,250,95,66,110,127,128,166,120,103,183,254,92,89,160,235,12,156,126,64,23,110,160,240,211,42,88,249,192,206,181,0],[160,225,194,238,28,10,40,3,144,106,215,95,222,218,42,78,159,229,128,214,238,113,135,141,231,197,94,58,45,211,63,237,94,0],[160,212,177,140,71,81,143,180,205,247,2,100,154,26,76,102,220,198,74,22,101,203,183,59,189,161,37,172,158,103,224,99,13,0],[160,185,0,22,228,174,41,147,232,48,15,8,119,0,27,195,169,145,96,179,189,107,136,134,190,91,235,9,118,208,32,43,65,0],[160,88,161,73,215,119,105,31,137,79,37,128,65,178,225,59,112,49,222,175,14,222,21,64,143,155,35,156,72,27,226,127,92,0],[160,127,196,19,9,69,235,2,36,176,187,18,133,248,13,13,39,229,137,100,92,244,157,137,157,69,165,1,59,158,103,29,190,0],[160,156,159,70,239,242,254,168,166,193,86,214,216,34,92,173,73,166,75,125,146,66,129,135,156,203,17,156,101,63,46,137,133,0],[160,79,220,223,102,181,54,179,73,46,230,56,51,45,188,217,114,228,245,173,26,242,236,71,226,43,121,6,7,201,6,202,147,0],[160,61,193,91,157,18,102,143,88,98,133,111,243,121,221,174,228,112,33,42,227,75,180,27,28,154,129,226,177,103,111,215,173,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,224,160,204,190,106,167,16,212,235,11,226,108,59,160,52,125,3,125,243,15,78,7,190,253,109,248,53,214,201,201,135,57,160,17,84,74,151,98,196,80,82,72,186,173,203,204,31,89,3,74,232,235,66,236,154,177,103,147,10,142,218,202,116,159,78,160,219,8,183,90,235,109,52,204,204,61,58,195,223,208,61,23,236,15,60,255,59,137,37,215,155,122,155,101,129,65,230,109,160,219,39,168,105,170,148,33,138,92,66,165,202,94,178,218,54,178,164,107,163,226,140,194,2,108,29,58,34,49,24,35,154,160,20,201,48,125,106,95,70,245,43,40,78,34,127,24,131,45,249,87,197,126,200,97,136,55,1,32,185,140,1,37,42,165,160,109,94,163,82,0,89,36,85,167,245,93,62,24,177,135,248,110,173,175,72,125,142,151,15,199,63,156,209,150,219,35,97,160,159,64,83,229,94,17,127,129,72,92,132,106,33,193,203,131,245,97,158,94,150,215,130,236,16,152,23,172,122,252,183,237,160,162,93,250,95,66,110,127,128,166,120,103,183,254,92,89,160,235,12,156,126,64,23,110,160,240,211,42,88,249,192,206,181,160,225,194,238,28,10,40,3,144,106,215,95,222,218,42,78,159,229,128,214,238,113,135,141,231,197,94,58,45,211,63,237,94,160,212,177,140,71,81,143,180,205,247,2,100,154,26,76,102,220,198,74,22,101,203,183,59,189,161,37,172,158,103,224,99,13,160,185,0,22,228,174,41,147,232,48,15,8,119,0,27,195,169,145,96,179,189,107,136,134,190,91,235,9,118,208,32,43,65,160,88,161,73,215,119,105,31,137,79,37,128,65,178,225,59,112,49,222,175,14,222,21,64,143,155,35,156,72,27,226,127,92,160,127,196,19,9,69,235,2,36,176,187,18,133,248,13,13,39,229,137,100,92,244,157,137,157,69,165,1,59,158,103,29,190,160,156,159,70,239,242,254,168,166,193,86,214,216,34,92,173,73,166,75,125,146,66,129,135,156,203,17,156,101,63,46,137,133,160,79,220,223,102,181,54,179,73,46,230,56,51,45,188,217,114,228,245,173,26,242,236,71,226,43,121,6,7,201,6,202,147,160,61,193,91,157,18,102,143,88,98,133,111,243,121,221,174,228,112,33,42,227,75,180,27,28,154,129,226,177,103,111,215,173,128],[249,2,17,160,224,160,204,190,106,167,16,212,235,11,226,108,59,160,52,125,3,125,243,15,78,7,190,253,109,248,53,214,201,201,135,57,160,17,84,74,151,98,196,80,82,72,186,173,203,204,31,89,3,74,232,235,66,236,154,177,103,147,10,142,218,202,116,159,78,160,219,8,183,90,235,109,52,204,204,61,58,195,223,208,61,23,236,15,60,255,59,137,37,215,155,122,155,101,129,65,230,109,160,238,238,154,153,110,253,96,67,79,198,126,249,230,139,148,61,190,232,37,25,239,85,153,60,129,98,44,106,102,77,74,110,160,20,201,48,125,106,95,70,245,43,40,78,34,127,24,131,45,249,87,197,126,200,97,136,55,1,32,185,140,1,37,42,165,160,109,94,163,82,0,89,36,85,167,245,93,62,24,177,135,248,110,173,175,72,125,142,151,15,199,63,156,209,150,219,35,97,160,159,64,83,229,94,17,127,129,72,92,132,106,33,193,203,131,245,97,158,94,150,215,130,236,16,152,23,172,122,252,183,237,160,162,93,250,95,66,110,127,128,166,120,103,183,254,92,89,160,235,12,156,126,64,23,110,160,240,211,42,88,249,192,206,181,160,225,194,238,28,10,40,3,144,106,215,95,222,218,42,78,159,229,128,214,238,113,135,141,231,197,94,58,45,211,63,237,94,160,212,177,140,71,81,143,180,205,247,2,100,154,26,76,102,220,198,74,22,101,203,183,59,189,161,37,172,158,103,224,99,13,160,185,0,22,228,174,41,147,232,48,15,8,119,0,27,195,169,145,96,179,189,107,136,134,190,91,235,9,118,208,32,43,65,160,88,161,73,215,119,105,31,137,79,37,128,65,178,225,59,112,49,222,175,14,222,21,64,143,155,35,156,72,27,226,127,92,160,127,196,19,9,69,235,2,36,176,187,18,133,248,13,13,39,229,137,100,92,244,157,137,157,69,165,1,59,158,103,29,190,160,156,159,70,239,242,254,168,166,193,86,214,216,34,92,173,73,166,75,125,146,66,129,135,156,203,17,156,101,63,46,137,133,160,79,220,223,102,181,54,179,73,46,230,56,51,45,188,217,114,228,245,173,26,242,236,71,226,43,121,6,7,201,6,202,147,160,61,193,91,157,18,102,143,88,98,133,111,243,121,221,174,228,112,33,42,227,75,180,27,28,154,129,226,177,103,111,215,173,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,2,148,247,94,212,49,148,216,253,44,123,69,24,90,87,48,183,5,166,52,220,140,91,101,57,49,37,164,87,141,244,37,0],[160,14,165,6,22,159,188,24,51,92,136,212,250,222,234,56,117,11,228,154,151,111,209,12,140,170,56,169,141,202,226,135,93,0],[160,58,215,220,199,105,41,206,80,134,211,251,156,150,93,2,1,51,119,121,250,120,153,68,114,166,58,169,187,227,10,57,39,0],[160,254,121,107,132,102,105,40,187,183,208,54,184,59,170,24,196,133,142,10,221,38,105,35,74,58,136,157,132,169,134,197,137,0],[160,156,244,77,9,97,153,114,240,195,225,161,224,205,77,130,121,225,42,224,17,155,244,44,223,217,225,237,215,170,53,91,122,0],[160,218,98,175,122,220,199,62,137,60,60,197,211,142,60,71,189,118,201,107,68,25,32,247,176,36,95,83,115,252,231,68,124,0],[160,76,185,199,60,210,76,64,221,170,191,1,8,21,21,232,251,198,18,19,75,44,125,231,141,122,159,42,245,13,222,134,206,0],[160,29,227,227,74,123,232,228,162,37,84,224,181,162,51,6,211,171,240,206,246,75,251,173,126,128,120,180,89,252,60,255,112,0],[160,110,12,187,41,44,116,38,125,98,174,44,153,47,236,251,12,14,124,122,7,202,17,194,152,177,238,87,113,180,170,66,183,0],[160,64,128,191,170,145,135,120,255,168,8,111,181,166,68,105,16,210,123,232,189,45,173,105,240,243,193,133,162,52,107,85,144,0],[160,243,229,3,215,98,10,225,162,158,154,0,155,9,118,106,50,10,187,88,35,19,135,15,158,232,252,37,162,81,149,205,170,0],[160,249,199,112,122,102,67,120,26,30,110,90,229,222,253,12,151,148,125,103,16,178,146,75,214,232,124,40,10,93,197,224,238,0],[160,187,149,161,188,140,232,33,123,135,65,167,159,176,86,6,108,140,83,67,222,75,115,112,131,235,102,79,178,78,37,2,224,0],[160,85,125,105,118,184,58,228,68,165,55,100,151,40,61,75,44,223,114,244,82,233,73,241,28,55,15,189,97,252,197,95,206,0],[160,93,235,84,57,207,137,206,63,27,246,129,212,131,57,16,108,30,127,10,61,175,185,212,53,83,217,16,74,68,18,243,132,0],[160,110,47,15,54,42,42,169,161,252,233,82,121,219,20,191,148,239,32,164,98,111,155,22,179,255,35,252,248,76,103,206,209,0],[160,130,74,220,188,50,216,130,35,199,98,203,47,119,79,38,6,106,137,130,81,35,226,191,113,96,219,218,33,190,77,71,33,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,14,165,6,22,159,188,24,51,92,136,212,250,222,234,56,117,11,228,154,151,111,209,12,140,170,56,169,141,202,226,135,93,160,58,215,220,199,105,41,206,80,134,211,251,156,150,93,2,1,51,119,121,250,120,153,68,114,166,58,169,187,227,10,57,39,160,254,121,107,132,102,105,40,187,183,208,54,184,59,170,24,196,133,142,10,221,38,105,35,74,58,136,157,132,169,134,197,137,160,156,244,77,9,97,153,114,240,195,225,161,224,205,77,130,121,225,42,224,17,155,244,44,223,217,225,237,215,170,53,91,122,160,218,98,175,122,220,199,62,137,60,60,197,211,142,60,71,189,118,201,107,68,25,32,247,176,36,95,83,115,252,231,68,124,160,76,185,199,60,210,76,64,221,170,191,1,8,21,21,232,251,198,18,19,75,44,125,231,141,122,159,42,245,13,222,134,206,160,29,227,227,74,123,232,228,162,37,84,224,181,162,51,6,211,171,240,206,246,75,251,173,126,128,120,180,89,252,60,255,112,160,110,12,187,41,44,116,38,125,98,174,44,153,47,236,251,12,14,124,122,7,202,17,194,152,177,238,87,113,180,170,66,183,160,64,128,191,170,145,135,120,255,168,8,111,181,166,68,105,16,210,123,232,189,45,173,105,240,243,193,133,162,52,107,85,144,160,243,229,3,215,98,10,225,162,158,154,0,155,9,118,106,50,10,187,88,35,19,135,15,158,232,252,37,162,81,149,205,170,160,249,199,112,122,102,67,120,26,30,110,90,229,222,253,12,151,148,125,103,16,178,146,75,214,232,124,40,10,93,197,224,238,160,187,149,161,188,140,232,33,123,135,65,167,159,176,86,6,108,140,83,67,222,75,115,112,131,235,102,79,178,78,37,2,224,160,85,125,105,118,184,58,228,68,165,55,100,151,40,61,75,44,223,114,244,82,233,73,241,28,55,15,189,97,252,197,95,206,160,93,235,84,57,207,137,206,63,27,246,129,212,131,57,16,108,30,127,10,61,175,185,212,53,83,217,16,74,68,18,243,132,160,110,47,15,54,42,42,169,161,252,233,82,121,219,20,191,148,239,32,164,98,111,155,22,179,255,35,252,248,76,103,206,209,160,130,74,220,188,50,216,130,35,199,98,203,47,119,79,38,6,106,137,130,81,35,226,191,113,96,219,218,33,190,77,71,33,128],[249,2,17,160,14,165,6,22,159,188,24,51,92,136,212,250,222,234,56,117,11,228,154,151,111,209,12,140,170,56,169,141,202,226,135,93,160,58,215,220,199,105,41,206,80,134,211,251,156,150,93,2,1,51,119,121,250,120,153,68,114,166,58,169,187,227,10,57,39,160,254,121,107,132,102,105,40,187,183,208,54,184,59,170,24,196,133,142,10,221,38,105,35,74,58,136,157,132,169,134,197,137,160,156,244,77,9,97,153,114,240,195,225,161,224,205,77,130,121,225,42,224,17,155,244,44,223,217,225,237,215,170,53,91,122,160,218,98,175,122,220,199,62,137,60,60,197,211,142,60,71,189,118,201,107,68,25,32,247,176,36,95,83,115,252,231,68,124,160,76,185,199,60,210,76,64,221,170,191,1,8,21,21,232,251,198,18,19,75,44,125,231,141,122,159,42,245,13,222,134,206,160,29,227,227,74,123,232,228,162,37,84,224,181,162,51,6,211,171,240,206,246,75,251,173,126,128,120,180,89,252,60,255,112,160,110,12,187,41,44,116,38,125,98,174,44,153,47,236,251,12,14,124,122,7,202,17,194,152,177,238,87,113,180,170,66,183,160,2,148,247,94,212,49,148,216,253,44,123,69,24,90,87,48,183,5,166,52,220,140,91,101,57,49,37,164,87,141,244,37,160,243,229,3,215,98,10,225,162,158,154,0,155,9,118,106,50,10,187,88,35,19,135,15,158,232,252,37,162,81,149,205,170,160,249,199,112,122,102,67,120,26,30,110,90,229,222,253,12,151,148,125,103,16,178,146,75,214,232,124,40,10,93,197,224,238,160,187,149,161,188,140,232,33,123,135,65,167,159,176,86,6,108,140,83,67,222,75,115,112,131,235,102,79,178,78,37,2,224,160,85,125,105,118,184,58,228,68,165,55,100,151,40,61,75,44,223,114,244,82,233,73,241,28,55,15,189,97,252,197,95,206,160,93,235,84,57,207,137,206,63,27,246,129,212,131,57,16,108,30,127,10,61,175,185,212,53,83,217,16,74,68,18,243,132,160,110,47,15,54,42,42,169,161,252,233,82,121,219,20,191,148,239,32,164,98,111,155,22,179,255,35,252,248,76,103,206,209,160,130,74,220,188,50,216,130,35,199,98,203,47,119,79,38,6,106,137,130,81,35,226,191,113,96,219,218,33,190,77,71,33,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,145,109,78,6,168,26,226,197,198,241,53,90,243,110,190,230,110,134,216,118,115,164,4,209,71,208,171,202,2,147,199,47,0],[160,114,169,150,67,126,160,37,45,196,35,158,193,130,105,156,136,104,12,57,32,0,91,59,199,69,164,98,111,63,37,167,195,0],[160,163,93,181,110,7,170,52,140,159,162,133,57,154,50,13,236,53,68,94,97,171,111,174,64,139,185,171,218,143,142,148,123,0],[160,89,101,138,104,124,167,204,129,19,206,81,255,89,12,40,119,16,139,90,128,79,182,53,236,183,158,143,16,70,231,149,193,0],[160,109,229,158,157,53,55,221,1,108,64,70,21,103,227,89,63,41,178,232,224,124,70,202,161,113,44,13,156,121,193,255,20,0],[160,221,153,17,178,250,69,42,155,168,117,5,76,116,59,219,17,215,137,246,93,173,42,132,179,89,3,221,81,200,226,242,76,0],[160,166,247,119,255,141,32,87,23,158,246,201,67,72,218,115,220,147,2,57,152,104,47,157,114,2,240,168,184,163,129,175,97,0],[160,240,13,118,223,196,63,180,101,73,134,26,211,112,201,84,141,74,12,182,182,183,182,139,187,228,136,120,209,169,140,102,112,0],[160,73,14,111,5,216,66,44,129,241,209,96,45,3,65,117,239,75,52,39,122,202,65,71,157,74,186,251,93,245,118,70,72,0],[160,5,159,121,86,8,244,0,141,254,173,202,208,32,106,157,32,7,160,225,59,222,193,67,59,241,30,30,10,171,20,204,195,0],[160,248,40,170,149,53,183,57,200,51,10,58,48,116,53,48,191,226,47,66,49,236,28,209,34,6,138,247,161,65,130,165,205,0],[160,223,23,143,249,54,69,146,158,94,52,41,214,25,130,31,11,46,206,6,136,242,64,92,139,128,254,62,52,184,68,165,87,0],[160,50,63,132,137,145,37,164,51,106,185,56,26,236,211,36,219,74,195,1,72,226,190,85,235,45,147,12,159,230,107,228,118,0],[160,156,207,33,90,28,218,205,59,181,230,91,85,79,1,145,132,45,149,71,130,102,184,118,55,4,236,198,199,39,34,133,44,0],[160,0,91,91,215,103,36,23,219,144,147,100,37,76,66,0,245,195,232,11,231,167,60,136,206,114,255,173,91,238,51,237,32,0],[160,245,145,188,199,173,92,69,232,8,24,232,8,41,76,255,161,12,251,50,198,114,108,9,42,173,119,30,20,38,57,241,233,0],[160,217,231,119,198,101,67,79,20,25,69,229,209,80,175,171,219,174,145,108,238,170,139,12,158,234,156,73,29,226,166,63,105,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,114,169,150,67,126,160,37,45,196,35,158,193,130,105,156,136,104,12,57,32,0,91,59,199,69,164,98,111,63,37,167,195,160,163,93,181,110,7,170,52,140,159,162,133,57,154,50,13,236,53,68,94,97,171,111,174,64,139,185,171,218,143,142,148,123,160,89,101,138,104,124,167,204,129,19,206,81,255,89,12,40,119,16,139,90,128,79,182,53,236,183,158,143,16,70,231,149,193,160,109,229,158,157,53,55,221,1,108,64,70,21,103,227,89,63,41,178,232,224,124,70,202,161,113,44,13,156,121,193,255,20,160,221,153,17,178,250,69,42,155,168,117,5,76,116,59,219,17,215,137,246,93,173,42,132,179,89,3,221,81,200,226,242,76,160,166,247,119,255,141,32,87,23,158,246,201,67,72,218,115,220,147,2,57,152,104,47,157,114,2,240,168,184,163,129,175,97,160,240,13,118,223,196,63,180,101,73,134,26,211,112,201,84,141,74,12,182,182,183,182,139,187,228,136,120,209,169,140,102,112,160,73,14,111,5,216,66,44,129,241,209,96,45,3,65,117,239,75,52,39,122,202,65,71,157,74,186,251,93,245,118,70,72,160,5,159,121,86,8,244,0,141,254,173,202,208,32,106,157,32,7,160,225,59,222,193,67,59,241,30,30,10,171,20,204,195,160,248,40,170,149,53,183,57,200,51,10,58,48,116,53,48,191,226,47,66,49,236,28,209,34,6,138,247,161,65,130,165,205,160,223,23,143,249,54,69,146,158,94,52,41,214,25,130,31,11,46,206,6,136,242,64,92,139,128,254,62,52,184,68,165,87,160,50,63,132,137,145,37,164,51,106,185,56,26,236,211,36,219,74,195,1,72,226,190,85,235,45,147,12,159,230,107,228,118,160,156,207,33,90,28,218,205,59,181,230,91,85,79,1,145,132,45,149,71,130,102,184,118,55,4,236,198,199,39,34,133,44,160,0,91,91,215,103,36,23,219,144,147,100,37,76,66,0,245,195,232,11,231,167,60,136,206,114,255,173,91,238,51,237,32,160,245,145,188,199,173,92,69,232,8,24,232,8,41,76,255,161,12,251,50,198,114,108,9,42,173,119,30,20,38,57,241,233,160,217,231,119,198,101,67,79,20,25,69,229,209,80,175,171,219,174,145,108,238,170,139,12,158,234,156,73,29,226,166,63,105,128],[249,2,17,160,145,109,78,6,168,26,226,197,198,241,53,90,243,110,190,230,110,134,216,118,115,164,4,209,71,208,171,202,2,147,199,47,160,163,93,181,110,7,170,52,140,159,162,133,57,154,50,13,236,53,68,94,97,171,111,174,64,139,185,171,218,143,142,148,123,160,89,101,138,104,124,167,204,129,19,206,81,255,89,12,40,119,16,139,90,128,79,182,53,236,183,158,143,16,70,231,149,193,160,109,229,158,157,53,55,221,1,108,64,70,21,103,227,89,63,41,178,232,224,124,70,202,161,113,44,13,156,121,193,255,20,160,221,153,17,178,250,69,42,155,168,117,5,76,116,59,219,17,215,137,246,93,173,42,132,179,89,3,221,81,200,226,242,76,160,166,247,119,255,141,32,87,23,158,246,201,67,72,218,115,220,147,2,57,152,104,47,157,114,2,240,168,184,163,129,175,97,160,240,13,118,223,196,63,180,101,73,134,26,211,112,201,84,141,74,12,182,182,183,182,139,187,228,136,120,209,169,140,102,112,160,73,14,111,5,216,66,44,129,241,209,96,45,3,65,117,239,75,52,39,122,202,65,71,157,74,186,251,93,245,118,70,72,160,5,159,121,86,8,244,0,141,254,173,202,208,32,106,157,32,7,160,225,59,222,193,67,59,241,30,30,10,171,20,204,195,160,248,40,170,149,53,183,57,200,51,10,58,48,116,53,48,191,226,47,66,49,236,28,209,34,6,138,247,161,65,130,165,205,160,223,23,143,249,54,69,146,158,94,52,41,214,25,130,31,11,46,206,6,136,242,64,92,139,128,254,62,52,184,68,165,87,160,50,63,132,137,145,37,164,51,106,185,56,26,236,211,36,219,74,195,1,72,226,190,85,235,45,147,12,159,230,107,228,118,160,156,207,33,90,28,218,205,59,181,230,91,85,79,1,145,132,45,149,71,130,102,184,118,55,4,236,198,199,39,34,133,44,160,0,91,91,215,103,36,23,219,144,147,100,37,76,66,0,245,195,232,11,231,167,60,136,206,114,255,173,91,238,51,237,32,160,245,145,188,199,173,92,69,232,8,24,232,8,41,76,255,161,12,251,50,198,114,108,9,42,173,119,30,20,38,57,241,233,160,217,231,119,198,101,67,79,20,25,69,229,209,80,175,171,219,174,145,108,238,170,139,12,158,234,156,73,29,226,166,63,105,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,197,247,226,25,133,151,98,252,49,148,43,12,220,22,136,160,13,198,21,160,253,37,244,37,188,119,209,114,12,81,156,243,0],[160,249,154,157,252,169,130,24,178,174,188,10,171,75,183,151,101,201,122,75,227,204,1,183,197,39,220,59,31,175,6,136,1,0],[160,184,142,212,113,246,55,253,76,1,96,48,47,4,6,31,60,81,16,37,23,98,74,116,239,128,102,34,186,6,209,163,252,0],[160,83,49,16,87,146,238,231,234,169,86,188,172,17,210,186,17,108,226,232,48,238,231,61,144,77,111,6,163,52,21,1,75,0],[160,85,105,46,246,56,202,27,171,173,252,32,70,26,164,200,4,132,8,191,26,18,6,71,136,185,84,78,116,7,105,173,129,0],[160,56,132,5,71,86,15,137,93,78,3,221,107,3,241,13,146,241,12,153,14,12,71,119,199,92,129,129,64,191,22,218,171,0],[160,74,152,77,40,170,9,167,165,62,21,195,214,232,149,243,171,254,129,253,48,247,58,144,37,151,98,228,162,171,212,118,94,0],[160,216,173,107,1,206,168,79,67,71,139,41,217,6,54,2,59,87,23,198,126,160,129,101,185,188,218,82,112,3,173,165,164,0],[160,10,108,143,193,28,22,98,217,170,73,112,161,147,45,94,6,170,154,118,245,159,193,129,134,168,141,165,46,135,253,62,233,0],[160,157,163,165,178,129,84,193,250,46,88,180,214,229,194,39,227,117,109,170,6,239,51,115,35,138,204,57,20,179,114,222,196,0],[160,84,63,203,152,213,1,33,249,178,42,184,49,101,22,19,190,104,212,252,175,25,222,119,46,136,149,187,198,6,220,244,65,0],[160,28,82,38,21,32,27,203,97,109,14,13,160,185,224,39,253,231,2,71,156,220,61,107,173,151,165,136,128,233,227,25,102,0],[160,216,163,73,96,11,93,139,116,117,170,134,116,167,172,140,76,88,172,241,80,233,174,88,236,216,40,105,148,196,72,55,110,0],[160,139,0,229,37,13,50,83,68,16,211,187,98,200,30,132,6,211,202,190,79,179,123,82,201,226,252,23,172,136,123,215,243,0],[160,171,186,147,212,217,108,150,242,229,123,37,215,92,93,99,231,42,158,24,113,106,176,203,138,144,205,0,49,141,149,241,220,0],[160,38,163,54,181,99,160,35,20,180,245,23,232,11,219,158,228,231,101,66,195,191,164,200,124,7,9,46,208,220,49,64,95,0],[160,33,177,178,122,210,148,189,146,118,70,198,203,190,0,165,116,103,95,242,102,64,148,40,228,179,1,21,209,86,177,4,176,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,249,154,157,252,169,130,24,178,174,188,10,171,75,183,151,101,201,122,75,227,204,1,183,197,39,220,59,31,175,6,136,1,160,184,142,212,113,246,55,253,76,1,96,48,47,4,6,31,60,81,16,37,23,98,74,116,239,128,102,34,186,6,209,163,252,160,83,49,16,87,146,238,231,234,169,86,188,172,17,210,186,17,108,226,232,48,238,231,61,144,77,111,6,163,52,21,1,75,160,85,105,46,246,56,202,27,171,173,252,32,70,26,164,200,4,132,8,191,26,18,6,71,136,185,84,78,116,7,105,173,129,160,56,132,5,71,86,15,137,93,78,3,221,107,3,241,13,146,241,12,153,14,12,71,119,199,92,129,129,64,191,22,218,171,160,74,152,77,40,170,9,167,165,62,21,195,214,232,149,243,171,254,129,253,48,247,58,144,37,151,98,228,162,171,212,118,94,160,216,173,107,1,206,168,79,67,71,139,41,217,6,54,2,59,87,23,198,126,160,129,101,185,188,218,82,112,3,173,165,164,160,10,108,143,193,28,22,98,217,170,73,112,161,147,45,94,6,170,154,118,245,159,193,129,134,168,141,165,46,135,253,62,233,160,157,163,165,178,129,84,193,250,46,88,180,214,229,194,39,227,117,109,170,6,239,51,115,35,138,204,57,20,179,114,222,196,160,84,63,203,152,213,1,33,249,178,42,184,49,101,22,19,190,104,212,252,175,25,222,119,46,136,149,187,198,6,220,244,65,160,28,82,38,21,32,27,203,97,109,14,13,160,185,224,39,253,231,2,71,156,220,61,107,173,151,165,136,128,233,227,25,102,160,216,163,73,96,11,93,139,116,117,170,134,116,167,172,140,76,88,172,241,80,233,174,88,236,216,40,105,148,196,72,55,110,160,139,0,229,37,13,50,83,68,16,211,187,98,200,30,132,6,211,202,190,79,179,123,82,201,226,252,23,172,136,123,215,243,160,171,186,147,212,217,108,150,242,229,123,37,215,92,93,99,231,42,158,24,113,106,176,203,138,144,205,0,49,141,149,241,220,160,38,163,54,181,99,160,35,20,180,245,23,232,11,219,158,228,231,101,66,195,191,164,200,124,7,9,46,208,220,49,64,95,160,33,177,178,122,210,148,189,146,118,70,198,203,190,0,165,116,103,95,242,102,64,148,40,228,179,1,21,209,86,177,4,176,128],[249,2,17,160,249,154,157,252,169,130,24,178,174,188,10,171,75,183,151,101,201,122,75,227,204,1,183,197,39,220,59,31,175,6,136,1,160,184,142,212,113,246,55,253,76,1,96,48,47,4,6,31,60,81,16,37,23,98,74,116,239,128,102,34,186,6,209,163,252,160,83,49,16,87,146,238,231,234,169,86,188,172,17,210,186,17,108,226,232,48,238,231,61,144,77,111,6,163,52,21,1,75,160,85,105,46,246,56,202,27,171,173,252,32,70,26,164,200,4,132,8,191,26,18,6,71,136,185,84,78,116,7,105,173,129,160,56,132,5,71,86,15,137,93,78,3,221,107,3,241,13,146,241,12,153,14,12,71,119,199,92,129,129,64,191,22,218,171,160,74,152,77,40,170,9,167,165,62,21,195,214,232,149,243,171,254,129,253,48,247,58,144,37,151,98,228,162,171,212,118,94,160,216,173,107,1,206,168,79,67,71,139,41,217,6,54,2,59,87,23,198,126,160,129,101,185,188,218,82,112,3,173,165,164,160,10,108,143,193,28,22,98,217,170,73,112,161,147,45,94,6,170,154,118,245,159,193,129,134,168,141,165,46,135,253,62,233,160,157,163,165,178,129,84,193,250,46,88,180,214,229,194,39,227,117,109,170,6,239,51,115,35,138,204,57,20,179,114,222,196,160,84,63,203,152,213,1,33,249,178,42,184,49,101,22,19,190,104,212,252,175,25,222,119,46,136,149,187,198,6,220,244,65,160,28,82,38,21,32,27,203,97,109,14,13,160,185,224,39,253,231,2,71,156,220,61,107,173,151,165,136,128,233,227,25,102,160,216,163,73,96,11,93,139,116,117,170,134,116,167,172,140,76,88,172,241,80,233,174,88,236,216,40,105,148,196,72,55,110,160,197,247,226,25,133,151,98,252,49,148,43,12,220,22,136,160,13,198,21,160,253,37,244,37,188,119,209,114,12,81,156,243,160,171,186,147,212,217,108,150,242,229,123,37,215,92,93,99,231,42,158,24,113,106,176,203,138,144,205,0,49,141,149,241,220,160,38,163,54,181,99,160,35,20,180,245,23,232,11,219,158,228,231,101,66,195,191,164,200,124,7,9,46,208,220,49,64,95,160,33,177,178,122,210,148,189,146,118,70,198,203,190,0,165,116,103,95,242,102,64,148,40,228,179,1,21,209,86,177,4,176,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,78,163,50,188,5,44,198,136,213,247,165,102,104,121,194,215,48,246,91,222,237,139,152,176,125,231,191,3,174,102,58,140,0],[160,106,16,111,21,123,135,16,90,41,91,246,76,214,12,169,46,0,6,39,164,82,189,246,42,69,8,101,99,152,204,132,100,0],[160,60,34,149,73,115,93,160,163,67,8,20,68,149,254,38,185,86,202,77,136,16,235,61,244,182,40,227,137,94,14,242,214,0],[160,238,127,9,174,221,194,94,32,49,180,73,73,92,78,98,80,138,78,97,4,142,231,113,17,18,114,230,254,191,151,134,171,0],[160,201,42,66,167,18,48,157,234,238,225,227,80,220,29,160,71,88,29,218,217,33,150,214,240,209,128,11,236,159,130,108,69,0],[160,2,92,117,139,0,110,75,150,33,162,159,244,223,76,12,104,29,96,36,207,182,225,171,255,178,16,146,250,3,99,230,197,0],[160,216,217,232,12,128,20,245,47,3,73,156,242,47,134,209,88,97,63,164,32,56,2,254,249,129,198,15,120,58,254,148,8,0],[160,245,175,212,144,210,121,74,226,116,11,145,233,6,146,77,105,66,135,253,195,249,248,244,117,97,69,128,138,168,72,29,141,0],[160,53,195,249,111,139,115,176,153,148,53,206,71,173,38,237,25,215,168,204,248,113,104,32,191,231,113,113,210,118,251,47,206,0],[160,235,75,20,132,9,45,56,217,6,169,194,35,234,249,44,149,165,145,171,86,205,142,208,114,153,57,123,190,191,63,121,18,0],[160,12,198,148,204,70,121,49,135,169,52,154,161,57,227,133,67,176,170,137,161,64,122,52,3,44,215,205,187,225,127,137,24,0],[160,67,138,196,199,169,8,184,226,56,85,11,150,122,188,206,85,202,62,46,186,238,95,9,157,3,69,71,72,126,228,248,148,0],[160,25,233,52,15,104,218,115,250,187,68,62,245,205,199,70,63,6,123,22,218,29,85,122,62,215,226,215,166,16,167,189,234,0],[160,98,194,154,151,239,160,156,131,232,74,193,222,232,242,255,120,231,207,47,165,244,253,125,74,3,178,193,181,42,106,252,211,0],[160,72,2,45,177,8,11,109,126,117,186,10,93,244,238,114,168,190,92,94,154,43,232,11,135,170,167,55,237,148,72,150,116,0],[160,154,222,66,92,165,73,98,221,115,238,103,253,112,232,74,60,48,132,0,178,72,97,37,254,172,227,79,219,137,95,92,60,0],[160,64,246,176,183,91,200,127,120,56,98,203,181,53,14,244,34,143,152,0,235,141,69,29,162,2,91,49,155,66,78,154,38,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,106,16,111,21,123,135,16,90,41,91,246,76,214,12,169,46,0,6,39,164,82,189,246,42,69,8,101,99,152,204,132,100,160,60,34,149,73,115,93,160,163,67,8,20,68,149,254,38,185,86,202,77,136,16,235,61,244,182,40,227,137,94,14,242,214,160,238,127,9,174,221,194,94,32,49,180,73,73,92,78,98,80,138,78,97,4,142,231,113,17,18,114,230,254,191,151,134,171,160,201,42,66,167,18,48,157,234,238,225,227,80,220,29,160,71,88,29,218,217,33,150,214,240,209,128,11,236,159,130,108,69,160,2,92,117,139,0,110,75,150,33,162,159,244,223,76,12,104,29,96,36,207,182,225,171,255,178,16,146,250,3,99,230,197,160,216,217,232,12,128,20,245,47,3,73,156,242,47,134,209,88,97,63,164,32,56,2,254,249,129,198,15,120,58,254,148,8,160,245,175,212,144,210,121,74,226,116,11,145,233,6,146,77,105,66,135,253,195,249,248,244,117,97,69,128,138,168,72,29,141,160,53,195,249,111,139,115,176,153,148,53,206,71,173,38,237,25,215,168,204,248,113,104,32,191,231,113,113,210,118,251,47,206,160,235,75,20,132,9,45,56,217,6,169,194,35,234,249,44,149,165,145,171,86,205,142,208,114,153,57,123,190,191,63,121,18,160,12,198,148,204,70,121,49,135,169,52,154,161,57,227,133,67,176,170,137,161,64,122,52,3,44,215,205,187,225,127,137,24,160,67,138,196,199,169,8,184,226,56,85,11,150,122,188,206,85,202,62,46,186,238,95,9,157,3,69,71,72,126,228,248,148,160,25,233,52,15,104,218,115,250,187,68,62,245,205,199,70,63,6,123,22,218,29,85,122,62,215,226,215,166,16,167,189,234,160,98,194,154,151,239,160,156,131,232,74,193,222,232,242,255,120,231,207,47,165,244,253,125,74,3,178,193,181,42,106,252,211,160,72,2,45,177,8,11,109,126,117,186,10,93,244,238,114,168,190,92,94,154,43,232,11,135,170,167,55,237,148,72,150,116,160,154,222,66,92,165,73,98,221,115,238,103,253,112,232,74,60,48,132,0,178,72,97,37,254,172,227,79,219,137,95,92,60,160,64,246,176,183,91,200,127,120,56,98,203,181,53,14,244,34,143,152,0,235,141,69,29,162,2,91,49,155,66,78,154,38,128],[249,2,17,160,106,16,111,21,123,135,16,90,41,91,246,76,214,12,169,46,0,6,39,164,82,189,246,42,69,8,101,99,152,204,132,100,160,60,34,149,73,115,93,160,163,67,8,20,68,149,254,38,185,86,202,77,136,16,235,61,244,182,40,227,137,94,14,242,214,160,238,127,9,174,221,194,94,32,49,180,73,73,92,78,98,80,138,78,97,4,142,231,113,17,18,114,230,254,191,151,134,171,160,201,42,66,167,18,48,157,234,238,225,227,80,220,29,160,71,88,29,218,217,33,150,214,240,209,128,11,236,159,130,108,69,160,2,92,117,139,0,110,75,150,33,162,159,244,223,76,12,104,29,96,36,207,182,225,171,255,178,16,146,250,3,99,230,197,160,216,217,232,12,128,20,245,47,3,73,156,242,47,134,209,88,97,63,164,32,56,2,254,249,129,198,15,120,58,254,148,8,160,245,175,212,144,210,121,74,226,116,11,145,233,6,146,77,105,66,135,253,195,249,248,244,117,97,69,128,138,168,72,29,141,160,78,163,50,188,5,44,198,136,213,247,165,102,104,121,194,215,48,246,91,222,237,139,152,176,125,231,191,3,174,102,58,140,160,235,75,20,132,9,45,56,217,6,169,194,35,234,249,44,149,165,145,171,86,205,142,208,114,153,57,123,190,191,63,121,18,160,12,198,148,204,70,121,49,135,169,52,154,161,57,227,133,67,176,170,137,161,64,122,52,3,44,215,205,187,225,127,137,24,160,67,138,196,199,169,8,184,226,56,85,11,150,122,188,206,85,202,62,46,186,238,95,9,157,3,69,71,72,126,228,248,148,160,25,233,52,15,104,218,115,250,187,68,62,245,205,199,70,63,6,123,22,218,29,85,122,62,215,226,215,166,16,167,189,234,160,98,194,154,151,239,160,156,131,232,74,193,222,232,242,255,120,231,207,47,165,244,253,125,74,3,178,193,181,42,106,252,211,160,72,2,45,177,8,11,109,126,117,186,10,93,244,238,114,168,190,92,94,154,43,232,11,135,170,167,55,237,148,72,150,116,160,154,222,66,92,165,73,98,221,115,238,103,253,112,232,74,60,48,132,0,178,72,97,37,254,172,227,79,219,137,95,92,60,160,64,246,176,183,91,200,127,120,56,98,203,181,53,14,244,34,143,152,0,235,141,69,29,162,2,91,49,155,66,78,154,38,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,121,68,104,125,68,59,82,93,228,97,167,40,146,49,124,77,241,142,211,165,10,97,199,85,81,79,230,191,247,129,114,80,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,31,184,239,216,162,218,209,131,153,182,120,30,89,226,253,232,35,255,80,54,206,227,105,86,62,74,174,87,22,169,129,252,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,172,35,60,231,231,1,133,65,209,84,163,171,248,138,45,61,86,71,119,177,22,201,79,236,153,76,227,109,10,225,88,43,0],[160,253,135,76,135,54,108,10,170,247,252,207,96,101,104,75,7,69,195,220,177,99,45,100,235,176,35,207,225,85,18,146,78,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,33,45,215,46,82,62,109,31,1,35,68,61,66,198,187,70,90,197,148,155,207,148,72,174,197,28,191,217,57,58,226,79,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,64,195,200,247,169,82,45,109,245,192,2,141,144,211,96,247,60,81,105,180,207,67,77,149,53,11,238,212,62,22,115,144,0],[160,154,130,205,14,154,185,115,206,223,23,163,197,188,133,66,136,220,180,13,107,185,5,191,34,148,36,24,172,216,191,197,24,0],[160,203,223,36,48,180,143,23,179,255,230,40,112,153,88,88,64,78,4,13,226,19,168,89,214,215,65,43,135,196,33,218,233,0],[160,89,143,142,15,108,110,165,43,98,224,76,101,93,229,229,73,69,151,194,144,32,120,185,128,145,134,29,208,191,35,120,115,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,128,160,31,184,239,216,162,218,209,131,153,182,120,30,89,226,253,232,35,255,80,54,206,227,105,86,62,74,174,87,22,169,129,252,128,160,172,35,60,231,231,1,133,65,209,84,163,171,248,138,45,61,86,71,119,177,22,201,79,236,153,76,227,109,10,225,88,43,160,253,135,76,135,54,108,10,170,247,252,207,96,101,104,75,7,69,195,220,177,99,45,100,235,176,35,207,225,85,18,146,78,128,128,128,160,33,45,215,46,82,62,109,31,1,35,68,61,66,198,187,70,90,197,148,155,207,148,72,174,197,28,191,217,57,58,226,79,128,160,64,195,200,247,169,82,45,109,245,192,2,141,144,211,96,247,60,81,105,180,207,67,77,149,53,11,238,212,62,22,115,144,160,154,130,205,14,154,185,115,206,223,23,163,197,188,133,66,136,220,180,13,107,185,5,191,34,148,36,24,172,216,191,197,24,160,203,223,36,48,180,143,23,179,255,230,40,112,153,88,88,64,78,4,13,226,19,168,89,214,215,65,43,135,196,33,218,233,160,89,143,142,15,108,110,165,43,98,224,76,101,93,229,229,73,69,151,194,144,32,120,185,128,145,134,29,208,191,35,120,115,128,128,128],[249,1,17,128,160,31,184,239,216,162,218,209,131,153,182,120,30,89,226,253,232,35,255,80,54,206,227,105,86,62,74,174,87,22,169,129,252,128,160,172,35,60,231,231,1,133,65,209,84,163,171,248,138,45,61,86,71,119,177,22,201,79,236,153,76,227,109,10,225,88,43,160,253,135,76,135,54,108,10,170,247,252,207,96,101,104,75,7,69,195,220,177,99,45,100,235,176,35,207,225,85,18,146,78,128,128,128,160,33,45,215,46,82,62,109,31,1,35,68,61,66,198,187,70,90,197,148,155,207,148,72,174,197,28,191,217,57,58,226,79,128,160,64,195,200,247,169,82,45,109,245,192,2,141,144,211,96,247,60,81,105,180,207,67,77,149,53,11,238,212,62,22,115,144,160,121,68,104,125,68,59,82,93,228,97,167,40,146,49,124,77,241,142,211,165,10,97,199,85,81,79,230,191,247,129,114,80,160,203,223,36,48,180,143,23,179,255,230,40,112,153,88,88,64,78,4,13,226,19,168,89,214,215,65,43,135,196,33,218,233,160,89,143,142,15,108,110,165,43,98,224,76,101,93,229,229,73,69,151,194,144,32,120,185,128,145,134,29,208,191,35,120,115,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,244,68,55,117,211,80,124,42,127,53,68,13,25,88,109,73,120,29,160,78,148,196,161,251,28,129,56,192,76,54,79,75,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,108,185,102,52,21,10,75,241,154,209,205,29,41,234,210,116,211,39,182,196,120,254,70,36,87,14,59,127,132,143,234,49,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,91,3,68,246,89,133,57,96,176,47,140,104,126,136,36,188,61,61,40,76,103,36,98,239,83,219,110,48,108,131,241,61,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,160,108,185,102,52,21,10,75,241,154,209,205,29,41,234,210,116,211,39,182,196,120,254,70,36,87,14,59,127,132,143,234,49,128,128,160,91,3,68,246,89,133,57,96,176,47,140,104,126,136,36,188,61,61,40,76,103,36,98,239,83,219,110,48,108,131,241,61,128,128,128,128,128,128,128,128,128],[248,81,128,128,128,128,160,108,185,102,52,21,10,75,241,154,209,205,29,41,234,210,116,211,39,182,196,120,254,70,36,87,14,59,127,132,143,234,49,128,128,160,244,68,55,117,211,80,124,42,127,53,68,13,25,88,109,73,120,29,160,78,148,196,161,251,28,129,56,192,76,54,79,75,128,128,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"key":[83,128,199,183,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42],"list_rlp_bytes":[[248,112],[248,112]],"value_rlp_bytes":[[184,80],[184,80]],"value_list_rlp_bytes":[[248,78],[248,78]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,112]},"storage":null,"values":[[157,32,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42,0,0,0,0],[157,32,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[138,2,103,194,68,2,43,237,82,90,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,41,205,35,145,80,135,90,57,152,209,180,157,66,10,44,204,121,135,7,177,166,47,176,165,210,231,13,22,1,214,151,184,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[138,2,103,194,68,2,43,237,82,90,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,201,241,28,17,70,191,10,230,244,164,254,224,205,89,168,245,228,199,11,228,83,61,99,0,4,99,161,251,24,198,137,24,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,32,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42,0,0,0,0]],"keccak_data":[[248,112,157,32,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42,184,80,248,78,128,138,2,103,194,68,2,43,237,82,90,203,160,41,205,35,145,80,135,90,57,152,209,180,157,66,10,44,204,121,135,7,177,166,47,176,165,210,231,13,22,1,214,151,184,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,112,157,32,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42,184,80,248,78,128,138,2,103,194,68,2,43,237,82,90,203,160,201,241,28,17,70,191,10,230,244,164,254,224,205,89,168,245,228,199,11,228,83,61,99,0,4,99,161,251,24,198,137,24,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,17,208],"key":[209,145,236,75,8,192,127,93,53,202,116,112,223,227,238,49,199,204,150,64,145,212,182,41,188,172,4,67,242,116,187,180],"list_rlp_bytes":[[227],[227]],"value_rlp_bytes":[[1],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[161,32,209,145,236,75,8,192,127,93,53,202,116,112,223,227,238,49,199,204,150,64,145,212,182,41,188,172,4,67,242,116,187,180],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[161,32,209,145,236,75,8,192,127,93,53,202,116,112,223,227,238,49,199,204,150,64,145,212,182,41,188,172,4,67,242,116,187,180],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[227,161,32,209,145,236,75,8,192,127,93,53,202,116,112,223,227,238,49,199,204,150,64,145,212,182,41,188,172,4,67,242,116,187,180,1],[227,161,32,209,145,236,75,8,192,127,93,53,202,116,112,223,227,238,49,199,204,150,64,145,212,182,41,188,172,4,67,242,116,187,180,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,17,208]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/StorageInFirstAccountInFirstLevel.json b/zkevm-circuits/src/mpt_circuit/tests/StorageInFirstAccountInFirstLevel.json new file mode 100644 index 0000000000..ab7ff69d73 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/StorageInFirstAccountInFirstLevel.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,221,24,245,128,128,59,139,211,67,24,104,53,120,169,108,45,65,161,228,168,133,165,58,10,91,89,4,118,58,162,186,61,0],[160,153,119,147,156,140,23,15,200,147,87,16,216,116,229,182,245,242,106,1,234,23,164,122,111,126,148,96,15,126,252,246,180,0]],"keccak_data":[]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33],"key":[252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73],"list_rlp_bytes":[[248,106],[248,106]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,106]},"storage":null,"values":[[161,32,252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73],[161,32,252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,244,125,188,238,178,32,191,198,180,187,79,255,145,109,104,59,239,65,12,135,73,35,235,161,181,195,189,58,43,108,100,98,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[161,32,252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73]],"keccak_data":[[248,106,161,32,252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,184,70,248,68,128,128,160,86,232,31,23,27,204,85,166,255,131,69,230,146,192,248,110,91,72,224,27,153,108,173,192,1,98,47,181,227,99,180,33,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,106,161,32,252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,184,70,248,68,128,128,160,244,125,188,238,178,32,191,198,180,187,79,255,145,109,104,59,239,65,12,135,73,35,235,161,181,195,189,58,43,108,100,98,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18],"key":[187,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68],"list_rlp_bytes":[[227],[227]],"value_rlp_bytes":[[0],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[161,32,187,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[161,32,187,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[227,161,32,187,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,17],[227,161,32,187,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/StorageInFirstLevelNonExisting.json b/zkevm-circuits/src/mpt_circuit/tests/StorageInFirstLevelNonExisting.json new file mode 100644 index 0000000000..c302dc196f --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/StorageInFirstLevelNonExisting.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageDoesNotExist"},"extension_branch":null,"account":null,"storage":null,"values":[[160,127,11,101,17,218,77,50,245,15,21,55,66,71,6,145,132,55,29,157,143,189,213,143,244,238,127,95,15,142,185,165,84,0],[160,127,11,101,17,218,77,50,245,15,21,55,66,71,6,145,132,55,29,157,143,189,213,143,244,238,127,95,15,142,185,165,84,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,1,49],[249,1,49]]}},"account":null,"storage":null,"values":[[160,28,255,138,250,214,231,20,182,102,160,205,25,183,17,141,106,135,254,134,86,53,112,225,92,91,216,192,106,164,250,210,125,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,171,140,219,128,140,131,3,187,97,251,72,226,118,33,123,233,119,15,168,62,207,63,144,242,35,77,85,136,133,245,171,241,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,209,194,147,52,245,42,90,105,74,201,185,72,11,49,56,252,120,235,36,47,214,22,67,153,206,248,232,10,54,165,108,47,0],[160,181,215,169,27,229,238,39,60,206,39,226,173,154,22,13,47,170,221,90,107,165,24,211,132,1,155,104,114,138,79,98,244,0],[160,194,199,153,182,10,12,214,172,212,44,16,21,81,40,114,232,108,24,107,207,25,110,133,6,30,118,132,47,59,124,248,96,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,46,13,134,195,190,253,23,127,87,74,32,172,99,128,69,50,136,144,119,233,85,50,12,147,97,205,16,183,204,111,88,9,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,99,1,179,155,46,168,164,77,248,176,53,97,32,219,100,183,136,231,31,82,225,215,166,48,157,13,46,91,134,254,231,203,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,27,119,121,225,73,202,223,36,212,255,183,124,167,225,19,20,184,219,112,151,228,215,11,42,23,52,147,21,60,162,229,160,0],[160,102,167,102,40,17,73,27,61,53,46,150,149,6,180,32,210,105,232,181,26,34,79,87,75,59,56,179,70,63,67,240,9,0],[160,28,255,138,250,214,231,20,182,102,160,205,25,183,17,141,106,135,254,134,86,53,112,225,92,91,216,192,106,164,250,210,125,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,49,128,160,171,140,219,128,140,131,3,187,97,251,72,226,118,33,123,233,119,15,168,62,207,63,144,242,35,77,85,136,133,245,171,241,128,128,160,209,194,147,52,245,42,90,105,74,201,185,72,11,49,56,252,120,235,36,47,214,22,67,153,206,248,232,10,54,165,108,47,160,181,215,169,27,229,238,39,60,206,39,226,173,154,22,13,47,170,221,90,107,165,24,211,132,1,155,104,114,138,79,98,244,160,194,199,153,182,10,12,214,172,212,44,16,21,81,40,114,232,108,24,107,207,25,110,133,6,30,118,132,47,59,124,248,96,128,160,46,13,134,195,190,253,23,127,87,74,32,172,99,128,69,50,136,144,119,233,85,50,12,147,97,205,16,183,204,111,88,9,128,160,99,1,179,155,46,168,164,77,248,176,53,97,32,219,100,183,136,231,31,82,225,215,166,48,157,13,46,91,134,254,231,203,128,128,160,27,119,121,225,73,202,223,36,212,255,183,124,167,225,19,20,184,219,112,151,228,215,11,42,23,52,147,21,60,162,229,160,160,102,167,102,40,17,73,27,61,53,46,150,149,6,180,32,210,105,232,181,26,34,79,87,75,59,56,179,70,63,67,240,9,160,28,255,138,250,214,231,20,182,102,160,205,25,183,17,141,106,135,254,134,86,53,112,225,92,91,216,192,106,164,250,210,125,128],[249,1,49,128,160,171,140,219,128,140,131,3,187,97,251,72,226,118,33,123,233,119,15,168,62,207,63,144,242,35,77,85,136,133,245,171,241,128,128,160,209,194,147,52,245,42,90,105,74,201,185,72,11,49,56,252,120,235,36,47,214,22,67,153,206,248,232,10,54,165,108,47,160,181,215,169,27,229,238,39,60,206,39,226,173,154,22,13,47,170,221,90,107,165,24,211,132,1,155,104,114,138,79,98,244,160,194,199,153,182,10,12,214,172,212,44,16,21,81,40,114,232,108,24,107,207,25,110,133,6,30,118,132,47,59,124,248,96,128,160,46,13,134,195,190,253,23,127,87,74,32,172,99,128,69,50,136,144,119,233,85,50,12,147,97,205,16,183,204,111,88,9,128,160,99,1,179,155,46,168,164,77,248,176,53,97,32,219,100,183,136,231,31,82,225,215,166,48,157,13,46,91,134,254,231,203,128,128,160,27,119,121,225,73,202,223,36,212,255,183,124,167,225,19,20,184,219,112,151,228,215,11,42,23,52,147,21,60,162,229,160,160,102,167,102,40,17,73,27,61,53,46,150,149,6,180,32,210,105,232,181,26,34,79,87,75,59,56,179,70,63,67,240,9,160,28,255,138,250,214,231,20,182,102,160,205,25,183,17,141,106,135,254,134,86,53,112,225,92,91,216,192,106,164,250,210,125,128]]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33],"key":[252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73],"list_rlp_bytes":[[248,105],[248,105]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,105]},"storage":null,"values":[[160,60,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,0],[160,60,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,181,159,43,81,161,219,184,240,226,226,184,70,220,127,70,243,80,161,248,53,152,30,17,42,194,76,54,131,22,84,196,234,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,181,159,43,81,161,219,184,240,226,226,184,70,220,127,70,243,80,161,248,53,152,30,17,42,194,76,54,131,22,84,196,234,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,60,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,0]],"keccak_data":[[248,105,160,60,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,184,70,248,68,128,128,160,181,159,43,81,161,219,184,240,226,226,184,70,220,127,70,243,80,161,248,53,152,30,17,42,194,76,54,131,22,84,196,234,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,105,160,60,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,184,70,248,68,128,128,160,181,159,43,81,161,219,184,240,226,226,184,70,220,127,70,243,80,161,248,53,152,30,17,42,194,76,54,131,22,84,196,234,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18],"key":[187,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68],"list_rlp_bytes":[[227],[227]],"value_rlp_bytes":[[1],[1]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[227]},"values":[[161,32,49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[161,32,49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[161,32,187,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68]],"keccak_data":[[227,161,32,49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,1],[227,161,32,49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,1],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/StorageInFirstLevelNonExistingLong.json b/zkevm-circuits/src/mpt_circuit/tests/StorageInFirstLevelNonExistingLong.json new file mode 100644 index 0000000000..0831b5008d --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/StorageInFirstLevelNonExistingLong.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageDoesNotExist"},"extension_branch":null,"account":null,"storage":null,"values":[[160,117,16,204,228,193,59,103,107,206,74,158,33,217,52,162,224,106,194,150,47,162,252,122,121,236,126,2,19,231,244,178,29,0],[160,117,16,204,228,193,59,103,107,206,74,158,33,217,52,162,224,106,194,150,47,162,252,122,121,236,126,2,19,231,244,178,29,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,1,49],[249,1,49]]}},"account":null,"storage":null,"values":[[160,231,165,203,255,167,199,212,210,253,24,178,70,231,18,19,149,150,206,64,171,86,203,161,10,37,16,219,158,90,110,56,17,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,171,140,219,128,140,131,3,187,97,251,72,226,118,33,123,233,119,15,168,62,207,63,144,242,35,77,85,136,133,245,171,241,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,209,194,147,52,245,42,90,105,74,201,185,72,11,49,56,252,120,235,36,47,214,22,67,153,206,248,232,10,54,165,108,47,0],[160,181,215,169,27,229,238,39,60,206,39,226,173,154,22,13,47,170,221,90,107,165,24,211,132,1,155,104,114,138,79,98,244,0],[160,194,199,153,182,10,12,214,172,212,44,16,21,81,40,114,232,108,24,107,207,25,110,133,6,30,118,132,47,59,124,248,96,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,46,13,134,195,190,253,23,127,87,74,32,172,99,128,69,50,136,144,119,233,85,50,12,147,97,205,16,183,204,111,88,9,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,99,1,179,155,46,168,164,77,248,176,53,97,32,219,100,183,136,231,31,82,225,215,166,48,157,13,46,91,134,254,231,203,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,27,119,121,225,73,202,223,36,212,255,183,124,167,225,19,20,184,219,112,151,228,215,11,42,23,52,147,21,60,162,229,160,0],[160,102,167,102,40,17,73,27,61,53,46,150,149,6,180,32,210,105,232,181,26,34,79,87,75,59,56,179,70,63,67,240,9,0],[160,231,165,203,255,167,199,212,210,253,24,178,70,231,18,19,149,150,206,64,171,86,203,161,10,37,16,219,158,90,110,56,17,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,49,128,160,171,140,219,128,140,131,3,187,97,251,72,226,118,33,123,233,119,15,168,62,207,63,144,242,35,77,85,136,133,245,171,241,128,128,160,209,194,147,52,245,42,90,105,74,201,185,72,11,49,56,252,120,235,36,47,214,22,67,153,206,248,232,10,54,165,108,47,160,181,215,169,27,229,238,39,60,206,39,226,173,154,22,13,47,170,221,90,107,165,24,211,132,1,155,104,114,138,79,98,244,160,194,199,153,182,10,12,214,172,212,44,16,21,81,40,114,232,108,24,107,207,25,110,133,6,30,118,132,47,59,124,248,96,128,160,46,13,134,195,190,253,23,127,87,74,32,172,99,128,69,50,136,144,119,233,85,50,12,147,97,205,16,183,204,111,88,9,128,160,99,1,179,155,46,168,164,77,248,176,53,97,32,219,100,183,136,231,31,82,225,215,166,48,157,13,46,91,134,254,231,203,128,128,160,27,119,121,225,73,202,223,36,212,255,183,124,167,225,19,20,184,219,112,151,228,215,11,42,23,52,147,21,60,162,229,160,160,102,167,102,40,17,73,27,61,53,46,150,149,6,180,32,210,105,232,181,26,34,79,87,75,59,56,179,70,63,67,240,9,160,231,165,203,255,167,199,212,210,253,24,178,70,231,18,19,149,150,206,64,171,86,203,161,10,37,16,219,158,90,110,56,17,128],[249,1,49,128,160,171,140,219,128,140,131,3,187,97,251,72,226,118,33,123,233,119,15,168,62,207,63,144,242,35,77,85,136,133,245,171,241,128,128,160,209,194,147,52,245,42,90,105,74,201,185,72,11,49,56,252,120,235,36,47,214,22,67,153,206,248,232,10,54,165,108,47,160,181,215,169,27,229,238,39,60,206,39,226,173,154,22,13,47,170,221,90,107,165,24,211,132,1,155,104,114,138,79,98,244,160,194,199,153,182,10,12,214,172,212,44,16,21,81,40,114,232,108,24,107,207,25,110,133,6,30,118,132,47,59,124,248,96,128,160,46,13,134,195,190,253,23,127,87,74,32,172,99,128,69,50,136,144,119,233,85,50,12,147,97,205,16,183,204,111,88,9,128,160,99,1,179,155,46,168,164,77,248,176,53,97,32,219,100,183,136,231,31,82,225,215,166,48,157,13,46,91,134,254,231,203,128,128,160,27,119,121,225,73,202,223,36,212,255,183,124,167,225,19,20,184,219,112,151,228,215,11,42,23,52,147,21,60,162,229,160,160,102,167,102,40,17,73,27,61,53,46,150,149,6,180,32,210,105,232,181,26,34,79,87,75,59,56,179,70,63,67,240,9,160,231,165,203,255,167,199,212,210,253,24,178,70,231,18,19,149,150,206,64,171,86,203,161,10,37,16,219,158,90,110,56,17,128]]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33],"key":[252,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73],"list_rlp_bytes":[[248,105],[248,105]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,105]},"storage":null,"values":[[160,60,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,0],[160,60,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,81,35,181,218,246,60,83,71,174,85,10,197,121,250,119,8,198,121,146,240,36,249,41,15,9,118,43,245,168,61,9,97,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,81,35,181,218,246,60,83,71,174,85,10,197,121,250,119,8,198,121,146,240,36,249,41,15,9,118,43,245,168,61,9,97,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,60,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,0]],"keccak_data":[[248,105,160,60,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,184,70,248,68,128,128,160,81,35,181,218,246,60,83,71,174,85,10,197,121,250,119,8,198,121,146,240,36,249,41,15,9,118,43,245,168,61,9,97,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,105,160,60,237,52,8,133,130,180,167,143,97,28,115,102,25,94,62,148,249,8,6,55,244,16,75,187,208,208,127,251,120,61,73,184,70,248,68,128,128,160,81,35,181,218,246,60,83,71,174,85,10,197,121,250,119,8,198,121,146,240,36,249,41,15,9,118,43,245,168,61,9,97,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18],"key":[187,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68],"list_rlp_bytes":[[248,68],[248,68]],"value_rlp_bytes":[[161],[161]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,68]},"values":[[161,32,49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104],[160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170,0],[161,32,49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104],[160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[161,32,187,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68]],"keccak_data":[[248,68,161,32,49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,161,160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170],[248,68,161,32,49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,161,160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/StorageLeafInFirstLevelAfterPlaceholder.json b/zkevm-circuits/src/mpt_circuit/tests/StorageLeafInFirstLevelAfterPlaceholder.json new file mode 100644 index 0000000000..c53262a769 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/StorageLeafInFirstLevelAfterPlaceholder.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,23,127,202,250,39,77,156,111,117,43,200,180,61,186,99,132,16,29,111,232,235,202,1,247,14,11,125,93,42,208,238,115,0],[160,215,72,193,110,206,23,233,142,90,63,117,207,198,71,213,247,160,177,237,181,235,199,162,126,145,35,82,137,43,23,10,172,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,196,77,193,40,64,111,146,177,79,176,252,119,56,63,201,128,147,183,113,238,83,186,122,48,207,112,223,208,141,136,15,7,0],[160,60,198,250,158,115,39,34,35,105,195,43,121,101,109,173,74,106,25,132,220,162,30,175,136,98,150,158,247,168,55,37,60,0],[160,81,34,74,212,150,170,41,121,103,15,146,119,212,94,49,14,76,4,77,215,246,168,131,155,169,136,242,162,27,212,162,170,0],[160,228,22,39,137,146,1,54,178,148,126,99,207,86,182,62,197,202,118,166,61,87,166,185,130,236,68,47,191,54,77,22,233,0],[160,121,80,214,152,190,234,180,180,171,118,80,255,215,197,12,59,73,13,191,230,150,10,27,94,63,2,178,4,166,214,1,215,0],[160,112,168,159,233,233,180,238,192,124,144,26,7,99,53,92,70,197,152,136,189,54,123,182,50,86,211,20,83,144,207,252,139,0],[160,83,223,208,215,143,101,122,196,185,68,163,82,143,9,137,91,224,243,203,75,63,188,239,206,87,108,190,215,37,243,76,242,0],[160,75,162,241,232,163,219,82,112,195,201,127,167,65,198,3,69,87,172,65,114,250,3,171,191,186,225,80,57,234,0,69,232,0],[160,127,109,135,5,91,14,52,158,3,58,197,241,234,122,209,246,80,189,236,71,170,202,179,225,117,89,145,217,161,88,47,221,0],[160,130,89,138,158,232,170,174,131,222,86,82,63,113,45,63,172,159,248,227,154,225,38,68,6,123,11,20,44,73,22,208,245,0],[160,228,141,31,209,214,192,178,116,232,111,183,225,107,177,191,236,239,12,234,76,35,3,4,185,246,219,146,41,177,16,235,82,0],[160,67,201,47,145,5,245,179,22,162,115,24,127,33,73,67,134,127,184,149,224,209,139,130,237,14,13,157,113,244,162,185,142,0],[160,35,24,83,139,246,120,41,145,224,109,131,133,74,121,110,213,183,151,106,227,38,206,153,182,140,195,245,147,183,166,255,106,0],[160,115,55,215,251,247,190,44,206,83,59,75,46,234,152,195,151,225,149,203,164,167,128,164,83,169,118,98,165,191,203,121,208,0],[160,207,52,88,28,243,113,89,151,204,35,148,247,86,45,105,50,41,10,127,16,234,231,222,250,213,233,192,209,40,230,82,102,0],[160,131,14,117,4,199,136,223,98,123,88,152,103,88,41,186,137,138,33,139,237,38,8,219,151,231,42,129,135,20,205,103,42,0],[160,178,27,227,169,202,248,237,160,156,114,67,166,251,197,166,44,240,127,48,176,214,213,138,242,210,37,98,41,242,28,114,195,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,60,198,250,158,115,39,34,35,105,195,43,121,101,109,173,74,106,25,132,220,162,30,175,136,98,150,158,247,168,55,37,60,160,81,34,74,212,150,170,41,121,103,15,146,119,212,94,49,14,76,4,77,215,246,168,131,155,169,136,242,162,27,212,162,170,160,228,22,39,137,146,1,54,178,148,126,99,207,86,182,62,197,202,118,166,61,87,166,185,130,236,68,47,191,54,77,22,233,160,121,80,214,152,190,234,180,180,171,118,80,255,215,197,12,59,73,13,191,230,150,10,27,94,63,2,178,4,166,214,1,215,160,112,168,159,233,233,180,238,192,124,144,26,7,99,53,92,70,197,152,136,189,54,123,182,50,86,211,20,83,144,207,252,139,160,83,223,208,215,143,101,122,196,185,68,163,82,143,9,137,91,224,243,203,75,63,188,239,206,87,108,190,215,37,243,76,242,160,75,162,241,232,163,219,82,112,195,201,127,167,65,198,3,69,87,172,65,114,250,3,171,191,186,225,80,57,234,0,69,232,160,127,109,135,5,91,14,52,158,3,58,197,241,234,122,209,246,80,189,236,71,170,202,179,225,117,89,145,217,161,88,47,221,160,130,89,138,158,232,170,174,131,222,86,82,63,113,45,63,172,159,248,227,154,225,38,68,6,123,11,20,44,73,22,208,245,160,228,141,31,209,214,192,178,116,232,111,183,225,107,177,191,236,239,12,234,76,35,3,4,185,246,219,146,41,177,16,235,82,160,67,201,47,145,5,245,179,22,162,115,24,127,33,73,67,134,127,184,149,224,209,139,130,237,14,13,157,113,244,162,185,142,160,35,24,83,139,246,120,41,145,224,109,131,133,74,121,110,213,183,151,106,227,38,206,153,182,140,195,245,147,183,166,255,106,160,115,55,215,251,247,190,44,206,83,59,75,46,234,152,195,151,225,149,203,164,167,128,164,83,169,118,98,165,191,203,121,208,160,207,52,88,28,243,113,89,151,204,35,148,247,86,45,105,50,41,10,127,16,234,231,222,250,213,233,192,209,40,230,82,102,160,131,14,117,4,199,136,223,98,123,88,152,103,88,41,186,137,138,33,139,237,38,8,219,151,231,42,129,135,20,205,103,42,160,178,27,227,169,202,248,237,160,156,114,67,166,251,197,166,44,240,127,48,176,214,213,138,242,210,37,98,41,242,28,114,195,128],[249,2,17,160,60,198,250,158,115,39,34,35,105,195,43,121,101,109,173,74,106,25,132,220,162,30,175,136,98,150,158,247,168,55,37,60,160,81,34,74,212,150,170,41,121,103,15,146,119,212,94,49,14,76,4,77,215,246,168,131,155,169,136,242,162,27,212,162,170,160,228,22,39,137,146,1,54,178,148,126,99,207,86,182,62,197,202,118,166,61,87,166,185,130,236,68,47,191,54,77,22,233,160,121,80,214,152,190,234,180,180,171,118,80,255,215,197,12,59,73,13,191,230,150,10,27,94,63,2,178,4,166,214,1,215,160,112,168,159,233,233,180,238,192,124,144,26,7,99,53,92,70,197,152,136,189,54,123,182,50,86,211,20,83,144,207,252,139,160,196,77,193,40,64,111,146,177,79,176,252,119,56,63,201,128,147,183,113,238,83,186,122,48,207,112,223,208,141,136,15,7,160,75,162,241,232,163,219,82,112,195,201,127,167,65,198,3,69,87,172,65,114,250,3,171,191,186,225,80,57,234,0,69,232,160,127,109,135,5,91,14,52,158,3,58,197,241,234,122,209,246,80,189,236,71,170,202,179,225,117,89,145,217,161,88,47,221,160,130,89,138,158,232,170,174,131,222,86,82,63,113,45,63,172,159,248,227,154,225,38,68,6,123,11,20,44,73,22,208,245,160,228,141,31,209,214,192,178,116,232,111,183,225,107,177,191,236,239,12,234,76,35,3,4,185,246,219,146,41,177,16,235,82,160,67,201,47,145,5,245,179,22,162,115,24,127,33,73,67,134,127,184,149,224,209,139,130,237,14,13,157,113,244,162,185,142,160,35,24,83,139,246,120,41,145,224,109,131,133,74,121,110,213,183,151,106,227,38,206,153,182,140,195,245,147,183,166,255,106,160,115,55,215,251,247,190,44,206,83,59,75,46,234,152,195,151,225,149,203,164,167,128,164,83,169,118,98,165,191,203,121,208,160,207,52,88,28,243,113,89,151,204,35,148,247,86,45,105,50,41,10,127,16,234,231,222,250,213,233,192,209,40,230,82,102,160,131,14,117,4,199,136,223,98,123,88,152,103,88,41,186,137,138,33,139,237,38,8,219,151,231,42,129,135,20,205,103,42,160,178,27,227,169,202,248,237,160,156,114,67,166,251,197,166,44,240,127,48,176,214,213,138,242,210,37,98,41,242,28,114,195,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,137,68,62,135,142,116,197,167,39,98,28,89,252,97,156,35,155,233,70,29,115,116,30,85,137,229,3,15,107,203,129,252,0],[160,224,160,204,190,106,167,16,212,235,11,226,108,59,160,52,125,3,125,243,15,78,7,190,253,109,248,53,214,201,201,135,57,0],[160,17,84,74,151,98,196,80,82,72,186,173,203,204,31,89,3,74,232,235,66,236,154,177,103,147,10,142,218,202,116,159,78,0],[160,219,8,183,90,235,109,52,204,204,61,58,195,223,208,61,23,236,15,60,255,59,137,37,215,155,122,155,101,129,65,230,109,0],[160,219,39,168,105,170,148,33,138,92,66,165,202,94,178,218,54,178,164,107,163,226,140,194,2,108,29,58,34,49,24,35,154,0],[160,20,201,48,125,106,95,70,245,43,40,78,34,127,24,131,45,249,87,197,126,200,97,136,55,1,32,185,140,1,37,42,165,0],[160,109,94,163,82,0,89,36,85,167,245,93,62,24,177,135,248,110,173,175,72,125,142,151,15,199,63,156,209,150,219,35,97,0],[160,159,64,83,229,94,17,127,129,72,92,132,106,33,193,203,131,245,97,158,94,150,215,130,236,16,152,23,172,122,252,183,237,0],[160,162,93,250,95,66,110,127,128,166,120,103,183,254,92,89,160,235,12,156,126,64,23,110,160,240,211,42,88,249,192,206,181,0],[160,225,194,238,28,10,40,3,144,106,215,95,222,218,42,78,159,229,128,214,238,113,135,141,231,197,94,58,45,211,63,237,94,0],[160,212,177,140,71,81,143,180,205,247,2,100,154,26,76,102,220,198,74,22,101,203,183,59,189,161,37,172,158,103,224,99,13,0],[160,185,0,22,228,174,41,147,232,48,15,8,119,0,27,195,169,145,96,179,189,107,136,134,190,91,235,9,118,208,32,43,65,0],[160,88,161,73,215,119,105,31,137,79,37,128,65,178,225,59,112,49,222,175,14,222,21,64,143,155,35,156,72,27,226,127,92,0],[160,127,196,19,9,69,235,2,36,176,187,18,133,248,13,13,39,229,137,100,92,244,157,137,157,69,165,1,59,158,103,29,190,0],[160,156,159,70,239,242,254,168,166,193,86,214,216,34,92,173,73,166,75,125,146,66,129,135,156,203,17,156,101,63,46,137,133,0],[160,79,220,223,102,181,54,179,73,46,230,56,51,45,188,217,114,228,245,173,26,242,236,71,226,43,121,6,7,201,6,202,147,0],[160,61,193,91,157,18,102,143,88,98,133,111,243,121,221,174,228,112,33,42,227,75,180,27,28,154,129,226,177,103,111,215,173,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,224,160,204,190,106,167,16,212,235,11,226,108,59,160,52,125,3,125,243,15,78,7,190,253,109,248,53,214,201,201,135,57,160,17,84,74,151,98,196,80,82,72,186,173,203,204,31,89,3,74,232,235,66,236,154,177,103,147,10,142,218,202,116,159,78,160,219,8,183,90,235,109,52,204,204,61,58,195,223,208,61,23,236,15,60,255,59,137,37,215,155,122,155,101,129,65,230,109,160,219,39,168,105,170,148,33,138,92,66,165,202,94,178,218,54,178,164,107,163,226,140,194,2,108,29,58,34,49,24,35,154,160,20,201,48,125,106,95,70,245,43,40,78,34,127,24,131,45,249,87,197,126,200,97,136,55,1,32,185,140,1,37,42,165,160,109,94,163,82,0,89,36,85,167,245,93,62,24,177,135,248,110,173,175,72,125,142,151,15,199,63,156,209,150,219,35,97,160,159,64,83,229,94,17,127,129,72,92,132,106,33,193,203,131,245,97,158,94,150,215,130,236,16,152,23,172,122,252,183,237,160,162,93,250,95,66,110,127,128,166,120,103,183,254,92,89,160,235,12,156,126,64,23,110,160,240,211,42,88,249,192,206,181,160,225,194,238,28,10,40,3,144,106,215,95,222,218,42,78,159,229,128,214,238,113,135,141,231,197,94,58,45,211,63,237,94,160,212,177,140,71,81,143,180,205,247,2,100,154,26,76,102,220,198,74,22,101,203,183,59,189,161,37,172,158,103,224,99,13,160,185,0,22,228,174,41,147,232,48,15,8,119,0,27,195,169,145,96,179,189,107,136,134,190,91,235,9,118,208,32,43,65,160,88,161,73,215,119,105,31,137,79,37,128,65,178,225,59,112,49,222,175,14,222,21,64,143,155,35,156,72,27,226,127,92,160,127,196,19,9,69,235,2,36,176,187,18,133,248,13,13,39,229,137,100,92,244,157,137,157,69,165,1,59,158,103,29,190,160,156,159,70,239,242,254,168,166,193,86,214,216,34,92,173,73,166,75,125,146,66,129,135,156,203,17,156,101,63,46,137,133,160,79,220,223,102,181,54,179,73,46,230,56,51,45,188,217,114,228,245,173,26,242,236,71,226,43,121,6,7,201,6,202,147,160,61,193,91,157,18,102,143,88,98,133,111,243,121,221,174,228,112,33,42,227,75,180,27,28,154,129,226,177,103,111,215,173,128],[249,2,17,160,224,160,204,190,106,167,16,212,235,11,226,108,59,160,52,125,3,125,243,15,78,7,190,253,109,248,53,214,201,201,135,57,160,17,84,74,151,98,196,80,82,72,186,173,203,204,31,89,3,74,232,235,66,236,154,177,103,147,10,142,218,202,116,159,78,160,219,8,183,90,235,109,52,204,204,61,58,195,223,208,61,23,236,15,60,255,59,137,37,215,155,122,155,101,129,65,230,109,160,137,68,62,135,142,116,197,167,39,98,28,89,252,97,156,35,155,233,70,29,115,116,30,85,137,229,3,15,107,203,129,252,160,20,201,48,125,106,95,70,245,43,40,78,34,127,24,131,45,249,87,197,126,200,97,136,55,1,32,185,140,1,37,42,165,160,109,94,163,82,0,89,36,85,167,245,93,62,24,177,135,248,110,173,175,72,125,142,151,15,199,63,156,209,150,219,35,97,160,159,64,83,229,94,17,127,129,72,92,132,106,33,193,203,131,245,97,158,94,150,215,130,236,16,152,23,172,122,252,183,237,160,162,93,250,95,66,110,127,128,166,120,103,183,254,92,89,160,235,12,156,126,64,23,110,160,240,211,42,88,249,192,206,181,160,225,194,238,28,10,40,3,144,106,215,95,222,218,42,78,159,229,128,214,238,113,135,141,231,197,94,58,45,211,63,237,94,160,212,177,140,71,81,143,180,205,247,2,100,154,26,76,102,220,198,74,22,101,203,183,59,189,161,37,172,158,103,224,99,13,160,185,0,22,228,174,41,147,232,48,15,8,119,0,27,195,169,145,96,179,189,107,136,134,190,91,235,9,118,208,32,43,65,160,88,161,73,215,119,105,31,137,79,37,128,65,178,225,59,112,49,222,175,14,222,21,64,143,155,35,156,72,27,226,127,92,160,127,196,19,9,69,235,2,36,176,187,18,133,248,13,13,39,229,137,100,92,244,157,137,157,69,165,1,59,158,103,29,190,160,156,159,70,239,242,254,168,166,193,86,214,216,34,92,173,73,166,75,125,146,66,129,135,156,203,17,156,101,63,46,137,133,160,79,220,223,102,181,54,179,73,46,230,56,51,45,188,217,114,228,245,173,26,242,236,71,226,43,121,6,7,201,6,202,147,160,61,193,91,157,18,102,143,88,98,133,111,243,121,221,174,228,112,33,42,227,75,180,27,28,154,129,226,177,103,111,215,173,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,145,247,80,205,212,229,167,129,12,236,64,245,147,52,217,200,219,137,34,122,205,244,88,173,196,166,241,13,37,91,80,183,0],[160,14,165,6,22,159,188,24,51,92,136,212,250,222,234,56,117,11,228,154,151,111,209,12,140,170,56,169,141,202,226,135,93,0],[160,58,215,220,199,105,41,206,80,134,211,251,156,150,93,2,1,51,119,121,250,120,153,68,114,166,58,169,187,227,10,57,39,0],[160,254,121,107,132,102,105,40,187,183,208,54,184,59,170,24,196,133,142,10,221,38,105,35,74,58,136,157,132,169,134,197,137,0],[160,156,244,77,9,97,153,114,240,195,225,161,224,205,77,130,121,225,42,224,17,155,244,44,223,217,225,237,215,170,53,91,122,0],[160,218,98,175,122,220,199,62,137,60,60,197,211,142,60,71,189,118,201,107,68,25,32,247,176,36,95,83,115,252,231,68,124,0],[160,76,185,199,60,210,76,64,221,170,191,1,8,21,21,232,251,198,18,19,75,44,125,231,141,122,159,42,245,13,222,134,206,0],[160,29,227,227,74,123,232,228,162,37,84,224,181,162,51,6,211,171,240,206,246,75,251,173,126,128,120,180,89,252,60,255,112,0],[160,110,12,187,41,44,116,38,125,98,174,44,153,47,236,251,12,14,124,122,7,202,17,194,152,177,238,87,113,180,170,66,183,0],[160,64,128,191,170,145,135,120,255,168,8,111,181,166,68,105,16,210,123,232,189,45,173,105,240,243,193,133,162,52,107,85,144,0],[160,243,229,3,215,98,10,225,162,158,154,0,155,9,118,106,50,10,187,88,35,19,135,15,158,232,252,37,162,81,149,205,170,0],[160,249,199,112,122,102,67,120,26,30,110,90,229,222,253,12,151,148,125,103,16,178,146,75,214,232,124,40,10,93,197,224,238,0],[160,187,149,161,188,140,232,33,123,135,65,167,159,176,86,6,108,140,83,67,222,75,115,112,131,235,102,79,178,78,37,2,224,0],[160,85,125,105,118,184,58,228,68,165,55,100,151,40,61,75,44,223,114,244,82,233,73,241,28,55,15,189,97,252,197,95,206,0],[160,93,235,84,57,207,137,206,63,27,246,129,212,131,57,16,108,30,127,10,61,175,185,212,53,83,217,16,74,68,18,243,132,0],[160,110,47,15,54,42,42,169,161,252,233,82,121,219,20,191,148,239,32,164,98,111,155,22,179,255,35,252,248,76,103,206,209,0],[160,130,74,220,188,50,216,130,35,199,98,203,47,119,79,38,6,106,137,130,81,35,226,191,113,96,219,218,33,190,77,71,33,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,14,165,6,22,159,188,24,51,92,136,212,250,222,234,56,117,11,228,154,151,111,209,12,140,170,56,169,141,202,226,135,93,160,58,215,220,199,105,41,206,80,134,211,251,156,150,93,2,1,51,119,121,250,120,153,68,114,166,58,169,187,227,10,57,39,160,254,121,107,132,102,105,40,187,183,208,54,184,59,170,24,196,133,142,10,221,38,105,35,74,58,136,157,132,169,134,197,137,160,156,244,77,9,97,153,114,240,195,225,161,224,205,77,130,121,225,42,224,17,155,244,44,223,217,225,237,215,170,53,91,122,160,218,98,175,122,220,199,62,137,60,60,197,211,142,60,71,189,118,201,107,68,25,32,247,176,36,95,83,115,252,231,68,124,160,76,185,199,60,210,76,64,221,170,191,1,8,21,21,232,251,198,18,19,75,44,125,231,141,122,159,42,245,13,222,134,206,160,29,227,227,74,123,232,228,162,37,84,224,181,162,51,6,211,171,240,206,246,75,251,173,126,128,120,180,89,252,60,255,112,160,110,12,187,41,44,116,38,125,98,174,44,153,47,236,251,12,14,124,122,7,202,17,194,152,177,238,87,113,180,170,66,183,160,64,128,191,170,145,135,120,255,168,8,111,181,166,68,105,16,210,123,232,189,45,173,105,240,243,193,133,162,52,107,85,144,160,243,229,3,215,98,10,225,162,158,154,0,155,9,118,106,50,10,187,88,35,19,135,15,158,232,252,37,162,81,149,205,170,160,249,199,112,122,102,67,120,26,30,110,90,229,222,253,12,151,148,125,103,16,178,146,75,214,232,124,40,10,93,197,224,238,160,187,149,161,188,140,232,33,123,135,65,167,159,176,86,6,108,140,83,67,222,75,115,112,131,235,102,79,178,78,37,2,224,160,85,125,105,118,184,58,228,68,165,55,100,151,40,61,75,44,223,114,244,82,233,73,241,28,55,15,189,97,252,197,95,206,160,93,235,84,57,207,137,206,63,27,246,129,212,131,57,16,108,30,127,10,61,175,185,212,53,83,217,16,74,68,18,243,132,160,110,47,15,54,42,42,169,161,252,233,82,121,219,20,191,148,239,32,164,98,111,155,22,179,255,35,252,248,76,103,206,209,160,130,74,220,188,50,216,130,35,199,98,203,47,119,79,38,6,106,137,130,81,35,226,191,113,96,219,218,33,190,77,71,33,128],[249,2,17,160,14,165,6,22,159,188,24,51,92,136,212,250,222,234,56,117,11,228,154,151,111,209,12,140,170,56,169,141,202,226,135,93,160,58,215,220,199,105,41,206,80,134,211,251,156,150,93,2,1,51,119,121,250,120,153,68,114,166,58,169,187,227,10,57,39,160,254,121,107,132,102,105,40,187,183,208,54,184,59,170,24,196,133,142,10,221,38,105,35,74,58,136,157,132,169,134,197,137,160,156,244,77,9,97,153,114,240,195,225,161,224,205,77,130,121,225,42,224,17,155,244,44,223,217,225,237,215,170,53,91,122,160,218,98,175,122,220,199,62,137,60,60,197,211,142,60,71,189,118,201,107,68,25,32,247,176,36,95,83,115,252,231,68,124,160,76,185,199,60,210,76,64,221,170,191,1,8,21,21,232,251,198,18,19,75,44,125,231,141,122,159,42,245,13,222,134,206,160,29,227,227,74,123,232,228,162,37,84,224,181,162,51,6,211,171,240,206,246,75,251,173,126,128,120,180,89,252,60,255,112,160,110,12,187,41,44,116,38,125,98,174,44,153,47,236,251,12,14,124,122,7,202,17,194,152,177,238,87,113,180,170,66,183,160,145,247,80,205,212,229,167,129,12,236,64,245,147,52,217,200,219,137,34,122,205,244,88,173,196,166,241,13,37,91,80,183,160,243,229,3,215,98,10,225,162,158,154,0,155,9,118,106,50,10,187,88,35,19,135,15,158,232,252,37,162,81,149,205,170,160,249,199,112,122,102,67,120,26,30,110,90,229,222,253,12,151,148,125,103,16,178,146,75,214,232,124,40,10,93,197,224,238,160,187,149,161,188,140,232,33,123,135,65,167,159,176,86,6,108,140,83,67,222,75,115,112,131,235,102,79,178,78,37,2,224,160,85,125,105,118,184,58,228,68,165,55,100,151,40,61,75,44,223,114,244,82,233,73,241,28,55,15,189,97,252,197,95,206,160,93,235,84,57,207,137,206,63,27,246,129,212,131,57,16,108,30,127,10,61,175,185,212,53,83,217,16,74,68,18,243,132,160,110,47,15,54,42,42,169,161,252,233,82,121,219,20,191,148,239,32,164,98,111,155,22,179,255,35,252,248,76,103,206,209,160,130,74,220,188,50,216,130,35,199,98,203,47,119,79,38,6,106,137,130,81,35,226,191,113,96,219,218,33,190,77,71,33,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,163,100,192,106,162,58,104,148,86,3,234,188,204,97,49,224,245,221,61,60,255,110,119,144,128,13,13,5,141,16,217,194,0],[160,114,169,150,67,126,160,37,45,196,35,158,193,130,105,156,136,104,12,57,32,0,91,59,199,69,164,98,111,63,37,167,195,0],[160,163,93,181,110,7,170,52,140,159,162,133,57,154,50,13,236,53,68,94,97,171,111,174,64,139,185,171,218,143,142,148,123,0],[160,89,101,138,104,124,167,204,129,19,206,81,255,89,12,40,119,16,139,90,128,79,182,53,236,183,158,143,16,70,231,149,193,0],[160,109,229,158,157,53,55,221,1,108,64,70,21,103,227,89,63,41,178,232,224,124,70,202,161,113,44,13,156,121,193,255,20,0],[160,221,153,17,178,250,69,42,155,168,117,5,76,116,59,219,17,215,137,246,93,173,42,132,179,89,3,221,81,200,226,242,76,0],[160,166,247,119,255,141,32,87,23,158,246,201,67,72,218,115,220,147,2,57,152,104,47,157,114,2,240,168,184,163,129,175,97,0],[160,240,13,118,223,196,63,180,101,73,134,26,211,112,201,84,141,74,12,182,182,183,182,139,187,228,136,120,209,169,140,102,112,0],[160,73,14,111,5,216,66,44,129,241,209,96,45,3,65,117,239,75,52,39,122,202,65,71,157,74,186,251,93,245,118,70,72,0],[160,5,159,121,86,8,244,0,141,254,173,202,208,32,106,157,32,7,160,225,59,222,193,67,59,241,30,30,10,171,20,204,195,0],[160,248,40,170,149,53,183,57,200,51,10,58,48,116,53,48,191,226,47,66,49,236,28,209,34,6,138,247,161,65,130,165,205,0],[160,223,23,143,249,54,69,146,158,94,52,41,214,25,130,31,11,46,206,6,136,242,64,92,139,128,254,62,52,184,68,165,87,0],[160,50,63,132,137,145,37,164,51,106,185,56,26,236,211,36,219,74,195,1,72,226,190,85,235,45,147,12,159,230,107,228,118,0],[160,156,207,33,90,28,218,205,59,181,230,91,85,79,1,145,132,45,149,71,130,102,184,118,55,4,236,198,199,39,34,133,44,0],[160,0,91,91,215,103,36,23,219,144,147,100,37,76,66,0,245,195,232,11,231,167,60,136,206,114,255,173,91,238,51,237,32,0],[160,245,145,188,199,173,92,69,232,8,24,232,8,41,76,255,161,12,251,50,198,114,108,9,42,173,119,30,20,38,57,241,233,0],[160,217,231,119,198,101,67,79,20,25,69,229,209,80,175,171,219,174,145,108,238,170,139,12,158,234,156,73,29,226,166,63,105,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,114,169,150,67,126,160,37,45,196,35,158,193,130,105,156,136,104,12,57,32,0,91,59,199,69,164,98,111,63,37,167,195,160,163,93,181,110,7,170,52,140,159,162,133,57,154,50,13,236,53,68,94,97,171,111,174,64,139,185,171,218,143,142,148,123,160,89,101,138,104,124,167,204,129,19,206,81,255,89,12,40,119,16,139,90,128,79,182,53,236,183,158,143,16,70,231,149,193,160,109,229,158,157,53,55,221,1,108,64,70,21,103,227,89,63,41,178,232,224,124,70,202,161,113,44,13,156,121,193,255,20,160,221,153,17,178,250,69,42,155,168,117,5,76,116,59,219,17,215,137,246,93,173,42,132,179,89,3,221,81,200,226,242,76,160,166,247,119,255,141,32,87,23,158,246,201,67,72,218,115,220,147,2,57,152,104,47,157,114,2,240,168,184,163,129,175,97,160,240,13,118,223,196,63,180,101,73,134,26,211,112,201,84,141,74,12,182,182,183,182,139,187,228,136,120,209,169,140,102,112,160,73,14,111,5,216,66,44,129,241,209,96,45,3,65,117,239,75,52,39,122,202,65,71,157,74,186,251,93,245,118,70,72,160,5,159,121,86,8,244,0,141,254,173,202,208,32,106,157,32,7,160,225,59,222,193,67,59,241,30,30,10,171,20,204,195,160,248,40,170,149,53,183,57,200,51,10,58,48,116,53,48,191,226,47,66,49,236,28,209,34,6,138,247,161,65,130,165,205,160,223,23,143,249,54,69,146,158,94,52,41,214,25,130,31,11,46,206,6,136,242,64,92,139,128,254,62,52,184,68,165,87,160,50,63,132,137,145,37,164,51,106,185,56,26,236,211,36,219,74,195,1,72,226,190,85,235,45,147,12,159,230,107,228,118,160,156,207,33,90,28,218,205,59,181,230,91,85,79,1,145,132,45,149,71,130,102,184,118,55,4,236,198,199,39,34,133,44,160,0,91,91,215,103,36,23,219,144,147,100,37,76,66,0,245,195,232,11,231,167,60,136,206,114,255,173,91,238,51,237,32,160,245,145,188,199,173,92,69,232,8,24,232,8,41,76,255,161,12,251,50,198,114,108,9,42,173,119,30,20,38,57,241,233,160,217,231,119,198,101,67,79,20,25,69,229,209,80,175,171,219,174,145,108,238,170,139,12,158,234,156,73,29,226,166,63,105,128],[249,2,17,160,163,100,192,106,162,58,104,148,86,3,234,188,204,97,49,224,245,221,61,60,255,110,119,144,128,13,13,5,141,16,217,194,160,163,93,181,110,7,170,52,140,159,162,133,57,154,50,13,236,53,68,94,97,171,111,174,64,139,185,171,218,143,142,148,123,160,89,101,138,104,124,167,204,129,19,206,81,255,89,12,40,119,16,139,90,128,79,182,53,236,183,158,143,16,70,231,149,193,160,109,229,158,157,53,55,221,1,108,64,70,21,103,227,89,63,41,178,232,224,124,70,202,161,113,44,13,156,121,193,255,20,160,221,153,17,178,250,69,42,155,168,117,5,76,116,59,219,17,215,137,246,93,173,42,132,179,89,3,221,81,200,226,242,76,160,166,247,119,255,141,32,87,23,158,246,201,67,72,218,115,220,147,2,57,152,104,47,157,114,2,240,168,184,163,129,175,97,160,240,13,118,223,196,63,180,101,73,134,26,211,112,201,84,141,74,12,182,182,183,182,139,187,228,136,120,209,169,140,102,112,160,73,14,111,5,216,66,44,129,241,209,96,45,3,65,117,239,75,52,39,122,202,65,71,157,74,186,251,93,245,118,70,72,160,5,159,121,86,8,244,0,141,254,173,202,208,32,106,157,32,7,160,225,59,222,193,67,59,241,30,30,10,171,20,204,195,160,248,40,170,149,53,183,57,200,51,10,58,48,116,53,48,191,226,47,66,49,236,28,209,34,6,138,247,161,65,130,165,205,160,223,23,143,249,54,69,146,158,94,52,41,214,25,130,31,11,46,206,6,136,242,64,92,139,128,254,62,52,184,68,165,87,160,50,63,132,137,145,37,164,51,106,185,56,26,236,211,36,219,74,195,1,72,226,190,85,235,45,147,12,159,230,107,228,118,160,156,207,33,90,28,218,205,59,181,230,91,85,79,1,145,132,45,149,71,130,102,184,118,55,4,236,198,199,39,34,133,44,160,0,91,91,215,103,36,23,219,144,147,100,37,76,66,0,245,195,232,11,231,167,60,136,206,114,255,173,91,238,51,237,32,160,245,145,188,199,173,92,69,232,8,24,232,8,41,76,255,161,12,251,50,198,114,108,9,42,173,119,30,20,38,57,241,233,160,217,231,119,198,101,67,79,20,25,69,229,209,80,175,171,219,174,145,108,238,170,139,12,158,234,156,73,29,226,166,63,105,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,228,158,57,108,78,64,31,117,238,78,34,102,0,142,86,12,2,235,252,132,154,165,183,50,101,32,174,135,71,222,18,60,0],[160,249,154,157,252,169,130,24,178,174,188,10,171,75,183,151,101,201,122,75,227,204,1,183,197,39,220,59,31,175,6,136,1,0],[160,184,142,212,113,246,55,253,76,1,96,48,47,4,6,31,60,81,16,37,23,98,74,116,239,128,102,34,186,6,209,163,252,0],[160,83,49,16,87,146,238,231,234,169,86,188,172,17,210,186,17,108,226,232,48,238,231,61,144,77,111,6,163,52,21,1,75,0],[160,85,105,46,246,56,202,27,171,173,252,32,70,26,164,200,4,132,8,191,26,18,6,71,136,185,84,78,116,7,105,173,129,0],[160,56,132,5,71,86,15,137,93,78,3,221,107,3,241,13,146,241,12,153,14,12,71,119,199,92,129,129,64,191,22,218,171,0],[160,74,152,77,40,170,9,167,165,62,21,195,214,232,149,243,171,254,129,253,48,247,58,144,37,151,98,228,162,171,212,118,94,0],[160,216,173,107,1,206,168,79,67,71,139,41,217,6,54,2,59,87,23,198,126,160,129,101,185,188,218,82,112,3,173,165,164,0],[160,10,108,143,193,28,22,98,217,170,73,112,161,147,45,94,6,170,154,118,245,159,193,129,134,168,141,165,46,135,253,62,233,0],[160,157,163,165,178,129,84,193,250,46,88,180,214,229,194,39,227,117,109,170,6,239,51,115,35,138,204,57,20,179,114,222,196,0],[160,84,63,203,152,213,1,33,249,178,42,184,49,101,22,19,190,104,212,252,175,25,222,119,46,136,149,187,198,6,220,244,65,0],[160,28,82,38,21,32,27,203,97,109,14,13,160,185,224,39,253,231,2,71,156,220,61,107,173,151,165,136,128,233,227,25,102,0],[160,216,163,73,96,11,93,139,116,117,170,134,116,167,172,140,76,88,172,241,80,233,174,88,236,216,40,105,148,196,72,55,110,0],[160,139,0,229,37,13,50,83,68,16,211,187,98,200,30,132,6,211,202,190,79,179,123,82,201,226,252,23,172,136,123,215,243,0],[160,171,186,147,212,217,108,150,242,229,123,37,215,92,93,99,231,42,158,24,113,106,176,203,138,144,205,0,49,141,149,241,220,0],[160,38,163,54,181,99,160,35,20,180,245,23,232,11,219,158,228,231,101,66,195,191,164,200,124,7,9,46,208,220,49,64,95,0],[160,33,177,178,122,210,148,189,146,118,70,198,203,190,0,165,116,103,95,242,102,64,148,40,228,179,1,21,209,86,177,4,176,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,249,154,157,252,169,130,24,178,174,188,10,171,75,183,151,101,201,122,75,227,204,1,183,197,39,220,59,31,175,6,136,1,160,184,142,212,113,246,55,253,76,1,96,48,47,4,6,31,60,81,16,37,23,98,74,116,239,128,102,34,186,6,209,163,252,160,83,49,16,87,146,238,231,234,169,86,188,172,17,210,186,17,108,226,232,48,238,231,61,144,77,111,6,163,52,21,1,75,160,85,105,46,246,56,202,27,171,173,252,32,70,26,164,200,4,132,8,191,26,18,6,71,136,185,84,78,116,7,105,173,129,160,56,132,5,71,86,15,137,93,78,3,221,107,3,241,13,146,241,12,153,14,12,71,119,199,92,129,129,64,191,22,218,171,160,74,152,77,40,170,9,167,165,62,21,195,214,232,149,243,171,254,129,253,48,247,58,144,37,151,98,228,162,171,212,118,94,160,216,173,107,1,206,168,79,67,71,139,41,217,6,54,2,59,87,23,198,126,160,129,101,185,188,218,82,112,3,173,165,164,160,10,108,143,193,28,22,98,217,170,73,112,161,147,45,94,6,170,154,118,245,159,193,129,134,168,141,165,46,135,253,62,233,160,157,163,165,178,129,84,193,250,46,88,180,214,229,194,39,227,117,109,170,6,239,51,115,35,138,204,57,20,179,114,222,196,160,84,63,203,152,213,1,33,249,178,42,184,49,101,22,19,190,104,212,252,175,25,222,119,46,136,149,187,198,6,220,244,65,160,28,82,38,21,32,27,203,97,109,14,13,160,185,224,39,253,231,2,71,156,220,61,107,173,151,165,136,128,233,227,25,102,160,216,163,73,96,11,93,139,116,117,170,134,116,167,172,140,76,88,172,241,80,233,174,88,236,216,40,105,148,196,72,55,110,160,139,0,229,37,13,50,83,68,16,211,187,98,200,30,132,6,211,202,190,79,179,123,82,201,226,252,23,172,136,123,215,243,160,171,186,147,212,217,108,150,242,229,123,37,215,92,93,99,231,42,158,24,113,106,176,203,138,144,205,0,49,141,149,241,220,160,38,163,54,181,99,160,35,20,180,245,23,232,11,219,158,228,231,101,66,195,191,164,200,124,7,9,46,208,220,49,64,95,160,33,177,178,122,210,148,189,146,118,70,198,203,190,0,165,116,103,95,242,102,64,148,40,228,179,1,21,209,86,177,4,176,128],[249,2,17,160,249,154,157,252,169,130,24,178,174,188,10,171,75,183,151,101,201,122,75,227,204,1,183,197,39,220,59,31,175,6,136,1,160,184,142,212,113,246,55,253,76,1,96,48,47,4,6,31,60,81,16,37,23,98,74,116,239,128,102,34,186,6,209,163,252,160,83,49,16,87,146,238,231,234,169,86,188,172,17,210,186,17,108,226,232,48,238,231,61,144,77,111,6,163,52,21,1,75,160,85,105,46,246,56,202,27,171,173,252,32,70,26,164,200,4,132,8,191,26,18,6,71,136,185,84,78,116,7,105,173,129,160,56,132,5,71,86,15,137,93,78,3,221,107,3,241,13,146,241,12,153,14,12,71,119,199,92,129,129,64,191,22,218,171,160,74,152,77,40,170,9,167,165,62,21,195,214,232,149,243,171,254,129,253,48,247,58,144,37,151,98,228,162,171,212,118,94,160,216,173,107,1,206,168,79,67,71,139,41,217,6,54,2,59,87,23,198,126,160,129,101,185,188,218,82,112,3,173,165,164,160,10,108,143,193,28,22,98,217,170,73,112,161,147,45,94,6,170,154,118,245,159,193,129,134,168,141,165,46,135,253,62,233,160,157,163,165,178,129,84,193,250,46,88,180,214,229,194,39,227,117,109,170,6,239,51,115,35,138,204,57,20,179,114,222,196,160,84,63,203,152,213,1,33,249,178,42,184,49,101,22,19,190,104,212,252,175,25,222,119,46,136,149,187,198,6,220,244,65,160,28,82,38,21,32,27,203,97,109,14,13,160,185,224,39,253,231,2,71,156,220,61,107,173,151,165,136,128,233,227,25,102,160,216,163,73,96,11,93,139,116,117,170,134,116,167,172,140,76,88,172,241,80,233,174,88,236,216,40,105,148,196,72,55,110,160,228,158,57,108,78,64,31,117,238,78,34,102,0,142,86,12,2,235,252,132,154,165,183,50,101,32,174,135,71,222,18,60,160,171,186,147,212,217,108,150,242,229,123,37,215,92,93,99,231,42,158,24,113,106,176,203,138,144,205,0,49,141,149,241,220,160,38,163,54,181,99,160,35,20,180,245,23,232,11,219,158,228,231,101,66,195,191,164,200,124,7,9,46,208,220,49,64,95,160,33,177,178,122,210,148,189,146,118,70,198,203,190,0,165,116,103,95,242,102,64,148,40,228,179,1,21,209,86,177,4,176,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,65,13,93,197,146,130,105,154,27,226,3,225,0,36,42,223,154,201,134,174,73,54,138,186,59,44,139,52,224,81,241,214,0],[160,106,16,111,21,123,135,16,90,41,91,246,76,214,12,169,46,0,6,39,164,82,189,246,42,69,8,101,99,152,204,132,100,0],[160,60,34,149,73,115,93,160,163,67,8,20,68,149,254,38,185,86,202,77,136,16,235,61,244,182,40,227,137,94,14,242,214,0],[160,238,127,9,174,221,194,94,32,49,180,73,73,92,78,98,80,138,78,97,4,142,231,113,17,18,114,230,254,191,151,134,171,0],[160,201,42,66,167,18,48,157,234,238,225,227,80,220,29,160,71,88,29,218,217,33,150,214,240,209,128,11,236,159,130,108,69,0],[160,2,92,117,139,0,110,75,150,33,162,159,244,223,76,12,104,29,96,36,207,182,225,171,255,178,16,146,250,3,99,230,197,0],[160,216,217,232,12,128,20,245,47,3,73,156,242,47,134,209,88,97,63,164,32,56,2,254,249,129,198,15,120,58,254,148,8,0],[160,245,175,212,144,210,121,74,226,116,11,145,233,6,146,77,105,66,135,253,195,249,248,244,117,97,69,128,138,168,72,29,141,0],[160,53,195,249,111,139,115,176,153,148,53,206,71,173,38,237,25,215,168,204,248,113,104,32,191,231,113,113,210,118,251,47,206,0],[160,235,75,20,132,9,45,56,217,6,169,194,35,234,249,44,149,165,145,171,86,205,142,208,114,153,57,123,190,191,63,121,18,0],[160,12,198,148,204,70,121,49,135,169,52,154,161,57,227,133,67,176,170,137,161,64,122,52,3,44,215,205,187,225,127,137,24,0],[160,67,138,196,199,169,8,184,226,56,85,11,150,122,188,206,85,202,62,46,186,238,95,9,157,3,69,71,72,126,228,248,148,0],[160,25,233,52,15,104,218,115,250,187,68,62,245,205,199,70,63,6,123,22,218,29,85,122,62,215,226,215,166,16,167,189,234,0],[160,98,194,154,151,239,160,156,131,232,74,193,222,232,242,255,120,231,207,47,165,244,253,125,74,3,178,193,181,42,106,252,211,0],[160,72,2,45,177,8,11,109,126,117,186,10,93,244,238,114,168,190,92,94,154,43,232,11,135,170,167,55,237,148,72,150,116,0],[160,154,222,66,92,165,73,98,221,115,238,103,253,112,232,74,60,48,132,0,178,72,97,37,254,172,227,79,219,137,95,92,60,0],[160,64,246,176,183,91,200,127,120,56,98,203,181,53,14,244,34,143,152,0,235,141,69,29,162,2,91,49,155,66,78,154,38,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,106,16,111,21,123,135,16,90,41,91,246,76,214,12,169,46,0,6,39,164,82,189,246,42,69,8,101,99,152,204,132,100,160,60,34,149,73,115,93,160,163,67,8,20,68,149,254,38,185,86,202,77,136,16,235,61,244,182,40,227,137,94,14,242,214,160,238,127,9,174,221,194,94,32,49,180,73,73,92,78,98,80,138,78,97,4,142,231,113,17,18,114,230,254,191,151,134,171,160,201,42,66,167,18,48,157,234,238,225,227,80,220,29,160,71,88,29,218,217,33,150,214,240,209,128,11,236,159,130,108,69,160,2,92,117,139,0,110,75,150,33,162,159,244,223,76,12,104,29,96,36,207,182,225,171,255,178,16,146,250,3,99,230,197,160,216,217,232,12,128,20,245,47,3,73,156,242,47,134,209,88,97,63,164,32,56,2,254,249,129,198,15,120,58,254,148,8,160,245,175,212,144,210,121,74,226,116,11,145,233,6,146,77,105,66,135,253,195,249,248,244,117,97,69,128,138,168,72,29,141,160,53,195,249,111,139,115,176,153,148,53,206,71,173,38,237,25,215,168,204,248,113,104,32,191,231,113,113,210,118,251,47,206,160,235,75,20,132,9,45,56,217,6,169,194,35,234,249,44,149,165,145,171,86,205,142,208,114,153,57,123,190,191,63,121,18,160,12,198,148,204,70,121,49,135,169,52,154,161,57,227,133,67,176,170,137,161,64,122,52,3,44,215,205,187,225,127,137,24,160,67,138,196,199,169,8,184,226,56,85,11,150,122,188,206,85,202,62,46,186,238,95,9,157,3,69,71,72,126,228,248,148,160,25,233,52,15,104,218,115,250,187,68,62,245,205,199,70,63,6,123,22,218,29,85,122,62,215,226,215,166,16,167,189,234,160,98,194,154,151,239,160,156,131,232,74,193,222,232,242,255,120,231,207,47,165,244,253,125,74,3,178,193,181,42,106,252,211,160,72,2,45,177,8,11,109,126,117,186,10,93,244,238,114,168,190,92,94,154,43,232,11,135,170,167,55,237,148,72,150,116,160,154,222,66,92,165,73,98,221,115,238,103,253,112,232,74,60,48,132,0,178,72,97,37,254,172,227,79,219,137,95,92,60,160,64,246,176,183,91,200,127,120,56,98,203,181,53,14,244,34,143,152,0,235,141,69,29,162,2,91,49,155,66,78,154,38,128],[249,2,17,160,106,16,111,21,123,135,16,90,41,91,246,76,214,12,169,46,0,6,39,164,82,189,246,42,69,8,101,99,152,204,132,100,160,60,34,149,73,115,93,160,163,67,8,20,68,149,254,38,185,86,202,77,136,16,235,61,244,182,40,227,137,94,14,242,214,160,238,127,9,174,221,194,94,32,49,180,73,73,92,78,98,80,138,78,97,4,142,231,113,17,18,114,230,254,191,151,134,171,160,201,42,66,167,18,48,157,234,238,225,227,80,220,29,160,71,88,29,218,217,33,150,214,240,209,128,11,236,159,130,108,69,160,2,92,117,139,0,110,75,150,33,162,159,244,223,76,12,104,29,96,36,207,182,225,171,255,178,16,146,250,3,99,230,197,160,216,217,232,12,128,20,245,47,3,73,156,242,47,134,209,88,97,63,164,32,56,2,254,249,129,198,15,120,58,254,148,8,160,245,175,212,144,210,121,74,226,116,11,145,233,6,146,77,105,66,135,253,195,249,248,244,117,97,69,128,138,168,72,29,141,160,65,13,93,197,146,130,105,154,27,226,3,225,0,36,42,223,154,201,134,174,73,54,138,186,59,44,139,52,224,81,241,214,160,235,75,20,132,9,45,56,217,6,169,194,35,234,249,44,149,165,145,171,86,205,142,208,114,153,57,123,190,191,63,121,18,160,12,198,148,204,70,121,49,135,169,52,154,161,57,227,133,67,176,170,137,161,64,122,52,3,44,215,205,187,225,127,137,24,160,67,138,196,199,169,8,184,226,56,85,11,150,122,188,206,85,202,62,46,186,238,95,9,157,3,69,71,72,126,228,248,148,160,25,233,52,15,104,218,115,250,187,68,62,245,205,199,70,63,6,123,22,218,29,85,122,62,215,226,215,166,16,167,189,234,160,98,194,154,151,239,160,156,131,232,74,193,222,232,242,255,120,231,207,47,165,244,253,125,74,3,178,193,181,42,106,252,211,160,72,2,45,177,8,11,109,126,117,186,10,93,244,238,114,168,190,92,94,154,43,232,11,135,170,167,55,237,148,72,150,116,160,154,222,66,92,165,73,98,221,115,238,103,253,112,232,74,60,48,132,0,178,72,97,37,254,172,227,79,219,137,95,92,60,160,64,246,176,183,91,200,127,120,56,98,203,181,53,14,244,34,143,152,0,235,141,69,29,162,2,91,49,155,66,78,154,38,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,165,146,68,118,176,33,158,212,48,103,38,34,238,9,153,1,52,167,113,37,126,27,227,25,13,154,212,99,43,20,180,193,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,31,184,239,216,162,218,209,131,153,182,120,30,89,226,253,232,35,255,80,54,206,227,105,86,62,74,174,87,22,169,129,252,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,172,35,60,231,231,1,133,65,209,84,163,171,248,138,45,61,86,71,119,177,22,201,79,236,153,76,227,109,10,225,88,43,0],[160,253,135,76,135,54,108,10,170,247,252,207,96,101,104,75,7,69,195,220,177,99,45,100,235,176,35,207,225,85,18,146,78,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,33,45,215,46,82,62,109,31,1,35,68,61,66,198,187,70,90,197,148,155,207,148,72,174,197,28,191,217,57,58,226,79,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,64,195,200,247,169,82,45,109,245,192,2,141,144,211,96,247,60,81,105,180,207,67,77,149,53,11,238,212,62,22,115,144,0],[160,154,130,205,14,154,185,115,206,223,23,163,197,188,133,66,136,220,180,13,107,185,5,191,34,148,36,24,172,216,191,197,24,0],[160,203,223,36,48,180,143,23,179,255,230,40,112,153,88,88,64,78,4,13,226,19,168,89,214,215,65,43,135,196,33,218,233,0],[160,89,143,142,15,108,110,165,43,98,224,76,101,93,229,229,73,69,151,194,144,32,120,185,128,145,134,29,208,191,35,120,115,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,128,160,31,184,239,216,162,218,209,131,153,182,120,30,89,226,253,232,35,255,80,54,206,227,105,86,62,74,174,87,22,169,129,252,128,160,172,35,60,231,231,1,133,65,209,84,163,171,248,138,45,61,86,71,119,177,22,201,79,236,153,76,227,109,10,225,88,43,160,253,135,76,135,54,108,10,170,247,252,207,96,101,104,75,7,69,195,220,177,99,45,100,235,176,35,207,225,85,18,146,78,128,128,128,160,33,45,215,46,82,62,109,31,1,35,68,61,66,198,187,70,90,197,148,155,207,148,72,174,197,28,191,217,57,58,226,79,128,160,64,195,200,247,169,82,45,109,245,192,2,141,144,211,96,247,60,81,105,180,207,67,77,149,53,11,238,212,62,22,115,144,160,154,130,205,14,154,185,115,206,223,23,163,197,188,133,66,136,220,180,13,107,185,5,191,34,148,36,24,172,216,191,197,24,160,203,223,36,48,180,143,23,179,255,230,40,112,153,88,88,64,78,4,13,226,19,168,89,214,215,65,43,135,196,33,218,233,160,89,143,142,15,108,110,165,43,98,224,76,101,93,229,229,73,69,151,194,144,32,120,185,128,145,134,29,208,191,35,120,115,128,128,128],[249,1,17,128,160,31,184,239,216,162,218,209,131,153,182,120,30,89,226,253,232,35,255,80,54,206,227,105,86,62,74,174,87,22,169,129,252,128,160,172,35,60,231,231,1,133,65,209,84,163,171,248,138,45,61,86,71,119,177,22,201,79,236,153,76,227,109,10,225,88,43,160,253,135,76,135,54,108,10,170,247,252,207,96,101,104,75,7,69,195,220,177,99,45,100,235,176,35,207,225,85,18,146,78,128,128,128,160,33,45,215,46,82,62,109,31,1,35,68,61,66,198,187,70,90,197,148,155,207,148,72,174,197,28,191,217,57,58,226,79,128,160,64,195,200,247,169,82,45,109,245,192,2,141,144,211,96,247,60,81,105,180,207,67,77,149,53,11,238,212,62,22,115,144,160,165,146,68,118,176,33,158,212,48,103,38,34,238,9,153,1,52,167,113,37,126,27,227,25,13,154,212,99,43,20,180,193,160,203,223,36,48,180,143,23,179,255,230,40,112,153,88,88,64,78,4,13,226,19,168,89,214,215,65,43,135,196,33,218,233,160,89,143,142,15,108,110,165,43,98,224,76,101,93,229,229,73,69,151,194,144,32,120,185,128,145,134,29,208,191,35,120,115,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,156,61,130,105,255,130,63,241,57,133,74,35,136,149,194,244,92,217,47,140,38,14,111,123,32,88,27,148,57,156,205,217,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,108,185,102,52,21,10,75,241,154,209,205,29,41,234,210,116,211,39,182,196,120,254,70,36,87,14,59,127,132,143,234,49,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,91,3,68,246,89,133,57,96,176,47,140,104,126,136,36,188,61,61,40,76,103,36,98,239,83,219,110,48,108,131,241,61,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,160,108,185,102,52,21,10,75,241,154,209,205,29,41,234,210,116,211,39,182,196,120,254,70,36,87,14,59,127,132,143,234,49,128,128,160,91,3,68,246,89,133,57,96,176,47,140,104,126,136,36,188,61,61,40,76,103,36,98,239,83,219,110,48,108,131,241,61,128,128,128,128,128,128,128,128,128],[248,81,128,128,128,128,160,108,185,102,52,21,10,75,241,154,209,205,29,41,234,210,116,211,39,182,196,120,254,70,36,87,14,59,127,132,143,234,49,128,128,160,156,61,130,105,255,130,63,241,57,133,74,35,136,149,194,244,92,217,47,140,38,14,111,123,32,88,27,148,57,156,205,217,128,128,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"key":[83,128,199,183,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42],"list_rlp_bytes":[[248,112],[248,112]],"value_rlp_bytes":[[184,80],[184,80]],"value_list_rlp_bytes":[[248,78],[248,78]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,112]},"storage":null,"values":[[157,32,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42,0,0,0,0],[157,32,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[138,2,103,194,68,2,43,237,82,90,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,41,205,35,145,80,135,90,57,152,209,180,157,66,10,44,204,121,135,7,177,166,47,176,165,210,231,13,22,1,214,151,184,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[138,2,103,194,68,2,43,237,82,90,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,67,185,58,136,25,127,231,10,181,243,143,152,92,168,56,61,110,99,188,151,239,211,41,1,68,30,12,229,226,226,178,76,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,32,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42,0,0,0,0]],"keccak_data":[[248,112,157,32,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42,184,80,248,78,128,138,2,103,194,68,2,43,237,82,90,203,160,41,205,35,145,80,135,90,57,152,209,180,157,66,10,44,204,121,135,7,177,166,47,176,165,210,231,13,22,1,214,151,184,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,112,157,32,174,129,165,142,185,141,156,120,222,74,31,215,253,149,53,252,149,62,210,190,96,45,170,164,23,103,49,42,184,80,248,78,128,138,2,103,194,68,2,43,237,82,90,203,160,67,185,58,136,25,127,231,10,181,243,143,152,92,168,56,61,110,99,188,151,239,211,41,1,68,30,12,229,226,226,178,76,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[true,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":13,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,8,28,167,4,176,5,86,234,129,241,181,196,133,165,252,100,58,34,34,219,48,157,27,139,204,135,244,36,219,91,229,155,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,8,28,167,4,176,5,86,234,129,241,181,196,133,165,252,100,58,34,34,219,48,157,27,139,204,135,244,36,219,91,229,155,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,212,140,68,68,64,66,110,82,206,135,159,103,28,40,30,54,118,209,187,116,10,159,84,102,138,172,92,220,159,79,238,145,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,160,8,28,167,4,176,5,86,234,129,241,181,196,133,165,252,100,58,34,34,219,48,157,27,139,204,135,244,36,219,91,229,155,128,128,128,128,128,128,128,128,128,160,212,140,68,68,64,66,110,82,206,135,159,103,28,40,30,54,118,209,187,116,10,159,84,102,138,172,92,220,159,79,238,145,128,128,128],[248,81,128,128,128,160,8,28,167,4,176,5,86,234,129,241,181,196,133,165,252,100,58,34,34,219,48,157,27,139,204,135,244,36,219,91,229,155,128,128,128,128,128,128,128,128,128,160,212,140,68,68,64,66,110,82,206,135,159,103,28,40,30,54,118,209,187,116,10,159,84,102,138,172,92,220,159,79,238,145,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,17,16],"key":[54,212,230,98,192,127,6,152,219,175,94,117,52,54,7,215,6,40,211,98,214,78,107,108,179,193,103,99,70,189,56,30],"list_rlp_bytes":[[227],[226]],"value_rlp_bytes":[[1],[17]],"drifted_rlp_bytes":[226],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[161,32,209,145,236,75,8,192,127,93,53,202,116,112,223,227,238,49,199,204,150,64,145,212,182,41,188,172,4,67,242,116,187,180],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,54,212,230,98,192,127,6,152,219,175,94,117,52,54,7,215,6,40,211,98,214,78,107,108,179,193,103,99,70,189,56,30,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,49,145,236,75,8,192,127,93,53,202,116,112,223,227,238,49,199,204,150,64,145,212,182,41,188,172,4,67,242,116,187,180,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[227,161,32,209,145,236,75,8,192,127,93,53,202,116,112,223,227,238,49,199,204,150,64,145,212,182,41,188,172,4,67,242,116,187,180,1],[226,160,54,212,230,98,192,127,6,152,219,175,94,117,52,54,7,215,6,40,211,98,214,78,107,108,179,193,103,99,70,189,56,30,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,17,16],[226,160,49,145,236,75,8,192,127,93,53,202,116,112,223,227,238,49,199,204,150,64,145,212,182,41,188,172,4,67,242,116,187,180,1]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/UpdateOneLevel.json b/zkevm-circuits/src/mpt_circuit/tests/UpdateOneLevel.json new file mode 100644 index 0000000000..a81d190884 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/UpdateOneLevel.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,12,220,200,131,11,99,241,113,38,48,155,83,27,126,197,128,43,20,60,71,245,146,6,14,136,6,70,32,35,190,225,227,0],[160,188,253,56,169,100,2,17,242,243,234,103,159,67,42,132,225,56,107,6,1,254,5,79,2,128,110,168,245,3,1,122,124,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,242,53,142,209,2,82,55,238,235,240,245,146,164,233,25,218,193,111,191,54,29,125,47,122,203,150,59,247,37,203,201,142,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,91,17,33,207,142,243,30,99,20,173,20,129,191,59,158,186,174,22,77,226,131,140,56,74,194,53,68,176,249,189,108,176,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,91,17,33,207,142,243,30,99,20,173,20,129,191,59,158,186,174,22,77,226,131,140,56,74,194,53,68,176,249,189,108,176,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,242,53,142,209,2,82,55,238,235,240,245,146,164,233,25,218,193,111,191,54,29,125,47,122,203,150,59,247,37,203,201,142,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,241,74,61,103,119,85,240,184,127,193,61,247,232,174,103,210,182,230,195,48,64,136,119,99,2,145,239,59,167,83,220,15,0],[160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,0],[160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,0],[160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,0],[160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,0],[160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,0],[160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,0],[160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,0],[160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,0],[160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,0],[160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,0],[160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,0],[160,236,102,54,166,85,124,27,168,225,101,119,156,164,248,153,23,24,33,109,132,210,182,0,142,98,123,208,228,113,252,131,40,0],[160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,0],[160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,0],[160,3,91,168,70,252,161,34,13,56,101,117,116,0,69,133,33,133,182,68,237,187,94,164,129,197,95,209,251,76,83,82,29,0],[160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,160,236,102,54,166,85,124,27,168,225,101,119,156,164,248,153,23,24,33,109,132,210,182,0,142,98,123,208,228,113,252,131,40,160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,160,3,91,168,70,252,161,34,13,56,101,117,116,0,69,133,33,133,182,68,237,187,94,164,129,197,95,209,251,76,83,82,29,160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,128],[249,2,17,160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,160,241,74,61,103,119,85,240,184,127,193,61,247,232,174,103,210,182,230,195,48,64,136,119,99,2,145,239,59,167,83,220,15,160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,160,3,91,168,70,252,161,34,13,56,101,117,116,0,69,133,33,133,182,68,237,187,94,164,129,197,95,209,251,76,83,82,29,160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,202,102,232,164,91,235,102,94,47,16,91,198,211,144,46,93,209,140,29,37,115,203,45,117,166,202,188,147,19,105,250,95,0],[160,125,134,21,25,148,76,34,108,129,31,190,172,71,105,212,63,117,183,81,247,255,183,238,123,146,18,144,145,23,134,83,181,0],[160,71,157,157,105,224,228,218,1,206,168,66,253,0,205,140,224,117,16,128,248,14,36,178,23,60,194,198,76,132,198,235,103,0],[160,126,222,206,77,7,198,17,169,62,197,24,56,231,50,35,186,202,92,137,109,23,136,85,228,55,56,55,161,173,203,85,157,0],[160,109,150,134,113,91,227,132,232,93,110,56,241,195,74,144,111,104,86,58,32,150,26,246,229,43,169,139,109,147,88,36,197,0],[160,251,95,167,241,15,84,41,26,61,74,17,201,110,210,86,89,93,62,68,72,69,195,152,174,222,208,92,219,112,214,137,230,0],[160,49,166,29,87,20,89,8,214,78,231,18,215,65,84,45,69,196,72,80,169,30,25,141,197,1,189,226,241,66,68,241,96,0],[160,252,125,31,240,143,109,232,181,126,64,79,18,103,37,118,29,21,105,134,132,247,116,248,188,52,101,65,172,197,52,167,129,0],[160,80,1,249,119,135,11,97,101,169,4,42,49,134,235,172,146,253,186,150,169,40,103,161,163,39,50,250,26,69,3,221,165,0],[160,195,61,77,110,236,12,101,138,100,60,5,180,193,127,47,53,120,124,71,65,128,188,84,142,189,76,104,252,246,161,232,246,0],[160,226,128,149,68,248,109,20,97,198,65,80,34,87,75,208,175,255,214,158,219,53,119,181,174,243,165,73,205,200,94,9,59,0],[160,118,145,214,158,5,191,203,190,235,3,196,239,16,127,36,59,71,193,26,85,65,171,168,40,160,21,83,240,218,220,61,68,0],[160,138,189,227,240,9,94,113,211,74,169,110,126,212,35,86,188,16,121,79,58,168,201,227,251,218,75,67,34,128,139,31,197,0],[160,199,5,45,220,63,186,237,162,158,226,123,151,65,104,207,81,113,152,226,234,210,190,218,15,197,224,143,1,118,30,78,136,0],[160,227,220,156,104,221,90,241,110,74,52,161,231,21,157,246,48,148,249,8,39,63,79,142,234,10,10,121,10,139,13,143,87,0],[160,210,188,81,157,60,138,175,117,27,0,51,226,168,174,40,87,104,94,34,232,123,145,186,235,195,20,87,132,36,196,121,184,0],[160,230,20,66,16,216,220,179,92,37,100,104,78,223,146,1,150,15,180,89,34,144,3,21,220,21,38,249,71,142,12,122,31,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,125,134,21,25,148,76,34,108,129,31,190,172,71,105,212,63,117,183,81,247,255,183,238,123,146,18,144,145,23,134,83,181,160,71,157,157,105,224,228,218,1,206,168,66,253,0,205,140,224,117,16,128,248,14,36,178,23,60,194,198,76,132,198,235,103,160,126,222,206,77,7,198,17,169,62,197,24,56,231,50,35,186,202,92,137,109,23,136,85,228,55,56,55,161,173,203,85,157,160,109,150,134,113,91,227,132,232,93,110,56,241,195,74,144,111,104,86,58,32,150,26,246,229,43,169,139,109,147,88,36,197,160,251,95,167,241,15,84,41,26,61,74,17,201,110,210,86,89,93,62,68,72,69,195,152,174,222,208,92,219,112,214,137,230,160,49,166,29,87,20,89,8,214,78,231,18,215,65,84,45,69,196,72,80,169,30,25,141,197,1,189,226,241,66,68,241,96,160,252,125,31,240,143,109,232,181,126,64,79,18,103,37,118,29,21,105,134,132,247,116,248,188,52,101,65,172,197,52,167,129,160,80,1,249,119,135,11,97,101,169,4,42,49,134,235,172,146,253,186,150,169,40,103,161,163,39,50,250,26,69,3,221,165,160,195,61,77,110,236,12,101,138,100,60,5,180,193,127,47,53,120,124,71,65,128,188,84,142,189,76,104,252,246,161,232,246,160,226,128,149,68,248,109,20,97,198,65,80,34,87,75,208,175,255,214,158,219,53,119,181,174,243,165,73,205,200,94,9,59,160,118,145,214,158,5,191,203,190,235,3,196,239,16,127,36,59,71,193,26,85,65,171,168,40,160,21,83,240,218,220,61,68,160,138,189,227,240,9,94,113,211,74,169,110,126,212,35,86,188,16,121,79,58,168,201,227,251,218,75,67,34,128,139,31,197,160,199,5,45,220,63,186,237,162,158,226,123,151,65,104,207,81,113,152,226,234,210,190,218,15,197,224,143,1,118,30,78,136,160,227,220,156,104,221,90,241,110,74,52,161,231,21,157,246,48,148,249,8,39,63,79,142,234,10,10,121,10,139,13,143,87,160,210,188,81,157,60,138,175,117,27,0,51,226,168,174,40,87,104,94,34,232,123,145,186,235,195,20,87,132,36,196,121,184,160,230,20,66,16,216,220,179,92,37,100,104,78,223,146,1,150,15,180,89,34,144,3,21,220,21,38,249,71,142,12,122,31,128],[249,2,17,160,125,134,21,25,148,76,34,108,129,31,190,172,71,105,212,63,117,183,81,247,255,183,238,123,146,18,144,145,23,134,83,181,160,71,157,157,105,224,228,218,1,206,168,66,253,0,205,140,224,117,16,128,248,14,36,178,23,60,194,198,76,132,198,235,103,160,126,222,206,77,7,198,17,169,62,197,24,56,231,50,35,186,202,92,137,109,23,136,85,228,55,56,55,161,173,203,85,157,160,109,150,134,113,91,227,132,232,93,110,56,241,195,74,144,111,104,86,58,32,150,26,246,229,43,169,139,109,147,88,36,197,160,251,95,167,241,15,84,41,26,61,74,17,201,110,210,86,89,93,62,68,72,69,195,152,174,222,208,92,219,112,214,137,230,160,49,166,29,87,20,89,8,214,78,231,18,215,65,84,45,69,196,72,80,169,30,25,141,197,1,189,226,241,66,68,241,96,160,252,125,31,240,143,109,232,181,126,64,79,18,103,37,118,29,21,105,134,132,247,116,248,188,52,101,65,172,197,52,167,129,160,80,1,249,119,135,11,97,101,169,4,42,49,134,235,172,146,253,186,150,169,40,103,161,163,39,50,250,26,69,3,221,165,160,195,61,77,110,236,12,101,138,100,60,5,180,193,127,47,53,120,124,71,65,128,188,84,142,189,76,104,252,246,161,232,246,160,226,128,149,68,248,109,20,97,198,65,80,34,87,75,208,175,255,214,158,219,53,119,181,174,243,165,73,205,200,94,9,59,160,118,145,214,158,5,191,203,190,235,3,196,239,16,127,36,59,71,193,26,85,65,171,168,40,160,21,83,240,218,220,61,68,160,202,102,232,164,91,235,102,94,47,16,91,198,211,144,46,93,209,140,29,37,115,203,45,117,166,202,188,147,19,105,250,95,160,199,5,45,220,63,186,237,162,158,226,123,151,65,104,207,81,113,152,226,234,210,190,218,15,197,224,143,1,118,30,78,136,160,227,220,156,104,221,90,241,110,74,52,161,231,21,157,246,48,148,249,8,39,63,79,142,234,10,10,121,10,139,13,143,87,160,210,188,81,157,60,138,175,117,27,0,51,226,168,174,40,87,104,94,34,232,123,145,186,235,195,20,87,132,36,196,121,184,160,230,20,66,16,216,220,179,92,37,100,104,78,223,146,1,150,15,180,89,34,144,3,21,220,21,38,249,71,142,12,122,31,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,118,71,127,35,168,227,214,144,90,249,253,38,109,0,167,9,11,189,164,199,204,15,152,28,217,108,135,22,252,237,174,78,0],[160,26,187,162,237,23,106,121,97,82,122,107,76,242,18,67,237,148,156,180,75,198,171,211,85,62,86,34,74,167,242,255,134,0],[160,195,189,90,8,101,103,96,113,8,13,127,196,94,67,45,205,113,174,59,159,45,114,128,77,74,211,174,3,14,236,79,18,0],[160,128,161,5,210,87,0,80,210,17,88,126,80,21,111,212,152,71,139,181,56,138,168,217,4,18,137,133,217,216,60,232,31,0],[160,202,84,212,164,47,29,173,99,36,184,70,96,111,189,3,217,167,232,44,47,115,187,102,254,198,152,155,75,237,29,116,206,0],[160,101,205,254,64,54,90,108,63,65,99,231,221,103,129,90,232,59,94,242,204,165,243,101,63,2,190,179,91,14,139,226,205,0],[160,7,227,73,226,65,124,54,35,81,53,54,9,21,180,111,83,37,153,146,135,142,102,231,229,125,95,183,53,234,229,245,58,0],[160,88,204,154,170,68,56,10,123,107,120,76,169,97,203,225,8,46,98,13,49,226,124,117,96,254,229,94,156,123,99,174,100,0],[160,90,208,114,191,8,171,250,36,243,174,229,135,184,235,93,70,65,191,20,96,130,231,175,244,26,13,49,55,16,204,205,117,0],[160,164,143,135,168,218,170,124,44,199,22,172,172,104,37,73,142,171,61,238,207,187,8,4,215,205,209,61,215,140,101,179,250,0],[160,80,179,240,177,83,136,17,124,49,99,182,169,9,254,33,228,127,230,66,243,79,166,110,84,224,224,158,242,143,33,195,244,0],[160,152,84,146,108,152,111,104,56,121,239,253,211,55,23,163,119,220,33,63,208,205,168,111,237,81,99,139,244,15,18,244,116,0],[160,146,201,137,243,43,254,170,197,245,108,170,4,28,98,161,176,108,162,90,24,102,202,44,103,41,117,107,145,213,240,1,148,0],[160,35,6,253,241,96,55,112,126,224,54,87,2,134,48,77,14,114,247,160,27,26,59,154,186,50,91,214,238,93,44,28,32,0],[160,138,181,170,135,120,70,121,11,54,168,145,241,12,188,37,93,12,217,186,68,165,183,11,223,6,142,71,120,53,195,217,146,0],[160,68,176,244,148,187,236,187,6,96,87,53,16,44,73,143,38,66,111,204,84,13,207,64,235,224,13,83,141,102,75,5,80,0],[160,255,135,249,148,116,64,144,42,162,168,102,222,153,188,213,241,18,128,63,172,167,162,17,106,159,211,213,73,161,249,35,114,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,26,187,162,237,23,106,121,97,82,122,107,76,242,18,67,237,148,156,180,75,198,171,211,85,62,86,34,74,167,242,255,134,160,195,189,90,8,101,103,96,113,8,13,127,196,94,67,45,205,113,174,59,159,45,114,128,77,74,211,174,3,14,236,79,18,160,128,161,5,210,87,0,80,210,17,88,126,80,21,111,212,152,71,139,181,56,138,168,217,4,18,137,133,217,216,60,232,31,160,202,84,212,164,47,29,173,99,36,184,70,96,111,189,3,217,167,232,44,47,115,187,102,254,198,152,155,75,237,29,116,206,160,101,205,254,64,54,90,108,63,65,99,231,221,103,129,90,232,59,94,242,204,165,243,101,63,2,190,179,91,14,139,226,205,160,7,227,73,226,65,124,54,35,81,53,54,9,21,180,111,83,37,153,146,135,142,102,231,229,125,95,183,53,234,229,245,58,160,88,204,154,170,68,56,10,123,107,120,76,169,97,203,225,8,46,98,13,49,226,124,117,96,254,229,94,156,123,99,174,100,160,90,208,114,191,8,171,250,36,243,174,229,135,184,235,93,70,65,191,20,96,130,231,175,244,26,13,49,55,16,204,205,117,160,164,143,135,168,218,170,124,44,199,22,172,172,104,37,73,142,171,61,238,207,187,8,4,215,205,209,61,215,140,101,179,250,160,80,179,240,177,83,136,17,124,49,99,182,169,9,254,33,228,127,230,66,243,79,166,110,84,224,224,158,242,143,33,195,244,160,152,84,146,108,152,111,104,56,121,239,253,211,55,23,163,119,220,33,63,208,205,168,111,237,81,99,139,244,15,18,244,116,160,146,201,137,243,43,254,170,197,245,108,170,4,28,98,161,176,108,162,90,24,102,202,44,103,41,117,107,145,213,240,1,148,160,35,6,253,241,96,55,112,126,224,54,87,2,134,48,77,14,114,247,160,27,26,59,154,186,50,91,214,238,93,44,28,32,160,138,181,170,135,120,70,121,11,54,168,145,241,12,188,37,93,12,217,186,68,165,183,11,223,6,142,71,120,53,195,217,146,160,68,176,244,148,187,236,187,6,96,87,53,16,44,73,143,38,66,111,204,84,13,207,64,235,224,13,83,141,102,75,5,80,160,255,135,249,148,116,64,144,42,162,168,102,222,153,188,213,241,18,128,63,172,167,162,17,106,159,211,213,73,161,249,35,114,128],[249,2,17,160,118,71,127,35,168,227,214,144,90,249,253,38,109,0,167,9,11,189,164,199,204,15,152,28,217,108,135,22,252,237,174,78,160,195,189,90,8,101,103,96,113,8,13,127,196,94,67,45,205,113,174,59,159,45,114,128,77,74,211,174,3,14,236,79,18,160,128,161,5,210,87,0,80,210,17,88,126,80,21,111,212,152,71,139,181,56,138,168,217,4,18,137,133,217,216,60,232,31,160,202,84,212,164,47,29,173,99,36,184,70,96,111,189,3,217,167,232,44,47,115,187,102,254,198,152,155,75,237,29,116,206,160,101,205,254,64,54,90,108,63,65,99,231,221,103,129,90,232,59,94,242,204,165,243,101,63,2,190,179,91,14,139,226,205,160,7,227,73,226,65,124,54,35,81,53,54,9,21,180,111,83,37,153,146,135,142,102,231,229,125,95,183,53,234,229,245,58,160,88,204,154,170,68,56,10,123,107,120,76,169,97,203,225,8,46,98,13,49,226,124,117,96,254,229,94,156,123,99,174,100,160,90,208,114,191,8,171,250,36,243,174,229,135,184,235,93,70,65,191,20,96,130,231,175,244,26,13,49,55,16,204,205,117,160,164,143,135,168,218,170,124,44,199,22,172,172,104,37,73,142,171,61,238,207,187,8,4,215,205,209,61,215,140,101,179,250,160,80,179,240,177,83,136,17,124,49,99,182,169,9,254,33,228,127,230,66,243,79,166,110,84,224,224,158,242,143,33,195,244,160,152,84,146,108,152,111,104,56,121,239,253,211,55,23,163,119,220,33,63,208,205,168,111,237,81,99,139,244,15,18,244,116,160,146,201,137,243,43,254,170,197,245,108,170,4,28,98,161,176,108,162,90,24,102,202,44,103,41,117,107,145,213,240,1,148,160,35,6,253,241,96,55,112,126,224,54,87,2,134,48,77,14,114,247,160,27,26,59,154,186,50,91,214,238,93,44,28,32,160,138,181,170,135,120,70,121,11,54,168,145,241,12,188,37,93,12,217,186,68,165,183,11,223,6,142,71,120,53,195,217,146,160,68,176,244,148,187,236,187,6,96,87,53,16,44,73,143,38,66,111,204,84,13,207,64,235,224,13,83,141,102,75,5,80,160,255,135,249,148,116,64,144,42,162,168,102,222,153,188,213,241,18,128,63,172,167,162,17,106,159,211,213,73,161,249,35,114,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,155,177,169,178,207,25,115,178,220,237,213,105,61,99,63,204,11,40,200,146,38,126,99,253,174,82,103,206,143,115,171,178,0],[160,201,74,13,88,41,184,70,77,128,44,60,141,143,0,249,230,36,175,159,57,82,243,216,53,24,144,85,58,51,3,221,192,0],[160,30,252,92,85,186,88,238,59,120,224,213,142,217,57,166,9,110,91,44,215,176,156,103,42,21,149,35,201,163,53,161,214,0],[160,182,131,81,90,235,179,229,171,82,90,216,94,104,92,118,199,28,217,251,33,72,34,214,219,112,250,144,230,66,161,235,124,0],[160,38,36,255,222,210,228,111,43,108,59,6,129,142,143,164,16,101,68,73,158,137,156,252,36,97,111,2,47,11,88,74,137,0],[160,86,108,16,212,154,199,179,123,7,68,140,79,186,19,178,72,5,108,78,199,184,66,55,122,236,94,45,111,152,209,100,204,0],[160,8,44,168,138,142,220,115,97,116,47,244,112,50,126,109,130,47,191,98,56,17,12,46,32,226,198,101,255,123,80,41,9,0],[160,149,66,87,246,81,7,169,104,20,176,78,172,62,67,199,177,247,222,147,50,139,14,163,168,81,5,127,143,32,179,202,124,0],[160,156,35,147,112,152,222,157,250,178,31,105,229,151,90,242,78,224,8,90,166,248,203,138,217,249,98,101,187,69,208,195,186,0],[160,235,70,63,42,145,65,172,52,149,163,110,28,162,64,38,10,45,148,136,98,143,146,202,23,147,56,249,91,33,61,7,180,0],[160,41,176,152,154,156,79,96,95,106,117,53,179,16,166,126,139,128,5,76,236,225,140,233,147,93,130,38,96,36,211,102,147,0],[160,33,174,166,200,193,116,43,170,104,204,122,205,211,139,211,132,16,152,249,200,223,211,198,16,145,240,213,161,103,114,103,247,0],[160,246,131,82,23,125,78,177,92,5,35,11,239,241,30,114,3,173,48,117,59,221,162,34,41,195,136,188,39,101,158,41,26,0],[160,165,205,63,186,2,162,214,26,42,213,218,184,107,178,211,130,46,5,51,134,230,7,44,65,51,247,32,178,110,10,36,11,0],[160,192,226,195,87,143,249,17,187,202,196,51,79,225,75,32,243,167,21,80,20,8,79,66,11,254,98,251,153,51,106,103,69,0],[160,115,7,228,239,195,15,90,20,25,106,49,253,95,138,5,51,143,22,159,156,200,242,230,21,36,168,65,144,147,65,129,100,0],[160,84,157,218,127,239,160,140,65,236,101,138,169,111,204,65,187,133,68,170,212,72,238,19,168,181,30,128,108,91,219,149,183,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,201,74,13,88,41,184,70,77,128,44,60,141,143,0,249,230,36,175,159,57,82,243,216,53,24,144,85,58,51,3,221,192,160,30,252,92,85,186,88,238,59,120,224,213,142,217,57,166,9,110,91,44,215,176,156,103,42,21,149,35,201,163,53,161,214,160,182,131,81,90,235,179,229,171,82,90,216,94,104,92,118,199,28,217,251,33,72,34,214,219,112,250,144,230,66,161,235,124,160,38,36,255,222,210,228,111,43,108,59,6,129,142,143,164,16,101,68,73,158,137,156,252,36,97,111,2,47,11,88,74,137,160,86,108,16,212,154,199,179,123,7,68,140,79,186,19,178,72,5,108,78,199,184,66,55,122,236,94,45,111,152,209,100,204,160,8,44,168,138,142,220,115,97,116,47,244,112,50,126,109,130,47,191,98,56,17,12,46,32,226,198,101,255,123,80,41,9,160,149,66,87,246,81,7,169,104,20,176,78,172,62,67,199,177,247,222,147,50,139,14,163,168,81,5,127,143,32,179,202,124,160,156,35,147,112,152,222,157,250,178,31,105,229,151,90,242,78,224,8,90,166,248,203,138,217,249,98,101,187,69,208,195,186,160,235,70,63,42,145,65,172,52,149,163,110,28,162,64,38,10,45,148,136,98,143,146,202,23,147,56,249,91,33,61,7,180,160,41,176,152,154,156,79,96,95,106,117,53,179,16,166,126,139,128,5,76,236,225,140,233,147,93,130,38,96,36,211,102,147,160,33,174,166,200,193,116,43,170,104,204,122,205,211,139,211,132,16,152,249,200,223,211,198,16,145,240,213,161,103,114,103,247,160,246,131,82,23,125,78,177,92,5,35,11,239,241,30,114,3,173,48,117,59,221,162,34,41,195,136,188,39,101,158,41,26,160,165,205,63,186,2,162,214,26,42,213,218,184,107,178,211,130,46,5,51,134,230,7,44,65,51,247,32,178,110,10,36,11,160,192,226,195,87,143,249,17,187,202,196,51,79,225,75,32,243,167,21,80,20,8,79,66,11,254,98,251,153,51,106,103,69,160,115,7,228,239,195,15,90,20,25,106,49,253,95,138,5,51,143,22,159,156,200,242,230,21,36,168,65,144,147,65,129,100,160,84,157,218,127,239,160,140,65,236,101,138,169,111,204,65,187,133,68,170,212,72,238,19,168,181,30,128,108,91,219,149,183,128],[249,2,17,160,201,74,13,88,41,184,70,77,128,44,60,141,143,0,249,230,36,175,159,57,82,243,216,53,24,144,85,58,51,3,221,192,160,30,252,92,85,186,88,238,59,120,224,213,142,217,57,166,9,110,91,44,215,176,156,103,42,21,149,35,201,163,53,161,214,160,182,131,81,90,235,179,229,171,82,90,216,94,104,92,118,199,28,217,251,33,72,34,214,219,112,250,144,230,66,161,235,124,160,38,36,255,222,210,228,111,43,108,59,6,129,142,143,164,16,101,68,73,158,137,156,252,36,97,111,2,47,11,88,74,137,160,86,108,16,212,154,199,179,123,7,68,140,79,186,19,178,72,5,108,78,199,184,66,55,122,236,94,45,111,152,209,100,204,160,155,177,169,178,207,25,115,178,220,237,213,105,61,99,63,204,11,40,200,146,38,126,99,253,174,82,103,206,143,115,171,178,160,149,66,87,246,81,7,169,104,20,176,78,172,62,67,199,177,247,222,147,50,139,14,163,168,81,5,127,143,32,179,202,124,160,156,35,147,112,152,222,157,250,178,31,105,229,151,90,242,78,224,8,90,166,248,203,138,217,249,98,101,187,69,208,195,186,160,235,70,63,42,145,65,172,52,149,163,110,28,162,64,38,10,45,148,136,98,143,146,202,23,147,56,249,91,33,61,7,180,160,41,176,152,154,156,79,96,95,106,117,53,179,16,166,126,139,128,5,76,236,225,140,233,147,93,130,38,96,36,211,102,147,160,33,174,166,200,193,116,43,170,104,204,122,205,211,139,211,132,16,152,249,200,223,211,198,16,145,240,213,161,103,114,103,247,160,246,131,82,23,125,78,177,92,5,35,11,239,241,30,114,3,173,48,117,59,221,162,34,41,195,136,188,39,101,158,41,26,160,165,205,63,186,2,162,214,26,42,213,218,184,107,178,211,130,46,5,51,134,230,7,44,65,51,247,32,178,110,10,36,11,160,192,226,195,87,143,249,17,187,202,196,51,79,225,75,32,243,167,21,80,20,8,79,66,11,254,98,251,153,51,106,103,69,160,115,7,228,239,195,15,90,20,25,106,49,253,95,138,5,51,143,22,159,156,200,242,230,21,36,168,65,144,147,65,129,100,160,84,157,218,127,239,160,140,65,236,101,138,169,111,204,65,187,133,68,170,212,72,238,19,168,181,30,128,108,91,219,149,183,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,123,171,42,213,155,121,113,37,156,12,93,15,148,14,156,94,140,247,237,156,1,226,58,29,74,49,252,242,231,92,226,186,0],[160,0,60,239,195,90,41,35,145,71,234,254,226,95,214,157,137,249,69,51,46,116,43,172,197,209,106,62,107,13,134,118,12,0],[160,7,214,73,225,45,125,70,176,49,93,46,135,187,246,2,61,183,208,247,221,171,46,83,6,128,133,22,210,225,167,12,37,0],[160,29,88,219,67,109,5,1,241,225,154,220,207,78,188,163,225,231,89,62,34,116,154,46,13,83,23,24,59,159,65,38,74,0],[160,130,244,97,0,144,113,26,189,84,140,251,10,58,239,176,49,52,232,144,60,157,64,196,120,135,238,127,214,211,2,113,50,0],[160,4,137,113,20,238,132,102,100,100,29,39,244,133,178,220,183,170,31,35,178,129,205,69,155,252,119,243,44,166,230,179,70,0],[160,158,112,50,206,63,122,189,110,174,190,192,159,219,94,187,205,2,19,6,149,233,30,249,214,239,88,42,47,241,158,212,241,0],[160,139,177,70,74,121,27,54,183,246,177,214,132,90,25,96,203,123,48,130,3,201,77,179,186,165,180,193,11,103,111,250,67,0],[160,119,185,133,18,119,245,43,92,66,104,198,123,172,48,56,26,148,253,76,127,186,243,26,34,29,135,57,229,42,190,35,242,0],[160,49,199,77,37,182,66,131,145,200,81,42,32,117,88,165,127,108,181,220,174,253,22,61,73,37,219,95,162,125,30,202,47,0],[160,94,39,91,173,139,183,90,208,86,51,72,72,4,200,124,24,108,62,147,41,211,29,234,48,180,55,10,48,173,57,11,152,0],[160,38,74,194,250,157,49,162,80,68,11,249,87,137,126,205,203,198,124,212,5,80,21,173,34,105,17,232,53,229,184,112,169,0],[160,214,242,56,104,19,113,93,205,196,168,196,139,239,159,220,184,92,225,43,223,135,164,201,197,243,18,57,180,227,22,97,223,0],[160,238,12,160,145,45,78,200,230,235,210,199,203,205,223,25,224,105,52,161,176,115,72,6,35,236,182,72,52,155,199,54,219,0],[160,111,118,2,77,94,56,177,212,139,134,29,143,147,111,81,240,101,171,10,232,166,243,98,134,217,253,123,216,2,110,210,105,0],[160,198,81,63,253,42,110,69,175,197,188,81,39,194,60,176,138,85,220,164,47,130,126,45,169,71,172,210,173,243,220,141,141,0],[160,160,167,52,10,186,217,166,143,254,229,248,207,108,139,204,25,40,89,252,48,113,47,218,210,101,203,152,120,152,146,118,47,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,0,60,239,195,90,41,35,145,71,234,254,226,95,214,157,137,249,69,51,46,116,43,172,197,209,106,62,107,13,134,118,12,160,7,214,73,225,45,125,70,176,49,93,46,135,187,246,2,61,183,208,247,221,171,46,83,6,128,133,22,210,225,167,12,37,160,29,88,219,67,109,5,1,241,225,154,220,207,78,188,163,225,231,89,62,34,116,154,46,13,83,23,24,59,159,65,38,74,160,130,244,97,0,144,113,26,189,84,140,251,10,58,239,176,49,52,232,144,60,157,64,196,120,135,238,127,214,211,2,113,50,160,4,137,113,20,238,132,102,100,100,29,39,244,133,178,220,183,170,31,35,178,129,205,69,155,252,119,243,44,166,230,179,70,160,158,112,50,206,63,122,189,110,174,190,192,159,219,94,187,205,2,19,6,149,233,30,249,214,239,88,42,47,241,158,212,241,160,139,177,70,74,121,27,54,183,246,177,214,132,90,25,96,203,123,48,130,3,201,77,179,186,165,180,193,11,103,111,250,67,160,119,185,133,18,119,245,43,92,66,104,198,123,172,48,56,26,148,253,76,127,186,243,26,34,29,135,57,229,42,190,35,242,160,49,199,77,37,182,66,131,145,200,81,42,32,117,88,165,127,108,181,220,174,253,22,61,73,37,219,95,162,125,30,202,47,160,94,39,91,173,139,183,90,208,86,51,72,72,4,200,124,24,108,62,147,41,211,29,234,48,180,55,10,48,173,57,11,152,160,38,74,194,250,157,49,162,80,68,11,249,87,137,126,205,203,198,124,212,5,80,21,173,34,105,17,232,53,229,184,112,169,160,214,242,56,104,19,113,93,205,196,168,196,139,239,159,220,184,92,225,43,223,135,164,201,197,243,18,57,180,227,22,97,223,160,238,12,160,145,45,78,200,230,235,210,199,203,205,223,25,224,105,52,161,176,115,72,6,35,236,182,72,52,155,199,54,219,160,111,118,2,77,94,56,177,212,139,134,29,143,147,111,81,240,101,171,10,232,166,243,98,134,217,253,123,216,2,110,210,105,160,198,81,63,253,42,110,69,175,197,188,81,39,194,60,176,138,85,220,164,47,130,126,45,169,71,172,210,173,243,220,141,141,160,160,167,52,10,186,217,166,143,254,229,248,207,108,139,204,25,40,89,252,48,113,47,218,210,101,203,152,120,152,146,118,47,128],[249,2,17,160,0,60,239,195,90,41,35,145,71,234,254,226,95,214,157,137,249,69,51,46,116,43,172,197,209,106,62,107,13,134,118,12,160,7,214,73,225,45,125,70,176,49,93,46,135,187,246,2,61,183,208,247,221,171,46,83,6,128,133,22,210,225,167,12,37,160,29,88,219,67,109,5,1,241,225,154,220,207,78,188,163,225,231,89,62,34,116,154,46,13,83,23,24,59,159,65,38,74,160,130,244,97,0,144,113,26,189,84,140,251,10,58,239,176,49,52,232,144,60,157,64,196,120,135,238,127,214,211,2,113,50,160,4,137,113,20,238,132,102,100,100,29,39,244,133,178,220,183,170,31,35,178,129,205,69,155,252,119,243,44,166,230,179,70,160,158,112,50,206,63,122,189,110,174,190,192,159,219,94,187,205,2,19,6,149,233,30,249,214,239,88,42,47,241,158,212,241,160,139,177,70,74,121,27,54,183,246,177,214,132,90,25,96,203,123,48,130,3,201,77,179,186,165,180,193,11,103,111,250,67,160,119,185,133,18,119,245,43,92,66,104,198,123,172,48,56,26,148,253,76,127,186,243,26,34,29,135,57,229,42,190,35,242,160,49,199,77,37,182,66,131,145,200,81,42,32,117,88,165,127,108,181,220,174,253,22,61,73,37,219,95,162,125,30,202,47,160,123,171,42,213,155,121,113,37,156,12,93,15,148,14,156,94,140,247,237,156,1,226,58,29,74,49,252,242,231,92,226,186,160,38,74,194,250,157,49,162,80,68,11,249,87,137,126,205,203,198,124,212,5,80,21,173,34,105,17,232,53,229,184,112,169,160,214,242,56,104,19,113,93,205,196,168,196,139,239,159,220,184,92,225,43,223,135,164,201,197,243,18,57,180,227,22,97,223,160,238,12,160,145,45,78,200,230,235,210,199,203,205,223,25,224,105,52,161,176,115,72,6,35,236,182,72,52,155,199,54,219,160,111,118,2,77,94,56,177,212,139,134,29,143,147,111,81,240,101,171,10,232,166,243,98,134,217,253,123,216,2,110,210,105,160,198,81,63,253,42,110,69,175,197,188,81,39,194,60,176,138,85,220,164,47,130,126,45,169,71,172,210,173,243,220,141,141,160,160,167,52,10,186,217,166,143,254,229,248,207,108,139,204,25,40,89,252,48,113,47,218,210,101,203,152,120,152,146,118,47,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[248,241],[248,241]]}},"account":null,"storage":null,"values":[[160,95,174,59,239,229,74,221,53,227,115,207,137,94,29,119,126,56,209,55,198,212,179,38,213,219,36,111,62,46,43,176,168,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,164,92,78,34,81,137,173,236,78,208,145,118,128,60,46,5,176,8,229,165,42,222,110,4,252,228,93,243,26,160,241,85,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,60,157,212,182,167,69,206,32,151,2,14,23,149,67,58,187,84,249,195,159,106,68,203,199,199,65,194,33,215,102,71,138,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,21,230,18,20,253,84,192,151,178,53,157,0,9,105,229,121,222,71,120,109,159,109,9,218,254,1,50,139,117,216,194,252,0],[160,229,29,220,149,183,173,68,40,11,103,39,76,251,20,162,242,21,49,103,245,160,99,143,218,74,196,2,61,51,34,105,123,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,140,67,252,58,164,68,143,34,163,138,133,54,27,218,38,80,20,142,115,221,100,73,161,165,75,83,53,8,58,236,1,0],[160,149,169,206,0,129,86,168,48,42,127,100,73,109,90,171,56,216,28,132,44,167,14,46,189,224,213,37,0,234,165,140,236,0],[160,42,63,45,28,165,209,201,220,231,99,153,208,48,174,250,66,196,18,123,250,55,107,64,178,159,49,190,84,159,179,138,235,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,241,128,160,164,92,78,34,81,137,173,236,78,208,145,118,128,60,46,5,176,8,229,165,42,222,110,4,252,228,93,243,26,160,241,85,128,160,60,157,212,182,167,69,206,32,151,2,14,23,149,67,58,187,84,249,195,159,106,68,203,199,199,65,194,33,215,102,71,138,128,128,160,21,230,18,20,253,84,192,151,178,53,157,0,9,105,229,121,222,71,120,109,159,109,9,218,254,1,50,139,117,216,194,252,160,229,29,220,149,183,173,68,40,11,103,39,76,251,20,162,242,21,49,103,245,160,99,143,218,74,196,2,61,51,34,105,123,128,160,0,140,67,252,58,164,68,143,34,163,138,133,54,27,218,38,80,20,142,115,221,100,73,161,165,75,83,53,8,58,236,1,160,149,169,206,0,129,86,168,48,42,127,100,73,109,90,171,56,216,28,132,44,167,14,46,189,224,213,37,0,234,165,140,236,160,42,63,45,28,165,209,201,220,231,99,153,208,48,174,250,66,196,18,123,250,55,107,64,178,159,49,190,84,159,179,138,235,128,128,128,128,128],[248,241,128,160,95,174,59,239,229,74,221,53,227,115,207,137,94,29,119,126,56,209,55,198,212,179,38,213,219,36,111,62,46,43,176,168,128,160,60,157,212,182,167,69,206,32,151,2,14,23,149,67,58,187,84,249,195,159,106,68,203,199,199,65,194,33,215,102,71,138,128,128,160,21,230,18,20,253,84,192,151,178,53,157,0,9,105,229,121,222,71,120,109,159,109,9,218,254,1,50,139,117,216,194,252,160,229,29,220,149,183,173,68,40,11,103,39,76,251,20,162,242,21,49,103,245,160,99,143,218,74,196,2,61,51,34,105,123,128,160,0,140,67,252,58,164,68,143,34,163,138,133,54,27,218,38,80,20,142,115,221,100,73,161,165,75,83,53,8,58,236,1,160,149,169,206,0,129,86,168,48,42,127,100,73,109,90,171,56,216,28,132,44,167,14,46,189,224,213,37,0,234,165,140,236,160,42,63,45,28,165,209,201,220,231,99,153,208,48,174,250,66,196,18,123,250,55,107,64,178,159,49,190,84,159,179,138,235,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,52,4,37,146,118,69,49,114,184,159,37,243,255,228,220,196,35,8,171,49,38,162,66,31,212,58,224,231,218,211,184,144,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,144,48,115,239,88,53,180,108,71,36,183,251,218,38,71,26,8,89,197,32,24,4,70,152,114,2,183,162,126,72,33,227,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,251,153,39,224,146,12,96,214,202,199,242,200,161,197,62,97,33,130,168,28,76,148,143,8,6,221,111,38,197,246,94,81,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,160,144,48,115,239,88,53,180,108,71,36,183,251,218,38,71,26,8,89,197,32,24,4,70,152,114,2,183,162,126,72,33,227,128,128,128,128,128,128,128,160,251,153,39,224,146,12,96,214,202,199,242,200,161,197,62,97,33,130,168,28,76,148,143,8,6,221,111,38,197,246,94,81,128,128,128,128,128,128,128],[248,81,128,160,144,48,115,239,88,53,180,108,71,36,183,251,218,38,71,26,8,89,197,32,24,4,70,152,114,2,183,162,126,72,33,227,128,128,128,128,128,128,128,160,52,4,37,146,118,69,49,114,184,159,37,243,255,228,220,196,35,8,171,49,38,162,66,31,212,58,224,231,218,211,184,144,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[170,172,207,18,88,1,56,188,43,188,238,234,161,17,223,78,66,171,129,255],"key":[187,176,89,25,94,161,196,62,242,155,22,174,238,170,32,29,45,107,194,210,205,38,230,21,112,4,40,92,60,227,225,116],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,32,94,161,196,62,242,155,22,174,238,170,32,29,45,107,194,210,205,38,230,21,112,4,40,92,60,227,225,116,0,0,0,0],[157,32,94,161,196,62,242,155,22,174,238,170,32,29,45,107,194,210,205,38,230,21,112,4,40,92,60,227,225,116,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,211,193,60,172,211,5,56,197,142,83,128,89,64,43,239,126,252,208,254,86,205,43,118,150,9,91,97,35,134,86,23,79,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,115,101,31,4,216,67,253,144,32,4,150,223,147,248,67,66,137,178,8,163,165,90,240,58,237,161,156,222,22,64,213,241,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,32,94,161,196,62,242,155,22,174,238,170,32,29,45,107,194,210,205,38,230,21,112,4,40,92,60,227,225,116,0,0,0,0]],"keccak_data":[[248,102,157,32,94,161,196,62,242,155,22,174,238,170,32,29,45,107,194,210,205,38,230,21,112,4,40,92,60,227,225,116,184,70,248,68,128,128,160,211,193,60,172,211,5,56,197,142,83,128,89,64,43,239,126,252,208,254,86,205,43,118,150,9,91,97,35,134,86,23,79,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,32,94,161,196,62,242,155,22,174,238,170,32,29,45,107,194,210,205,38,230,21,112,4,40,92,60,227,225,116,184,70,248,68,128,128,160,115,101,31,4,216,67,253,144,32,4,150,223,147,248,67,66,137,178,8,163,165,90,240,58,237,161,156,222,22,64,213,241,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[170,172,207,18,88,1,56,188,43,188,238,234,161,17,223,78,66,171,129,255]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,88,197,127,237,244,146,28,57,104,36,96,69,159,84,254,170,28,196,41,183,253,107,213,32,170,141,111,191,30,100,117,55,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,34,39,131,73,65,47,37,211,142,206,231,172,16,11,203,33,107,30,7,213,226,2,174,55,216,4,117,220,10,186,68,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,55,235,85,86,230,197,53,159,28,141,120,87,82,57,4,132,185,12,24,158,142,210,106,188,12,87,179,231,52,16,126,229,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,160,32,34,39,131,73,65,47,37,211,142,206,231,172,16,11,203,33,107,30,7,213,226,2,174,55,216,4,117,220,10,186,68,128,128,128,128,128,128,128,160,55,235,85,86,230,197,53,159,28,141,120,87,82,57,4,132,185,12,24,158,142,210,106,188,12,87,179,231,52,16,126,229,128,128,128,128,128],[248,81,128,128,128,160,32,34,39,131,73,65,47,37,211,142,206,231,172,16,11,203,33,107,30,7,213,226,2,174,55,216,4,117,220,10,186,68,128,128,128,128,128,128,128,160,88,197,127,237,244,146,28,57,104,36,96,69,159,84,254,170,28,196,41,183,253,107,213,32,170,141,111,191,30,100,117,55,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18],"key":[187,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68],"list_rlp_bytes":[[226],[226]],"value_rlp_bytes":[[1],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,59,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,59,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[226,160,59,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,1],[226,160,59,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/UpdateOneLevel1.json b/zkevm-circuits/src/mpt_circuit/tests/UpdateOneLevel1.json new file mode 100644 index 0000000000..228cdd60ae --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/UpdateOneLevel1.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,222,234,22,39,148,225,96,163,194,62,206,247,242,160,90,228,163,128,168,229,223,190,155,138,167,169,10,198,188,113,249,113,0],[160,7,69,62,143,31,76,189,151,166,122,90,95,216,217,225,12,69,57,255,132,243,197,130,153,226,236,196,140,53,221,97,21,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,69,45,52,149,234,223,125,94,40,101,172,59,18,64,235,33,17,105,253,144,113,96,111,121,114,12,33,22,139,113,207,208,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,227,56,54,52,105,152,28,210,129,156,191,91,18,244,51,46,199,143,113,225,176,229,48,75,35,83,242,146,161,192,204,156,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,227,56,54,52,105,152,28,210,129,156,191,91,18,244,51,46,199,143,113,225,176,229,48,75,35,83,242,146,161,192,204,156,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,69,45,52,149,234,223,125,94,40,101,172,59,18,64,235,33,17,105,253,144,113,96,111,121,114,12,33,22,139,113,207,208,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,208,230,18,44,247,235,184,213,133,152,10,60,120,178,74,31,65,221,158,157,224,149,64,162,221,114,181,63,108,177,109,113,0],[160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,0],[160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,0],[160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,0],[160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,0],[160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,0],[160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,0],[160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,0],[160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,0],[160,146,182,235,84,94,114,8,227,240,42,193,1,138,219,154,123,24,248,232,13,53,253,122,191,191,215,130,128,234,226,86,123,0],[160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,0],[160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,0],[160,19,46,153,100,161,196,33,28,76,198,44,106,103,242,245,188,101,244,165,51,53,54,51,147,137,132,15,9,224,171,38,201,0],[160,237,113,19,48,172,139,234,51,70,37,236,44,37,118,182,177,114,98,221,189,39,248,50,83,47,77,215,60,136,159,224,77,0],[160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,0],[160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,0],[160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,160,146,182,235,84,94,114,8,227,240,42,193,1,138,219,154,123,24,248,232,13,53,253,122,191,191,215,130,128,234,226,86,123,160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,160,19,46,153,100,161,196,33,28,76,198,44,106,103,242,245,188,101,244,165,51,53,54,51,147,137,132,15,9,224,171,38,201,160,237,113,19,48,172,139,234,51,70,37,236,44,37,118,182,177,114,98,221,189,39,248,50,83,47,77,215,60,136,159,224,77,160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,128],[249,2,17,160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,160,146,182,235,84,94,114,8,227,240,42,193,1,138,219,154,123,24,248,232,13,53,253,122,191,191,215,130,128,234,226,86,123,160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,160,208,230,18,44,247,235,184,213,133,152,10,60,120,178,74,31,65,221,158,157,224,149,64,162,221,114,181,63,108,177,109,113,160,237,113,19,48,172,139,234,51,70,37,236,44,37,118,182,177,114,98,221,189,39,248,50,83,47,77,215,60,136,159,224,77,160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,23,198,215,110,132,186,47,151,221,249,143,255,198,150,111,250,59,27,100,125,75,122,236,59,67,230,214,183,171,239,4,232,0],[160,17,14,152,228,161,27,201,217,36,240,10,175,206,177,124,38,135,28,190,122,91,109,224,56,126,139,153,149,123,137,108,103,0],[160,18,13,111,197,83,111,187,99,87,247,167,17,128,97,141,1,62,136,8,123,124,243,65,227,23,101,121,34,154,68,118,245,0],[160,176,73,194,83,219,26,39,202,203,250,128,222,2,177,177,68,119,93,193,32,146,124,90,108,159,120,167,196,183,104,110,220,0],[160,201,216,168,236,33,203,177,196,61,145,187,242,166,230,121,211,173,165,221,43,247,78,23,192,173,138,98,163,27,186,208,65,0],[160,243,129,214,205,142,5,250,58,99,129,145,177,53,137,7,205,21,205,113,246,52,66,180,235,229,84,190,12,2,142,255,153,0],[160,88,72,38,73,92,103,15,103,83,111,122,242,225,201,211,199,143,217,2,53,164,164,90,115,27,64,178,170,122,127,229,220,0],[160,113,108,247,26,59,67,31,95,124,173,73,67,237,250,140,15,99,74,90,62,158,128,77,2,244,88,163,175,63,114,221,50,0],[160,193,70,173,55,41,231,69,65,112,9,158,41,97,73,77,3,108,222,33,61,121,168,60,39,134,48,129,8,134,170,184,112,0],[160,220,67,96,141,155,253,66,228,10,14,151,7,221,195,199,37,52,154,39,206,103,247,124,126,95,11,24,126,253,196,147,234,0],[160,4,251,178,215,177,99,63,65,108,73,209,148,181,62,151,132,211,2,62,45,174,250,205,180,18,104,82,173,232,87,65,25,0],[160,127,188,123,217,18,146,253,108,75,236,17,218,226,163,173,108,114,232,4,85,250,30,215,35,248,232,237,143,231,149,4,100,0],[160,251,60,128,176,16,190,42,167,32,137,202,218,86,170,232,220,155,186,71,101,44,31,115,102,205,77,5,66,172,253,178,197,0],[160,191,206,160,180,210,66,180,165,142,193,114,59,208,212,163,71,192,68,161,246,68,173,99,14,63,196,189,212,183,26,248,166,0],[160,120,111,196,145,168,96,1,64,243,97,255,71,183,26,182,112,90,106,209,172,36,63,178,27,112,28,8,224,237,43,8,55,0],[160,255,180,41,152,120,18,117,140,48,239,106,19,151,226,224,119,56,150,40,117,133,9,82,75,94,255,0,36,42,211,190,0,0],[160,63,111,21,204,37,243,152,155,55,14,233,122,16,231,133,74,39,8,120,115,231,98,225,151,4,251,118,215,74,51,97,254,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,17,14,152,228,161,27,201,217,36,240,10,175,206,177,124,38,135,28,190,122,91,109,224,56,126,139,153,149,123,137,108,103,160,18,13,111,197,83,111,187,99,87,247,167,17,128,97,141,1,62,136,8,123,124,243,65,227,23,101,121,34,154,68,118,245,160,176,73,194,83,219,26,39,202,203,250,128,222,2,177,177,68,119,93,193,32,146,124,90,108,159,120,167,196,183,104,110,220,160,201,216,168,236,33,203,177,196,61,145,187,242,166,230,121,211,173,165,221,43,247,78,23,192,173,138,98,163,27,186,208,65,160,243,129,214,205,142,5,250,58,99,129,145,177,53,137,7,205,21,205,113,246,52,66,180,235,229,84,190,12,2,142,255,153,160,88,72,38,73,92,103,15,103,83,111,122,242,225,201,211,199,143,217,2,53,164,164,90,115,27,64,178,170,122,127,229,220,160,113,108,247,26,59,67,31,95,124,173,73,67,237,250,140,15,99,74,90,62,158,128,77,2,244,88,163,175,63,114,221,50,160,193,70,173,55,41,231,69,65,112,9,158,41,97,73,77,3,108,222,33,61,121,168,60,39,134,48,129,8,134,170,184,112,160,220,67,96,141,155,253,66,228,10,14,151,7,221,195,199,37,52,154,39,206,103,247,124,126,95,11,24,126,253,196,147,234,160,4,251,178,215,177,99,63,65,108,73,209,148,181,62,151,132,211,2,62,45,174,250,205,180,18,104,82,173,232,87,65,25,160,127,188,123,217,18,146,253,108,75,236,17,218,226,163,173,108,114,232,4,85,250,30,215,35,248,232,237,143,231,149,4,100,160,251,60,128,176,16,190,42,167,32,137,202,218,86,170,232,220,155,186,71,101,44,31,115,102,205,77,5,66,172,253,178,197,160,191,206,160,180,210,66,180,165,142,193,114,59,208,212,163,71,192,68,161,246,68,173,99,14,63,196,189,212,183,26,248,166,160,120,111,196,145,168,96,1,64,243,97,255,71,183,26,182,112,90,106,209,172,36,63,178,27,112,28,8,224,237,43,8,55,160,255,180,41,152,120,18,117,140,48,239,106,19,151,226,224,119,56,150,40,117,133,9,82,75,94,255,0,36,42,211,190,0,160,63,111,21,204,37,243,152,155,55,14,233,122,16,231,133,74,39,8,120,115,231,98,225,151,4,251,118,215,74,51,97,254,128],[249,2,17,160,17,14,152,228,161,27,201,217,36,240,10,175,206,177,124,38,135,28,190,122,91,109,224,56,126,139,153,149,123,137,108,103,160,18,13,111,197,83,111,187,99,87,247,167,17,128,97,141,1,62,136,8,123,124,243,65,227,23,101,121,34,154,68,118,245,160,176,73,194,83,219,26,39,202,203,250,128,222,2,177,177,68,119,93,193,32,146,124,90,108,159,120,167,196,183,104,110,220,160,23,198,215,110,132,186,47,151,221,249,143,255,198,150,111,250,59,27,100,125,75,122,236,59,67,230,214,183,171,239,4,232,160,243,129,214,205,142,5,250,58,99,129,145,177,53,137,7,205,21,205,113,246,52,66,180,235,229,84,190,12,2,142,255,153,160,88,72,38,73,92,103,15,103,83,111,122,242,225,201,211,199,143,217,2,53,164,164,90,115,27,64,178,170,122,127,229,220,160,113,108,247,26,59,67,31,95,124,173,73,67,237,250,140,15,99,74,90,62,158,128,77,2,244,88,163,175,63,114,221,50,160,193,70,173,55,41,231,69,65,112,9,158,41,97,73,77,3,108,222,33,61,121,168,60,39,134,48,129,8,134,170,184,112,160,220,67,96,141,155,253,66,228,10,14,151,7,221,195,199,37,52,154,39,206,103,247,124,126,95,11,24,126,253,196,147,234,160,4,251,178,215,177,99,63,65,108,73,209,148,181,62,151,132,211,2,62,45,174,250,205,180,18,104,82,173,232,87,65,25,160,127,188,123,217,18,146,253,108,75,236,17,218,226,163,173,108,114,232,4,85,250,30,215,35,248,232,237,143,231,149,4,100,160,251,60,128,176,16,190,42,167,32,137,202,218,86,170,232,220,155,186,71,101,44,31,115,102,205,77,5,66,172,253,178,197,160,191,206,160,180,210,66,180,165,142,193,114,59,208,212,163,71,192,68,161,246,68,173,99,14,63,196,189,212,183,26,248,166,160,120,111,196,145,168,96,1,64,243,97,255,71,183,26,182,112,90,106,209,172,36,63,178,27,112,28,8,224,237,43,8,55,160,255,180,41,152,120,18,117,140,48,239,106,19,151,226,224,119,56,150,40,117,133,9,82,75,94,255,0,36,42,211,190,0,160,63,111,21,204,37,243,152,155,55,14,233,122,16,231,133,74,39,8,120,115,231,98,225,151,4,251,118,215,74,51,97,254,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,183,71,250,18,0,149,150,132,71,137,82,186,33,252,219,255,211,184,112,60,34,0,31,168,175,181,190,91,34,225,29,136,0],[160,45,176,192,131,103,46,125,69,137,220,205,162,24,186,11,196,15,145,109,234,234,157,28,139,241,205,25,120,185,161,244,32,0],[160,243,215,148,180,148,117,204,92,219,123,146,157,35,53,129,153,255,157,198,201,221,69,187,166,25,135,103,148,130,77,56,72,0],[160,231,29,60,93,136,60,186,17,157,224,26,19,111,236,167,5,120,217,245,241,110,184,114,120,203,13,187,192,108,59,177,235,0],[160,250,124,203,235,134,33,153,5,105,81,141,236,77,232,208,204,144,199,143,198,130,220,236,240,144,108,56,249,225,50,125,156,0],[160,140,46,14,113,70,89,95,192,44,205,219,174,70,242,9,252,64,41,136,127,14,91,59,230,82,177,58,167,119,35,131,214,0],[160,30,95,14,238,65,198,39,32,21,147,150,42,29,2,205,190,212,239,132,89,111,24,146,81,1,8,20,80,114,26,245,157,0],[160,63,128,79,244,80,116,153,47,52,45,122,92,97,33,187,18,188,187,126,39,233,88,11,155,35,193,71,124,180,197,133,17,0],[160,25,85,178,234,135,114,1,182,168,156,119,106,168,232,60,178,120,152,77,31,103,183,68,176,20,22,219,189,134,32,165,50,0],[160,98,187,195,190,112,171,213,255,55,156,163,103,212,232,13,95,179,177,190,108,75,124,138,99,108,169,141,34,181,89,132,40,0],[160,236,141,9,44,231,10,145,189,76,194,47,252,201,3,54,168,71,76,58,187,234,204,92,170,16,129,19,201,9,252,167,111,0],[160,94,134,224,129,48,238,42,144,131,125,108,164,40,191,102,9,72,67,171,69,72,214,186,84,235,136,56,254,174,36,102,85,0],[160,12,29,112,110,8,140,75,10,232,209,170,13,137,90,39,141,237,210,207,28,171,97,74,185,109,184,168,73,214,2,132,97,0],[160,120,215,77,127,165,83,158,102,146,107,230,56,68,11,198,176,36,228,75,144,14,147,129,94,157,66,102,203,94,235,152,50,0],[160,231,241,125,247,52,253,228,200,117,85,103,199,195,44,52,233,159,230,145,17,116,183,22,84,70,44,7,13,4,73,185,12,0],[160,252,241,80,73,8,232,87,254,104,121,82,210,107,199,38,5,32,69,99,110,107,145,34,236,192,88,192,231,77,42,82,254,0],[160,148,164,243,224,114,211,36,66,233,174,116,37,91,62,4,42,33,29,237,253,20,170,147,143,98,251,213,226,251,141,47,35,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,45,176,192,131,103,46,125,69,137,220,205,162,24,186,11,196,15,145,109,234,234,157,28,139,241,205,25,120,185,161,244,32,160,243,215,148,180,148,117,204,92,219,123,146,157,35,53,129,153,255,157,198,201,221,69,187,166,25,135,103,148,130,77,56,72,160,231,29,60,93,136,60,186,17,157,224,26,19,111,236,167,5,120,217,245,241,110,184,114,120,203,13,187,192,108,59,177,235,160,250,124,203,235,134,33,153,5,105,81,141,236,77,232,208,204,144,199,143,198,130,220,236,240,144,108,56,249,225,50,125,156,160,140,46,14,113,70,89,95,192,44,205,219,174,70,242,9,252,64,41,136,127,14,91,59,230,82,177,58,167,119,35,131,214,160,30,95,14,238,65,198,39,32,21,147,150,42,29,2,205,190,212,239,132,89,111,24,146,81,1,8,20,80,114,26,245,157,160,63,128,79,244,80,116,153,47,52,45,122,92,97,33,187,18,188,187,126,39,233,88,11,155,35,193,71,124,180,197,133,17,160,25,85,178,234,135,114,1,182,168,156,119,106,168,232,60,178,120,152,77,31,103,183,68,176,20,22,219,189,134,32,165,50,160,98,187,195,190,112,171,213,255,55,156,163,103,212,232,13,95,179,177,190,108,75,124,138,99,108,169,141,34,181,89,132,40,160,236,141,9,44,231,10,145,189,76,194,47,252,201,3,54,168,71,76,58,187,234,204,92,170,16,129,19,201,9,252,167,111,160,94,134,224,129,48,238,42,144,131,125,108,164,40,191,102,9,72,67,171,69,72,214,186,84,235,136,56,254,174,36,102,85,160,12,29,112,110,8,140,75,10,232,209,170,13,137,90,39,141,237,210,207,28,171,97,74,185,109,184,168,73,214,2,132,97,160,120,215,77,127,165,83,158,102,146,107,230,56,68,11,198,176,36,228,75,144,14,147,129,94,157,66,102,203,94,235,152,50,160,231,241,125,247,52,253,228,200,117,85,103,199,195,44,52,233,159,230,145,17,116,183,22,84,70,44,7,13,4,73,185,12,160,252,241,80,73,8,232,87,254,104,121,82,210,107,199,38,5,32,69,99,110,107,145,34,236,192,88,192,231,77,42,82,254,160,148,164,243,224,114,211,36,66,233,174,116,37,91,62,4,42,33,29,237,253,20,170,147,143,98,251,213,226,251,141,47,35,128],[249,2,17,160,45,176,192,131,103,46,125,69,137,220,205,162,24,186,11,196,15,145,109,234,234,157,28,139,241,205,25,120,185,161,244,32,160,243,215,148,180,148,117,204,92,219,123,146,157,35,53,129,153,255,157,198,201,221,69,187,166,25,135,103,148,130,77,56,72,160,231,29,60,93,136,60,186,17,157,224,26,19,111,236,167,5,120,217,245,241,110,184,114,120,203,13,187,192,108,59,177,235,160,250,124,203,235,134,33,153,5,105,81,141,236,77,232,208,204,144,199,143,198,130,220,236,240,144,108,56,249,225,50,125,156,160,140,46,14,113,70,89,95,192,44,205,219,174,70,242,9,252,64,41,136,127,14,91,59,230,82,177,58,167,119,35,131,214,160,183,71,250,18,0,149,150,132,71,137,82,186,33,252,219,255,211,184,112,60,34,0,31,168,175,181,190,91,34,225,29,136,160,63,128,79,244,80,116,153,47,52,45,122,92,97,33,187,18,188,187,126,39,233,88,11,155,35,193,71,124,180,197,133,17,160,25,85,178,234,135,114,1,182,168,156,119,106,168,232,60,178,120,152,77,31,103,183,68,176,20,22,219,189,134,32,165,50,160,98,187,195,190,112,171,213,255,55,156,163,103,212,232,13,95,179,177,190,108,75,124,138,99,108,169,141,34,181,89,132,40,160,236,141,9,44,231,10,145,189,76,194,47,252,201,3,54,168,71,76,58,187,234,204,92,170,16,129,19,201,9,252,167,111,160,94,134,224,129,48,238,42,144,131,125,108,164,40,191,102,9,72,67,171,69,72,214,186,84,235,136,56,254,174,36,102,85,160,12,29,112,110,8,140,75,10,232,209,170,13,137,90,39,141,237,210,207,28,171,97,74,185,109,184,168,73,214,2,132,97,160,120,215,77,127,165,83,158,102,146,107,230,56,68,11,198,176,36,228,75,144,14,147,129,94,157,66,102,203,94,235,152,50,160,231,241,125,247,52,253,228,200,117,85,103,199,195,44,52,233,159,230,145,17,116,183,22,84,70,44,7,13,4,73,185,12,160,252,241,80,73,8,232,87,254,104,121,82,210,107,199,38,5,32,69,99,110,107,145,34,236,192,88,192,231,77,42,82,254,160,148,164,243,224,114,211,36,66,233,174,116,37,91,62,4,42,33,29,237,253,20,170,147,143,98,251,213,226,251,141,47,35,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":15,"drifted_index":15,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,205,25,171,218,87,250,168,203,161,0,76,203,170,245,104,52,130,143,16,104,239,22,163,230,68,201,251,205,247,33,81,96,0],[160,119,105,145,26,28,255,104,172,29,56,196,147,18,74,237,221,155,205,28,232,224,103,181,33,197,208,155,85,111,134,7,239,0],[160,92,225,136,53,94,242,130,121,66,180,129,73,62,137,113,39,157,47,250,247,96,6,149,239,75,188,143,101,196,195,187,78,0],[160,85,151,137,123,118,91,216,41,57,24,165,44,206,224,10,128,251,15,164,118,92,242,175,26,146,23,47,248,53,141,243,45,0],[160,113,178,7,198,112,61,173,230,218,153,92,129,115,65,200,18,75,42,113,113,0,135,13,126,36,157,143,191,165,12,184,57,0],[160,150,97,150,145,107,244,44,250,141,13,144,1,251,63,128,74,55,250,54,16,92,128,197,200,49,209,49,16,252,145,189,127,0],[160,180,3,118,75,67,176,172,252,139,202,126,110,34,239,7,208,162,177,131,167,98,103,155,144,44,128,108,157,145,176,204,224,0],[160,124,211,78,76,216,218,242,206,136,237,80,11,208,226,98,129,107,28,16,185,162,195,212,205,11,125,211,165,163,239,231,175,0],[160,130,29,215,22,236,4,11,156,108,115,106,136,51,53,121,214,184,160,196,54,128,75,193,128,154,161,119,20,149,5,21,232,0],[160,146,45,45,22,45,52,140,71,140,247,250,96,51,235,26,223,42,83,220,255,239,12,53,110,80,170,60,222,229,28,97,52,0],[160,203,2,160,252,206,121,237,249,186,209,194,213,35,133,12,39,33,3,246,253,123,180,95,157,81,174,186,226,200,242,200,110,0],[160,144,153,120,51,204,79,203,155,153,155,50,237,6,232,237,62,16,81,226,62,65,150,5,97,185,204,247,105,78,108,30,73,0],[160,104,166,196,84,52,148,177,156,68,148,3,44,152,9,224,132,106,118,130,255,40,142,135,42,44,243,114,125,205,231,149,25,0],[160,248,154,231,202,39,177,133,174,115,235,47,202,138,161,14,214,26,62,87,126,182,63,129,113,207,220,87,195,226,246,142,141,0],[160,228,242,79,113,47,86,57,210,166,108,232,171,242,46,202,5,30,18,243,107,205,250,197,255,34,43,147,69,187,83,93,32,0],[160,172,157,30,140,199,116,163,203,168,186,234,151,25,227,173,114,244,127,84,156,132,152,244,53,138,95,111,218,204,40,168,229,0],[160,59,189,111,165,159,123,11,82,59,48,17,32,121,176,3,238,186,190,115,145,26,211,116,193,40,108,41,68,163,225,101,92,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,119,105,145,26,28,255,104,172,29,56,196,147,18,74,237,221,155,205,28,232,224,103,181,33,197,208,155,85,111,134,7,239,160,92,225,136,53,94,242,130,121,66,180,129,73,62,137,113,39,157,47,250,247,96,6,149,239,75,188,143,101,196,195,187,78,160,85,151,137,123,118,91,216,41,57,24,165,44,206,224,10,128,251,15,164,118,92,242,175,26,146,23,47,248,53,141,243,45,160,113,178,7,198,112,61,173,230,218,153,92,129,115,65,200,18,75,42,113,113,0,135,13,126,36,157,143,191,165,12,184,57,160,150,97,150,145,107,244,44,250,141,13,144,1,251,63,128,74,55,250,54,16,92,128,197,200,49,209,49,16,252,145,189,127,160,180,3,118,75,67,176,172,252,139,202,126,110,34,239,7,208,162,177,131,167,98,103,155,144,44,128,108,157,145,176,204,224,160,124,211,78,76,216,218,242,206,136,237,80,11,208,226,98,129,107,28,16,185,162,195,212,205,11,125,211,165,163,239,231,175,160,130,29,215,22,236,4,11,156,108,115,106,136,51,53,121,214,184,160,196,54,128,75,193,128,154,161,119,20,149,5,21,232,160,146,45,45,22,45,52,140,71,140,247,250,96,51,235,26,223,42,83,220,255,239,12,53,110,80,170,60,222,229,28,97,52,160,203,2,160,252,206,121,237,249,186,209,194,213,35,133,12,39,33,3,246,253,123,180,95,157,81,174,186,226,200,242,200,110,160,144,153,120,51,204,79,203,155,153,155,50,237,6,232,237,62,16,81,226,62,65,150,5,97,185,204,247,105,78,108,30,73,160,104,166,196,84,52,148,177,156,68,148,3,44,152,9,224,132,106,118,130,255,40,142,135,42,44,243,114,125,205,231,149,25,160,248,154,231,202,39,177,133,174,115,235,47,202,138,161,14,214,26,62,87,126,182,63,129,113,207,220,87,195,226,246,142,141,160,228,242,79,113,47,86,57,210,166,108,232,171,242,46,202,5,30,18,243,107,205,250,197,255,34,43,147,69,187,83,93,32,160,172,157,30,140,199,116,163,203,168,186,234,151,25,227,173,114,244,127,84,156,132,152,244,53,138,95,111,218,204,40,168,229,160,59,189,111,165,159,123,11,82,59,48,17,32,121,176,3,238,186,190,115,145,26,211,116,193,40,108,41,68,163,225,101,92,128],[249,2,17,160,119,105,145,26,28,255,104,172,29,56,196,147,18,74,237,221,155,205,28,232,224,103,181,33,197,208,155,85,111,134,7,239,160,92,225,136,53,94,242,130,121,66,180,129,73,62,137,113,39,157,47,250,247,96,6,149,239,75,188,143,101,196,195,187,78,160,85,151,137,123,118,91,216,41,57,24,165,44,206,224,10,128,251,15,164,118,92,242,175,26,146,23,47,248,53,141,243,45,160,113,178,7,198,112,61,173,230,218,153,92,129,115,65,200,18,75,42,113,113,0,135,13,126,36,157,143,191,165,12,184,57,160,150,97,150,145,107,244,44,250,141,13,144,1,251,63,128,74,55,250,54,16,92,128,197,200,49,209,49,16,252,145,189,127,160,180,3,118,75,67,176,172,252,139,202,126,110,34,239,7,208,162,177,131,167,98,103,155,144,44,128,108,157,145,176,204,224,160,124,211,78,76,216,218,242,206,136,237,80,11,208,226,98,129,107,28,16,185,162,195,212,205,11,125,211,165,163,239,231,175,160,130,29,215,22,236,4,11,156,108,115,106,136,51,53,121,214,184,160,196,54,128,75,193,128,154,161,119,20,149,5,21,232,160,146,45,45,22,45,52,140,71,140,247,250,96,51,235,26,223,42,83,220,255,239,12,53,110,80,170,60,222,229,28,97,52,160,203,2,160,252,206,121,237,249,186,209,194,213,35,133,12,39,33,3,246,253,123,180,95,157,81,174,186,226,200,242,200,110,160,144,153,120,51,204,79,203,155,153,155,50,237,6,232,237,62,16,81,226,62,65,150,5,97,185,204,247,105,78,108,30,73,160,104,166,196,84,52,148,177,156,68,148,3,44,152,9,224,132,106,118,130,255,40,142,135,42,44,243,114,125,205,231,149,25,160,248,154,231,202,39,177,133,174,115,235,47,202,138,161,14,214,26,62,87,126,182,63,129,113,207,220,87,195,226,246,142,141,160,228,242,79,113,47,86,57,210,166,108,232,171,242,46,202,5,30,18,243,107,205,250,197,255,34,43,147,69,187,83,93,32,160,172,157,30,140,199,116,163,203,168,186,234,151,25,227,173,114,244,127,84,156,132,152,244,53,138,95,111,218,204,40,168,229,160,205,25,171,218,87,250,168,203,161,0,76,203,170,245,104,52,130,143,16,104,239,22,163,230,68,201,251,205,247,33,81,96,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,121,155,183,168,168,224,186,74,39,249,205,144,226,222,87,33,122,75,94,86,91,44,68,138,208,221,205,94,137,237,31,167,0],[160,108,188,204,211,126,107,208,128,243,248,3,164,2,194,39,95,140,2,71,21,198,156,142,119,249,26,73,222,214,54,227,201,0],[160,216,166,15,171,3,39,222,226,151,7,37,162,160,144,133,85,178,191,100,200,115,78,200,44,121,98,26,36,102,16,63,13,0],[160,211,166,189,180,127,185,152,149,196,69,174,17,106,89,82,206,38,7,121,157,189,138,225,44,244,97,11,67,203,222,95,28,0],[160,8,132,151,143,212,144,55,128,240,33,254,84,188,235,190,202,228,136,21,56,199,56,48,117,146,1,142,149,157,133,5,83,0],[160,18,255,109,243,160,40,236,105,6,205,142,224,96,195,215,117,111,114,130,172,165,161,177,16,77,50,87,191,130,63,166,5,0],[160,255,167,69,108,76,23,221,108,179,56,235,118,27,211,35,161,111,140,1,65,73,52,229,44,150,245,89,151,82,249,13,233,0],[160,176,161,10,73,10,179,102,6,110,102,236,31,50,75,166,185,71,237,244,63,62,215,206,146,88,150,36,85,233,98,84,159,0],[160,44,20,10,64,108,235,119,158,27,72,55,238,236,23,39,243,202,142,236,246,223,215,132,39,236,40,137,220,171,10,12,90,0],[160,118,152,151,239,78,48,94,96,179,196,178,68,169,208,186,255,116,53,99,1,38,74,9,249,245,50,93,83,246,159,187,30,0],[160,6,182,43,29,10,39,36,32,151,111,196,35,45,156,11,119,52,176,126,121,213,195,197,168,25,34,222,162,134,34,147,50,0],[160,144,144,27,145,141,178,127,228,173,79,255,136,206,15,175,150,172,231,184,25,170,28,173,3,136,198,64,255,126,237,174,114,0],[160,245,49,214,101,12,165,166,2,18,138,0,253,65,99,79,84,226,162,107,54,98,115,91,95,146,210,29,232,226,245,54,213,0],[160,221,205,179,159,233,237,236,114,183,219,53,51,166,185,9,228,140,101,58,99,139,26,176,195,76,203,247,163,63,208,137,225,0],[160,232,235,145,5,44,141,250,3,118,7,163,104,71,36,93,160,208,128,111,37,201,73,245,144,25,94,139,202,56,181,10,230,0],[160,198,134,207,135,75,85,16,155,86,254,148,114,254,136,73,45,40,192,26,172,199,51,34,110,157,145,114,195,109,224,200,147,0],[160,106,119,204,239,39,9,55,56,19,152,147,66,136,112,164,162,58,183,50,194,100,25,61,248,48,195,101,179,96,160,123,97,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,108,188,204,211,126,107,208,128,243,248,3,164,2,194,39,95,140,2,71,21,198,156,142,119,249,26,73,222,214,54,227,201,160,216,166,15,171,3,39,222,226,151,7,37,162,160,144,133,85,178,191,100,200,115,78,200,44,121,98,26,36,102,16,63,13,160,211,166,189,180,127,185,152,149,196,69,174,17,106,89,82,206,38,7,121,157,189,138,225,44,244,97,11,67,203,222,95,28,160,8,132,151,143,212,144,55,128,240,33,254,84,188,235,190,202,228,136,21,56,199,56,48,117,146,1,142,149,157,133,5,83,160,18,255,109,243,160,40,236,105,6,205,142,224,96,195,215,117,111,114,130,172,165,161,177,16,77,50,87,191,130,63,166,5,160,255,167,69,108,76,23,221,108,179,56,235,118,27,211,35,161,111,140,1,65,73,52,229,44,150,245,89,151,82,249,13,233,160,176,161,10,73,10,179,102,6,110,102,236,31,50,75,166,185,71,237,244,63,62,215,206,146,88,150,36,85,233,98,84,159,160,44,20,10,64,108,235,119,158,27,72,55,238,236,23,39,243,202,142,236,246,223,215,132,39,236,40,137,220,171,10,12,90,160,118,152,151,239,78,48,94,96,179,196,178,68,169,208,186,255,116,53,99,1,38,74,9,249,245,50,93,83,246,159,187,30,160,6,182,43,29,10,39,36,32,151,111,196,35,45,156,11,119,52,176,126,121,213,195,197,168,25,34,222,162,134,34,147,50,160,144,144,27,145,141,178,127,228,173,79,255,136,206,15,175,150,172,231,184,25,170,28,173,3,136,198,64,255,126,237,174,114,160,245,49,214,101,12,165,166,2,18,138,0,253,65,99,79,84,226,162,107,54,98,115,91,95,146,210,29,232,226,245,54,213,160,221,205,179,159,233,237,236,114,183,219,53,51,166,185,9,228,140,101,58,99,139,26,176,195,76,203,247,163,63,208,137,225,160,232,235,145,5,44,141,250,3,118,7,163,104,71,36,93,160,208,128,111,37,201,73,245,144,25,94,139,202,56,181,10,230,160,198,134,207,135,75,85,16,155,86,254,148,114,254,136,73,45,40,192,26,172,199,51,34,110,157,145,114,195,109,224,200,147,160,106,119,204,239,39,9,55,56,19,152,147,66,136,112,164,162,58,183,50,194,100,25,61,248,48,195,101,179,96,160,123,97,128],[249,2,17,160,121,155,183,168,168,224,186,74,39,249,205,144,226,222,87,33,122,75,94,86,91,44,68,138,208,221,205,94,137,237,31,167,160,216,166,15,171,3,39,222,226,151,7,37,162,160,144,133,85,178,191,100,200,115,78,200,44,121,98,26,36,102,16,63,13,160,211,166,189,180,127,185,152,149,196,69,174,17,106,89,82,206,38,7,121,157,189,138,225,44,244,97,11,67,203,222,95,28,160,8,132,151,143,212,144,55,128,240,33,254,84,188,235,190,202,228,136,21,56,199,56,48,117,146,1,142,149,157,133,5,83,160,18,255,109,243,160,40,236,105,6,205,142,224,96,195,215,117,111,114,130,172,165,161,177,16,77,50,87,191,130,63,166,5,160,255,167,69,108,76,23,221,108,179,56,235,118,27,211,35,161,111,140,1,65,73,52,229,44,150,245,89,151,82,249,13,233,160,176,161,10,73,10,179,102,6,110,102,236,31,50,75,166,185,71,237,244,63,62,215,206,146,88,150,36,85,233,98,84,159,160,44,20,10,64,108,235,119,158,27,72,55,238,236,23,39,243,202,142,236,246,223,215,132,39,236,40,137,220,171,10,12,90,160,118,152,151,239,78,48,94,96,179,196,178,68,169,208,186,255,116,53,99,1,38,74,9,249,245,50,93,83,246,159,187,30,160,6,182,43,29,10,39,36,32,151,111,196,35,45,156,11,119,52,176,126,121,213,195,197,168,25,34,222,162,134,34,147,50,160,144,144,27,145,141,178,127,228,173,79,255,136,206,15,175,150,172,231,184,25,170,28,173,3,136,198,64,255,126,237,174,114,160,245,49,214,101,12,165,166,2,18,138,0,253,65,99,79,84,226,162,107,54,98,115,91,95,146,210,29,232,226,245,54,213,160,221,205,179,159,233,237,236,114,183,219,53,51,166,185,9,228,140,101,58,99,139,26,176,195,76,203,247,163,63,208,137,225,160,232,235,145,5,44,141,250,3,118,7,163,104,71,36,93,160,208,128,111,37,201,73,245,144,25,94,139,202,56,181,10,230,160,198,134,207,135,75,85,16,155,86,254,148,114,254,136,73,45,40,192,26,172,199,51,34,110,157,145,114,195,109,224,200,147,160,106,119,204,239,39,9,55,56,19,152,147,66,136,112,164,162,58,183,50,194,100,25,61,248,48,195,101,179,96,160,123,97,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,1,17],[249,1,17]]}},"account":null,"storage":null,"values":[[160,103,202,243,68,181,200,159,54,192,176,190,96,187,209,78,144,114,236,88,184,219,64,36,117,78,112,93,36,57,198,173,153,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,37,112,16,199,69,26,213,141,117,15,88,58,234,140,35,212,221,46,9,159,183,156,34,187,200,130,0,49,2,231,49,202,0],[160,84,13,58,113,191,191,5,200,96,75,188,127,98,49,196,171,245,18,162,105,104,34,247,216,146,112,47,166,59,214,5,229,0],[160,205,9,41,43,203,158,199,235,255,74,41,22,216,191,72,3,87,91,58,221,106,67,112,93,211,209,113,221,36,169,105,237,0],[160,222,151,189,27,111,65,240,142,200,49,241,226,166,1,15,178,183,26,35,61,118,249,22,24,122,105,243,84,145,67,123,122,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,132,233,79,11,166,48,68,162,163,147,55,129,108,76,188,16,90,126,123,177,237,78,56,227,61,63,90,64,39,45,33,114,0],[160,25,255,191,193,140,206,89,20,157,212,240,1,70,228,43,244,155,44,106,161,31,169,1,16,80,174,138,52,189,246,172,160,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,248,28,212,113,157,219,28,196,226,90,62,51,115,196,123,226,135,9,162,67,108,99,106,138,39,38,178,178,50,64,89,146,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,70,28,90,76,241,7,217,141,50,238,173,174,99,70,154,199,136,103,233,188,38,197,227,152,134,125,52,249,245,108,147,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,17,128,128,128,128,160,37,112,16,199,69,26,213,141,117,15,88,58,234,140,35,212,221,46,9,159,183,156,34,187,200,130,0,49,2,231,49,202,160,84,13,58,113,191,191,5,200,96,75,188,127,98,49,196,171,245,18,162,105,104,34,247,216,146,112,47,166,59,214,5,229,160,205,9,41,43,203,158,199,235,255,74,41,22,216,191,72,3,87,91,58,221,106,67,112,93,211,209,113,221,36,169,105,237,160,222,151,189,27,111,65,240,142,200,49,241,226,166,1,15,178,183,26,35,61,118,249,22,24,122,105,243,84,145,67,123,122,128,128,160,132,233,79,11,166,48,68,162,163,147,55,129,108,76,188,16,90,126,123,177,237,78,56,227,61,63,90,64,39,45,33,114,160,25,255,191,193,140,206,89,20,157,212,240,1,70,228,43,244,155,44,106,161,31,169,1,16,80,174,138,52,189,246,172,160,128,160,248,28,212,113,157,219,28,196,226,90,62,51,115,196,123,226,135,9,162,67,108,99,106,138,39,38,178,178,50,64,89,146,128,160,0,70,28,90,76,241,7,217,141,50,238,173,174,99,70,154,199,136,103,233,188,38,197,227,152,134,125,52,249,245,108,147,128],[249,1,17,128,128,128,128,160,37,112,16,199,69,26,213,141,117,15,88,58,234,140,35,212,221,46,9,159,183,156,34,187,200,130,0,49,2,231,49,202,160,103,202,243,68,181,200,159,54,192,176,190,96,187,209,78,144,114,236,88,184,219,64,36,117,78,112,93,36,57,198,173,153,160,205,9,41,43,203,158,199,235,255,74,41,22,216,191,72,3,87,91,58,221,106,67,112,93,211,209,113,221,36,169,105,237,160,222,151,189,27,111,65,240,142,200,49,241,226,166,1,15,178,183,26,35,61,118,249,22,24,122,105,243,84,145,67,123,122,128,128,160,132,233,79,11,166,48,68,162,163,147,55,129,108,76,188,16,90,126,123,177,237,78,56,227,61,63,90,64,39,45,33,114,160,25,255,191,193,140,206,89,20,157,212,240,1,70,228,43,244,155,44,106,161,31,169,1,16,80,174,138,52,189,246,172,160,128,160,248,28,212,113,157,219,28,196,226,90,62,51,115,196,123,226,135,9,162,67,108,99,106,138,39,38,178,178,50,64,89,146,128,160,0,70,28,90,76,241,7,217,141,50,238,173,174,99,70,154,199,136,103,233,188,38,197,227,152,134,125,52,249,245,108,147,128]]},{"start":null,"extension_branch":null,"account":{"address":[80,239,191,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201],"key":[123,53,240,91,158,160,175,159,65,212,107,23,98,208,38,205,150,63,244,2,185,236,246,95,240,224,191,229,27,102,202,231],"list_rlp_bytes":[[248,112],[248,112]],"value_rlp_bytes":[[184,80],[184,80]],"value_list_rlp_bytes":[[248,78],[248,78]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,112]},"storage":null,"values":[[157,59,158,160,175,159,65,212,107,23,98,208,38,205,150,63,244,2,185,236,246,95,240,224,191,229,27,102,202,231,0,0,0,0],[157,59,158,160,175,159,65,212,107,23,98,208,38,205,150,63,244,2,185,236,246,95,240,224,191,229,27,102,202,231,0,0,0,0],[130,18,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[136,33,40,142,198,128,211,61,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,211,193,60,172,211,5,56,197,142,83,128,89,64,43,239,126,252,208,254,86,205,43,118,150,9,91,97,35,134,86,23,79,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[130,18,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[136,33,40,142,198,128,211,61,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,43,241,2,58,110,2,230,217,213,217,146,103,221,140,77,11,247,170,77,0,162,19,233,136,89,108,100,126,121,96,144,102,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,59,158,160,175,159,65,212,107,23,98,208,38,205,150,63,244,2,185,236,246,95,240,224,191,229,27,102,202,231,0,0,0,0]],"keccak_data":[[248,112,157,59,158,160,175,159,65,212,107,23,98,208,38,205,150,63,244,2,185,236,246,95,240,224,191,229,27,102,202,231,184,80,248,78,130,18,138,136,33,40,142,198,128,211,61,32,160,211,193,60,172,211,5,56,197,142,83,128,89,64,43,239,126,252,208,254,86,205,43,118,150,9,91,97,35,134,86,23,79,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,112,157,59,158,160,175,159,65,212,107,23,98,208,38,205,150,63,244,2,185,236,246,95,240,224,191,229,27,102,202,231,184,80,248,78,130,18,138,136,33,40,142,198,128,211,61,32,160,43,241,2,58,110,2,230,217,213,217,146,103,221,140,77,11,247,170,77,0,162,19,233,136,89,108,100,126,121,96,144,102,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[80,239,191,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,165,81,83,100,145,26,113,232,41,53,70,133,150,134,150,98,49,6,4,21,47,83,120,193,112,83,162,217,156,146,203,31,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,34,39,131,73,65,47,37,211,142,206,231,172,16,11,203,33,107,30,7,213,226,2,174,55,216,4,117,220,10,186,68,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,55,235,85,86,230,197,53,159,28,141,120,87,82,57,4,132,185,12,24,158,142,210,106,188,12,87,179,231,52,16,126,229,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,160,32,34,39,131,73,65,47,37,211,142,206,231,172,16,11,203,33,107,30,7,213,226,2,174,55,216,4,117,220,10,186,68,128,128,128,128,128,128,128,160,55,235,85,86,230,197,53,159,28,141,120,87,82,57,4,132,185,12,24,158,142,210,106,188,12,87,179,231,52,16,126,229,128,128,128,128,128],[248,81,128,128,128,160,165,81,83,100,145,26,113,232,41,53,70,133,150,134,150,98,49,6,4,21,47,83,120,193,112,83,162,217,156,146,203,31,128,128,128,128,128,128,128,160,55,235,85,86,230,197,53,159,28,141,120,87,82,57,4,132,185,12,24,158,142,210,106,188,12,87,179,231,52,16,126,229,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33],"key":[58,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112],"list_rlp_bytes":[[226],[226]],"value_rlp_bytes":[[2],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,58,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,58,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[226,160,58,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112,2],[226,160,58,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/UpdateOneLevelBigVal.json b/zkevm-circuits/src/mpt_circuit/tests/UpdateOneLevelBigVal.json new file mode 100644 index 0000000000..8fb030c417 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/UpdateOneLevelBigVal.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,200,243,180,34,196,148,174,99,16,59,11,42,176,189,255,7,163,168,192,209,114,48,126,249,53,204,218,211,177,4,105,112,0],[160,152,71,128,152,158,201,117,233,85,99,52,14,102,64,63,231,196,87,38,233,121,69,226,59,48,104,120,10,154,102,157,124,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,47,153,170,219,9,198,22,86,248,152,232,249,109,115,192,228,13,55,28,207,117,247,47,63,204,5,209,13,223,234,159,26,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,74,72,126,214,38,114,106,6,139,208,78,23,94,227,56,235,8,120,38,244,151,36,226,85,139,208,75,186,50,93,232,139,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,74,72,126,214,38,114,106,6,139,208,78,23,94,227,56,235,8,120,38,244,151,36,226,85,139,208,75,186,50,93,232,139,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,47,153,170,219,9,198,22,86,248,152,232,249,109,115,192,228,13,55,28,207,117,247,47,63,204,5,209,13,223,234,159,26,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,60,89,199,193,177,71,27,9,6,219,206,34,13,147,100,142,80,74,189,149,136,199,168,29,205,9,178,79,161,205,99,31,0],[160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,0],[160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,0],[160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,0],[160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,0],[160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,0],[160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,0],[160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,0],[160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,0],[160,146,182,235,84,94,114,8,227,240,42,193,1,138,219,154,123,24,248,232,13,53,253,122,191,191,215,130,128,234,226,86,123,0],[160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,0],[160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,0],[160,204,47,95,53,220,42,86,221,92,153,147,52,233,155,95,54,88,156,118,84,4,61,238,56,92,140,65,14,182,174,125,178,0],[160,237,113,19,48,172,139,234,51,70,37,236,44,37,118,182,177,114,98,221,189,39,248,50,83,47,77,215,60,136,159,224,77,0],[160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,0],[160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,0],[160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,160,146,182,235,84,94,114,8,227,240,42,193,1,138,219,154,123,24,248,232,13,53,253,122,191,191,215,130,128,234,226,86,123,160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,160,204,47,95,53,220,42,86,221,92,153,147,52,233,155,95,54,88,156,118,84,4,61,238,56,92,140,65,14,182,174,125,178,160,237,113,19,48,172,139,234,51,70,37,236,44,37,118,182,177,114,98,221,189,39,248,50,83,47,77,215,60,136,159,224,77,160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,128],[249,2,17,160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,160,146,182,235,84,94,114,8,227,240,42,193,1,138,219,154,123,24,248,232,13,53,253,122,191,191,215,130,128,234,226,86,123,160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,160,60,89,199,193,177,71,27,9,6,219,206,34,13,147,100,142,80,74,189,149,136,199,168,29,205,9,178,79,161,205,99,31,160,237,113,19,48,172,139,234,51,70,37,236,44,37,118,182,177,114,98,221,189,39,248,50,83,47,77,215,60,136,159,224,77,160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,9,140,198,60,180,239,74,249,70,85,143,82,239,38,119,152,245,146,194,129,241,217,255,108,76,127,18,46,245,117,24,70,0],[160,17,14,152,228,161,27,201,217,36,240,10,175,206,177,124,38,135,28,190,122,91,109,224,56,126,139,153,149,123,137,108,103,0],[160,18,13,111,197,83,111,187,99,87,247,167,17,128,97,141,1,62,136,8,123,124,243,65,227,23,101,121,34,154,68,118,245,0],[160,176,73,194,83,219,26,39,202,203,250,128,222,2,177,177,68,119,93,193,32,146,124,90,108,159,120,167,196,183,104,110,220,0],[160,61,160,201,162,57,37,164,44,243,74,167,139,247,121,10,86,101,88,72,196,10,131,241,116,30,59,117,43,20,128,40,193,0],[160,243,129,214,205,142,5,250,58,99,129,145,177,53,137,7,205,21,205,113,246,52,66,180,235,229,84,190,12,2,142,255,153,0],[160,88,72,38,73,92,103,15,103,83,111,122,242,225,201,211,199,143,217,2,53,164,164,90,115,27,64,178,170,122,127,229,220,0],[160,113,108,247,26,59,67,31,95,124,173,73,67,237,250,140,15,99,74,90,62,158,128,77,2,244,88,163,175,63,114,221,50,0],[160,193,70,173,55,41,231,69,65,112,9,158,41,97,73,77,3,108,222,33,61,121,168,60,39,134,48,129,8,134,170,184,112,0],[160,220,67,96,141,155,253,66,228,10,14,151,7,221,195,199,37,52,154,39,206,103,247,124,126,95,11,24,126,253,196,147,234,0],[160,4,251,178,215,177,99,63,65,108,73,209,148,181,62,151,132,211,2,62,45,174,250,205,180,18,104,82,173,232,87,65,25,0],[160,127,188,123,217,18,146,253,108,75,236,17,218,226,163,173,108,114,232,4,85,250,30,215,35,248,232,237,143,231,149,4,100,0],[160,127,62,96,115,155,47,151,79,242,54,78,184,86,250,239,57,139,170,36,129,159,84,15,202,218,167,188,5,25,160,44,124,0],[160,191,206,160,180,210,66,180,165,142,193,114,59,208,212,163,71,192,68,161,246,68,173,99,14,63,196,189,212,183,26,248,166,0],[160,120,111,196,145,168,96,1,64,243,97,255,71,183,26,182,112,90,106,209,172,36,63,178,27,112,28,8,224,237,43,8,55,0],[160,255,180,41,152,120,18,117,140,48,239,106,19,151,226,224,119,56,150,40,117,133,9,82,75,94,255,0,36,42,211,190,0,0],[160,63,111,21,204,37,243,152,155,55,14,233,122,16,231,133,74,39,8,120,115,231,98,225,151,4,251,118,215,74,51,97,254,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,17,14,152,228,161,27,201,217,36,240,10,175,206,177,124,38,135,28,190,122,91,109,224,56,126,139,153,149,123,137,108,103,160,18,13,111,197,83,111,187,99,87,247,167,17,128,97,141,1,62,136,8,123,124,243,65,227,23,101,121,34,154,68,118,245,160,176,73,194,83,219,26,39,202,203,250,128,222,2,177,177,68,119,93,193,32,146,124,90,108,159,120,167,196,183,104,110,220,160,61,160,201,162,57,37,164,44,243,74,167,139,247,121,10,86,101,88,72,196,10,131,241,116,30,59,117,43,20,128,40,193,160,243,129,214,205,142,5,250,58,99,129,145,177,53,137,7,205,21,205,113,246,52,66,180,235,229,84,190,12,2,142,255,153,160,88,72,38,73,92,103,15,103,83,111,122,242,225,201,211,199,143,217,2,53,164,164,90,115,27,64,178,170,122,127,229,220,160,113,108,247,26,59,67,31,95,124,173,73,67,237,250,140,15,99,74,90,62,158,128,77,2,244,88,163,175,63,114,221,50,160,193,70,173,55,41,231,69,65,112,9,158,41,97,73,77,3,108,222,33,61,121,168,60,39,134,48,129,8,134,170,184,112,160,220,67,96,141,155,253,66,228,10,14,151,7,221,195,199,37,52,154,39,206,103,247,124,126,95,11,24,126,253,196,147,234,160,4,251,178,215,177,99,63,65,108,73,209,148,181,62,151,132,211,2,62,45,174,250,205,180,18,104,82,173,232,87,65,25,160,127,188,123,217,18,146,253,108,75,236,17,218,226,163,173,108,114,232,4,85,250,30,215,35,248,232,237,143,231,149,4,100,160,127,62,96,115,155,47,151,79,242,54,78,184,86,250,239,57,139,170,36,129,159,84,15,202,218,167,188,5,25,160,44,124,160,191,206,160,180,210,66,180,165,142,193,114,59,208,212,163,71,192,68,161,246,68,173,99,14,63,196,189,212,183,26,248,166,160,120,111,196,145,168,96,1,64,243,97,255,71,183,26,182,112,90,106,209,172,36,63,178,27,112,28,8,224,237,43,8,55,160,255,180,41,152,120,18,117,140,48,239,106,19,151,226,224,119,56,150,40,117,133,9,82,75,94,255,0,36,42,211,190,0,160,63,111,21,204,37,243,152,155,55,14,233,122,16,231,133,74,39,8,120,115,231,98,225,151,4,251,118,215,74,51,97,254,128],[249,2,17,160,17,14,152,228,161,27,201,217,36,240,10,175,206,177,124,38,135,28,190,122,91,109,224,56,126,139,153,149,123,137,108,103,160,18,13,111,197,83,111,187,99,87,247,167,17,128,97,141,1,62,136,8,123,124,243,65,227,23,101,121,34,154,68,118,245,160,176,73,194,83,219,26,39,202,203,250,128,222,2,177,177,68,119,93,193,32,146,124,90,108,159,120,167,196,183,104,110,220,160,61,160,201,162,57,37,164,44,243,74,167,139,247,121,10,86,101,88,72,196,10,131,241,116,30,59,117,43,20,128,40,193,160,243,129,214,205,142,5,250,58,99,129,145,177,53,137,7,205,21,205,113,246,52,66,180,235,229,84,190,12,2,142,255,153,160,88,72,38,73,92,103,15,103,83,111,122,242,225,201,211,199,143,217,2,53,164,164,90,115,27,64,178,170,122,127,229,220,160,113,108,247,26,59,67,31,95,124,173,73,67,237,250,140,15,99,74,90,62,158,128,77,2,244,88,163,175,63,114,221,50,160,193,70,173,55,41,231,69,65,112,9,158,41,97,73,77,3,108,222,33,61,121,168,60,39,134,48,129,8,134,170,184,112,160,220,67,96,141,155,253,66,228,10,14,151,7,221,195,199,37,52,154,39,206,103,247,124,126,95,11,24,126,253,196,147,234,160,4,251,178,215,177,99,63,65,108,73,209,148,181,62,151,132,211,2,62,45,174,250,205,180,18,104,82,173,232,87,65,25,160,127,188,123,217,18,146,253,108,75,236,17,218,226,163,173,108,114,232,4,85,250,30,215,35,248,232,237,143,231,149,4,100,160,9,140,198,60,180,239,74,249,70,85,143,82,239,38,119,152,245,146,194,129,241,217,255,108,76,127,18,46,245,117,24,70,160,191,206,160,180,210,66,180,165,142,193,114,59,208,212,163,71,192,68,161,246,68,173,99,14,63,196,189,212,183,26,248,166,160,120,111,196,145,168,96,1,64,243,97,255,71,183,26,182,112,90,106,209,172,36,63,178,27,112,28,8,224,237,43,8,55,160,255,180,41,152,120,18,117,140,48,239,106,19,151,226,224,119,56,150,40,117,133,9,82,75,94,255,0,36,42,211,190,0,160,63,111,21,204,37,243,152,155,55,14,233,122,16,231,133,74,39,8,120,115,231,98,225,151,4,251,118,215,74,51,97,254,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,121,224,44,198,88,3,34,184,162,128,159,80,22,63,172,141,96,120,102,169,83,117,115,165,155,73,147,14,212,173,203,22,0],[160,131,172,155,18,179,170,215,133,116,121,79,47,177,190,212,139,125,10,125,44,243,130,101,112,89,52,174,201,249,177,124,247,0],[160,150,152,156,133,230,232,122,23,91,116,208,117,244,245,50,176,230,211,76,244,182,155,246,32,228,160,200,58,59,123,192,53,0],[160,202,170,219,90,120,110,227,116,111,247,66,23,2,231,204,151,174,75,244,22,192,102,49,23,183,161,162,175,23,5,246,36,0],[160,147,187,78,66,94,192,234,246,245,69,251,255,187,49,159,171,99,48,251,171,57,31,250,68,45,240,233,145,235,109,82,73,0],[160,145,20,239,143,224,98,57,33,164,43,245,250,223,217,191,71,180,106,38,84,178,135,22,143,250,226,254,140,130,178,101,164,0],[160,68,215,93,175,244,189,115,73,116,246,113,73,181,165,126,110,33,249,60,28,207,201,61,19,25,144,60,205,244,101,240,233,0],[160,117,211,114,21,72,179,37,50,247,109,117,83,195,120,45,118,150,38,28,252,212,143,20,149,118,247,96,163,15,51,175,36,0],[160,236,46,253,118,195,69,237,169,219,238,88,245,3,137,146,154,116,128,254,15,134,182,107,140,81,16,159,169,69,12,17,210,0],[160,236,212,252,73,216,200,122,123,192,203,154,226,85,252,28,247,185,66,228,246,82,160,32,30,133,80,201,154,74,209,226,254,0],[160,154,150,78,96,48,207,168,99,145,22,26,255,109,34,182,133,190,69,181,7,248,225,61,96,227,92,251,60,252,122,243,58,0],[160,251,160,122,105,109,99,90,226,17,107,37,63,249,155,34,64,174,1,53,87,169,12,148,171,136,84,123,103,178,18,156,18,0],[160,216,173,151,14,185,169,208,15,196,175,247,238,143,214,51,104,35,33,154,154,247,23,30,17,34,115,143,17,186,31,33,63,0],[160,34,88,41,103,57,225,46,225,38,39,13,106,242,20,194,52,228,124,167,222,87,121,137,159,175,121,90,188,61,102,57,246,0],[160,80,129,50,87,101,206,139,157,118,112,92,79,34,177,171,188,145,15,161,158,97,238,233,138,78,30,81,141,124,69,67,158,0],[160,225,195,56,52,118,212,176,166,59,203,224,159,207,30,115,68,72,92,130,16,66,176,102,191,162,109,234,149,212,213,125,25,0],[160,143,62,146,149,241,37,198,126,152,40,208,59,255,27,49,178,110,171,179,135,185,78,40,56,202,144,96,125,8,160,113,3,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,131,172,155,18,179,170,215,133,116,121,79,47,177,190,212,139,125,10,125,44,243,130,101,112,89,52,174,201,249,177,124,247,160,150,152,156,133,230,232,122,23,91,116,208,117,244,245,50,176,230,211,76,244,182,155,246,32,228,160,200,58,59,123,192,53,160,202,170,219,90,120,110,227,116,111,247,66,23,2,231,204,151,174,75,244,22,192,102,49,23,183,161,162,175,23,5,246,36,160,147,187,78,66,94,192,234,246,245,69,251,255,187,49,159,171,99,48,251,171,57,31,250,68,45,240,233,145,235,109,82,73,160,145,20,239,143,224,98,57,33,164,43,245,250,223,217,191,71,180,106,38,84,178,135,22,143,250,226,254,140,130,178,101,164,160,68,215,93,175,244,189,115,73,116,246,113,73,181,165,126,110,33,249,60,28,207,201,61,19,25,144,60,205,244,101,240,233,160,117,211,114,21,72,179,37,50,247,109,117,83,195,120,45,118,150,38,28,252,212,143,20,149,118,247,96,163,15,51,175,36,160,236,46,253,118,195,69,237,169,219,238,88,245,3,137,146,154,116,128,254,15,134,182,107,140,81,16,159,169,69,12,17,210,160,236,212,252,73,216,200,122,123,192,203,154,226,85,252,28,247,185,66,228,246,82,160,32,30,133,80,201,154,74,209,226,254,160,154,150,78,96,48,207,168,99,145,22,26,255,109,34,182,133,190,69,181,7,248,225,61,96,227,92,251,60,252,122,243,58,160,251,160,122,105,109,99,90,226,17,107,37,63,249,155,34,64,174,1,53,87,169,12,148,171,136,84,123,103,178,18,156,18,160,216,173,151,14,185,169,208,15,196,175,247,238,143,214,51,104,35,33,154,154,247,23,30,17,34,115,143,17,186,31,33,63,160,34,88,41,103,57,225,46,225,38,39,13,106,242,20,194,52,228,124,167,222,87,121,137,159,175,121,90,188,61,102,57,246,160,80,129,50,87,101,206,139,157,118,112,92,79,34,177,171,188,145,15,161,158,97,238,233,138,78,30,81,141,124,69,67,158,160,225,195,56,52,118,212,176,166,59,203,224,159,207,30,115,68,72,92,130,16,66,176,102,191,162,109,234,149,212,213,125,25,160,143,62,146,149,241,37,198,126,152,40,208,59,255,27,49,178,110,171,179,135,185,78,40,56,202,144,96,125,8,160,113,3,128],[249,2,17,160,121,224,44,198,88,3,34,184,162,128,159,80,22,63,172,141,96,120,102,169,83,117,115,165,155,73,147,14,212,173,203,22,160,150,152,156,133,230,232,122,23,91,116,208,117,244,245,50,176,230,211,76,244,182,155,246,32,228,160,200,58,59,123,192,53,160,202,170,219,90,120,110,227,116,111,247,66,23,2,231,204,151,174,75,244,22,192,102,49,23,183,161,162,175,23,5,246,36,160,147,187,78,66,94,192,234,246,245,69,251,255,187,49,159,171,99,48,251,171,57,31,250,68,45,240,233,145,235,109,82,73,160,145,20,239,143,224,98,57,33,164,43,245,250,223,217,191,71,180,106,38,84,178,135,22,143,250,226,254,140,130,178,101,164,160,68,215,93,175,244,189,115,73,116,246,113,73,181,165,126,110,33,249,60,28,207,201,61,19,25,144,60,205,244,101,240,233,160,117,211,114,21,72,179,37,50,247,109,117,83,195,120,45,118,150,38,28,252,212,143,20,149,118,247,96,163,15,51,175,36,160,236,46,253,118,195,69,237,169,219,238,88,245,3,137,146,154,116,128,254,15,134,182,107,140,81,16,159,169,69,12,17,210,160,236,212,252,73,216,200,122,123,192,203,154,226,85,252,28,247,185,66,228,246,82,160,32,30,133,80,201,154,74,209,226,254,160,154,150,78,96,48,207,168,99,145,22,26,255,109,34,182,133,190,69,181,7,248,225,61,96,227,92,251,60,252,122,243,58,160,251,160,122,105,109,99,90,226,17,107,37,63,249,155,34,64,174,1,53,87,169,12,148,171,136,84,123,103,178,18,156,18,160,216,173,151,14,185,169,208,15,196,175,247,238,143,214,51,104,35,33,154,154,247,23,30,17,34,115,143,17,186,31,33,63,160,34,88,41,103,57,225,46,225,38,39,13,106,242,20,194,52,228,124,167,222,87,121,137,159,175,121,90,188,61,102,57,246,160,80,129,50,87,101,206,139,157,118,112,92,79,34,177,171,188,145,15,161,158,97,238,233,138,78,30,81,141,124,69,67,158,160,225,195,56,52,118,212,176,166,59,203,224,159,207,30,115,68,72,92,130,16,66,176,102,191,162,109,234,149,212,213,125,25,160,143,62,146,149,241,37,198,126,152,40,208,59,255,27,49,178,110,171,179,135,185,78,40,56,202,144,96,125,8,160,113,3,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":13,"drifted_index":13,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,187,181,112,177,1,53,213,12,118,65,101,22,52,248,178,73,25,96,60,140,200,62,166,37,31,160,239,186,206,12,143,181,0],[160,243,48,113,124,85,53,55,16,156,86,90,0,211,119,95,147,80,172,83,154,247,118,201,30,103,10,68,53,26,31,206,133,0],[160,251,66,179,200,96,113,74,102,69,19,133,153,128,67,67,88,64,251,217,228,149,9,208,208,190,55,48,248,21,219,6,233,0],[160,35,70,218,245,9,176,125,100,18,95,159,208,129,147,22,112,59,96,96,199,190,231,189,190,84,59,34,77,14,138,130,115,0],[160,186,122,89,77,149,206,18,207,12,225,8,197,185,20,190,73,72,125,201,249,60,214,109,23,138,59,170,85,221,71,176,123,0],[160,194,184,192,45,254,247,25,156,28,25,223,197,110,90,8,57,202,88,107,186,26,5,239,245,233,57,188,27,35,224,57,3,0],[160,55,220,61,78,166,234,25,248,154,228,137,84,36,142,108,127,40,39,178,145,199,31,53,223,202,248,203,82,38,176,68,115,0],[160,45,215,222,135,75,18,22,180,192,204,240,232,9,33,228,32,248,136,210,72,56,87,92,240,75,191,18,225,122,107,142,182,0],[160,192,239,91,84,220,163,126,246,75,242,175,78,225,131,165,141,207,67,92,112,201,44,17,180,101,219,141,115,166,83,60,198,0],[160,52,68,61,31,223,40,63,54,66,65,60,50,192,50,174,255,183,132,66,153,46,174,193,2,127,17,49,171,78,66,241,194,0],[160,94,204,212,48,118,131,6,156,77,204,98,71,151,171,214,140,210,204,205,46,63,21,102,15,152,150,234,213,106,125,81,214,0],[160,28,34,136,186,140,82,36,105,139,189,215,79,188,255,0,178,39,153,143,230,112,14,146,241,103,139,240,99,247,142,192,53,0],[160,68,206,176,240,254,137,174,157,232,167,174,247,120,44,244,147,171,236,176,115,59,22,29,18,173,67,188,6,133,8,161,14,0],[160,191,194,51,52,14,176,182,27,27,120,0,138,253,237,102,92,120,158,53,8,38,78,32,207,45,8,36,109,36,11,22,17,0],[160,166,114,70,180,139,174,99,65,119,241,25,53,184,14,78,63,4,4,117,13,163,125,183,53,148,199,76,204,118,220,42,225,0],[160,127,82,0,195,57,174,232,140,38,32,148,242,127,156,37,176,15,4,26,126,216,215,67,170,114,143,205,60,208,142,74,225,0],[160,137,243,239,53,243,249,76,212,75,203,95,68,69,103,136,81,38,137,220,235,20,174,252,185,151,132,45,170,89,220,122,196,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,243,48,113,124,85,53,55,16,156,86,90,0,211,119,95,147,80,172,83,154,247,118,201,30,103,10,68,53,26,31,206,133,160,251,66,179,200,96,113,74,102,69,19,133,153,128,67,67,88,64,251,217,228,149,9,208,208,190,55,48,248,21,219,6,233,160,35,70,218,245,9,176,125,100,18,95,159,208,129,147,22,112,59,96,96,199,190,231,189,190,84,59,34,77,14,138,130,115,160,186,122,89,77,149,206,18,207,12,225,8,197,185,20,190,73,72,125,201,249,60,214,109,23,138,59,170,85,221,71,176,123,160,194,184,192,45,254,247,25,156,28,25,223,197,110,90,8,57,202,88,107,186,26,5,239,245,233,57,188,27,35,224,57,3,160,55,220,61,78,166,234,25,248,154,228,137,84,36,142,108,127,40,39,178,145,199,31,53,223,202,248,203,82,38,176,68,115,160,45,215,222,135,75,18,22,180,192,204,240,232,9,33,228,32,248,136,210,72,56,87,92,240,75,191,18,225,122,107,142,182,160,192,239,91,84,220,163,126,246,75,242,175,78,225,131,165,141,207,67,92,112,201,44,17,180,101,219,141,115,166,83,60,198,160,52,68,61,31,223,40,63,54,66,65,60,50,192,50,174,255,183,132,66,153,46,174,193,2,127,17,49,171,78,66,241,194,160,94,204,212,48,118,131,6,156,77,204,98,71,151,171,214,140,210,204,205,46,63,21,102,15,152,150,234,213,106,125,81,214,160,28,34,136,186,140,82,36,105,139,189,215,79,188,255,0,178,39,153,143,230,112,14,146,241,103,139,240,99,247,142,192,53,160,68,206,176,240,254,137,174,157,232,167,174,247,120,44,244,147,171,236,176,115,59,22,29,18,173,67,188,6,133,8,161,14,160,191,194,51,52,14,176,182,27,27,120,0,138,253,237,102,92,120,158,53,8,38,78,32,207,45,8,36,109,36,11,22,17,160,166,114,70,180,139,174,99,65,119,241,25,53,184,14,78,63,4,4,117,13,163,125,183,53,148,199,76,204,118,220,42,225,160,127,82,0,195,57,174,232,140,38,32,148,242,127,156,37,176,15,4,26,126,216,215,67,170,114,143,205,60,208,142,74,225,160,137,243,239,53,243,249,76,212,75,203,95,68,69,103,136,81,38,137,220,235,20,174,252,185,151,132,45,170,89,220,122,196,128],[249,2,17,160,243,48,113,124,85,53,55,16,156,86,90,0,211,119,95,147,80,172,83,154,247,118,201,30,103,10,68,53,26,31,206,133,160,251,66,179,200,96,113,74,102,69,19,133,153,128,67,67,88,64,251,217,228,149,9,208,208,190,55,48,248,21,219,6,233,160,35,70,218,245,9,176,125,100,18,95,159,208,129,147,22,112,59,96,96,199,190,231,189,190,84,59,34,77,14,138,130,115,160,186,122,89,77,149,206,18,207,12,225,8,197,185,20,190,73,72,125,201,249,60,214,109,23,138,59,170,85,221,71,176,123,160,194,184,192,45,254,247,25,156,28,25,223,197,110,90,8,57,202,88,107,186,26,5,239,245,233,57,188,27,35,224,57,3,160,55,220,61,78,166,234,25,248,154,228,137,84,36,142,108,127,40,39,178,145,199,31,53,223,202,248,203,82,38,176,68,115,160,45,215,222,135,75,18,22,180,192,204,240,232,9,33,228,32,248,136,210,72,56,87,92,240,75,191,18,225,122,107,142,182,160,192,239,91,84,220,163,126,246,75,242,175,78,225,131,165,141,207,67,92,112,201,44,17,180,101,219,141,115,166,83,60,198,160,52,68,61,31,223,40,63,54,66,65,60,50,192,50,174,255,183,132,66,153,46,174,193,2,127,17,49,171,78,66,241,194,160,94,204,212,48,118,131,6,156,77,204,98,71,151,171,214,140,210,204,205,46,63,21,102,15,152,150,234,213,106,125,81,214,160,28,34,136,186,140,82,36,105,139,189,215,79,188,255,0,178,39,153,143,230,112,14,146,241,103,139,240,99,247,142,192,53,160,68,206,176,240,254,137,174,157,232,167,174,247,120,44,244,147,171,236,176,115,59,22,29,18,173,67,188,6,133,8,161,14,160,191,194,51,52,14,176,182,27,27,120,0,138,253,237,102,92,120,158,53,8,38,78,32,207,45,8,36,109,36,11,22,17,160,187,181,112,177,1,53,213,12,118,65,101,22,52,248,178,73,25,96,60,140,200,62,166,37,31,160,239,186,206,12,143,181,160,127,82,0,195,57,174,232,140,38,32,148,242,127,156,37,176,15,4,26,126,216,215,67,170,114,143,205,60,208,142,74,225,160,137,243,239,53,243,249,76,212,75,203,95,68,69,103,136,81,38,137,220,235,20,174,252,185,151,132,45,170,89,220,122,196,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,171,32,186,242,126,157,233,219,32,27,11,1,255,237,165,204,248,42,197,188,238,155,105,225,115,25,160,254,203,114,168,66,0],[160,69,76,228,102,231,147,192,99,110,3,240,4,10,76,8,56,227,66,230,176,39,32,85,203,228,198,67,246,0,105,40,25,0],[160,57,148,211,95,157,67,197,167,168,247,239,83,78,10,212,137,233,126,192,41,244,181,53,39,174,170,185,135,227,236,36,186,0],[160,132,227,67,235,178,35,177,44,8,155,144,169,45,158,195,141,160,23,155,234,34,240,27,216,85,136,205,14,101,178,11,22,0],[160,16,173,240,63,220,123,230,145,89,83,14,184,101,75,78,211,29,226,176,232,54,53,42,114,168,116,30,7,17,153,141,22,0],[160,238,152,45,68,91,244,28,122,28,82,205,32,25,86,242,184,200,215,245,109,186,166,166,212,66,177,22,42,143,64,207,168,0],[160,106,145,145,182,177,73,243,125,53,202,32,211,6,203,143,223,52,70,162,29,255,230,78,51,174,88,206,191,102,205,1,30,0],[160,250,203,248,35,226,248,230,55,242,161,233,117,83,46,239,114,141,62,53,247,116,164,179,215,247,105,125,120,192,188,165,207,0],[160,226,144,176,3,89,163,248,99,112,141,6,62,9,112,201,70,227,18,117,101,66,116,213,38,213,43,36,73,184,31,25,209,0],[160,113,236,69,133,169,30,38,82,142,140,14,212,141,246,203,107,101,49,21,5,107,103,126,80,210,159,175,222,156,192,85,167,0],[160,219,196,69,120,100,184,88,22,237,82,245,145,96,63,208,13,135,43,153,21,199,220,36,62,224,231,121,80,165,176,66,129,0],[160,4,79,106,68,245,13,24,53,159,130,240,56,64,184,26,70,107,143,192,214,168,192,147,255,110,33,117,164,253,14,135,83,0],[160,164,80,66,100,87,215,106,45,189,96,169,16,66,169,198,171,196,74,15,219,216,151,39,130,39,113,173,102,29,241,4,19,0],[160,104,35,159,168,94,8,92,14,181,152,89,44,128,24,197,245,238,237,63,65,141,1,75,134,75,50,5,237,183,39,28,199,0],[160,45,213,95,81,237,32,18,196,243,141,3,102,222,146,221,203,231,91,161,36,153,141,88,202,229,98,0,86,130,126,73,152,0],[160,120,87,213,111,251,106,64,83,114,237,33,166,182,240,230,200,43,17,70,155,163,193,75,105,33,184,59,160,113,86,78,43,0],[160,143,209,219,43,131,95,137,247,79,211,94,31,193,180,10,97,3,121,32,225,151,208,138,147,159,52,81,9,148,210,94,132,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,69,76,228,102,231,147,192,99,110,3,240,4,10,76,8,56,227,66,230,176,39,32,85,203,228,198,67,246,0,105,40,25,160,57,148,211,95,157,67,197,167,168,247,239,83,78,10,212,137,233,126,192,41,244,181,53,39,174,170,185,135,227,236,36,186,160,132,227,67,235,178,35,177,44,8,155,144,169,45,158,195,141,160,23,155,234,34,240,27,216,85,136,205,14,101,178,11,22,160,16,173,240,63,220,123,230,145,89,83,14,184,101,75,78,211,29,226,176,232,54,53,42,114,168,116,30,7,17,153,141,22,160,238,152,45,68,91,244,28,122,28,82,205,32,25,86,242,184,200,215,245,109,186,166,166,212,66,177,22,42,143,64,207,168,160,106,145,145,182,177,73,243,125,53,202,32,211,6,203,143,223,52,70,162,29,255,230,78,51,174,88,206,191,102,205,1,30,160,250,203,248,35,226,248,230,55,242,161,233,117,83,46,239,114,141,62,53,247,116,164,179,215,247,105,125,120,192,188,165,207,160,226,144,176,3,89,163,248,99,112,141,6,62,9,112,201,70,227,18,117,101,66,116,213,38,213,43,36,73,184,31,25,209,160,113,236,69,133,169,30,38,82,142,140,14,212,141,246,203,107,101,49,21,5,107,103,126,80,210,159,175,222,156,192,85,167,160,219,196,69,120,100,184,88,22,237,82,245,145,96,63,208,13,135,43,153,21,199,220,36,62,224,231,121,80,165,176,66,129,160,4,79,106,68,245,13,24,53,159,130,240,56,64,184,26,70,107,143,192,214,168,192,147,255,110,33,117,164,253,14,135,83,160,164,80,66,100,87,215,106,45,189,96,169,16,66,169,198,171,196,74,15,219,216,151,39,130,39,113,173,102,29,241,4,19,160,104,35,159,168,94,8,92,14,181,152,89,44,128,24,197,245,238,237,63,65,141,1,75,134,75,50,5,237,183,39,28,199,160,45,213,95,81,237,32,18,196,243,141,3,102,222,146,221,203,231,91,161,36,153,141,88,202,229,98,0,86,130,126,73,152,160,120,87,213,111,251,106,64,83,114,237,33,166,182,240,230,200,43,17,70,155,163,193,75,105,33,184,59,160,113,86,78,43,160,143,209,219,43,131,95,137,247,79,211,94,31,193,180,10,97,3,121,32,225,151,208,138,147,159,52,81,9,148,210,94,132,128],[249,2,17,160,69,76,228,102,231,147,192,99,110,3,240,4,10,76,8,56,227,66,230,176,39,32,85,203,228,198,67,246,0,105,40,25,160,57,148,211,95,157,67,197,167,168,247,239,83,78,10,212,137,233,126,192,41,244,181,53,39,174,170,185,135,227,236,36,186,160,132,227,67,235,178,35,177,44,8,155,144,169,45,158,195,141,160,23,155,234,34,240,27,216,85,136,205,14,101,178,11,22,160,16,173,240,63,220,123,230,145,89,83,14,184,101,75,78,211,29,226,176,232,54,53,42,114,168,116,30,7,17,153,141,22,160,238,152,45,68,91,244,28,122,28,82,205,32,25,86,242,184,200,215,245,109,186,166,166,212,66,177,22,42,143,64,207,168,160,106,145,145,182,177,73,243,125,53,202,32,211,6,203,143,223,52,70,162,29,255,230,78,51,174,88,206,191,102,205,1,30,160,250,203,248,35,226,248,230,55,242,161,233,117,83,46,239,114,141,62,53,247,116,164,179,215,247,105,125,120,192,188,165,207,160,226,144,176,3,89,163,248,99,112,141,6,62,9,112,201,70,227,18,117,101,66,116,213,38,213,43,36,73,184,31,25,209,160,113,236,69,133,169,30,38,82,142,140,14,212,141,246,203,107,101,49,21,5,107,103,126,80,210,159,175,222,156,192,85,167,160,219,196,69,120,100,184,88,22,237,82,245,145,96,63,208,13,135,43,153,21,199,220,36,62,224,231,121,80,165,176,66,129,160,4,79,106,68,245,13,24,53,159,130,240,56,64,184,26,70,107,143,192,214,168,192,147,255,110,33,117,164,253,14,135,83,160,164,80,66,100,87,215,106,45,189,96,169,16,66,169,198,171,196,74,15,219,216,151,39,130,39,113,173,102,29,241,4,19,160,104,35,159,168,94,8,92,14,181,152,89,44,128,24,197,245,238,237,63,65,141,1,75,134,75,50,5,237,183,39,28,199,160,45,213,95,81,237,32,18,196,243,141,3,102,222,146,221,203,231,91,161,36,153,141,88,202,229,98,0,86,130,126,73,152,160,171,32,186,242,126,157,233,219,32,27,11,1,255,237,165,204,248,42,197,188,238,155,105,225,115,25,160,254,203,114,168,66,160,143,209,219,43,131,95,137,247,79,211,94,31,193,180,10,97,3,121,32,225,151,208,138,147,159,52,81,9,148,210,94,132,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[248,209],[248,209]]}},"account":null,"storage":null,"values":[[160,145,217,21,245,54,100,134,75,64,115,206,66,134,250,103,10,3,245,71,173,9,51,227,198,140,254,44,153,211,47,116,113,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,166,117,125,125,252,136,52,5,32,82,3,5,216,177,72,66,232,69,59,250,209,237,32,38,225,74,232,21,107,244,59,45,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,29,71,16,40,12,61,6,166,249,163,102,154,244,144,248,103,107,190,36,211,149,94,178,77,226,233,99,228,235,118,223,79,0],[160,234,44,103,249,97,8,255,92,103,101,123,252,54,49,51,186,133,209,222,10,165,224,184,96,222,39,215,58,107,154,31,186,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,5,102,58,48,12,112,111,252,79,26,47,106,40,254,237,164,173,77,140,97,169,155,120,198,242,104,19,101,52,52,65,16,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,73,135,215,74,154,113,121,168,24,240,15,44,10,219,12,101,144,197,74,206,105,243,155,91,5,152,8,198,167,31,253,42,0],[160,118,63,237,148,166,57,5,132,52,244,169,62,102,222,149,96,229,214,214,6,44,93,7,21,240,195,86,132,184,54,9,4,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,209,128,160,166,117,125,125,252,136,52,5,32,82,3,5,216,177,72,66,232,69,59,250,209,237,32,38,225,74,232,21,107,244,59,45,128,160,29,71,16,40,12,61,6,166,249,163,102,154,244,144,248,103,107,190,36,211,149,94,178,77,226,233,99,228,235,118,223,79,160,234,44,103,249,97,8,255,92,103,101,123,252,54,49,51,186,133,209,222,10,165,224,184,96,222,39,215,58,107,154,31,186,128,128,128,128,128,128,160,5,102,58,48,12,112,111,252,79,26,47,106,40,254,237,164,173,77,140,97,169,155,120,198,242,104,19,101,52,52,65,16,128,128,160,73,135,215,74,154,113,121,168,24,240,15,44,10,219,12,101,144,197,74,206,105,243,155,91,5,152,8,198,167,31,253,42,160,118,63,237,148,166,57,5,132,52,244,169,62,102,222,149,96,229,214,214,6,44,93,7,21,240,195,86,132,184,54,9,4,128],[248,209,128,160,166,117,125,125,252,136,52,5,32,82,3,5,216,177,72,66,232,69,59,250,209,237,32,38,225,74,232,21,107,244,59,45,128,160,145,217,21,245,54,100,134,75,64,115,206,66,134,250,103,10,3,245,71,173,9,51,227,198,140,254,44,153,211,47,116,113,160,234,44,103,249,97,8,255,92,103,101,123,252,54,49,51,186,133,209,222,10,165,224,184,96,222,39,215,58,107,154,31,186,128,128,128,128,128,128,160,5,102,58,48,12,112,111,252,79,26,47,106,40,254,237,164,173,77,140,97,169,155,120,198,242,104,19,101,52,52,65,16,128,128,160,73,135,215,74,154,113,121,168,24,240,15,44,10,219,12,101,144,197,74,206,105,243,155,91,5,152,8,198,167,31,253,42,160,118,63,237,148,166,57,5,132,52,244,169,62,102,222,149,96,229,214,214,6,44,93,7,21,240,195,86,132,184,54,9,4,128]]},{"start":null,"extension_branch":null,"account":{"address":[170,172,207,18,88,1,56,188,43,188,238,234,168,38,223,78,66,171,129,255],"key":[123,176,222,49,8,167,206,162,129,98,249,96,13,223,245,28,99,138,238,113,126,87,159,167,128,192,182,194,25,85,2,104],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,49,8,167,206,162,129,98,249,96,13,223,245,28,99,138,238,113,126,87,159,167,128,192,182,194,25,85,2,104,0,0,0,0],[157,49,8,167,206,162,129,98,249,96,13,223,245,28,99,138,238,113,126,87,159,167,128,192,182,194,25,85,2,104,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,211,193,60,172,211,5,56,197,142,83,128,89,64,43,239,126,252,208,254,86,205,43,118,150,9,91,97,35,134,86,23,79,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,30,137,247,40,207,92,69,189,31,232,51,100,12,138,10,172,114,200,14,169,113,150,17,104,86,109,80,171,204,168,46,90,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,49,8,167,206,162,129,98,249,96,13,223,245,28,99,138,238,113,126,87,159,167,128,192,182,194,25,85,2,104,0,0,0,0]],"keccak_data":[[248,102,157,49,8,167,206,162,129,98,249,96,13,223,245,28,99,138,238,113,126,87,159,167,128,192,182,194,25,85,2,104,184,70,248,68,128,128,160,211,193,60,172,211,5,56,197,142,83,128,89,64,43,239,126,252,208,254,86,205,43,118,150,9,91,97,35,134,86,23,79,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,49,8,167,206,162,129,98,249,96,13,223,245,28,99,138,238,113,126,87,159,167,128,192,182,194,25,85,2,104,184,70,248,68,128,128,160,30,137,247,40,207,92,69,189,31,232,51,100,12,138,10,172,114,200,14,169,113,150,17,104,86,109,80,171,204,168,46,90,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[170,172,207,18,88,1,56,188,43,188,238,234,168,38,223,78,66,171,129,255]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,51,211,230,140,132,150,119,250,25,123,206,227,49,78,34,35,22,71,85,31,180,179,128,72,6,170,22,74,193,10,55,116,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,34,39,131,73,65,47,37,211,142,206,231,172,16,11,203,33,107,30,7,213,226,2,174,55,216,4,117,220,10,186,68,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,55,235,85,86,230,197,53,159,28,141,120,87,82,57,4,132,185,12,24,158,142,210,106,188,12,87,179,231,52,16,126,229,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,160,32,34,39,131,73,65,47,37,211,142,206,231,172,16,11,203,33,107,30,7,213,226,2,174,55,216,4,117,220,10,186,68,128,128,128,128,128,128,128,160,55,235,85,86,230,197,53,159,28,141,120,87,82,57,4,132,185,12,24,158,142,210,106,188,12,87,179,231,52,16,126,229,128,128,128,128,128],[248,81,128,128,128,160,32,34,39,131,73,65,47,37,211,142,206,231,172,16,11,203,33,107,30,7,213,226,2,174,55,216,4,117,220,10,186,68,128,128,128,128,128,128,128,160,51,211,230,140,132,150,119,250,25,123,206,227,49,78,34,35,22,71,85,31,180,179,128,72,6,170,22,74,193,10,55,116,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18],"key":[187,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68],"list_rlp_bytes":[[226],[248,67]],"value_rlp_bytes":[[1],[161]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,59,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,59,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,0],[160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[226,160,59,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,1],[248,67,160,59,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,161,160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/UpdateOneLevelEvenAddress.json b/zkevm-circuits/src/mpt_circuit/tests/UpdateOneLevelEvenAddress.json new file mode 100644 index 0000000000..6ab4525327 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/UpdateOneLevelEvenAddress.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,136,133,207,187,57,67,195,44,217,34,60,119,221,103,101,126,199,28,77,168,129,236,62,249,203,75,146,75,108,184,90,205,0],[160,13,130,95,54,38,80,118,152,84,213,145,230,96,30,63,123,36,152,111,57,224,253,193,155,179,72,164,126,93,218,124,19,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,216,76,188,201,194,91,232,75,187,152,187,109,191,31,21,8,207,107,79,248,182,157,85,239,46,28,216,40,83,210,66,133,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,157,76,79,111,34,114,42,144,130,197,100,9,42,146,213,204,66,86,44,195,193,248,178,225,195,166,78,37,215,245,59,21,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,157,76,79,111,34,114,42,144,130,197,100,9,42,146,213,204,66,86,44,195,193,248,178,225,195,166,78,37,215,245,59,21,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,216,76,188,201,194,91,232,75,187,152,187,109,191,31,21,8,207,107,79,248,182,157,85,239,46,28,216,40,83,210,66,133,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":10,"drifted_index":10,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,14,61,10,36,208,108,39,59,193,190,131,47,137,186,21,141,157,71,19,119,67,142,187,82,4,2,124,139,43,45,45,130,0],[160,237,182,105,79,104,208,126,49,252,206,78,156,192,147,164,35,120,108,183,236,100,148,85,140,92,28,223,165,102,55,86,152,0],[160,208,227,66,140,67,3,90,187,102,137,24,154,144,254,214,124,157,150,35,37,38,29,34,154,130,164,129,218,167,7,63,116,0],[160,37,118,223,176,80,231,43,47,201,249,24,136,42,247,156,62,113,153,46,254,158,220,224,34,50,233,103,80,187,42,184,159,0],[160,79,66,152,128,30,145,24,183,253,219,92,250,211,0,113,247,158,206,75,244,251,133,116,99,214,59,0,52,179,135,145,87,0],[160,184,137,88,140,54,51,176,10,79,149,136,163,5,83,94,5,0,40,211,150,22,52,247,20,120,163,135,63,143,7,169,190,0],[160,237,162,212,53,158,58,165,72,131,162,130,5,185,224,219,59,9,197,130,45,26,29,223,93,27,98,130,90,39,75,189,129,0],[160,139,244,136,88,68,215,234,245,176,54,201,14,207,103,13,23,159,206,43,235,171,35,161,227,137,71,137,92,155,142,8,178,0],[160,147,157,115,143,197,23,61,34,86,142,225,162,167,170,105,243,165,215,186,203,199,201,119,33,70,20,221,154,24,61,95,145,0],[160,73,24,182,232,174,25,112,167,31,94,208,61,168,39,10,155,64,95,33,19,80,236,190,212,235,48,213,5,71,78,38,136,0],[160,62,96,144,21,112,157,83,141,78,245,181,166,170,184,161,126,127,255,106,59,88,56,171,112,51,3,87,3,249,101,162,51,0],[160,4,135,255,112,210,177,41,119,96,162,216,133,81,95,144,132,223,220,127,190,152,0,40,87,178,172,253,226,25,50,185,88,0],[160,86,82,75,0,94,174,49,78,2,9,30,77,230,18,249,190,184,23,126,58,220,100,63,49,160,35,90,117,51,105,68,165,0],[160,21,47,178,240,162,147,86,238,169,237,243,107,35,20,166,53,110,212,60,218,253,48,5,208,241,159,36,148,209,51,244,56,0],[160,90,115,57,142,208,123,106,170,231,228,10,112,101,74,176,6,253,222,229,208,225,99,4,206,17,84,236,222,103,73,199,110,0],[160,14,139,50,8,236,128,63,0,55,171,26,204,87,220,49,111,80,9,155,59,180,24,186,96,24,2,207,93,222,225,141,218,0],[160,190,84,186,130,71,158,86,7,12,46,139,175,139,164,108,202,46,121,38,193,23,58,60,11,25,168,134,192,209,192,181,29,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,237,182,105,79,104,208,126,49,252,206,78,156,192,147,164,35,120,108,183,236,100,148,85,140,92,28,223,165,102,55,86,152,160,208,227,66,140,67,3,90,187,102,137,24,154,144,254,214,124,157,150,35,37,38,29,34,154,130,164,129,218,167,7,63,116,160,37,118,223,176,80,231,43,47,201,249,24,136,42,247,156,62,113,153,46,254,158,220,224,34,50,233,103,80,187,42,184,159,160,79,66,152,128,30,145,24,183,253,219,92,250,211,0,113,247,158,206,75,244,251,133,116,99,214,59,0,52,179,135,145,87,160,184,137,88,140,54,51,176,10,79,149,136,163,5,83,94,5,0,40,211,150,22,52,247,20,120,163,135,63,143,7,169,190,160,237,162,212,53,158,58,165,72,131,162,130,5,185,224,219,59,9,197,130,45,26,29,223,93,27,98,130,90,39,75,189,129,160,139,244,136,88,68,215,234,245,176,54,201,14,207,103,13,23,159,206,43,235,171,35,161,227,137,71,137,92,155,142,8,178,160,147,157,115,143,197,23,61,34,86,142,225,162,167,170,105,243,165,215,186,203,199,201,119,33,70,20,221,154,24,61,95,145,160,73,24,182,232,174,25,112,167,31,94,208,61,168,39,10,155,64,95,33,19,80,236,190,212,235,48,213,5,71,78,38,136,160,62,96,144,21,112,157,83,141,78,245,181,166,170,184,161,126,127,255,106,59,88,56,171,112,51,3,87,3,249,101,162,51,160,4,135,255,112,210,177,41,119,96,162,216,133,81,95,144,132,223,220,127,190,152,0,40,87,178,172,253,226,25,50,185,88,160,86,82,75,0,94,174,49,78,2,9,30,77,230,18,249,190,184,23,126,58,220,100,63,49,160,35,90,117,51,105,68,165,160,21,47,178,240,162,147,86,238,169,237,243,107,35,20,166,53,110,212,60,218,253,48,5,208,241,159,36,148,209,51,244,56,160,90,115,57,142,208,123,106,170,231,228,10,112,101,74,176,6,253,222,229,208,225,99,4,206,17,84,236,222,103,73,199,110,160,14,139,50,8,236,128,63,0,55,171,26,204,87,220,49,111,80,9,155,59,180,24,186,96,24,2,207,93,222,225,141,218,160,190,84,186,130,71,158,86,7,12,46,139,175,139,164,108,202,46,121,38,193,23,58,60,11,25,168,134,192,209,192,181,29,128],[249,2,17,160,237,182,105,79,104,208,126,49,252,206,78,156,192,147,164,35,120,108,183,236,100,148,85,140,92,28,223,165,102,55,86,152,160,208,227,66,140,67,3,90,187,102,137,24,154,144,254,214,124,157,150,35,37,38,29,34,154,130,164,129,218,167,7,63,116,160,37,118,223,176,80,231,43,47,201,249,24,136,42,247,156,62,113,153,46,254,158,220,224,34,50,233,103,80,187,42,184,159,160,79,66,152,128,30,145,24,183,253,219,92,250,211,0,113,247,158,206,75,244,251,133,116,99,214,59,0,52,179,135,145,87,160,184,137,88,140,54,51,176,10,79,149,136,163,5,83,94,5,0,40,211,150,22,52,247,20,120,163,135,63,143,7,169,190,160,237,162,212,53,158,58,165,72,131,162,130,5,185,224,219,59,9,197,130,45,26,29,223,93,27,98,130,90,39,75,189,129,160,139,244,136,88,68,215,234,245,176,54,201,14,207,103,13,23,159,206,43,235,171,35,161,227,137,71,137,92,155,142,8,178,160,147,157,115,143,197,23,61,34,86,142,225,162,167,170,105,243,165,215,186,203,199,201,119,33,70,20,221,154,24,61,95,145,160,73,24,182,232,174,25,112,167,31,94,208,61,168,39,10,155,64,95,33,19,80,236,190,212,235,48,213,5,71,78,38,136,160,62,96,144,21,112,157,83,141,78,245,181,166,170,184,161,126,127,255,106,59,88,56,171,112,51,3,87,3,249,101,162,51,160,14,61,10,36,208,108,39,59,193,190,131,47,137,186,21,141,157,71,19,119,67,142,187,82,4,2,124,139,43,45,45,130,160,86,82,75,0,94,174,49,78,2,9,30,77,230,18,249,190,184,23,126,58,220,100,63,49,160,35,90,117,51,105,68,165,160,21,47,178,240,162,147,86,238,169,237,243,107,35,20,166,53,110,212,60,218,253,48,5,208,241,159,36,148,209,51,244,56,160,90,115,57,142,208,123,106,170,231,228,10,112,101,74,176,6,253,222,229,208,225,99,4,206,17,84,236,222,103,73,199,110,160,14,139,50,8,236,128,63,0,55,171,26,204,87,220,49,111,80,9,155,59,180,24,186,96,24,2,207,93,222,225,141,218,160,190,84,186,130,71,158,86,7,12,46,139,175,139,164,108,202,46,121,38,193,23,58,60,11,25,168,134,192,209,192,181,29,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,23,81,238,38,233,221,48,112,69,68,251,177,97,195,201,171,53,197,122,134,200,139,46,125,14,234,63,252,184,105,179,78,0],[160,123,53,177,6,41,106,248,70,53,24,33,250,186,211,65,77,74,44,71,81,240,85,137,100,37,153,137,177,93,172,88,139,0],[160,40,199,193,86,65,81,171,251,31,157,115,130,190,204,49,191,136,31,127,47,95,118,175,118,194,127,108,223,43,225,230,47,0],[160,233,54,217,131,118,2,178,1,209,179,105,48,58,214,132,133,15,78,167,45,66,182,111,244,197,187,218,77,51,175,69,43,0],[160,193,97,44,89,101,153,132,87,133,152,169,56,147,33,135,244,131,119,254,41,171,174,24,41,213,70,193,119,184,168,254,16,0],[160,45,193,48,211,101,121,254,199,85,141,130,128,122,212,202,62,52,147,71,255,68,207,236,128,163,22,181,239,158,132,195,225,0],[160,101,151,65,125,14,108,87,123,160,196,130,209,66,96,54,119,109,126,209,209,3,214,31,7,47,173,231,75,209,249,20,79,0],[160,66,17,229,126,244,232,27,44,176,229,112,80,2,8,62,167,182,217,249,166,109,223,237,114,86,148,125,125,89,168,203,108,0],[160,240,79,201,7,212,223,242,137,200,23,170,195,76,70,223,95,120,218,60,63,104,55,31,17,232,77,160,128,241,43,186,250,0],[160,143,63,99,109,209,121,169,243,156,182,145,219,206,114,112,150,40,138,95,81,229,41,138,81,231,58,159,139,150,59,218,33,0],[160,10,236,238,158,221,171,83,236,186,38,181,136,98,160,69,102,146,33,116,73,82,113,46,202,242,74,72,190,227,123,149,88,0],[160,95,63,77,129,14,81,253,106,110,43,33,14,170,224,154,241,79,188,245,96,109,169,200,205,185,0,198,129,74,201,204,15,0],[160,44,195,245,24,121,241,189,175,189,8,161,85,234,223,208,222,173,145,128,51,37,26,167,142,4,0,188,151,89,188,167,113,0],[160,55,63,32,94,141,145,145,99,34,93,169,5,190,197,175,242,50,5,19,160,204,52,5,244,234,74,164,87,86,66,63,231,0],[160,217,71,157,58,177,41,102,231,28,191,171,238,246,247,251,91,217,39,245,35,101,57,11,92,107,212,185,234,40,64,13,39,0],[160,190,175,151,197,195,178,105,115,231,174,143,15,193,210,53,89,2,74,176,227,167,100,193,245,118,88,225,161,212,249,214,128,0],[160,91,120,21,32,120,103,112,223,70,19,171,181,141,169,70,15,7,200,242,235,139,220,71,103,148,177,1,218,171,1,201,194,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,123,53,177,6,41,106,248,70,53,24,33,250,186,211,65,77,74,44,71,81,240,85,137,100,37,153,137,177,93,172,88,139,160,40,199,193,86,65,81,171,251,31,157,115,130,190,204,49,191,136,31,127,47,95,118,175,118,194,127,108,223,43,225,230,47,160,233,54,217,131,118,2,178,1,209,179,105,48,58,214,132,133,15,78,167,45,66,182,111,244,197,187,218,77,51,175,69,43,160,193,97,44,89,101,153,132,87,133,152,169,56,147,33,135,244,131,119,254,41,171,174,24,41,213,70,193,119,184,168,254,16,160,45,193,48,211,101,121,254,199,85,141,130,128,122,212,202,62,52,147,71,255,68,207,236,128,163,22,181,239,158,132,195,225,160,101,151,65,125,14,108,87,123,160,196,130,209,66,96,54,119,109,126,209,209,3,214,31,7,47,173,231,75,209,249,20,79,160,66,17,229,126,244,232,27,44,176,229,112,80,2,8,62,167,182,217,249,166,109,223,237,114,86,148,125,125,89,168,203,108,160,240,79,201,7,212,223,242,137,200,23,170,195,76,70,223,95,120,218,60,63,104,55,31,17,232,77,160,128,241,43,186,250,160,143,63,99,109,209,121,169,243,156,182,145,219,206,114,112,150,40,138,95,81,229,41,138,81,231,58,159,139,150,59,218,33,160,10,236,238,158,221,171,83,236,186,38,181,136,98,160,69,102,146,33,116,73,82,113,46,202,242,74,72,190,227,123,149,88,160,95,63,77,129,14,81,253,106,110,43,33,14,170,224,154,241,79,188,245,96,109,169,200,205,185,0,198,129,74,201,204,15,160,44,195,245,24,121,241,189,175,189,8,161,85,234,223,208,222,173,145,128,51,37,26,167,142,4,0,188,151,89,188,167,113,160,55,63,32,94,141,145,145,99,34,93,169,5,190,197,175,242,50,5,19,160,204,52,5,244,234,74,164,87,86,66,63,231,160,217,71,157,58,177,41,102,231,28,191,171,238,246,247,251,91,217,39,245,35,101,57,11,92,107,212,185,234,40,64,13,39,160,190,175,151,197,195,178,105,115,231,174,143,15,193,210,53,89,2,74,176,227,167,100,193,245,118,88,225,161,212,249,214,128,160,91,120,21,32,120,103,112,223,70,19,171,181,141,169,70,15,7,200,242,235,139,220,71,103,148,177,1,218,171,1,201,194,128],[249,2,17,160,123,53,177,6,41,106,248,70,53,24,33,250,186,211,65,77,74,44,71,81,240,85,137,100,37,153,137,177,93,172,88,139,160,40,199,193,86,65,81,171,251,31,157,115,130,190,204,49,191,136,31,127,47,95,118,175,118,194,127,108,223,43,225,230,47,160,233,54,217,131,118,2,178,1,209,179,105,48,58,214,132,133,15,78,167,45,66,182,111,244,197,187,218,77,51,175,69,43,160,23,81,238,38,233,221,48,112,69,68,251,177,97,195,201,171,53,197,122,134,200,139,46,125,14,234,63,252,184,105,179,78,160,45,193,48,211,101,121,254,199,85,141,130,128,122,212,202,62,52,147,71,255,68,207,236,128,163,22,181,239,158,132,195,225,160,101,151,65,125,14,108,87,123,160,196,130,209,66,96,54,119,109,126,209,209,3,214,31,7,47,173,231,75,209,249,20,79,160,66,17,229,126,244,232,27,44,176,229,112,80,2,8,62,167,182,217,249,166,109,223,237,114,86,148,125,125,89,168,203,108,160,240,79,201,7,212,223,242,137,200,23,170,195,76,70,223,95,120,218,60,63,104,55,31,17,232,77,160,128,241,43,186,250,160,143,63,99,109,209,121,169,243,156,182,145,219,206,114,112,150,40,138,95,81,229,41,138,81,231,58,159,139,150,59,218,33,160,10,236,238,158,221,171,83,236,186,38,181,136,98,160,69,102,146,33,116,73,82,113,46,202,242,74,72,190,227,123,149,88,160,95,63,77,129,14,81,253,106,110,43,33,14,170,224,154,241,79,188,245,96,109,169,200,205,185,0,198,129,74,201,204,15,160,44,195,245,24,121,241,189,175,189,8,161,85,234,223,208,222,173,145,128,51,37,26,167,142,4,0,188,151,89,188,167,113,160,55,63,32,94,141,145,145,99,34,93,169,5,190,197,175,242,50,5,19,160,204,52,5,244,234,74,164,87,86,66,63,231,160,217,71,157,58,177,41,102,231,28,191,171,238,246,247,251,91,217,39,245,35,101,57,11,92,107,212,185,234,40,64,13,39,160,190,175,151,197,195,178,105,115,231,174,143,15,193,210,53,89,2,74,176,227,167,100,193,245,118,88,225,161,212,249,214,128,160,91,120,21,32,120,103,112,223,70,19,171,181,141,169,70,15,7,200,242,235,139,220,71,103,148,177,1,218,171,1,201,194,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,228,152,27,240,129,205,134,20,94,35,141,74,96,43,232,215,58,130,183,44,8,43,133,173,57,86,225,152,172,0,152,254,0],[160,40,222,102,227,184,57,215,18,167,76,237,70,177,153,28,254,150,239,106,3,196,230,118,102,115,152,37,115,154,146,68,110,0],[160,1,97,207,208,165,215,15,48,170,185,154,14,108,172,175,102,80,84,230,117,84,171,111,71,36,208,10,72,15,16,191,84,0],[160,188,173,51,199,160,72,141,141,239,182,189,30,214,230,239,143,154,127,205,194,91,23,162,92,107,85,200,230,97,11,114,161,0],[160,100,72,214,132,4,132,211,90,81,6,11,27,112,193,53,59,242,232,238,114,244,166,252,40,159,174,6,72,193,59,242,161,0],[160,90,14,87,49,7,152,238,76,245,32,244,14,104,246,94,24,18,174,54,64,255,249,83,70,143,43,231,187,143,51,248,11,0],[160,129,44,69,154,180,83,68,210,87,181,172,173,84,159,172,12,167,11,191,173,180,177,110,18,49,206,134,21,16,236,239,148,0],[160,235,214,232,168,121,243,104,75,139,214,158,215,0,7,111,128,52,17,60,185,221,202,23,75,53,133,180,202,77,242,80,32,0],[160,216,173,217,188,156,224,50,242,22,86,238,110,25,249,5,68,16,66,203,67,0,171,165,244,49,56,235,49,67,255,199,17,0],[160,20,249,176,227,252,10,253,85,10,149,86,27,190,19,248,181,140,142,31,215,50,167,184,29,104,239,131,140,5,11,113,13,0],[160,25,92,39,170,46,120,120,151,142,215,183,38,244,176,208,247,149,99,18,16,182,117,161,213,10,79,0,109,92,65,51,36,0],[160,198,234,250,2,138,33,123,148,26,62,97,94,255,155,0,183,223,76,138,71,147,190,80,39,62,131,245,25,133,11,125,187,0],[160,213,35,16,29,4,118,186,237,63,249,80,4,41,207,230,45,93,19,120,91,16,69,46,167,10,154,199,109,250,248,163,184,0],[160,223,125,227,20,75,84,53,125,123,72,106,105,2,87,74,240,135,103,250,174,225,86,160,247,160,195,223,216,9,57,163,134,0],[160,58,237,139,94,155,96,244,13,205,160,37,197,109,61,128,16,81,56,49,204,81,238,207,245,79,30,200,14,195,248,125,80,0],[160,202,77,116,28,179,50,207,160,214,247,114,149,214,31,63,32,245,203,186,193,229,10,211,127,198,125,233,208,113,152,125,61,0],[160,133,77,99,219,151,111,85,211,98,236,211,112,178,193,127,20,108,28,5,220,0,219,168,5,32,130,58,13,222,16,104,31,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,40,222,102,227,184,57,215,18,167,76,237,70,177,153,28,254,150,239,106,3,196,230,118,102,115,152,37,115,154,146,68,110,160,1,97,207,208,165,215,15,48,170,185,154,14,108,172,175,102,80,84,230,117,84,171,111,71,36,208,10,72,15,16,191,84,160,188,173,51,199,160,72,141,141,239,182,189,30,214,230,239,143,154,127,205,194,91,23,162,92,107,85,200,230,97,11,114,161,160,100,72,214,132,4,132,211,90,81,6,11,27,112,193,53,59,242,232,238,114,244,166,252,40,159,174,6,72,193,59,242,161,160,90,14,87,49,7,152,238,76,245,32,244,14,104,246,94,24,18,174,54,64,255,249,83,70,143,43,231,187,143,51,248,11,160,129,44,69,154,180,83,68,210,87,181,172,173,84,159,172,12,167,11,191,173,180,177,110,18,49,206,134,21,16,236,239,148,160,235,214,232,168,121,243,104,75,139,214,158,215,0,7,111,128,52,17,60,185,221,202,23,75,53,133,180,202,77,242,80,32,160,216,173,217,188,156,224,50,242,22,86,238,110,25,249,5,68,16,66,203,67,0,171,165,244,49,56,235,49,67,255,199,17,160,20,249,176,227,252,10,253,85,10,149,86,27,190,19,248,181,140,142,31,215,50,167,184,29,104,239,131,140,5,11,113,13,160,25,92,39,170,46,120,120,151,142,215,183,38,244,176,208,247,149,99,18,16,182,117,161,213,10,79,0,109,92,65,51,36,160,198,234,250,2,138,33,123,148,26,62,97,94,255,155,0,183,223,76,138,71,147,190,80,39,62,131,245,25,133,11,125,187,160,213,35,16,29,4,118,186,237,63,249,80,4,41,207,230,45,93,19,120,91,16,69,46,167,10,154,199,109,250,248,163,184,160,223,125,227,20,75,84,53,125,123,72,106,105,2,87,74,240,135,103,250,174,225,86,160,247,160,195,223,216,9,57,163,134,160,58,237,139,94,155,96,244,13,205,160,37,197,109,61,128,16,81,56,49,204,81,238,207,245,79,30,200,14,195,248,125,80,160,202,77,116,28,179,50,207,160,214,247,114,149,214,31,63,32,245,203,186,193,229,10,211,127,198,125,233,208,113,152,125,61,160,133,77,99,219,151,111,85,211,98,236,211,112,178,193,127,20,108,28,5,220,0,219,168,5,32,130,58,13,222,16,104,31,128],[249,2,17,160,40,222,102,227,184,57,215,18,167,76,237,70,177,153,28,254,150,239,106,3,196,230,118,102,115,152,37,115,154,146,68,110,160,1,97,207,208,165,215,15,48,170,185,154,14,108,172,175,102,80,84,230,117,84,171,111,71,36,208,10,72,15,16,191,84,160,188,173,51,199,160,72,141,141,239,182,189,30,214,230,239,143,154,127,205,194,91,23,162,92,107,85,200,230,97,11,114,161,160,100,72,214,132,4,132,211,90,81,6,11,27,112,193,53,59,242,232,238,114,244,166,252,40,159,174,6,72,193,59,242,161,160,90,14,87,49,7,152,238,76,245,32,244,14,104,246,94,24,18,174,54,64,255,249,83,70,143,43,231,187,143,51,248,11,160,129,44,69,154,180,83,68,210,87,181,172,173,84,159,172,12,167,11,191,173,180,177,110,18,49,206,134,21,16,236,239,148,160,235,214,232,168,121,243,104,75,139,214,158,215,0,7,111,128,52,17,60,185,221,202,23,75,53,133,180,202,77,242,80,32,160,216,173,217,188,156,224,50,242,22,86,238,110,25,249,5,68,16,66,203,67,0,171,165,244,49,56,235,49,67,255,199,17,160,20,249,176,227,252,10,253,85,10,149,86,27,190,19,248,181,140,142,31,215,50,167,184,29,104,239,131,140,5,11,113,13,160,25,92,39,170,46,120,120,151,142,215,183,38,244,176,208,247,149,99,18,16,182,117,161,213,10,79,0,109,92,65,51,36,160,198,234,250,2,138,33,123,148,26,62,97,94,255,155,0,183,223,76,138,71,147,190,80,39,62,131,245,25,133,11,125,187,160,213,35,16,29,4,118,186,237,63,249,80,4,41,207,230,45,93,19,120,91,16,69,46,167,10,154,199,109,250,248,163,184,160,223,125,227,20,75,84,53,125,123,72,106,105,2,87,74,240,135,103,250,174,225,86,160,247,160,195,223,216,9,57,163,134,160,58,237,139,94,155,96,244,13,205,160,37,197,109,61,128,16,81,56,49,204,81,238,207,245,79,30,200,14,195,248,125,80,160,228,152,27,240,129,205,134,20,94,35,141,74,96,43,232,215,58,130,183,44,8,43,133,173,57,86,225,152,172,0,152,254,160,133,77,99,219,151,111,85,211,98,236,211,112,178,193,127,20,108,28,5,220,0,219,168,5,32,130,58,13,222,16,104,31,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,214,36,187,116,39,91,156,50,220,168,158,204,137,119,111,251,222,192,99,196,89,213,30,52,232,104,19,54,156,8,80,253,0],[160,8,135,119,145,71,83,253,247,243,146,138,195,209,28,111,171,16,130,7,126,144,38,253,255,227,44,112,8,163,184,140,148,0],[160,232,145,143,64,118,45,183,95,23,65,72,172,22,59,17,10,49,68,173,162,67,87,142,97,18,138,145,113,1,156,202,21,0],[160,92,82,18,150,251,254,32,95,223,193,185,232,71,254,190,4,235,222,187,48,76,47,178,45,23,124,225,193,190,85,207,30,0],[160,85,77,144,239,209,47,112,195,17,64,149,132,231,126,216,59,131,38,50,252,91,86,83,102,6,244,16,170,51,106,161,159,0],[160,120,69,10,156,246,98,18,32,50,75,7,2,129,103,4,189,203,182,162,89,242,123,187,63,27,122,96,172,52,98,65,223,0],[160,134,119,206,195,242,39,83,125,27,18,98,104,126,4,186,236,183,1,254,168,110,168,42,190,170,47,44,71,68,141,251,109,0],[160,64,68,150,52,210,25,95,201,180,73,160,180,184,95,254,185,140,93,180,58,39,3,45,89,152,48,140,243,63,249,207,51,0],[160,70,244,235,21,74,202,171,94,245,3,224,222,221,222,50,2,85,8,124,48,240,190,216,158,220,87,91,155,164,159,80,156,0],[160,207,152,148,168,255,160,183,20,161,196,124,82,139,0,178,118,120,117,95,129,61,214,19,44,206,141,218,29,61,202,38,78,0],[160,179,37,222,166,210,188,130,89,242,104,232,141,181,215,140,166,71,143,100,229,97,91,245,248,173,158,179,141,190,241,138,247,0],[160,186,224,225,94,174,156,184,21,5,190,210,75,219,198,238,225,23,223,48,45,128,55,176,121,12,60,11,19,62,109,46,0,0],[160,53,72,156,191,57,183,194,21,149,151,170,10,133,251,137,246,80,73,254,101,201,209,237,173,1,204,204,20,6,14,6,141,0],[160,167,82,94,25,177,175,88,244,22,183,2,36,64,100,136,229,179,81,158,196,244,173,101,66,165,68,55,147,79,232,14,3,0],[160,15,183,96,72,139,82,98,227,247,249,237,215,55,82,158,1,138,190,35,74,67,234,95,132,229,7,53,165,104,159,135,17,0],[160,248,40,52,164,47,220,29,146,152,80,121,189,8,84,170,41,69,253,91,39,168,243,184,174,45,18,130,178,212,1,185,209,0],[160,44,26,64,233,199,171,139,47,234,188,174,6,150,200,12,185,251,183,93,176,159,100,227,80,143,176,175,251,93,36,73,164,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,8,135,119,145,71,83,253,247,243,146,138,195,209,28,111,171,16,130,7,126,144,38,253,255,227,44,112,8,163,184,140,148,160,232,145,143,64,118,45,183,95,23,65,72,172,22,59,17,10,49,68,173,162,67,87,142,97,18,138,145,113,1,156,202,21,160,92,82,18,150,251,254,32,95,223,193,185,232,71,254,190,4,235,222,187,48,76,47,178,45,23,124,225,193,190,85,207,30,160,85,77,144,239,209,47,112,195,17,64,149,132,231,126,216,59,131,38,50,252,91,86,83,102,6,244,16,170,51,106,161,159,160,120,69,10,156,246,98,18,32,50,75,7,2,129,103,4,189,203,182,162,89,242,123,187,63,27,122,96,172,52,98,65,223,160,134,119,206,195,242,39,83,125,27,18,98,104,126,4,186,236,183,1,254,168,110,168,42,190,170,47,44,71,68,141,251,109,160,64,68,150,52,210,25,95,201,180,73,160,180,184,95,254,185,140,93,180,58,39,3,45,89,152,48,140,243,63,249,207,51,160,70,244,235,21,74,202,171,94,245,3,224,222,221,222,50,2,85,8,124,48,240,190,216,158,220,87,91,155,164,159,80,156,160,207,152,148,168,255,160,183,20,161,196,124,82,139,0,178,118,120,117,95,129,61,214,19,44,206,141,218,29,61,202,38,78,160,179,37,222,166,210,188,130,89,242,104,232,141,181,215,140,166,71,143,100,229,97,91,245,248,173,158,179,141,190,241,138,247,160,186,224,225,94,174,156,184,21,5,190,210,75,219,198,238,225,23,223,48,45,128,55,176,121,12,60,11,19,62,109,46,0,160,53,72,156,191,57,183,194,21,149,151,170,10,133,251,137,246,80,73,254,101,201,209,237,173,1,204,204,20,6,14,6,141,160,167,82,94,25,177,175,88,244,22,183,2,36,64,100,136,229,179,81,158,196,244,173,101,66,165,68,55,147,79,232,14,3,160,15,183,96,72,139,82,98,227,247,249,237,215,55,82,158,1,138,190,35,74,67,234,95,132,229,7,53,165,104,159,135,17,160,248,40,52,164,47,220,29,146,152,80,121,189,8,84,170,41,69,253,91,39,168,243,184,174,45,18,130,178,212,1,185,209,160,44,26,64,233,199,171,139,47,234,188,174,6,150,200,12,185,251,183,93,176,159,100,227,80,143,176,175,251,93,36,73,164,128],[249,2,17,160,8,135,119,145,71,83,253,247,243,146,138,195,209,28,111,171,16,130,7,126,144,38,253,255,227,44,112,8,163,184,140,148,160,232,145,143,64,118,45,183,95,23,65,72,172,22,59,17,10,49,68,173,162,67,87,142,97,18,138,145,113,1,156,202,21,160,92,82,18,150,251,254,32,95,223,193,185,232,71,254,190,4,235,222,187,48,76,47,178,45,23,124,225,193,190,85,207,30,160,85,77,144,239,209,47,112,195,17,64,149,132,231,126,216,59,131,38,50,252,91,86,83,102,6,244,16,170,51,106,161,159,160,214,36,187,116,39,91,156,50,220,168,158,204,137,119,111,251,222,192,99,196,89,213,30,52,232,104,19,54,156,8,80,253,160,134,119,206,195,242,39,83,125,27,18,98,104,126,4,186,236,183,1,254,168,110,168,42,190,170,47,44,71,68,141,251,109,160,64,68,150,52,210,25,95,201,180,73,160,180,184,95,254,185,140,93,180,58,39,3,45,89,152,48,140,243,63,249,207,51,160,70,244,235,21,74,202,171,94,245,3,224,222,221,222,50,2,85,8,124,48,240,190,216,158,220,87,91,155,164,159,80,156,160,207,152,148,168,255,160,183,20,161,196,124,82,139,0,178,118,120,117,95,129,61,214,19,44,206,141,218,29,61,202,38,78,160,179,37,222,166,210,188,130,89,242,104,232,141,181,215,140,166,71,143,100,229,97,91,245,248,173,158,179,141,190,241,138,247,160,186,224,225,94,174,156,184,21,5,190,210,75,219,198,238,225,23,223,48,45,128,55,176,121,12,60,11,19,62,109,46,0,160,53,72,156,191,57,183,194,21,149,151,170,10,133,251,137,246,80,73,254,101,201,209,237,173,1,204,204,20,6,14,6,141,160,167,82,94,25,177,175,88,244,22,183,2,36,64,100,136,229,179,81,158,196,244,173,101,66,165,68,55,147,79,232,14,3,160,15,183,96,72,139,82,98,227,247,249,237,215,55,82,158,1,138,190,35,74,67,234,95,132,229,7,53,165,104,159,135,17,160,248,40,52,164,47,220,29,146,152,80,121,189,8,84,170,41,69,253,91,39,168,243,184,174,45,18,130,178,212,1,185,209,160,44,26,64,233,199,171,139,47,234,188,174,6,150,200,12,185,251,183,93,176,159,100,227,80,143,176,175,251,93,36,73,164,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,230,45,155,155,230,71,219,202,47,148,63,127,255,153,112,43,182,75,19,68,72,217,70,171,191,223,142,24,183,236,164,215,0],[160,13,112,222,236,74,152,63,197,120,106,32,218,72,101,53,162,68,202,44,244,131,223,199,36,255,198,129,74,66,199,103,88,0],[160,144,187,200,113,167,117,8,52,189,142,152,158,62,92,242,163,214,120,250,84,159,29,90,128,41,88,151,246,254,65,85,33,0],[160,124,89,246,160,94,222,21,159,176,151,105,175,66,203,39,173,27,0,188,15,199,212,56,133,239,61,28,44,29,129,32,77,0],[160,166,84,121,62,19,108,104,119,237,39,200,106,215,254,191,6,120,240,185,64,46,114,70,121,183,243,228,0,91,254,164,56,0],[160,254,220,186,75,138,57,235,36,178,255,228,68,170,250,248,10,240,31,83,191,251,114,101,133,250,16,91,231,91,151,59,191,0],[160,142,142,113,39,59,83,241,242,206,65,123,242,80,148,97,226,23,122,146,236,203,174,172,28,112,181,169,67,22,236,118,92,0],[160,206,214,86,81,200,74,158,48,172,186,44,63,164,152,166,85,112,171,86,111,112,38,66,127,139,104,79,67,203,83,82,116,0],[160,54,189,252,28,107,248,190,113,66,17,36,79,28,172,99,187,108,80,34,4,184,197,178,241,23,151,197,100,212,229,32,152,0],[160,208,231,100,67,181,255,85,186,55,62,51,150,108,188,172,180,2,124,24,211,149,215,110,92,127,104,31,167,163,159,208,146,0],[160,17,172,129,49,18,179,71,120,67,98,34,232,49,174,201,158,23,188,152,119,253,187,175,123,61,9,17,255,2,154,112,55,0],[160,236,104,214,93,1,15,226,18,99,141,93,168,225,214,105,87,152,117,105,184,169,102,80,113,190,29,136,181,227,223,21,124,0],[160,200,81,41,18,48,206,197,18,104,132,127,175,33,150,185,140,180,144,141,142,177,167,240,114,13,18,79,16,205,232,26,124,0],[160,7,162,12,135,162,81,138,121,138,84,40,4,82,78,233,189,139,90,120,27,251,81,35,143,146,218,243,118,77,65,133,105,0],[160,82,235,123,223,43,252,112,108,3,192,31,204,48,73,12,186,32,172,56,53,224,141,5,89,238,172,99,150,82,158,134,175,0],[160,212,181,161,27,47,242,144,90,181,168,143,204,77,166,139,227,90,61,19,121,23,32,222,202,111,151,228,167,108,137,42,227,0],[160,80,70,15,216,199,133,165,127,11,190,59,122,218,166,66,162,99,242,192,28,163,206,5,6,78,46,151,113,180,137,137,208,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,13,112,222,236,74,152,63,197,120,106,32,218,72,101,53,162,68,202,44,244,131,223,199,36,255,198,129,74,66,199,103,88,160,144,187,200,113,167,117,8,52,189,142,152,158,62,92,242,163,214,120,250,84,159,29,90,128,41,88,151,246,254,65,85,33,160,124,89,246,160,94,222,21,159,176,151,105,175,66,203,39,173,27,0,188,15,199,212,56,133,239,61,28,44,29,129,32,77,160,166,84,121,62,19,108,104,119,237,39,200,106,215,254,191,6,120,240,185,64,46,114,70,121,183,243,228,0,91,254,164,56,160,254,220,186,75,138,57,235,36,178,255,228,68,170,250,248,10,240,31,83,191,251,114,101,133,250,16,91,231,91,151,59,191,160,142,142,113,39,59,83,241,242,206,65,123,242,80,148,97,226,23,122,146,236,203,174,172,28,112,181,169,67,22,236,118,92,160,206,214,86,81,200,74,158,48,172,186,44,63,164,152,166,85,112,171,86,111,112,38,66,127,139,104,79,67,203,83,82,116,160,54,189,252,28,107,248,190,113,66,17,36,79,28,172,99,187,108,80,34,4,184,197,178,241,23,151,197,100,212,229,32,152,160,208,231,100,67,181,255,85,186,55,62,51,150,108,188,172,180,2,124,24,211,149,215,110,92,127,104,31,167,163,159,208,146,160,17,172,129,49,18,179,71,120,67,98,34,232,49,174,201,158,23,188,152,119,253,187,175,123,61,9,17,255,2,154,112,55,160,236,104,214,93,1,15,226,18,99,141,93,168,225,214,105,87,152,117,105,184,169,102,80,113,190,29,136,181,227,223,21,124,160,200,81,41,18,48,206,197,18,104,132,127,175,33,150,185,140,180,144,141,142,177,167,240,114,13,18,79,16,205,232,26,124,160,7,162,12,135,162,81,138,121,138,84,40,4,82,78,233,189,139,90,120,27,251,81,35,143,146,218,243,118,77,65,133,105,160,82,235,123,223,43,252,112,108,3,192,31,204,48,73,12,186,32,172,56,53,224,141,5,89,238,172,99,150,82,158,134,175,160,212,181,161,27,47,242,144,90,181,168,143,204,77,166,139,227,90,61,19,121,23,32,222,202,111,151,228,167,108,137,42,227,160,80,70,15,216,199,133,165,127,11,190,59,122,218,166,66,162,99,242,192,28,163,206,5,6,78,46,151,113,180,137,137,208,128],[249,2,17,160,13,112,222,236,74,152,63,197,120,106,32,218,72,101,53,162,68,202,44,244,131,223,199,36,255,198,129,74,66,199,103,88,160,144,187,200,113,167,117,8,52,189,142,152,158,62,92,242,163,214,120,250,84,159,29,90,128,41,88,151,246,254,65,85,33,160,124,89,246,160,94,222,21,159,176,151,105,175,66,203,39,173,27,0,188,15,199,212,56,133,239,61,28,44,29,129,32,77,160,166,84,121,62,19,108,104,119,237,39,200,106,215,254,191,6,120,240,185,64,46,114,70,121,183,243,228,0,91,254,164,56,160,254,220,186,75,138,57,235,36,178,255,228,68,170,250,248,10,240,31,83,191,251,114,101,133,250,16,91,231,91,151,59,191,160,142,142,113,39,59,83,241,242,206,65,123,242,80,148,97,226,23,122,146,236,203,174,172,28,112,181,169,67,22,236,118,92,160,206,214,86,81,200,74,158,48,172,186,44,63,164,152,166,85,112,171,86,111,112,38,66,127,139,104,79,67,203,83,82,116,160,54,189,252,28,107,248,190,113,66,17,36,79,28,172,99,187,108,80,34,4,184,197,178,241,23,151,197,100,212,229,32,152,160,208,231,100,67,181,255,85,186,55,62,51,150,108,188,172,180,2,124,24,211,149,215,110,92,127,104,31,167,163,159,208,146,160,230,45,155,155,230,71,219,202,47,148,63,127,255,153,112,43,182,75,19,68,72,217,70,171,191,223,142,24,183,236,164,215,160,236,104,214,93,1,15,226,18,99,141,93,168,225,214,105,87,152,117,105,184,169,102,80,113,190,29,136,181,227,223,21,124,160,200,81,41,18,48,206,197,18,104,132,127,175,33,150,185,140,180,144,141,142,177,167,240,114,13,18,79,16,205,232,26,124,160,7,162,12,135,162,81,138,121,138,84,40,4,82,78,233,189,139,90,120,27,251,81,35,143,146,218,243,118,77,65,133,105,160,82,235,123,223,43,252,112,108,3,192,31,204,48,73,12,186,32,172,56,53,224,141,5,89,238,172,99,150,82,158,134,175,160,212,181,161,27,47,242,144,90,181,168,143,204,77,166,139,227,90,61,19,121,23,32,222,202,111,151,228,167,108,137,42,227,160,80,70,15,216,199,133,165,127,11,190,59,122,218,166,66,162,99,242,192,28,163,206,5,6,78,46,151,113,180,137,137,208,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[248,209],[248,209]]}},"account":null,"storage":null,"values":[[160,114,145,244,110,127,94,80,191,154,118,211,156,191,151,50,33,36,35,232,127,67,105,84,163,184,26,232,197,119,61,21,114,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,184,169,39,115,29,121,231,55,22,10,155,12,88,113,114,246,95,11,142,163,185,155,129,112,31,225,17,131,212,142,34,29,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,249,132,11,122,118,67,11,147,114,13,139,231,199,93,89,128,165,140,129,70,28,175,187,203,213,159,136,45,22,171,236,128,0],[160,157,67,237,225,202,44,219,10,106,13,5,58,232,79,112,168,198,156,145,92,165,150,94,234,223,163,59,205,193,20,145,239,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,139,170,159,231,204,30,86,21,117,211,48,148,77,235,241,83,212,97,34,238,200,31,54,130,240,221,96,230,225,204,182,191,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,239,34,129,216,218,130,142,57,48,254,72,82,18,158,42,219,64,176,113,33,34,12,180,138,221,92,86,120,214,213,40,224,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,135,107,131,97,218,163,136,28,230,88,49,120,210,102,95,11,244,187,136,136,100,100,149,75,112,78,171,141,130,5,248,52,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,209,128,128,160,184,169,39,115,29,121,231,55,22,10,155,12,88,113,114,246,95,11,142,163,185,155,129,112,31,225,17,131,212,142,34,29,128,160,249,132,11,122,118,67,11,147,114,13,139,231,199,93,89,128,165,140,129,70,28,175,187,203,213,159,136,45,22,171,236,128,160,157,67,237,225,202,44,219,10,106,13,5,58,232,79,112,168,198,156,145,92,165,150,94,234,223,163,59,205,193,20,145,239,128,128,128,160,139,170,159,231,204,30,86,21,117,211,48,148,77,235,241,83,212,97,34,238,200,31,54,130,240,221,96,230,225,204,182,191,128,128,128,160,239,34,129,216,218,130,142,57,48,254,72,82,18,158,42,219,64,176,113,33,34,12,180,138,221,92,86,120,214,213,40,224,128,160,135,107,131,97,218,163,136,28,230,88,49,120,210,102,95,11,244,187,136,136,100,100,149,75,112,78,171,141,130,5,248,52,128],[248,209,128,128,160,184,169,39,115,29,121,231,55,22,10,155,12,88,113,114,246,95,11,142,163,185,155,129,112,31,225,17,131,212,142,34,29,128,160,249,132,11,122,118,67,11,147,114,13,139,231,199,93,89,128,165,140,129,70,28,175,187,203,213,159,136,45,22,171,236,128,160,114,145,244,110,127,94,80,191,154,118,211,156,191,151,50,33,36,35,232,127,67,105,84,163,184,26,232,197,119,61,21,114,128,128,128,160,139,170,159,231,204,30,86,21,117,211,48,148,77,235,241,83,212,97,34,238,200,31,54,130,240,221,96,230,225,204,182,191,128,128,128,160,239,34,129,216,218,130,142,57,48,254,72,82,18,158,42,219,64,176,113,33,34,12,180,138,221,92,86,120,214,213,40,224,128,160,135,107,131,97,218,163,136,28,230,88,49,120,210,102,95,11,244,187,136,136,100,100,149,75,112,78,171,141,130,5,248,52,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,207,83,158,38,99,162,16,222,181,10,122,169,190,199,146,126,174,50,64,4,68,199,226,67,49,12,144,117,180,198,45,30,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,221,22,63,223,20,68,186,173,194,172,202,158,42,126,97,15,132,195,66,221,238,107,215,248,74,92,130,208,11,24,55,5,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,98,173,52,188,181,139,216,41,79,97,31,55,99,254,58,135,199,202,164,138,171,232,182,70,151,103,219,192,144,28,234,137,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,160,221,22,63,223,20,68,186,173,194,172,202,158,42,126,97,15,132,195,66,221,238,107,215,248,74,92,130,208,11,24,55,5,128,128,128,128,128,128,128,128,128,160,98,173,52,188,181,139,216,41,79,97,31,55,99,254,58,135,199,202,164,138,171,232,182,70,151,103,219,192,144,28,234,137,128,128],[248,81,128,128,128,128,160,207,83,158,38,99,162,16,222,181,10,122,169,190,199,146,126,174,50,64,4,68,199,226,67,49,12,144,117,180,198,45,30,128,128,128,128,128,128,128,128,128,160,98,173,52,188,181,139,216,41,79,97,31,55,99,254,58,135,199,202,164,138,171,232,182,70,151,103,219,192,144,28,234,137,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[37,239,191,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201],"key":[170,62,73,84,2,230,88,110,8,64,214,21,71,137,185,32,70,171,195,114,233,247,106,43,145,143,242,208,210,206,20,203],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,32,2,230,88,110,8,64,214,21,71,137,185,32,70,171,195,114,233,247,106,43,145,143,242,208,210,206,20,203,0,0,0,0],[157,32,2,230,88,110,8,64,214,21,71,137,185,32,70,171,195,114,233,247,106,43,145,143,242,208,210,206,20,203,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,211,193,60,172,211,5,56,197,142,83,128,89,64,43,239,126,252,208,254,86,205,43,118,150,9,91,97,35,134,86,23,79,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,43,241,2,58,110,2,230,217,213,217,146,103,221,140,77,11,247,170,77,0,162,19,233,136,89,108,100,126,121,96,144,102,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,32,2,230,88,110,8,64,214,21,71,137,185,32,70,171,195,114,233,247,106,43,145,143,242,208,210,206,20,203,0,0,0,0]],"keccak_data":[[248,102,157,32,2,230,88,110,8,64,214,21,71,137,185,32,70,171,195,114,233,247,106,43,145,143,242,208,210,206,20,203,184,70,248,68,128,128,160,211,193,60,172,211,5,56,197,142,83,128,89,64,43,239,126,252,208,254,86,205,43,118,150,9,91,97,35,134,86,23,79,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,32,2,230,88,110,8,64,214,21,71,137,185,32,70,171,195,114,233,247,106,43,145,143,242,208,210,206,20,203,184,70,248,68,128,128,160,43,241,2,58,110,2,230,217,213,217,146,103,221,140,77,11,247,170,77,0,162,19,233,136,89,108,100,126,121,96,144,102,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[37,239,191,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,165,81,83,100,145,26,113,232,41,53,70,133,150,134,150,98,49,6,4,21,47,83,120,193,112,83,162,217,156,146,203,31,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,34,39,131,73,65,47,37,211,142,206,231,172,16,11,203,33,107,30,7,213,226,2,174,55,216,4,117,220,10,186,68,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,55,235,85,86,230,197,53,159,28,141,120,87,82,57,4,132,185,12,24,158,142,210,106,188,12,87,179,231,52,16,126,229,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,160,32,34,39,131,73,65,47,37,211,142,206,231,172,16,11,203,33,107,30,7,213,226,2,174,55,216,4,117,220,10,186,68,128,128,128,128,128,128,128,160,55,235,85,86,230,197,53,159,28,141,120,87,82,57,4,132,185,12,24,158,142,210,106,188,12,87,179,231,52,16,126,229,128,128,128,128,128],[248,81,128,128,128,160,165,81,83,100,145,26,113,232,41,53,70,133,150,134,150,98,49,6,4,21,47,83,120,193,112,83,162,217,156,146,203,31,128,128,128,128,128,128,128,160,55,235,85,86,230,197,53,159,28,141,120,87,82,57,4,132,185,12,24,158,142,210,106,188,12,87,179,231,52,16,126,229,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33],"key":[58,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112],"list_rlp_bytes":[[226],[226]],"value_rlp_bytes":[[2],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,58,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,58,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[226,160,58,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112,2],[226,160,58,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/UpdateThreeLevels.json b/zkevm-circuits/src/mpt_circuit/tests/UpdateThreeLevels.json new file mode 100644 index 0000000000..9f774fbac5 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/UpdateThreeLevels.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,243,200,138,97,230,47,246,226,112,110,215,135,89,224,243,98,245,241,121,228,100,107,115,224,247,188,253,37,169,108,139,126,0],[160,131,131,83,171,119,34,200,230,98,106,115,22,81,25,119,42,86,5,237,117,31,87,71,221,165,119,13,231,191,212,169,49,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,101,77,230,237,240,73,108,155,117,96,108,192,106,0,61,132,48,176,179,233,125,56,111,253,16,241,13,71,124,184,157,100,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,142,144,113,222,161,97,77,48,103,64,180,232,181,11,108,2,85,138,163,102,26,74,61,64,147,6,183,56,99,81,83,71,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,142,144,113,222,161,97,77,48,103,64,180,232,181,11,108,2,85,138,163,102,26,74,61,64,147,6,183,56,99,81,83,71,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,101,77,230,237,240,73,108,155,117,96,108,192,106,0,61,132,48,176,179,233,125,56,111,253,16,241,13,71,124,184,157,100,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":12,"drifted_index":12,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,89,14,72,25,129,66,191,230,0,34,163,156,210,173,52,225,168,221,66,88,57,5,115,40,205,90,254,107,55,240,255,166,0],[160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,0],[160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,0],[160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,0],[160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,0],[160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,0],[160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,0],[160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,0],[160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,0],[160,146,182,235,84,94,114,8,227,240,42,193,1,138,219,154,123,24,248,232,13,53,253,122,191,191,215,130,128,234,226,86,123,0],[160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,0],[160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,0],[160,227,33,91,131,11,140,204,127,36,52,192,187,51,9,224,190,228,17,100,163,82,196,205,244,33,26,240,245,139,112,116,56,0],[160,87,138,47,5,98,222,15,150,38,81,116,204,38,246,74,216,154,151,10,54,2,41,1,148,36,199,3,198,39,221,221,17,0],[160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,0],[160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,0],[160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,160,146,182,235,84,94,114,8,227,240,42,193,1,138,219,154,123,24,248,232,13,53,253,122,191,191,215,130,128,234,226,86,123,160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,160,227,33,91,131,11,140,204,127,36,52,192,187,51,9,224,190,228,17,100,163,82,196,205,244,33,26,240,245,139,112,116,56,160,87,138,47,5,98,222,15,150,38,81,116,204,38,246,74,216,154,151,10,54,2,41,1,148,36,199,3,198,39,221,221,17,160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,128],[249,2,17,160,209,166,246,131,157,125,116,63,193,248,162,71,90,175,16,52,56,251,216,211,108,128,191,124,80,214,64,195,199,145,183,166,160,118,78,166,176,169,146,27,188,197,238,205,167,71,230,136,19,131,132,97,139,105,245,110,90,160,86,110,49,67,224,145,147,160,42,79,148,177,23,10,104,195,87,164,198,127,197,238,128,134,96,184,136,216,35,159,191,145,242,48,211,244,221,199,218,125,160,25,61,55,49,199,117,55,26,205,165,86,192,197,113,93,148,211,22,242,118,24,93,8,136,137,235,150,131,201,2,102,19,160,46,108,221,239,69,200,218,137,154,157,106,34,114,163,157,34,127,148,59,172,220,119,198,204,169,172,119,179,38,10,10,29,160,156,25,77,91,93,148,70,201,74,5,94,24,247,142,220,91,73,205,240,55,129,253,25,195,230,152,22,90,234,203,109,128,160,90,211,29,56,152,93,77,186,54,229,33,225,233,133,47,241,145,25,69,84,47,209,58,83,104,81,195,35,244,156,156,239,160,102,142,197,101,102,115,238,240,63,220,53,78,129,71,215,55,151,14,9,176,158,63,120,51,114,224,223,57,79,9,188,184,160,146,182,235,84,94,114,8,227,240,42,193,1,138,219,154,123,24,248,232,13,53,253,122,191,191,215,130,128,234,226,86,123,160,40,77,67,44,13,0,118,36,248,131,0,251,86,233,80,243,118,99,238,180,171,250,183,38,238,169,213,119,108,245,19,216,160,64,18,54,182,209,195,231,34,63,114,131,4,1,135,54,117,83,63,223,76,72,79,250,115,62,68,180,127,62,80,18,228,160,227,33,91,131,11,140,204,127,36,52,192,187,51,9,224,190,228,17,100,163,82,196,205,244,33,26,240,245,139,112,116,56,160,89,14,72,25,129,66,191,230,0,34,163,156,210,173,52,225,168,221,66,88,57,5,115,40,205,90,254,107,55,240,255,166,160,88,105,238,118,255,160,136,184,96,8,87,176,52,68,3,231,37,68,98,54,155,235,91,113,248,123,218,255,90,214,92,84,160,83,254,197,66,171,46,87,4,210,164,130,104,87,182,90,162,48,68,242,118,70,202,124,115,19,234,255,252,85,216,103,94,160,82,160,190,200,53,55,205,109,173,180,42,168,128,244,153,23,189,99,18,57,192,135,244,43,161,197,165,163,126,37,239,63,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,196,75,28,203,87,166,229,245,194,73,52,62,118,92,101,101,237,126,90,246,173,201,159,188,78,114,228,147,48,129,240,203,0],[160,134,218,201,190,174,19,218,60,39,113,76,213,248,89,117,82,167,49,202,205,219,147,89,155,18,12,41,204,77,157,17,202,0],[160,60,68,179,91,136,249,50,23,67,71,107,185,87,83,237,194,93,144,28,83,225,47,214,63,191,66,61,226,194,216,70,182,0],[160,14,224,220,172,247,174,84,182,117,227,57,115,225,134,59,19,63,213,188,68,18,175,196,73,251,230,1,76,95,16,89,158,0],[160,3,111,51,46,126,40,229,35,79,209,225,254,203,71,147,195,229,68,61,93,154,71,23,117,9,18,124,106,122,236,243,100,0],[160,103,42,58,70,189,116,83,199,145,157,178,75,86,62,195,77,223,187,38,239,148,199,21,7,98,56,71,186,56,132,227,186,0],[160,38,60,140,175,251,16,57,187,140,135,54,244,254,42,1,73,28,2,56,87,165,143,245,183,246,161,161,234,176,113,136,27,0],[160,229,178,108,142,163,155,235,197,248,58,23,197,47,204,158,167,210,161,90,248,219,255,86,78,18,128,40,160,225,174,2,200,0],[160,27,220,109,24,173,38,212,62,203,237,107,17,18,108,115,141,170,14,0,20,144,56,95,194,28,217,108,102,203,177,106,143,0],[160,67,103,36,244,91,164,54,109,142,203,181,180,87,87,18,138,83,166,216,44,242,187,34,20,251,167,125,121,233,76,48,206,0],[160,188,212,78,6,137,199,58,2,72,14,105,100,234,10,254,179,199,160,215,110,78,188,254,146,90,111,23,88,96,114,64,234,0],[160,141,79,235,169,130,59,15,136,65,119,184,215,130,7,17,19,57,60,64,6,98,90,135,37,5,27,178,133,252,132,207,36,0],[160,196,48,248,227,122,194,3,8,5,96,187,7,73,32,196,148,144,36,217,56,189,45,99,194,95,179,244,108,50,55,58,89,0],[160,157,63,26,157,8,145,224,70,103,61,217,106,46,204,62,42,103,142,80,182,6,178,45,172,18,36,53,76,32,93,156,111,0],[160,50,157,97,54,52,88,31,35,198,53,123,229,156,229,102,179,120,197,16,152,201,134,181,240,249,153,236,9,20,186,239,23,0],[160,205,184,206,0,175,180,158,90,0,146,59,162,236,244,102,190,19,17,118,19,248,132,99,121,200,185,152,129,173,2,104,30,0],[160,216,163,182,112,134,103,194,136,44,88,63,169,122,20,14,52,3,223,73,38,43,99,183,98,109,194,100,48,223,17,138,120,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,134,218,201,190,174,19,218,60,39,113,76,213,248,89,117,82,167,49,202,205,219,147,89,155,18,12,41,204,77,157,17,202,160,60,68,179,91,136,249,50,23,67,71,107,185,87,83,237,194,93,144,28,83,225,47,214,63,191,66,61,226,194,216,70,182,160,14,224,220,172,247,174,84,182,117,227,57,115,225,134,59,19,63,213,188,68,18,175,196,73,251,230,1,76,95,16,89,158,160,3,111,51,46,126,40,229,35,79,209,225,254,203,71,147,195,229,68,61,93,154,71,23,117,9,18,124,106,122,236,243,100,160,103,42,58,70,189,116,83,199,145,157,178,75,86,62,195,77,223,187,38,239,148,199,21,7,98,56,71,186,56,132,227,186,160,38,60,140,175,251,16,57,187,140,135,54,244,254,42,1,73,28,2,56,87,165,143,245,183,246,161,161,234,176,113,136,27,160,229,178,108,142,163,155,235,197,248,58,23,197,47,204,158,167,210,161,90,248,219,255,86,78,18,128,40,160,225,174,2,200,160,27,220,109,24,173,38,212,62,203,237,107,17,18,108,115,141,170,14,0,20,144,56,95,194,28,217,108,102,203,177,106,143,160,67,103,36,244,91,164,54,109,142,203,181,180,87,87,18,138,83,166,216,44,242,187,34,20,251,167,125,121,233,76,48,206,160,188,212,78,6,137,199,58,2,72,14,105,100,234,10,254,179,199,160,215,110,78,188,254,146,90,111,23,88,96,114,64,234,160,141,79,235,169,130,59,15,136,65,119,184,215,130,7,17,19,57,60,64,6,98,90,135,37,5,27,178,133,252,132,207,36,160,196,48,248,227,122,194,3,8,5,96,187,7,73,32,196,148,144,36,217,56,189,45,99,194,95,179,244,108,50,55,58,89,160,157,63,26,157,8,145,224,70,103,61,217,106,46,204,62,42,103,142,80,182,6,178,45,172,18,36,53,76,32,93,156,111,160,50,157,97,54,52,88,31,35,198,53,123,229,156,229,102,179,120,197,16,152,201,134,181,240,249,153,236,9,20,186,239,23,160,205,184,206,0,175,180,158,90,0,146,59,162,236,244,102,190,19,17,118,19,248,132,99,121,200,185,152,129,173,2,104,30,160,216,163,182,112,134,103,194,136,44,88,63,169,122,20,14,52,3,223,73,38,43,99,183,98,109,194,100,48,223,17,138,120,128],[249,2,17,160,134,218,201,190,174,19,218,60,39,113,76,213,248,89,117,82,167,49,202,205,219,147,89,155,18,12,41,204,77,157,17,202,160,60,68,179,91,136,249,50,23,67,71,107,185,87,83,237,194,93,144,28,83,225,47,214,63,191,66,61,226,194,216,70,182,160,14,224,220,172,247,174,84,182,117,227,57,115,225,134,59,19,63,213,188,68,18,175,196,73,251,230,1,76,95,16,89,158,160,3,111,51,46,126,40,229,35,79,209,225,254,203,71,147,195,229,68,61,93,154,71,23,117,9,18,124,106,122,236,243,100,160,103,42,58,70,189,116,83,199,145,157,178,75,86,62,195,77,223,187,38,239,148,199,21,7,98,56,71,186,56,132,227,186,160,38,60,140,175,251,16,57,187,140,135,54,244,254,42,1,73,28,2,56,87,165,143,245,183,246,161,161,234,176,113,136,27,160,229,178,108,142,163,155,235,197,248,58,23,197,47,204,158,167,210,161,90,248,219,255,86,78,18,128,40,160,225,174,2,200,160,27,220,109,24,173,38,212,62,203,237,107,17,18,108,115,141,170,14,0,20,144,56,95,194,28,217,108,102,203,177,106,143,160,67,103,36,244,91,164,54,109,142,203,181,180,87,87,18,138,83,166,216,44,242,187,34,20,251,167,125,121,233,76,48,206,160,196,75,28,203,87,166,229,245,194,73,52,62,118,92,101,101,237,126,90,246,173,201,159,188,78,114,228,147,48,129,240,203,160,141,79,235,169,130,59,15,136,65,119,184,215,130,7,17,19,57,60,64,6,98,90,135,37,5,27,178,133,252,132,207,36,160,196,48,248,227,122,194,3,8,5,96,187,7,73,32,196,148,144,36,217,56,189,45,99,194,95,179,244,108,50,55,58,89,160,157,63,26,157,8,145,224,70,103,61,217,106,46,204,62,42,103,142,80,182,6,178,45,172,18,36,53,76,32,93,156,111,160,50,157,97,54,52,88,31,35,198,53,123,229,156,229,102,179,120,197,16,152,201,134,181,240,249,153,236,9,20,186,239,23,160,205,184,206,0,175,180,158,90,0,146,59,162,236,244,102,190,19,17,118,19,248,132,99,121,200,185,152,129,173,2,104,30,160,216,163,182,112,134,103,194,136,44,88,63,169,122,20,14,52,3,223,73,38,43,99,183,98,109,194,100,48,223,17,138,120,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,37,70,153,216,255,176,70,2,60,194,7,102,154,227,212,101,52,63,150,4,173,162,99,247,179,212,33,34,48,36,144,175,0],[160,202,178,60,17,151,42,168,211,25,54,0,212,52,215,119,167,108,199,236,109,42,123,206,152,219,13,83,203,241,152,25,49,0],[160,117,120,70,231,184,210,156,242,234,229,218,216,125,117,237,85,38,227,80,56,163,168,236,164,170,189,189,246,102,7,51,37,0],[160,243,86,5,22,62,129,189,39,37,134,182,129,107,142,107,43,216,243,178,191,118,66,158,22,162,178,19,215,99,171,53,241,0],[160,26,147,102,163,139,172,169,47,50,240,75,190,92,248,196,156,35,24,79,235,155,144,229,52,4,85,87,249,139,147,232,222,0],[160,55,240,43,175,228,200,177,244,37,165,43,85,17,65,200,34,156,95,192,110,165,64,147,253,164,55,46,52,70,111,1,187,0],[160,65,243,194,198,62,89,154,111,152,60,228,64,78,173,228,171,155,55,138,112,207,10,211,186,27,123,24,68,144,152,92,15,0],[160,165,4,240,238,86,88,87,131,147,49,150,134,135,135,114,35,101,129,61,192,124,35,243,23,28,2,149,182,238,243,146,183,0],[160,203,244,60,194,17,196,178,233,40,120,45,144,12,56,121,75,20,6,188,227,227,136,185,166,185,106,25,14,173,25,104,235,0],[160,153,207,209,79,197,89,211,5,238,32,133,42,196,14,232,174,24,47,198,81,36,235,169,26,147,62,38,218,63,246,104,123,0],[160,211,52,138,22,21,170,136,230,66,249,134,105,129,225,96,115,254,12,184,48,240,116,131,211,200,162,40,183,37,203,12,241,0],[160,179,1,168,48,67,126,82,53,164,181,138,198,156,246,194,72,19,31,221,234,70,82,74,198,216,69,156,12,8,164,21,166,0],[160,62,0,31,143,83,154,137,206,49,164,54,36,125,91,147,197,230,223,89,239,214,10,110,226,171,73,18,41,73,110,214,120,0],[160,119,23,233,85,88,183,226,175,20,226,7,31,192,249,8,88,18,245,120,118,144,101,31,4,236,150,125,113,115,73,45,224,0],[160,199,240,139,155,90,147,83,62,111,164,111,28,229,72,34,21,30,177,174,154,13,18,24,224,172,15,110,24,163,180,17,69,0],[160,175,69,150,164,239,0,179,191,172,123,200,40,48,91,101,133,73,174,78,169,96,33,107,39,116,85,29,203,63,201,40,5,0],[160,122,18,153,246,145,25,23,86,174,209,76,192,69,150,89,144,239,137,143,40,186,4,6,47,143,154,238,87,90,193,47,115,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,202,178,60,17,151,42,168,211,25,54,0,212,52,215,119,167,108,199,236,109,42,123,206,152,219,13,83,203,241,152,25,49,160,117,120,70,231,184,210,156,242,234,229,218,216,125,117,237,85,38,227,80,56,163,168,236,164,170,189,189,246,102,7,51,37,160,243,86,5,22,62,129,189,39,37,134,182,129,107,142,107,43,216,243,178,191,118,66,158,22,162,178,19,215,99,171,53,241,160,26,147,102,163,139,172,169,47,50,240,75,190,92,248,196,156,35,24,79,235,155,144,229,52,4,85,87,249,139,147,232,222,160,55,240,43,175,228,200,177,244,37,165,43,85,17,65,200,34,156,95,192,110,165,64,147,253,164,55,46,52,70,111,1,187,160,65,243,194,198,62,89,154,111,152,60,228,64,78,173,228,171,155,55,138,112,207,10,211,186,27,123,24,68,144,152,92,15,160,165,4,240,238,86,88,87,131,147,49,150,134,135,135,114,35,101,129,61,192,124,35,243,23,28,2,149,182,238,243,146,183,160,203,244,60,194,17,196,178,233,40,120,45,144,12,56,121,75,20,6,188,227,227,136,185,166,185,106,25,14,173,25,104,235,160,153,207,209,79,197,89,211,5,238,32,133,42,196,14,232,174,24,47,198,81,36,235,169,26,147,62,38,218,63,246,104,123,160,211,52,138,22,21,170,136,230,66,249,134,105,129,225,96,115,254,12,184,48,240,116,131,211,200,162,40,183,37,203,12,241,160,179,1,168,48,67,126,82,53,164,181,138,198,156,246,194,72,19,31,221,234,70,82,74,198,216,69,156,12,8,164,21,166,160,62,0,31,143,83,154,137,206,49,164,54,36,125,91,147,197,230,223,89,239,214,10,110,226,171,73,18,41,73,110,214,120,160,119,23,233,85,88,183,226,175,20,226,7,31,192,249,8,88,18,245,120,118,144,101,31,4,236,150,125,113,115,73,45,224,160,199,240,139,155,90,147,83,62,111,164,111,28,229,72,34,21,30,177,174,154,13,18,24,224,172,15,110,24,163,180,17,69,160,175,69,150,164,239,0,179,191,172,123,200,40,48,91,101,133,73,174,78,169,96,33,107,39,116,85,29,203,63,201,40,5,160,122,18,153,246,145,25,23,86,174,209,76,192,69,150,89,144,239,137,143,40,186,4,6,47,143,154,238,87,90,193,47,115,128],[249,2,17,160,202,178,60,17,151,42,168,211,25,54,0,212,52,215,119,167,108,199,236,109,42,123,206,152,219,13,83,203,241,152,25,49,160,117,120,70,231,184,210,156,242,234,229,218,216,125,117,237,85,38,227,80,56,163,168,236,164,170,189,189,246,102,7,51,37,160,243,86,5,22,62,129,189,39,37,134,182,129,107,142,107,43,216,243,178,191,118,66,158,22,162,178,19,215,99,171,53,241,160,37,70,153,216,255,176,70,2,60,194,7,102,154,227,212,101,52,63,150,4,173,162,99,247,179,212,33,34,48,36,144,175,160,55,240,43,175,228,200,177,244,37,165,43,85,17,65,200,34,156,95,192,110,165,64,147,253,164,55,46,52,70,111,1,187,160,65,243,194,198,62,89,154,111,152,60,228,64,78,173,228,171,155,55,138,112,207,10,211,186,27,123,24,68,144,152,92,15,160,165,4,240,238,86,88,87,131,147,49,150,134,135,135,114,35,101,129,61,192,124,35,243,23,28,2,149,182,238,243,146,183,160,203,244,60,194,17,196,178,233,40,120,45,144,12,56,121,75,20,6,188,227,227,136,185,166,185,106,25,14,173,25,104,235,160,153,207,209,79,197,89,211,5,238,32,133,42,196,14,232,174,24,47,198,81,36,235,169,26,147,62,38,218,63,246,104,123,160,211,52,138,22,21,170,136,230,66,249,134,105,129,225,96,115,254,12,184,48,240,116,131,211,200,162,40,183,37,203,12,241,160,179,1,168,48,67,126,82,53,164,181,138,198,156,246,194,72,19,31,221,234,70,82,74,198,216,69,156,12,8,164,21,166,160,62,0,31,143,83,154,137,206,49,164,54,36,125,91,147,197,230,223,89,239,214,10,110,226,171,73,18,41,73,110,214,120,160,119,23,233,85,88,183,226,175,20,226,7,31,192,249,8,88,18,245,120,118,144,101,31,4,236,150,125,113,115,73,45,224,160,199,240,139,155,90,147,83,62,111,164,111,28,229,72,34,21,30,177,174,154,13,18,24,224,172,15,110,24,163,180,17,69,160,175,69,150,164,239,0,179,191,172,123,200,40,48,91,101,133,73,174,78,169,96,33,107,39,116,85,29,203,63,201,40,5,160,122,18,153,246,145,25,23,86,174,209,76,192,69,150,89,144,239,137,143,40,186,4,6,47,143,154,238,87,90,193,47,115,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,208,183,63,43,52,250,147,253,41,11,40,102,228,67,36,150,238,209,99,227,150,202,150,95,82,62,165,162,196,179,232,192,0],[160,103,105,82,22,164,20,105,171,174,15,176,111,16,110,197,206,240,213,30,211,38,178,88,146,61,193,83,226,72,146,187,32,0],[160,92,2,153,139,180,253,202,189,187,201,218,208,108,46,165,157,71,142,151,217,111,73,25,25,162,219,234,140,226,128,48,182,0],[160,70,246,13,215,224,217,242,20,216,245,179,97,76,16,81,133,240,22,148,190,226,231,96,214,24,36,204,79,218,244,223,180,0],[160,83,99,4,81,162,62,184,155,70,220,177,221,151,165,223,225,191,135,187,227,121,171,116,183,238,24,1,243,245,109,38,11,0],[160,151,47,41,185,68,122,22,171,39,65,98,255,152,179,215,19,185,84,192,117,208,58,8,3,53,156,190,216,144,165,114,240,0],[160,154,83,97,125,66,154,7,118,156,211,229,136,227,16,33,255,120,165,75,255,173,132,173,24,151,94,198,225,159,54,239,224,0],[160,72,40,99,217,194,228,106,165,67,225,213,14,194,163,88,93,137,152,241,64,66,197,98,166,70,175,160,83,225,108,246,15,0],[160,141,19,45,28,134,151,6,219,170,50,149,169,20,130,139,176,139,133,96,178,59,58,77,48,133,126,231,82,216,104,189,253,0],[160,40,209,9,219,145,88,225,98,57,70,130,171,199,135,108,162,137,200,130,155,156,208,73,48,20,227,77,94,10,212,186,75,0],[160,151,195,241,61,186,67,115,7,206,171,249,86,213,12,190,70,70,245,250,251,180,50,232,145,217,189,182,194,111,173,238,153,0],[160,170,8,199,57,241,245,0,236,249,151,186,39,179,163,234,35,91,207,103,82,2,147,70,68,24,54,237,9,110,117,233,220,0],[160,194,226,210,129,156,108,206,61,236,106,53,82,151,122,2,164,104,238,136,103,183,61,11,171,122,247,211,177,223,56,243,78,0],[160,164,83,38,107,213,64,130,46,236,100,215,160,46,165,23,81,227,230,200,112,249,120,253,145,175,228,45,152,119,186,147,18,0],[160,36,154,57,182,220,51,206,166,230,104,77,34,77,209,3,243,134,28,60,43,2,3,99,237,227,44,106,232,27,122,235,87,0],[160,172,166,90,199,78,208,211,131,210,168,145,150,54,227,10,138,163,77,86,104,15,118,46,18,218,85,42,179,23,65,205,66,0],[160,172,57,163,238,136,240,100,60,59,3,157,116,147,196,126,175,33,106,32,195,58,104,30,146,95,120,54,137,93,121,1,151,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,103,105,82,22,164,20,105,171,174,15,176,111,16,110,197,206,240,213,30,211,38,178,88,146,61,193,83,226,72,146,187,32,160,92,2,153,139,180,253,202,189,187,201,218,208,108,46,165,157,71,142,151,217,111,73,25,25,162,219,234,140,226,128,48,182,160,70,246,13,215,224,217,242,20,216,245,179,97,76,16,81,133,240,22,148,190,226,231,96,214,24,36,204,79,218,244,223,180,160,83,99,4,81,162,62,184,155,70,220,177,221,151,165,223,225,191,135,187,227,121,171,116,183,238,24,1,243,245,109,38,11,160,151,47,41,185,68,122,22,171,39,65,98,255,152,179,215,19,185,84,192,117,208,58,8,3,53,156,190,216,144,165,114,240,160,154,83,97,125,66,154,7,118,156,211,229,136,227,16,33,255,120,165,75,255,173,132,173,24,151,94,198,225,159,54,239,224,160,72,40,99,217,194,228,106,165,67,225,213,14,194,163,88,93,137,152,241,64,66,197,98,166,70,175,160,83,225,108,246,15,160,141,19,45,28,134,151,6,219,170,50,149,169,20,130,139,176,139,133,96,178,59,58,77,48,133,126,231,82,216,104,189,253,160,40,209,9,219,145,88,225,98,57,70,130,171,199,135,108,162,137,200,130,155,156,208,73,48,20,227,77,94,10,212,186,75,160,151,195,241,61,186,67,115,7,206,171,249,86,213,12,190,70,70,245,250,251,180,50,232,145,217,189,182,194,111,173,238,153,160,170,8,199,57,241,245,0,236,249,151,186,39,179,163,234,35,91,207,103,82,2,147,70,68,24,54,237,9,110,117,233,220,160,194,226,210,129,156,108,206,61,236,106,53,82,151,122,2,164,104,238,136,103,183,61,11,171,122,247,211,177,223,56,243,78,160,164,83,38,107,213,64,130,46,236,100,215,160,46,165,23,81,227,230,200,112,249,120,253,145,175,228,45,152,119,186,147,18,160,36,154,57,182,220,51,206,166,230,104,77,34,77,209,3,243,134,28,60,43,2,3,99,237,227,44,106,232,27,122,235,87,160,172,166,90,199,78,208,211,131,210,168,145,150,54,227,10,138,163,77,86,104,15,118,46,18,218,85,42,179,23,65,205,66,160,172,57,163,238,136,240,100,60,59,3,157,116,147,196,126,175,33,106,32,195,58,104,30,146,95,120,54,137,93,121,1,151,128],[249,2,17,160,103,105,82,22,164,20,105,171,174,15,176,111,16,110,197,206,240,213,30,211,38,178,88,146,61,193,83,226,72,146,187,32,160,92,2,153,139,180,253,202,189,187,201,218,208,108,46,165,157,71,142,151,217,111,73,25,25,162,219,234,140,226,128,48,182,160,70,246,13,215,224,217,242,20,216,245,179,97,76,16,81,133,240,22,148,190,226,231,96,214,24,36,204,79,218,244,223,180,160,83,99,4,81,162,62,184,155,70,220,177,221,151,165,223,225,191,135,187,227,121,171,116,183,238,24,1,243,245,109,38,11,160,151,47,41,185,68,122,22,171,39,65,98,255,152,179,215,19,185,84,192,117,208,58,8,3,53,156,190,216,144,165,114,240,160,154,83,97,125,66,154,7,118,156,211,229,136,227,16,33,255,120,165,75,255,173,132,173,24,151,94,198,225,159,54,239,224,160,72,40,99,217,194,228,106,165,67,225,213,14,194,163,88,93,137,152,241,64,66,197,98,166,70,175,160,83,225,108,246,15,160,141,19,45,28,134,151,6,219,170,50,149,169,20,130,139,176,139,133,96,178,59,58,77,48,133,126,231,82,216,104,189,253,160,208,183,63,43,52,250,147,253,41,11,40,102,228,67,36,150,238,209,99,227,150,202,150,95,82,62,165,162,196,179,232,192,160,151,195,241,61,186,67,115,7,206,171,249,86,213,12,190,70,70,245,250,251,180,50,232,145,217,189,182,194,111,173,238,153,160,170,8,199,57,241,245,0,236,249,151,186,39,179,163,234,35,91,207,103,82,2,147,70,68,24,54,237,9,110,117,233,220,160,194,226,210,129,156,108,206,61,236,106,53,82,151,122,2,164,104,238,136,103,183,61,11,171,122,247,211,177,223,56,243,78,160,164,83,38,107,213,64,130,46,236,100,215,160,46,165,23,81,227,230,200,112,249,120,253,145,175,228,45,152,119,186,147,18,160,36,154,57,182,220,51,206,166,230,104,77,34,77,209,3,243,134,28,60,43,2,3,99,237,227,44,106,232,27,122,235,87,160,172,166,90,199,78,208,211,131,210,168,145,150,54,227,10,138,163,77,86,104,15,118,46,18,218,85,42,179,23,65,205,66,160,172,57,163,238,136,240,100,60,59,3,157,116,147,196,126,175,33,106,32,195,58,104,30,146,95,120,54,137,93,121,1,151,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,88,100,20,124,44,120,97,11,155,255,247,50,144,93,125,181,208,124,107,2,9,128,158,57,108,165,185,187,233,79,33,10,0],[160,203,58,141,39,24,239,17,87,56,17,70,91,150,132,68,73,61,106,239,10,13,127,15,57,217,125,86,123,3,113,135,125,0],[160,97,70,193,6,156,165,200,94,116,237,226,230,175,68,206,171,255,118,38,47,249,185,215,249,14,79,236,187,219,7,137,168,0],[160,128,67,24,105,163,232,102,38,26,11,178,237,211,226,63,59,185,156,113,88,91,242,175,183,218,47,58,90,207,43,83,19,0],[160,49,150,123,176,188,3,196,164,186,115,50,243,126,27,139,115,209,119,5,106,240,15,155,169,252,132,31,115,34,218,234,145,0],[160,123,98,218,128,28,115,39,17,152,111,20,161,27,72,162,51,224,155,8,85,127,76,111,187,140,112,46,21,234,63,168,226,0],[160,223,81,174,230,173,67,17,128,189,230,211,166,152,2,218,187,123,45,27,191,175,243,169,184,52,22,21,206,92,208,160,18,0],[160,112,124,244,85,8,22,70,47,154,87,142,40,254,178,62,63,0,200,207,248,4,41,132,200,53,230,245,112,68,121,166,161,0],[160,80,222,2,39,140,137,42,45,134,247,241,5,7,240,98,17,186,136,240,91,122,20,30,168,39,7,38,99,112,181,232,165,0],[160,52,98,64,229,62,196,122,239,68,34,106,105,6,14,188,43,109,142,168,242,118,77,20,232,62,110,241,168,29,250,44,183,0],[160,221,16,192,189,239,240,135,122,64,173,215,46,4,239,49,29,173,26,184,232,175,108,56,126,239,57,79,239,242,87,128,177,0],[160,132,85,13,208,15,170,194,148,126,243,233,153,229,252,178,217,15,83,154,181,63,96,148,160,231,39,28,247,142,86,197,122,0],[160,71,242,166,4,150,184,32,114,205,159,231,103,15,154,74,94,134,218,101,56,3,53,5,77,237,146,64,97,202,15,103,233,0],[160,66,93,231,14,81,170,49,143,70,21,85,72,189,168,3,23,255,120,4,227,24,85,169,115,18,12,196,84,54,44,25,109,0],[160,193,44,37,35,236,83,19,208,177,152,48,218,155,67,29,208,179,128,245,34,186,229,249,56,129,195,235,134,130,64,131,34,0],[160,124,10,50,242,173,119,231,204,44,118,231,59,10,23,99,177,151,4,141,148,159,251,52,202,202,145,82,234,26,95,208,100,0],[160,109,228,128,219,151,38,210,74,172,151,171,26,222,237,85,76,183,166,146,170,47,169,130,199,195,241,209,88,7,161,140,55,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,203,58,141,39,24,239,17,87,56,17,70,91,150,132,68,73,61,106,239,10,13,127,15,57,217,125,86,123,3,113,135,125,160,97,70,193,6,156,165,200,94,116,237,226,230,175,68,206,171,255,118,38,47,249,185,215,249,14,79,236,187,219,7,137,168,160,128,67,24,105,163,232,102,38,26,11,178,237,211,226,63,59,185,156,113,88,91,242,175,183,218,47,58,90,207,43,83,19,160,49,150,123,176,188,3,196,164,186,115,50,243,126,27,139,115,209,119,5,106,240,15,155,169,252,132,31,115,34,218,234,145,160,123,98,218,128,28,115,39,17,152,111,20,161,27,72,162,51,224,155,8,85,127,76,111,187,140,112,46,21,234,63,168,226,160,223,81,174,230,173,67,17,128,189,230,211,166,152,2,218,187,123,45,27,191,175,243,169,184,52,22,21,206,92,208,160,18,160,112,124,244,85,8,22,70,47,154,87,142,40,254,178,62,63,0,200,207,248,4,41,132,200,53,230,245,112,68,121,166,161,160,80,222,2,39,140,137,42,45,134,247,241,5,7,240,98,17,186,136,240,91,122,20,30,168,39,7,38,99,112,181,232,165,160,52,98,64,229,62,196,122,239,68,34,106,105,6,14,188,43,109,142,168,242,118,77,20,232,62,110,241,168,29,250,44,183,160,221,16,192,189,239,240,135,122,64,173,215,46,4,239,49,29,173,26,184,232,175,108,56,126,239,57,79,239,242,87,128,177,160,132,85,13,208,15,170,194,148,126,243,233,153,229,252,178,217,15,83,154,181,63,96,148,160,231,39,28,247,142,86,197,122,160,71,242,166,4,150,184,32,114,205,159,231,103,15,154,74,94,134,218,101,56,3,53,5,77,237,146,64,97,202,15,103,233,160,66,93,231,14,81,170,49,143,70,21,85,72,189,168,3,23,255,120,4,227,24,85,169,115,18,12,196,84,54,44,25,109,160,193,44,37,35,236,83,19,208,177,152,48,218,155,67,29,208,179,128,245,34,186,229,249,56,129,195,235,134,130,64,131,34,160,124,10,50,242,173,119,231,204,44,118,231,59,10,23,99,177,151,4,141,148,159,251,52,202,202,145,82,234,26,95,208,100,160,109,228,128,219,151,38,210,74,172,151,171,26,222,237,85,76,183,166,146,170,47,169,130,199,195,241,209,88,7,161,140,55,128],[249,2,17,160,203,58,141,39,24,239,17,87,56,17,70,91,150,132,68,73,61,106,239,10,13,127,15,57,217,125,86,123,3,113,135,125,160,97,70,193,6,156,165,200,94,116,237,226,230,175,68,206,171,255,118,38,47,249,185,215,249,14,79,236,187,219,7,137,168,160,128,67,24,105,163,232,102,38,26,11,178,237,211,226,63,59,185,156,113,88,91,242,175,183,218,47,58,90,207,43,83,19,160,49,150,123,176,188,3,196,164,186,115,50,243,126,27,139,115,209,119,5,106,240,15,155,169,252,132,31,115,34,218,234,145,160,123,98,218,128,28,115,39,17,152,111,20,161,27,72,162,51,224,155,8,85,127,76,111,187,140,112,46,21,234,63,168,226,160,223,81,174,230,173,67,17,128,189,230,211,166,152,2,218,187,123,45,27,191,175,243,169,184,52,22,21,206,92,208,160,18,160,112,124,244,85,8,22,70,47,154,87,142,40,254,178,62,63,0,200,207,248,4,41,132,200,53,230,245,112,68,121,166,161,160,80,222,2,39,140,137,42,45,134,247,241,5,7,240,98,17,186,136,240,91,122,20,30,168,39,7,38,99,112,181,232,165,160,52,98,64,229,62,196,122,239,68,34,106,105,6,14,188,43,109,142,168,242,118,77,20,232,62,110,241,168,29,250,44,183,160,88,100,20,124,44,120,97,11,155,255,247,50,144,93,125,181,208,124,107,2,9,128,158,57,108,165,185,187,233,79,33,10,160,132,85,13,208,15,170,194,148,126,243,233,153,229,252,178,217,15,83,154,181,63,96,148,160,231,39,28,247,142,86,197,122,160,71,242,166,4,150,184,32,114,205,159,231,103,15,154,74,94,134,218,101,56,3,53,5,77,237,146,64,97,202,15,103,233,160,66,93,231,14,81,170,49,143,70,21,85,72,189,168,3,23,255,120,4,227,24,85,169,115,18,12,196,84,54,44,25,109,160,193,44,37,35,236,83,19,208,177,152,48,218,155,67,29,208,179,128,245,34,186,229,249,56,129,195,235,134,130,64,131,34,160,124,10,50,242,173,119,231,204,44,118,231,59,10,23,99,177,151,4,141,148,159,251,52,202,202,145,82,234,26,95,208,100,160,109,228,128,219,151,38,210,74,172,151,171,26,222,237,85,76,183,166,146,170,47,169,130,199,195,241,209,88,7,161,140,55,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[248,209],[248,209]]}},"account":null,"storage":null,"values":[[160,250,47,45,204,91,161,58,207,44,11,183,77,22,191,151,109,244,206,52,64,130,47,100,227,34,238,117,230,29,190,208,238,0],[160,80,6,89,43,86,234,131,147,239,22,38,45,220,175,87,203,99,236,3,18,241,136,146,107,109,235,193,176,130,156,84,21,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,184,187,49,45,187,166,123,157,75,39,20,29,188,7,24,117,224,98,76,62,189,40,97,137,93,65,20,154,75,200,43,196,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,113,39,63,230,201,44,175,158,109,33,26,173,81,95,151,211,215,11,63,101,38,30,26,223,237,195,181,5,248,98,100,138,0],[160,98,131,74,223,226,45,203,219,101,89,233,136,129,214,83,96,63,249,13,214,210,36,42,204,9,250,91,76,247,145,56,185,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,207,13,218,106,225,237,167,189,87,240,205,172,12,156,144,68,212,32,143,93,199,162,107,92,177,189,68,57,239,160,190,113,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,169,195,97,31,145,245,243,213,105,40,50,252,185,193,163,36,180,130,182,42,196,236,8,106,172,7,253,82,75,244,165,55,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,209,160,80,6,89,43,86,234,131,147,239,22,38,45,220,175,87,203,99,236,3,18,241,136,146,107,109,235,193,176,130,156,84,21,128,128,128,160,184,187,49,45,187,166,123,157,75,39,20,29,188,7,24,117,224,98,76,62,189,40,97,137,93,65,20,154,75,200,43,196,128,128,160,113,39,63,230,201,44,175,158,109,33,26,173,81,95,151,211,215,11,63,101,38,30,26,223,237,195,181,5,248,98,100,138,160,98,131,74,223,226,45,203,219,101,89,233,136,129,214,83,96,63,249,13,214,210,36,42,204,9,250,91,76,247,145,56,185,128,128,160,207,13,218,106,225,237,167,189,87,240,205,172,12,156,144,68,212,32,143,93,199,162,107,92,177,189,68,57,239,160,190,113,128,128,160,169,195,97,31,145,245,243,213,105,40,50,252,185,193,163,36,180,130,182,42,196,236,8,106,172,7,253,82,75,244,165,55,128,128],[248,209,160,250,47,45,204,91,161,58,207,44,11,183,77,22,191,151,109,244,206,52,64,130,47,100,227,34,238,117,230,29,190,208,238,128,128,128,160,184,187,49,45,187,166,123,157,75,39,20,29,188,7,24,117,224,98,76,62,189,40,97,137,93,65,20,154,75,200,43,196,128,128,160,113,39,63,230,201,44,175,158,109,33,26,173,81,95,151,211,215,11,63,101,38,30,26,223,237,195,181,5,248,98,100,138,160,98,131,74,223,226,45,203,219,101,89,233,136,129,214,83,96,63,249,13,214,210,36,42,204,9,250,91,76,247,145,56,185,128,128,160,207,13,218,106,225,237,167,189,87,240,205,172,12,156,144,68,212,32,143,93,199,162,107,92,177,189,68,57,239,160,190,113,128,128,160,169,195,97,31,145,245,243,213,105,40,50,252,185,193,163,36,180,130,182,42,196,236,8,106,172,7,253,82,75,244,165,55,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,37,106,249,58,165,105,120,84,33,189,103,48,146,121,142,174,76,21,117,99,164,77,145,64,232,16,211,214,199,162,3,153,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,169,123,252,100,173,124,68,199,163,79,4,241,92,153,123,218,145,145,36,206,212,171,116,13,74,255,42,112,221,179,248,169,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,92,98,203,10,97,82,217,26,84,172,46,44,97,84,217,147,78,12,131,126,168,168,35,96,11,107,120,171,72,113,95,18,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,128,128,160,169,123,252,100,173,124,68,199,163,79,4,241,92,153,123,218,145,145,36,206,212,171,116,13,74,255,42,112,221,179,248,169,128,128,128,128,128,128,160,92,98,203,10,97,82,217,26,84,172,46,44,97,84,217,147,78,12,131,126,168,168,35,96,11,107,120,171,72,113,95,18,128,128,128,128],[248,81,128,128,128,128,128,160,37,106,249,58,165,105,120,84,33,189,103,48,146,121,142,174,76,21,117,99,164,77,145,64,232,16,211,214,199,162,3,153,128,128,128,128,128,128,160,92,98,203,10,97,82,217,26,84,172,46,44,97,84,217,147,78,12,131,126,168,168,35,96,11,107,120,171,72,113,95,18,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[170,172,207,18,88,1,56,188,38,60,149,117,120,38,223,78,66,171,129,255],"key":[124,147,137,5,127,10,144,2,228,139,160,203,245,176,91,216,18,104,127,35,167,126,151,106,144,76,154,213,159,127,72,125],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,32,127,10,144,2,228,139,160,203,245,176,91,216,18,104,127,35,167,126,151,106,144,76,154,213,159,127,72,125,0,0,0,0],[157,32,127,10,144,2,228,139,160,203,245,176,91,216,18,104,127,35,167,126,151,106,144,76,154,213,159,127,72,125,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,147,146,239,33,27,134,221,156,45,126,73,40,11,10,2,192,168,19,116,167,199,173,97,3,135,25,96,251,198,68,191,9,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,96,35,47,139,213,181,226,176,47,22,147,77,160,46,85,255,253,184,17,242,105,77,6,168,219,237,167,193,62,216,254,184,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,32,127,10,144,2,228,139,160,203,245,176,91,216,18,104,127,35,167,126,151,106,144,76,154,213,159,127,72,125,0,0,0,0]],"keccak_data":[[248,102,157,32,127,10,144,2,228,139,160,203,245,176,91,216,18,104,127,35,167,126,151,106,144,76,154,213,159,127,72,125,184,70,248,68,128,128,160,147,146,239,33,27,134,221,156,45,126,73,40,11,10,2,192,168,19,116,167,199,173,97,3,135,25,96,251,198,68,191,9,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,32,127,10,144,2,228,139,160,203,245,176,91,216,18,104,127,35,167,126,151,106,144,76,154,213,159,127,72,125,184,70,248,68,128,128,160,96,35,47,139,213,181,226,176,47,22,147,77,160,46,85,255,253,184,17,242,105,77,6,168,219,237,167,193,62,216,254,184,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[170,172,207,18,88,1,56,188,38,60,149,117,120,38,223,78,66,171,129,255]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[249,1,81],[249,1,81]]}},"account":null,"storage":null,"values":[[160,91,10,250,131,171,4,97,15,140,11,25,55,183,80,103,180,53,183,250,129,222,95,128,153,102,189,72,184,232,232,248,235,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,241,252,154,221,21,98,16,234,64,7,119,143,230,37,51,30,59,73,134,60,253,25,147,65,45,227,202,31,188,198,62,159,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,25,97,98,40,14,59,11,157,50,95,110,184,111,19,174,141,21,199,66,37,120,178,63,131,118,101,243,252,159,63,17,206,0],[160,52,86,237,1,33,17,15,7,250,78,103,241,209,9,234,205,135,155,108,70,244,8,249,172,125,146,118,122,252,15,123,227,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,46,64,43,253,55,66,205,242,27,201,105,182,61,231,184,166,223,210,25,56,121,210,191,58,0,177,239,194,47,34,155,15,0],[160,68,215,44,186,123,54,237,130,82,183,133,8,40,13,69,37,77,83,215,31,113,184,132,16,11,15,183,36,181,221,159,2,0],[160,188,244,161,170,141,13,135,116,9,215,25,14,222,48,180,231,175,234,140,210,241,120,36,86,174,120,123,218,252,248,239,77,0],[160,159,99,179,135,177,152,218,103,221,67,222,100,245,217,190,91,25,12,0,204,166,4,183,153,115,46,45,138,16,4,236,221,0],[160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,0],[160,221,40,171,152,146,156,180,204,180,210,222,45,63,32,157,40,15,253,174,48,109,107,87,208,96,191,150,31,85,215,122,8,0],[160,14,157,93,24,139,9,6,107,64,34,108,132,96,238,76,184,55,4,8,131,218,232,3,113,188,147,127,198,179,185,12,107,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,1,81,128,160,241,252,154,221,21,98,16,234,64,7,119,143,230,37,51,30,59,73,134,60,253,25,147,65,45,227,202,31,188,198,62,159,128,160,25,97,98,40,14,59,11,157,50,95,110,184,111,19,174,141,21,199,66,37,120,178,63,131,118,101,243,252,159,63,17,206,160,52,86,237,1,33,17,15,7,250,78,103,241,209,9,234,205,135,155,108,70,244,8,249,172,125,146,118,122,252,15,123,227,128,128,160,46,64,43,253,55,66,205,242,27,201,105,182,61,231,184,166,223,210,25,56,121,210,191,58,0,177,239,194,47,34,155,15,160,68,215,44,186,123,54,237,130,82,183,133,8,40,13,69,37,77,83,215,31,113,184,132,16,11,15,183,36,181,221,159,2,160,188,244,161,170,141,13,135,116,9,215,25,14,222,48,180,231,175,234,140,210,241,120,36,86,174,120,123,218,252,248,239,77,160,159,99,179,135,177,152,218,103,221,67,222,100,245,217,190,91,25,12,0,204,166,4,183,153,115,46,45,138,16,4,236,221,160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,160,221,40,171,152,146,156,180,204,180,210,222,45,63,32,157,40,15,253,174,48,109,107,87,208,96,191,150,31,85,215,122,8,160,14,157,93,24,139,9,6,107,64,34,108,132,96,238,76,184,55,4,8,131,218,232,3,113,188,147,127,198,179,185,12,107,128,128,128],[249,1,81,128,160,241,252,154,221,21,98,16,234,64,7,119,143,230,37,51,30,59,73,134,60,253,25,147,65,45,227,202,31,188,198,62,159,128,160,91,10,250,131,171,4,97,15,140,11,25,55,183,80,103,180,53,183,250,129,222,95,128,153,102,189,72,184,232,232,248,235,160,52,86,237,1,33,17,15,7,250,78,103,241,209,9,234,205,135,155,108,70,244,8,249,172,125,146,118,122,252,15,123,227,128,128,160,46,64,43,253,55,66,205,242,27,201,105,182,61,231,184,166,223,210,25,56,121,210,191,58,0,177,239,194,47,34,155,15,160,68,215,44,186,123,54,237,130,82,183,133,8,40,13,69,37,77,83,215,31,113,184,132,16,11,15,183,36,181,221,159,2,160,188,244,161,170,141,13,135,116,9,215,25,14,222,48,180,231,175,234,140,210,241,120,36,86,174,120,123,218,252,248,239,77,160,159,99,179,135,177,152,218,103,221,67,222,100,245,217,190,91,25,12,0,204,166,4,183,153,115,46,45,138,16,4,236,221,160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,160,221,40,171,152,146,156,180,204,180,210,222,45,63,32,157,40,15,253,174,48,109,107,87,208,96,191,150,31,85,215,122,8,160,14,157,93,24,139,9,6,107,64,34,108,132,96,238,76,184,55,4,8,131,218,232,3,113,188,147,127,198,179,185,12,107,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":8,"drifted_index":8,"list_rlp_bytes":[[248,145],[248,145]]}},"account":null,"storage":null,"values":[[160,30,248,134,148,131,117,113,95,37,122,104,0,184,231,27,247,214,154,124,238,70,110,164,164,151,49,25,67,247,41,172,229,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,144,251,124,202,220,92,31,133,222,150,215,207,225,250,167,226,181,121,66,196,246,55,16,157,64,177,79,73,60,151,194,209,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,23,185,92,13,91,127,201,9,57,187,127,232,237,174,102,91,203,127,129,42,213,25,191,55,107,189,61,146,32,150,125,237,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,18,189,145,157,165,121,134,62,226,195,3,230,16,235,11,45,210,244,189,7,26,248,54,29,182,137,166,192,113,138,20,130,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,141,203,27,132,71,133,121,242,117,169,74,104,137,216,230,118,125,138,242,115,166,118,39,237,209,234,156,251,107,97,244,220,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,145,128,160,144,251,124,202,220,92,31,133,222,150,215,207,225,250,167,226,181,121,66,196,246,55,16,157,64,177,79,73,60,151,194,209,128,128,128,160,23,185,92,13,91,127,201,9,57,187,127,232,237,174,102,91,203,127,129,42,213,25,191,55,107,189,61,146,32,150,125,237,128,128,160,18,189,145,157,165,121,134,62,226,195,3,230,16,235,11,45,210,244,189,7,26,248,54,29,182,137,166,192,113,138,20,130,128,160,141,203,27,132,71,133,121,242,117,169,74,104,137,216,230,118,125,138,242,115,166,118,39,237,209,234,156,251,107,97,244,220,128,128,128,128,128,128],[248,145,128,160,144,251,124,202,220,92,31,133,222,150,215,207,225,250,167,226,181,121,66,196,246,55,16,157,64,177,79,73,60,151,194,209,128,128,128,160,23,185,92,13,91,127,201,9,57,187,127,232,237,174,102,91,203,127,129,42,213,25,191,55,107,189,61,146,32,150,125,237,128,128,160,30,248,134,148,131,117,113,95,37,122,104,0,184,231,27,247,214,154,124,238,70,110,164,164,151,49,25,67,247,41,172,229,128,160,141,203,27,132,71,133,121,242,117,169,74,104,137,216,230,118,125,138,242,115,166,118,39,237,209,234,156,251,107,97,244,220,128,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,211,218,4,39,255,9,126,152,106,175,197,47,44,165,171,74,58,163,180,52,102,227,110,9,39,215,100,43,118,237,38,201,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,94,104,33,36,38,210,61,47,15,246,106,54,238,175,149,78,69,226,199,248,65,100,67,132,137,83,125,136,80,116,117,71,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,40,196,133,54,251,97,146,166,4,128,125,171,134,233,75,55,227,68,39,69,115,237,108,253,249,240,213,56,180,173,230,213,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,160,94,104,33,36,38,210,61,47,15,246,106,54,238,175,149,78,69,226,199,248,65,100,67,132,137,83,125,136,80,116,117,71,128,128,128,128,128,128,128,128,128,160,40,196,133,54,251,97,146,166,4,128,125,171,134,233,75,55,227,68,39,69,115,237,108,253,249,240,213,56,180,173,230,213,128,128,128],[248,81,128,128,128,160,211,218,4,39,255,9,126,152,106,175,197,47,44,165,171,74,58,163,180,52,102,227,110,9,39,215,100,43,118,237,38,201,128,128,128,128,128,128,128,128,128,160,40,196,133,54,251,97,146,166,4,128,125,171,134,233,75,55,227,68,39,69,115,237,108,253,249,240,213,56,180,173,230,213,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56],"key":[56,57,92,93,206,173,233,96,52,121,177,119,182,137,89,4,148,133,223,138,169,123,57,243,83,48,57,175,95,69,97,153],"list_rlp_bytes":[[225],[225]],"value_rlp_bytes":[[11],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[159,57,92,93,206,173,233,96,52,121,177,119,182,137,89,4,148,133,223,138,169,123,57,243,83,48,57,175,95,69,97,153,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[159,57,92,93,206,173,233,96,52,121,177,119,182,137,89,4,148,133,223,138,169,123,57,243,83,48,57,175,95,69,97,153,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[225,159,57,92,93,206,173,233,96,52,121,177,119,182,137,89,4,148,133,223,138,169,123,57,243,83,48,57,175,95,69,97,153,11],[225,159,57,92,93,206,173,233,96,52,121,177,119,182,137,89,4,148,133,223,138,169,123,57,243,83,48,57,175,95,69,97,153,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/UpdateTwoLevels.json b/zkevm-circuits/src/mpt_circuit/tests/UpdateTwoLevels.json new file mode 100644 index 0000000000..575eebfa75 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/UpdateTwoLevels.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,253,234,57,25,213,7,63,51,25,247,42,202,113,6,173,42,26,145,176,145,74,228,150,142,164,176,159,238,166,157,77,155,0],[160,95,191,115,60,148,21,59,178,155,228,208,66,56,94,78,10,8,5,217,90,84,238,178,52,93,170,209,221,85,28,89,198,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,80,81,86,126,198,95,118,11,95,172,104,133,19,210,199,68,152,233,43,250,148,55,34,104,34,72,184,115,183,151,216,161,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,142,83,238,0,13,2,169,243,14,99,6,164,14,77,27,251,219,60,5,19,184,166,106,37,105,53,234,106,12,177,134,86,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,142,83,238,0,13,2,169,243,14,99,6,164,14,77,27,251,219,60,5,19,184,166,106,37,105,53,234,106,12,177,134,86,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,80,81,86,126,198,95,118,11,95,172,104,133,19,210,199,68,152,233,43,250,148,55,34,104,34,72,184,115,183,151,216,161,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,140,225,28,195,169,112,169,75,250,46,56,171,150,161,71,200,135,103,101,182,54,126,143,177,59,249,235,81,247,117,7,140,0],[160,0,206,33,240,101,251,90,188,73,10,150,144,56,188,30,27,85,139,94,5,74,204,46,227,225,161,245,164,212,123,119,17,0],[160,158,197,146,195,133,234,84,43,152,85,76,221,237,86,132,255,115,79,61,107,23,194,92,56,75,113,216,10,200,183,87,26,0],[160,194,152,14,169,119,137,64,54,162,181,197,145,208,235,167,184,70,163,196,232,144,255,116,16,132,177,77,174,101,172,104,104,0],[160,49,47,172,152,7,7,6,11,232,103,121,231,161,101,145,71,211,123,164,44,71,10,103,248,185,164,232,204,165,45,250,102,0],[160,68,19,96,150,137,200,112,23,100,65,2,179,154,130,167,209,205,114,87,189,201,71,56,52,59,176,142,55,246,33,222,198,0],[160,154,160,226,122,150,161,250,227,154,127,249,5,115,168,213,204,10,210,96,165,110,239,21,181,237,166,107,108,251,168,143,202,0],[160,153,56,68,205,140,247,250,231,180,188,89,107,54,149,145,83,147,173,184,162,137,156,161,58,69,102,85,11,26,243,192,247,0],[160,189,78,17,3,103,251,67,209,231,7,107,34,75,249,112,207,143,183,4,253,86,33,145,44,155,125,33,243,72,193,143,176,0],[160,21,204,109,8,193,125,112,192,47,37,182,82,90,109,229,234,172,243,83,193,102,230,190,180,211,203,242,20,246,16,116,37,0],[160,2,110,30,248,38,115,226,23,53,13,149,185,153,44,145,216,62,245,29,160,176,11,217,110,165,94,251,184,155,55,249,242,0],[160,167,46,230,43,234,32,209,151,178,230,220,223,167,95,226,105,101,123,1,163,65,37,73,49,185,130,26,88,87,252,241,42,0],[160,137,62,202,192,116,223,58,179,189,121,20,106,116,93,190,135,19,188,37,163,59,107,40,241,88,142,206,9,234,163,219,69,0],[160,74,166,255,37,80,208,11,236,208,85,44,196,213,203,218,41,43,59,35,132,56,206,202,50,27,77,241,165,33,96,71,223,0],[160,145,245,133,65,255,26,96,140,173,209,133,207,36,36,151,166,254,245,244,101,139,185,231,35,159,31,57,31,33,18,45,78,0],[160,60,217,92,4,104,103,148,169,116,98,182,50,210,45,100,120,94,64,85,175,168,151,183,14,126,152,234,94,158,106,32,112,0],[160,79,71,88,62,75,54,226,220,72,114,42,84,193,10,153,112,156,49,56,210,107,120,3,176,215,31,85,113,94,10,176,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,0,206,33,240,101,251,90,188,73,10,150,144,56,188,30,27,85,139,94,5,74,204,46,227,225,161,245,164,212,123,119,17,160,158,197,146,195,133,234,84,43,152,85,76,221,237,86,132,255,115,79,61,107,23,194,92,56,75,113,216,10,200,183,87,26,160,194,152,14,169,119,137,64,54,162,181,197,145,208,235,167,184,70,163,196,232,144,255,116,16,132,177,77,174,101,172,104,104,160,49,47,172,152,7,7,6,11,232,103,121,231,161,101,145,71,211,123,164,44,71,10,103,248,185,164,232,204,165,45,250,102,160,68,19,96,150,137,200,112,23,100,65,2,179,154,130,167,209,205,114,87,189,201,71,56,52,59,176,142,55,246,33,222,198,160,154,160,226,122,150,161,250,227,154,127,249,5,115,168,213,204,10,210,96,165,110,239,21,181,237,166,107,108,251,168,143,202,160,153,56,68,205,140,247,250,231,180,188,89,107,54,149,145,83,147,173,184,162,137,156,161,58,69,102,85,11,26,243,192,247,160,189,78,17,3,103,251,67,209,231,7,107,34,75,249,112,207,143,183,4,253,86,33,145,44,155,125,33,243,72,193,143,176,160,21,204,109,8,193,125,112,192,47,37,182,82,90,109,229,234,172,243,83,193,102,230,190,180,211,203,242,20,246,16,116,37,160,2,110,30,248,38,115,226,23,53,13,149,185,153,44,145,216,62,245,29,160,176,11,217,110,165,94,251,184,155,55,249,242,160,167,46,230,43,234,32,209,151,178,230,220,223,167,95,226,105,101,123,1,163,65,37,73,49,185,130,26,88,87,252,241,42,160,137,62,202,192,116,223,58,179,189,121,20,106,116,93,190,135,19,188,37,163,59,107,40,241,88,142,206,9,234,163,219,69,160,74,166,255,37,80,208,11,236,208,85,44,196,213,203,218,41,43,59,35,132,56,206,202,50,27,77,241,165,33,96,71,223,160,145,245,133,65,255,26,96,140,173,209,133,207,36,36,151,166,254,245,244,101,139,185,231,35,159,31,57,31,33,18,45,78,160,60,217,92,4,104,103,148,169,116,98,182,50,210,45,100,120,94,64,85,175,168,151,183,14,126,152,234,94,158,106,32,112,160,79,71,88,62,75,54,226,220,72,114,42,84,193,10,153,112,156,49,56,210,107,120,3,176,215,31,85,113,94,10,176,0,128],[249,2,17,160,0,206,33,240,101,251,90,188,73,10,150,144,56,188,30,27,85,139,94,5,74,204,46,227,225,161,245,164,212,123,119,17,160,158,197,146,195,133,234,84,43,152,85,76,221,237,86,132,255,115,79,61,107,23,194,92,56,75,113,216,10,200,183,87,26,160,194,152,14,169,119,137,64,54,162,181,197,145,208,235,167,184,70,163,196,232,144,255,116,16,132,177,77,174,101,172,104,104,160,49,47,172,152,7,7,6,11,232,103,121,231,161,101,145,71,211,123,164,44,71,10,103,248,185,164,232,204,165,45,250,102,160,68,19,96,150,137,200,112,23,100,65,2,179,154,130,167,209,205,114,87,189,201,71,56,52,59,176,142,55,246,33,222,198,160,154,160,226,122,150,161,250,227,154,127,249,5,115,168,213,204,10,210,96,165,110,239,21,181,237,166,107,108,251,168,143,202,160,153,56,68,205,140,247,250,231,180,188,89,107,54,149,145,83,147,173,184,162,137,156,161,58,69,102,85,11,26,243,192,247,160,140,225,28,195,169,112,169,75,250,46,56,171,150,161,71,200,135,103,101,182,54,126,143,177,59,249,235,81,247,117,7,140,160,21,204,109,8,193,125,112,192,47,37,182,82,90,109,229,234,172,243,83,193,102,230,190,180,211,203,242,20,246,16,116,37,160,2,110,30,248,38,115,226,23,53,13,149,185,153,44,145,216,62,245,29,160,176,11,217,110,165,94,251,184,155,55,249,242,160,167,46,230,43,234,32,209,151,178,230,220,223,167,95,226,105,101,123,1,163,65,37,73,49,185,130,26,88,87,252,241,42,160,137,62,202,192,116,223,58,179,189,121,20,106,116,93,190,135,19,188,37,163,59,107,40,241,88,142,206,9,234,163,219,69,160,74,166,255,37,80,208,11,236,208,85,44,196,213,203,218,41,43,59,35,132,56,206,202,50,27,77,241,165,33,96,71,223,160,145,245,133,65,255,26,96,140,173,209,133,207,36,36,151,166,254,245,244,101,139,185,231,35,159,31,57,31,33,18,45,78,160,60,217,92,4,104,103,148,169,116,98,182,50,210,45,100,120,94,64,85,175,168,151,183,14,126,152,234,94,158,106,32,112,160,79,71,88,62,75,54,226,220,72,114,42,84,193,10,153,112,156,49,56,210,107,120,3,176,215,31,85,113,94,10,176,0,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,123,155,203,26,218,205,204,241,86,103,158,110,59,134,231,56,71,172,255,73,241,241,125,161,246,35,6,232,62,37,112,88,0],[160,212,143,221,246,161,1,73,30,246,86,186,122,155,108,153,180,120,119,12,174,197,170,107,83,135,106,189,52,51,124,152,116,0],[160,147,167,17,120,9,130,238,148,40,147,85,106,45,163,69,77,73,121,62,19,102,72,55,187,171,113,229,207,32,251,227,242,0],[160,218,184,131,23,31,196,21,172,54,135,202,182,149,158,98,185,253,104,83,188,246,49,238,110,18,200,78,182,251,42,182,84,0],[160,31,59,227,250,248,209,21,236,216,182,51,138,27,48,53,64,120,152,255,213,166,140,139,222,136,238,236,7,87,232,140,212,0],[160,42,27,163,254,227,206,102,89,56,253,2,17,246,181,95,202,138,49,111,31,128,0,223,228,156,84,191,136,176,73,195,201,0],[160,89,40,117,212,213,171,9,115,24,150,103,120,244,131,88,142,51,129,187,98,225,20,69,112,26,79,229,86,21,109,181,187,0],[160,172,218,32,237,14,52,49,152,152,102,176,226,161,180,114,77,185,188,23,50,188,217,213,149,126,168,145,158,248,86,38,223,0],[160,168,153,128,165,94,67,2,173,111,240,100,150,205,57,132,173,107,135,213,53,27,254,241,85,205,123,82,250,189,205,200,8,0],[160,190,86,69,75,109,231,120,217,148,41,43,17,80,52,126,189,27,146,11,161,231,143,194,33,24,150,153,177,194,192,101,108,0],[160,237,202,150,67,28,233,56,89,34,141,228,54,77,6,20,142,150,159,21,14,6,68,214,48,202,121,0,121,230,230,68,184,0],[160,146,120,166,112,95,202,69,181,46,253,56,215,122,6,22,58,150,203,40,33,67,39,58,147,200,58,148,60,44,22,121,156,0],[160,30,14,11,193,133,139,12,67,238,164,188,141,79,119,174,75,198,254,101,220,161,49,183,206,118,61,78,90,21,128,181,241,0],[160,84,238,52,23,86,211,77,162,10,193,4,238,161,200,17,206,222,204,29,231,105,72,154,205,230,105,212,90,3,13,27,40,0],[160,63,185,55,194,230,92,205,112,240,42,112,19,114,186,72,224,124,221,232,55,196,78,183,39,105,208,80,42,145,228,26,140,0],[160,144,123,255,172,41,40,194,142,145,80,162,200,191,159,7,73,79,206,17,217,24,98,194,85,129,132,239,71,63,59,211,223,0],[160,214,64,120,166,159,104,248,26,23,197,136,82,245,211,251,229,16,19,0,65,139,234,102,212,80,12,9,98,189,148,123,128,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,212,143,221,246,161,1,73,30,246,86,186,122,155,108,153,180,120,119,12,174,197,170,107,83,135,106,189,52,51,124,152,116,160,147,167,17,120,9,130,238,148,40,147,85,106,45,163,69,77,73,121,62,19,102,72,55,187,171,113,229,207,32,251,227,242,160,218,184,131,23,31,196,21,172,54,135,202,182,149,158,98,185,253,104,83,188,246,49,238,110,18,200,78,182,251,42,182,84,160,31,59,227,250,248,209,21,236,216,182,51,138,27,48,53,64,120,152,255,213,166,140,139,222,136,238,236,7,87,232,140,212,160,42,27,163,254,227,206,102,89,56,253,2,17,246,181,95,202,138,49,111,31,128,0,223,228,156,84,191,136,176,73,195,201,160,89,40,117,212,213,171,9,115,24,150,103,120,244,131,88,142,51,129,187,98,225,20,69,112,26,79,229,86,21,109,181,187,160,172,218,32,237,14,52,49,152,152,102,176,226,161,180,114,77,185,188,23,50,188,217,213,149,126,168,145,158,248,86,38,223,160,168,153,128,165,94,67,2,173,111,240,100,150,205,57,132,173,107,135,213,53,27,254,241,85,205,123,82,250,189,205,200,8,160,190,86,69,75,109,231,120,217,148,41,43,17,80,52,126,189,27,146,11,161,231,143,194,33,24,150,153,177,194,192,101,108,160,237,202,150,67,28,233,56,89,34,141,228,54,77,6,20,142,150,159,21,14,6,68,214,48,202,121,0,121,230,230,68,184,160,146,120,166,112,95,202,69,181,46,253,56,215,122,6,22,58,150,203,40,33,67,39,58,147,200,58,148,60,44,22,121,156,160,30,14,11,193,133,139,12,67,238,164,188,141,79,119,174,75,198,254,101,220,161,49,183,206,118,61,78,90,21,128,181,241,160,84,238,52,23,86,211,77,162,10,193,4,238,161,200,17,206,222,204,29,231,105,72,154,205,230,105,212,90,3,13,27,40,160,63,185,55,194,230,92,205,112,240,42,112,19,114,186,72,224,124,221,232,55,196,78,183,39,105,208,80,42,145,228,26,140,160,144,123,255,172,41,40,194,142,145,80,162,200,191,159,7,73,79,206,17,217,24,98,194,85,129,132,239,71,63,59,211,223,160,214,64,120,166,159,104,248,26,23,197,136,82,245,211,251,229,16,19,0,65,139,234,102,212,80,12,9,98,189,148,123,128,128],[249,2,17,160,212,143,221,246,161,1,73,30,246,86,186,122,155,108,153,180,120,119,12,174,197,170,107,83,135,106,189,52,51,124,152,116,160,147,167,17,120,9,130,238,148,40,147,85,106,45,163,69,77,73,121,62,19,102,72,55,187,171,113,229,207,32,251,227,242,160,218,184,131,23,31,196,21,172,54,135,202,182,149,158,98,185,253,104,83,188,246,49,238,110,18,200,78,182,251,42,182,84,160,31,59,227,250,248,209,21,236,216,182,51,138,27,48,53,64,120,152,255,213,166,140,139,222,136,238,236,7,87,232,140,212,160,42,27,163,254,227,206,102,89,56,253,2,17,246,181,95,202,138,49,111,31,128,0,223,228,156,84,191,136,176,73,195,201,160,89,40,117,212,213,171,9,115,24,150,103,120,244,131,88,142,51,129,187,98,225,20,69,112,26,79,229,86,21,109,181,187,160,172,218,32,237,14,52,49,152,152,102,176,226,161,180,114,77,185,188,23,50,188,217,213,149,126,168,145,158,248,86,38,223,160,168,153,128,165,94,67,2,173,111,240,100,150,205,57,132,173,107,135,213,53,27,254,241,85,205,123,82,250,189,205,200,8,160,190,86,69,75,109,231,120,217,148,41,43,17,80,52,126,189,27,146,11,161,231,143,194,33,24,150,153,177,194,192,101,108,160,237,202,150,67,28,233,56,89,34,141,228,54,77,6,20,142,150,159,21,14,6,68,214,48,202,121,0,121,230,230,68,184,160,146,120,166,112,95,202,69,181,46,253,56,215,122,6,22,58,150,203,40,33,67,39,58,147,200,58,148,60,44,22,121,156,160,30,14,11,193,133,139,12,67,238,164,188,141,79,119,174,75,198,254,101,220,161,49,183,206,118,61,78,90,21,128,181,241,160,84,238,52,23,86,211,77,162,10,193,4,238,161,200,17,206,222,204,29,231,105,72,154,205,230,105,212,90,3,13,27,40,160,63,185,55,194,230,92,205,112,240,42,112,19,114,186,72,224,124,221,232,55,196,78,183,39,105,208,80,42,145,228,26,140,160,123,155,203,26,218,205,204,241,86,103,158,110,59,134,231,56,71,172,255,73,241,241,125,161,246,35,6,232,62,37,112,88,160,214,64,120,166,159,104,248,26,23,197,136,82,245,211,251,229,16,19,0,65,139,234,102,212,80,12,9,98,189,148,123,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,198,203,246,46,203,176,117,45,83,236,82,38,20,123,8,101,138,38,200,215,151,42,46,236,78,112,27,209,131,57,219,206,0],[160,152,206,152,161,186,249,6,249,88,161,224,211,132,9,24,115,57,246,45,165,4,142,237,76,73,16,232,181,61,140,228,191,0],[160,75,36,115,207,246,127,154,196,188,211,166,132,43,124,131,167,78,24,115,106,192,105,46,239,133,178,137,124,236,144,155,92,0],[160,43,5,60,211,71,233,102,100,163,55,128,139,44,172,12,51,91,88,15,14,181,216,7,41,161,225,106,122,9,36,97,70,0],[160,152,26,106,62,119,12,211,102,254,97,28,23,246,208,176,239,145,247,93,215,216,235,120,201,65,190,35,191,143,2,183,227,0],[160,77,214,60,253,122,155,209,135,37,64,9,199,6,228,100,84,91,17,130,248,182,211,196,61,98,39,66,97,53,92,69,28,0],[160,43,219,182,150,201,202,152,63,13,225,98,193,80,80,160,32,159,107,66,193,181,169,218,63,194,29,81,255,75,10,99,67,0],[160,174,234,55,36,187,128,234,214,214,248,108,119,195,88,175,83,97,38,79,216,83,160,234,205,165,60,27,220,30,115,76,3,0],[160,220,171,0,169,65,182,130,227,170,113,177,129,133,191,242,165,166,221,142,188,146,80,44,248,67,218,151,181,95,245,217,139,0],[160,136,73,46,102,85,125,182,185,26,97,20,180,118,32,13,29,70,62,131,91,58,45,236,193,132,9,110,199,138,31,4,185,0],[160,238,30,52,20,114,98,239,115,231,79,239,250,177,163,82,161,116,206,205,124,28,227,33,9,125,221,159,156,6,176,127,91,0],[160,197,104,162,191,211,239,68,172,104,247,153,145,156,162,240,92,49,36,122,245,98,50,210,61,59,81,219,176,103,93,6,51,0],[160,91,46,22,56,239,8,171,7,180,47,124,92,147,148,31,178,171,102,217,89,96,247,162,141,98,235,138,6,225,125,164,109,0],[160,57,26,22,238,42,30,22,60,76,241,230,27,192,163,185,190,138,77,97,17,21,17,42,252,163,81,63,11,186,83,168,80,0],[160,153,7,222,113,10,145,24,106,212,244,194,186,208,33,218,112,101,177,7,158,199,68,132,30,125,58,56,93,57,131,220,50,0],[160,57,230,59,21,11,208,91,44,199,224,144,209,27,95,94,25,32,215,98,63,244,224,116,68,98,110,5,162,220,246,172,13,0],[160,37,236,123,96,34,40,57,27,102,71,21,134,126,135,138,132,119,184,140,23,134,232,246,204,251,147,9,1,137,71,29,110,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,152,206,152,161,186,249,6,249,88,161,224,211,132,9,24,115,57,246,45,165,4,142,237,76,73,16,232,181,61,140,228,191,160,75,36,115,207,246,127,154,196,188,211,166,132,43,124,131,167,78,24,115,106,192,105,46,239,133,178,137,124,236,144,155,92,160,43,5,60,211,71,233,102,100,163,55,128,139,44,172,12,51,91,88,15,14,181,216,7,41,161,225,106,122,9,36,97,70,160,152,26,106,62,119,12,211,102,254,97,28,23,246,208,176,239,145,247,93,215,216,235,120,201,65,190,35,191,143,2,183,227,160,77,214,60,253,122,155,209,135,37,64,9,199,6,228,100,84,91,17,130,248,182,211,196,61,98,39,66,97,53,92,69,28,160,43,219,182,150,201,202,152,63,13,225,98,193,80,80,160,32,159,107,66,193,181,169,218,63,194,29,81,255,75,10,99,67,160,174,234,55,36,187,128,234,214,214,248,108,119,195,88,175,83,97,38,79,216,83,160,234,205,165,60,27,220,30,115,76,3,160,220,171,0,169,65,182,130,227,170,113,177,129,133,191,242,165,166,221,142,188,146,80,44,248,67,218,151,181,95,245,217,139,160,136,73,46,102,85,125,182,185,26,97,20,180,118,32,13,29,70,62,131,91,58,45,236,193,132,9,110,199,138,31,4,185,160,238,30,52,20,114,98,239,115,231,79,239,250,177,163,82,161,116,206,205,124,28,227,33,9,125,221,159,156,6,176,127,91,160,197,104,162,191,211,239,68,172,104,247,153,145,156,162,240,92,49,36,122,245,98,50,210,61,59,81,219,176,103,93,6,51,160,91,46,22,56,239,8,171,7,180,47,124,92,147,148,31,178,171,102,217,89,96,247,162,141,98,235,138,6,225,125,164,109,160,57,26,22,238,42,30,22,60,76,241,230,27,192,163,185,190,138,77,97,17,21,17,42,252,163,81,63,11,186,83,168,80,160,153,7,222,113,10,145,24,106,212,244,194,186,208,33,218,112,101,177,7,158,199,68,132,30,125,58,56,93,57,131,220,50,160,57,230,59,21,11,208,91,44,199,224,144,209,27,95,94,25,32,215,98,63,244,224,116,68,98,110,5,162,220,246,172,13,160,37,236,123,96,34,40,57,27,102,71,21,134,126,135,138,132,119,184,140,23,134,232,246,204,251,147,9,1,137,71,29,110,128],[249,2,17,160,152,206,152,161,186,249,6,249,88,161,224,211,132,9,24,115,57,246,45,165,4,142,237,76,73,16,232,181,61,140,228,191,160,75,36,115,207,246,127,154,196,188,211,166,132,43,124,131,167,78,24,115,106,192,105,46,239,133,178,137,124,236,144,155,92,160,43,5,60,211,71,233,102,100,163,55,128,139,44,172,12,51,91,88,15,14,181,216,7,41,161,225,106,122,9,36,97,70,160,152,26,106,62,119,12,211,102,254,97,28,23,246,208,176,239,145,247,93,215,216,235,120,201,65,190,35,191,143,2,183,227,160,77,214,60,253,122,155,209,135,37,64,9,199,6,228,100,84,91,17,130,248,182,211,196,61,98,39,66,97,53,92,69,28,160,43,219,182,150,201,202,152,63,13,225,98,193,80,80,160,32,159,107,66,193,181,169,218,63,194,29,81,255,75,10,99,67,160,174,234,55,36,187,128,234,214,214,248,108,119,195,88,175,83,97,38,79,216,83,160,234,205,165,60,27,220,30,115,76,3,160,198,203,246,46,203,176,117,45,83,236,82,38,20,123,8,101,138,38,200,215,151,42,46,236,78,112,27,209,131,57,219,206,160,136,73,46,102,85,125,182,185,26,97,20,180,118,32,13,29,70,62,131,91,58,45,236,193,132,9,110,199,138,31,4,185,160,238,30,52,20,114,98,239,115,231,79,239,250,177,163,82,161,116,206,205,124,28,227,33,9,125,221,159,156,6,176,127,91,160,197,104,162,191,211,239,68,172,104,247,153,145,156,162,240,92,49,36,122,245,98,50,210,61,59,81,219,176,103,93,6,51,160,91,46,22,56,239,8,171,7,180,47,124,92,147,148,31,178,171,102,217,89,96,247,162,141,98,235,138,6,225,125,164,109,160,57,26,22,238,42,30,22,60,76,241,230,27,192,163,185,190,138,77,97,17,21,17,42,252,163,81,63,11,186,83,168,80,160,153,7,222,113,10,145,24,106,212,244,194,186,208,33,218,112,101,177,7,158,199,68,132,30,125,58,56,93,57,131,220,50,160,57,230,59,21,11,208,91,44,199,224,144,209,27,95,94,25,32,215,98,63,244,224,116,68,98,110,5,162,220,246,172,13,160,37,236,123,96,34,40,57,27,102,71,21,134,126,135,138,132,119,184,140,23,134,232,246,204,251,147,9,1,137,71,29,110,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,160,2,236,192,39,202,151,163,183,70,186,114,134,16,83,20,183,222,81,80,128,192,34,13,58,219,194,215,225,13,196,151,0],[160,133,53,140,149,13,242,8,239,20,18,81,91,58,34,161,230,139,38,155,58,108,138,163,243,226,216,54,151,122,171,196,53,0],[160,171,55,116,203,153,137,197,14,168,53,6,42,105,150,190,227,136,180,231,84,220,134,67,229,23,34,115,192,38,183,176,178,0],[160,131,163,144,144,65,7,31,139,191,116,99,41,115,250,237,195,24,1,220,63,85,176,243,108,230,166,168,119,59,219,212,15,0],[160,73,44,193,179,181,82,121,28,64,124,180,198,53,109,224,48,159,40,210,153,0,225,156,47,203,114,161,126,192,190,140,95,0],[160,75,244,27,221,167,108,63,60,127,219,121,120,71,199,149,48,243,135,61,109,180,96,196,70,13,157,30,50,213,134,84,222,0],[160,206,232,108,50,184,22,154,196,191,249,228,225,15,207,132,175,199,220,12,200,243,155,235,146,161,232,183,120,25,147,214,221,0],[160,111,145,159,11,227,52,108,46,174,52,174,172,253,116,254,76,8,207,26,149,143,226,91,107,240,47,24,155,251,214,51,108,0],[160,215,169,194,9,197,250,96,6,134,1,40,113,22,228,166,119,66,195,140,251,123,120,85,168,126,228,163,252,234,48,240,164,0],[160,49,249,151,31,194,199,207,253,195,132,228,87,201,13,50,155,253,45,212,146,98,126,43,37,110,28,117,138,19,180,49,254,0],[160,55,137,170,248,114,41,208,241,223,58,25,23,90,175,225,150,165,177,191,193,188,128,191,76,226,40,210,208,231,61,113,3,0],[160,110,128,62,203,73,252,121,222,114,211,69,5,91,57,116,78,36,4,35,176,204,210,60,83,225,54,230,250,204,219,90,239,0],[160,156,132,239,198,51,24,208,183,255,1,198,219,154,179,228,71,62,136,232,63,218,162,61,224,51,236,252,58,30,173,69,213,0],[160,91,94,75,61,181,33,192,109,0,233,238,253,11,51,34,69,70,39,43,223,42,104,0,76,217,208,219,113,199,109,82,113,0],[160,117,199,53,64,181,175,85,108,99,27,193,84,241,82,128,17,162,115,37,166,12,38,34,164,252,24,129,35,236,162,30,44,0],[160,175,23,39,17,64,131,20,25,63,119,203,82,134,165,153,40,32,61,64,184,175,194,126,178,14,88,4,239,188,146,90,240,0],[160,16,246,22,202,214,112,83,215,7,125,65,139,7,104,78,200,161,117,48,185,174,29,38,165,73,85,51,130,69,11,198,120,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,133,53,140,149,13,242,8,239,20,18,81,91,58,34,161,230,139,38,155,58,108,138,163,243,226,216,54,151,122,171,196,53,160,171,55,116,203,153,137,197,14,168,53,6,42,105,150,190,227,136,180,231,84,220,134,67,229,23,34,115,192,38,183,176,178,160,131,163,144,144,65,7,31,139,191,116,99,41,115,250,237,195,24,1,220,63,85,176,243,108,230,166,168,119,59,219,212,15,160,73,44,193,179,181,82,121,28,64,124,180,198,53,109,224,48,159,40,210,153,0,225,156,47,203,114,161,126,192,190,140,95,160,75,244,27,221,167,108,63,60,127,219,121,120,71,199,149,48,243,135,61,109,180,96,196,70,13,157,30,50,213,134,84,222,160,206,232,108,50,184,22,154,196,191,249,228,225,15,207,132,175,199,220,12,200,243,155,235,146,161,232,183,120,25,147,214,221,160,111,145,159,11,227,52,108,46,174,52,174,172,253,116,254,76,8,207,26,149,143,226,91,107,240,47,24,155,251,214,51,108,160,215,169,194,9,197,250,96,6,134,1,40,113,22,228,166,119,66,195,140,251,123,120,85,168,126,228,163,252,234,48,240,164,160,49,249,151,31,194,199,207,253,195,132,228,87,201,13,50,155,253,45,212,146,98,126,43,37,110,28,117,138,19,180,49,254,160,55,137,170,248,114,41,208,241,223,58,25,23,90,175,225,150,165,177,191,193,188,128,191,76,226,40,210,208,231,61,113,3,160,110,128,62,203,73,252,121,222,114,211,69,5,91,57,116,78,36,4,35,176,204,210,60,83,225,54,230,250,204,219,90,239,160,156,132,239,198,51,24,208,183,255,1,198,219,154,179,228,71,62,136,232,63,218,162,61,224,51,236,252,58,30,173,69,213,160,91,94,75,61,181,33,192,109,0,233,238,253,11,51,34,69,70,39,43,223,42,104,0,76,217,208,219,113,199,109,82,113,160,117,199,53,64,181,175,85,108,99,27,193,84,241,82,128,17,162,115,37,166,12,38,34,164,252,24,129,35,236,162,30,44,160,175,23,39,17,64,131,20,25,63,119,203,82,134,165,153,40,32,61,64,184,175,194,126,178,14,88,4,239,188,146,90,240,160,16,246,22,202,214,112,83,215,7,125,65,139,7,104,78,200,161,117,48,185,174,29,38,165,73,85,51,130,69,11,198,120,128],[249,2,17,160,133,53,140,149,13,242,8,239,20,18,81,91,58,34,161,230,139,38,155,58,108,138,163,243,226,216,54,151,122,171,196,53,160,171,55,116,203,153,137,197,14,168,53,6,42,105,150,190,227,136,180,231,84,220,134,67,229,23,34,115,192,38,183,176,178,160,131,163,144,144,65,7,31,139,191,116,99,41,115,250,237,195,24,1,220,63,85,176,243,108,230,166,168,119,59,219,212,15,160,73,44,193,179,181,82,121,28,64,124,180,198,53,109,224,48,159,40,210,153,0,225,156,47,203,114,161,126,192,190,140,95,160,75,244,27,221,167,108,63,60,127,219,121,120,71,199,149,48,243,135,61,109,180,96,196,70,13,157,30,50,213,134,84,222,160,206,232,108,50,184,22,154,196,191,249,228,225,15,207,132,175,199,220,12,200,243,155,235,146,161,232,183,120,25,147,214,221,160,111,145,159,11,227,52,108,46,174,52,174,172,253,116,254,76,8,207,26,149,143,226,91,107,240,47,24,155,251,214,51,108,160,215,169,194,9,197,250,96,6,134,1,40,113,22,228,166,119,66,195,140,251,123,120,85,168,126,228,163,252,234,48,240,164,160,49,249,151,31,194,199,207,253,195,132,228,87,201,13,50,155,253,45,212,146,98,126,43,37,110,28,117,138,19,180,49,254,160,160,2,236,192,39,202,151,163,183,70,186,114,134,16,83,20,183,222,81,80,128,192,34,13,58,219,194,215,225,13,196,151,160,110,128,62,203,73,252,121,222,114,211,69,5,91,57,116,78,36,4,35,176,204,210,60,83,225,54,230,250,204,219,90,239,160,156,132,239,198,51,24,208,183,255,1,198,219,154,179,228,71,62,136,232,63,218,162,61,224,51,236,252,58,30,173,69,213,160,91,94,75,61,181,33,192,109,0,233,238,253,11,51,34,69,70,39,43,223,42,104,0,76,217,208,219,113,199,109,82,113,160,117,199,53,64,181,175,85,108,99,27,193,84,241,82,128,17,162,115,37,166,12,38,34,164,252,24,129,35,236,162,30,44,160,175,23,39,17,64,131,20,25,63,119,203,82,134,165,153,40,32,61,64,184,175,194,126,178,14,88,4,239,188,146,90,240,160,16,246,22,202,214,112,83,215,7,125,65,139,7,104,78,200,161,117,48,185,174,29,38,165,73,85,51,130,69,11,198,120,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,222,94,159,134,29,249,127,113,70,55,181,120,192,18,249,201,11,166,0,7,124,0,190,99,129,214,226,238,105,72,204,10,0],[160,224,182,134,186,254,171,21,2,110,167,190,134,45,248,76,174,174,138,191,117,27,166,180,44,154,70,192,98,50,222,148,169,0],[160,48,234,105,154,222,98,203,136,113,190,120,68,108,71,178,17,248,83,30,112,75,76,230,142,23,83,232,182,4,172,174,206,0],[160,67,182,172,125,7,164,99,64,183,217,46,67,176,129,9,38,133,20,135,111,113,117,126,6,111,51,217,179,99,220,246,228,0],[160,91,87,191,38,162,111,174,90,100,29,140,178,211,68,34,22,67,141,5,33,33,33,216,68,182,237,248,126,195,238,51,172,0],[160,216,45,179,221,54,75,153,137,44,131,180,199,183,208,231,220,198,123,132,13,75,22,3,174,81,181,75,250,168,219,21,159,0],[160,137,255,77,175,96,83,89,51,218,170,164,248,98,92,65,158,122,100,165,213,68,29,5,198,49,146,188,93,188,1,73,69,0],[160,138,79,41,211,11,229,137,214,36,81,209,37,161,146,206,239,97,177,7,55,81,174,221,106,108,87,163,189,169,210,189,106,0],[160,153,95,2,118,176,114,106,169,155,188,111,215,51,194,5,231,34,125,210,81,176,174,249,55,233,42,217,225,161,34,180,142,0],[160,158,80,194,253,97,165,202,153,145,247,164,36,184,60,136,70,27,45,27,14,115,234,4,89,196,233,21,80,143,15,204,126,0],[160,61,64,228,252,181,3,140,201,243,160,99,179,113,99,94,78,83,148,145,10,201,167,149,68,118,177,15,62,128,141,245,30,0],[160,32,237,35,116,22,178,47,148,68,0,251,247,161,144,189,232,143,10,142,185,158,244,240,75,126,150,151,66,39,102,183,253,0],[160,191,18,174,229,234,90,161,4,251,51,165,34,219,58,208,229,165,172,100,249,226,224,109,27,211,165,115,20,174,217,18,235,0],[160,55,163,126,142,241,10,171,151,43,201,181,80,255,75,77,159,120,0,39,159,199,92,133,179,87,37,56,123,211,223,245,254,0],[160,154,5,242,211,142,200,39,203,115,41,143,216,124,93,239,153,42,15,148,64,78,48,147,250,109,215,167,73,73,196,73,71,0],[160,208,48,200,202,81,141,33,52,130,235,56,169,70,244,37,196,140,70,225,156,194,203,187,57,40,1,21,137,184,140,151,130,0],[160,10,255,50,86,204,24,175,114,88,55,81,8,157,243,41,163,107,233,196,82,197,84,209,97,4,25,113,151,224,174,76,15,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,224,182,134,186,254,171,21,2,110,167,190,134,45,248,76,174,174,138,191,117,27,166,180,44,154,70,192,98,50,222,148,169,160,48,234,105,154,222,98,203,136,113,190,120,68,108,71,178,17,248,83,30,112,75,76,230,142,23,83,232,182,4,172,174,206,160,67,182,172,125,7,164,99,64,183,217,46,67,176,129,9,38,133,20,135,111,113,117,126,6,111,51,217,179,99,220,246,228,160,91,87,191,38,162,111,174,90,100,29,140,178,211,68,34,22,67,141,5,33,33,33,216,68,182,237,248,126,195,238,51,172,160,216,45,179,221,54,75,153,137,44,131,180,199,183,208,231,220,198,123,132,13,75,22,3,174,81,181,75,250,168,219,21,159,160,137,255,77,175,96,83,89,51,218,170,164,248,98,92,65,158,122,100,165,213,68,29,5,198,49,146,188,93,188,1,73,69,160,138,79,41,211,11,229,137,214,36,81,209,37,161,146,206,239,97,177,7,55,81,174,221,106,108,87,163,189,169,210,189,106,160,153,95,2,118,176,114,106,169,155,188,111,215,51,194,5,231,34,125,210,81,176,174,249,55,233,42,217,225,161,34,180,142,160,158,80,194,253,97,165,202,153,145,247,164,36,184,60,136,70,27,45,27,14,115,234,4,89,196,233,21,80,143,15,204,126,160,61,64,228,252,181,3,140,201,243,160,99,179,113,99,94,78,83,148,145,10,201,167,149,68,118,177,15,62,128,141,245,30,160,32,237,35,116,22,178,47,148,68,0,251,247,161,144,189,232,143,10,142,185,158,244,240,75,126,150,151,66,39,102,183,253,160,191,18,174,229,234,90,161,4,251,51,165,34,219,58,208,229,165,172,100,249,226,224,109,27,211,165,115,20,174,217,18,235,160,55,163,126,142,241,10,171,151,43,201,181,80,255,75,77,159,120,0,39,159,199,92,133,179,87,37,56,123,211,223,245,254,160,154,5,242,211,142,200,39,203,115,41,143,216,124,93,239,153,42,15,148,64,78,48,147,250,109,215,167,73,73,196,73,71,160,208,48,200,202,81,141,33,52,130,235,56,169,70,244,37,196,140,70,225,156,194,203,187,57,40,1,21,137,184,140,151,130,160,10,255,50,86,204,24,175,114,88,55,81,8,157,243,41,163,107,233,196,82,197,84,209,97,4,25,113,151,224,174,76,15,128],[249,2,17,160,224,182,134,186,254,171,21,2,110,167,190,134,45,248,76,174,174,138,191,117,27,166,180,44,154,70,192,98,50,222,148,169,160,222,94,159,134,29,249,127,113,70,55,181,120,192,18,249,201,11,166,0,7,124,0,190,99,129,214,226,238,105,72,204,10,160,67,182,172,125,7,164,99,64,183,217,46,67,176,129,9,38,133,20,135,111,113,117,126,6,111,51,217,179,99,220,246,228,160,91,87,191,38,162,111,174,90,100,29,140,178,211,68,34,22,67,141,5,33,33,33,216,68,182,237,248,126,195,238,51,172,160,216,45,179,221,54,75,153,137,44,131,180,199,183,208,231,220,198,123,132,13,75,22,3,174,81,181,75,250,168,219,21,159,160,137,255,77,175,96,83,89,51,218,170,164,248,98,92,65,158,122,100,165,213,68,29,5,198,49,146,188,93,188,1,73,69,160,138,79,41,211,11,229,137,214,36,81,209,37,161,146,206,239,97,177,7,55,81,174,221,106,108,87,163,189,169,210,189,106,160,153,95,2,118,176,114,106,169,155,188,111,215,51,194,5,231,34,125,210,81,176,174,249,55,233,42,217,225,161,34,180,142,160,158,80,194,253,97,165,202,153,145,247,164,36,184,60,136,70,27,45,27,14,115,234,4,89,196,233,21,80,143,15,204,126,160,61,64,228,252,181,3,140,201,243,160,99,179,113,99,94,78,83,148,145,10,201,167,149,68,118,177,15,62,128,141,245,30,160,32,237,35,116,22,178,47,148,68,0,251,247,161,144,189,232,143,10,142,185,158,244,240,75,126,150,151,66,39,102,183,253,160,191,18,174,229,234,90,161,4,251,51,165,34,219,58,208,229,165,172,100,249,226,224,109,27,211,165,115,20,174,217,18,235,160,55,163,126,142,241,10,171,151,43,201,181,80,255,75,77,159,120,0,39,159,199,92,133,179,87,37,56,123,211,223,245,254,160,154,5,242,211,142,200,39,203,115,41,143,216,124,93,239,153,42,15,148,64,78,48,147,250,109,215,167,73,73,196,73,71,160,208,48,200,202,81,141,33,52,130,235,56,169,70,244,37,196,140,70,225,156,194,203,187,57,40,1,21,137,184,140,151,130,160,10,255,50,86,204,24,175,114,88,55,81,8,157,243,41,163,107,233,196,82,197,84,209,97,4,25,113,151,224,174,76,15,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[248,209],[248,209]]}},"account":null,"storage":null,"values":[[160,156,207,209,50,40,105,79,185,147,253,172,132,182,236,142,139,203,121,201,181,156,228,141,159,78,159,44,33,213,51,125,229,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,197,234,12,103,110,242,92,69,6,62,162,144,64,92,131,45,135,2,37,58,66,125,63,51,29,138,28,248,78,153,136,119,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,25,13,67,31,199,222,216,107,34,40,142,133,149,184,41,125,236,103,176,235,125,80,186,176,3,203,64,65,134,5,222,1,0],[160,167,63,90,119,245,124,235,222,105,144,183,18,93,239,206,233,79,197,80,131,11,214,234,47,63,126,97,186,156,48,161,133,0],[160,178,104,97,159,142,99,51,238,197,231,64,226,44,127,242,213,36,210,114,64,167,78,232,37,181,247,120,175,109,220,97,139,0],[160,6,109,40,142,107,137,194,101,49,95,195,9,9,67,94,201,125,238,165,70,88,152,223,116,129,254,242,223,227,194,104,66,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,203,74,115,196,67,113,254,236,50,165,82,128,88,172,155,41,236,5,172,165,112,51,191,129,132,179,11,60,163,223,106,21,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,209,128,160,197,234,12,103,110,242,92,69,6,62,162,144,64,92,131,45,135,2,37,58,66,125,63,51,29,138,28,248,78,153,136,119,128,128,128,160,25,13,67,31,199,222,216,107,34,40,142,133,149,184,41,125,236,103,176,235,125,80,186,176,3,203,64,65,134,5,222,1,160,167,63,90,119,245,124,235,222,105,144,183,18,93,239,206,233,79,197,80,131,11,214,234,47,63,126,97,186,156,48,161,133,160,178,104,97,159,142,99,51,238,197,231,64,226,44,127,242,213,36,210,114,64,167,78,232,37,181,247,120,175,109,220,97,139,160,6,109,40,142,107,137,194,101,49,95,195,9,9,67,94,201,125,238,165,70,88,152,223,116,129,254,242,223,227,194,104,66,128,160,203,74,115,196,67,113,254,236,50,165,82,128,88,172,155,41,236,5,172,165,112,51,191,129,132,179,11,60,163,223,106,21,128,128,128,128,128,128],[248,209,128,160,156,207,209,50,40,105,79,185,147,253,172,132,182,236,142,139,203,121,201,181,156,228,141,159,78,159,44,33,213,51,125,229,128,128,128,160,25,13,67,31,199,222,216,107,34,40,142,133,149,184,41,125,236,103,176,235,125,80,186,176,3,203,64,65,134,5,222,1,160,167,63,90,119,245,124,235,222,105,144,183,18,93,239,206,233,79,197,80,131,11,214,234,47,63,126,97,186,156,48,161,133,160,178,104,97,159,142,99,51,238,197,231,64,226,44,127,242,213,36,210,114,64,167,78,232,37,181,247,120,175,109,220,97,139,160,6,109,40,142,107,137,194,101,49,95,195,9,9,67,94,201,125,238,165,70,88,152,223,116,129,254,242,223,227,194,104,66,128,160,203,74,115,196,67,113,254,236,50,165,82,128,88,172,155,41,236,5,172,165,112,51,191,129,132,179,11,60,163,223,106,21,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[170,172,207,18,88,1,56,188,43,188,149,122,168,38,223,78,66,171,129,255],"key":[71,231,145,29,62,148,227,204,33,33,162,231,150,201,153,64,76,184,205,22,90,144,29,188,207,197,100,32,183,247,220,126],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,61,62,148,227,204,33,33,162,231,150,201,153,64,76,184,205,22,90,144,29,188,207,197,100,32,183,247,220,126,0,0,0,0],[157,61,62,148,227,204,33,33,162,231,150,201,153,64,76,184,205,22,90,144,29,188,207,197,100,32,183,247,220,126,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,9,84,15,203,127,153,20,190,241,78,52,251,208,65,232,227,142,92,168,16,165,140,39,119,196,231,131,74,63,196,243,60,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,240,1,181,13,209,205,67,21,77,226,67,67,109,237,241,148,179,141,51,28,14,168,32,5,100,241,252,179,90,52,230,114,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,61,62,148,227,204,33,33,162,231,150,201,153,64,76,184,205,22,90,144,29,188,207,197,100,32,183,247,220,126,0,0,0,0]],"keccak_data":[[248,102,157,61,62,148,227,204,33,33,162,231,150,201,153,64,76,184,205,22,90,144,29,188,207,197,100,32,183,247,220,126,184,70,248,68,128,128,160,9,84,15,203,127,153,20,190,241,78,52,251,208,65,232,227,142,92,168,16,165,140,39,119,196,231,131,74,63,196,243,60,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,61,62,148,227,204,33,33,162,231,150,201,153,64,76,184,205,22,90,144,29,188,207,197,100,32,183,247,220,126,184,70,248,68,128,128,160,240,1,181,13,209,205,67,21,77,226,67,67,109,237,241,148,179,141,51,28,14,168,32,5,100,241,252,179,90,52,230,114,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[170,172,207,18,88,1,56,188,43,188,149,122,168,38,223,78,66,171,129,255]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,211,7,3,68,64,133,222,239,173,235,203,52,122,42,242,253,164,9,30,49,32,72,207,195,12,16,155,41,45,69,81,237,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,169,184,158,55,8,215,67,17,7,135,162,219,160,221,5,17,129,106,64,40,193,232,134,216,205,151,23,215,168,161,234,80,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,160,169,184,158,55,8,215,67,17,7,135,162,219,160,221,5,17,129,106,64,40,193,232,134,216,205,151,23,215,168,161,234,80,128,128,128,128,128,128,128,160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,128,128,128,128,128],[248,81,128,128,128,160,211,7,3,68,64,133,222,239,173,235,203,52,122,42,242,253,164,9,30,49,32,72,207,195,12,16,155,41,45,69,81,237,128,128,128,128,128,128,128,160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,26,196,2,167,146,175,109,150,143,107,128,39,103,234,190,125,242,130,146,41,198,170,191,100,168,70,34,121,93,102,4,17,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,144,251,124,202,220,92,31,133,222,150,215,207,225,250,167,226,181,121,66,196,246,55,16,157,64,177,79,73,60,151,194,209,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,141,203,27,132,71,133,121,242,117,169,74,104,137,216,230,118,125,138,242,115,166,118,39,237,209,234,156,251,107,97,244,220,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,160,144,251,124,202,220,92,31,133,222,150,215,207,225,250,167,226,181,121,66,196,246,55,16,157,64,177,79,73,60,151,194,209,128,128,128,128,128,128,128,128,160,141,203,27,132,71,133,121,242,117,169,74,104,137,216,230,118,125,138,242,115,166,118,39,237,209,234,156,251,107,97,244,220,128,128,128,128,128,128],[248,81,128,160,26,196,2,167,146,175,109,150,143,107,128,39,103,234,190,125,242,130,146,41,198,170,191,100,168,70,34,121,93,102,4,17,128,128,128,128,128,128,128,128,160,141,203,27,132,71,133,121,242,117,169,74,104,137,216,230,118,125,138,242,115,166,118,39,237,209,234,156,251,107,97,244,220,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17],"key":[49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104],"list_rlp_bytes":[[226],[226]],"value_rlp_bytes":[[1],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,32,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[226,160,32,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,1],[226,160,32,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/UpdateTwoLevelsBigVal.json b/zkevm-circuits/src/mpt_circuit/tests/UpdateTwoLevelsBigVal.json new file mode 100644 index 0000000000..c5dcf5da4f --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/UpdateTwoLevelsBigVal.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,253,234,57,25,213,7,63,51,25,247,42,202,113,6,173,42,26,145,176,145,74,228,150,142,164,176,159,238,166,157,77,155,0],[160,3,83,40,132,70,14,247,196,170,72,228,79,5,45,120,239,132,57,130,94,136,76,2,102,170,123,68,242,133,137,229,15,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":4,"drifted_index":4,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,29,242,46,206,29,9,111,223,154,79,250,10,49,249,16,198,17,42,210,78,210,226,200,229,191,98,157,211,71,200,96,118,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,142,83,238,0,13,2,169,243,14,99,6,164,14,77,27,251,219,60,5,19,184,166,106,37,105,53,234,106,12,177,134,86,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,142,83,238,0,13,2,169,243,14,99,6,164,14,77,27,251,219,60,5,19,184,166,106,37,105,53,234,106,12,177,134,86,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,29,242,46,206,29,9,111,223,154,79,250,10,49,249,16,198,17,42,210,78,210,226,200,229,191,98,157,211,71,200,96,118,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,69,221,169,92,165,83,34,53,123,93,55,127,206,167,112,175,13,233,196,118,68,137,156,246,219,49,159,137,25,37,30,157,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,230,45,110,13,23,30,183,181,207,2,83,189,57,102,108,187,129,131,15,211,66,27,50,133,4,85,54,44,86,221,109,158,0],[160,0,206,33,240,101,251,90,188,73,10,150,144,56,188,30,27,85,139,94,5,74,204,46,227,225,161,245,164,212,123,119,17,0],[160,158,197,146,195,133,234,84,43,152,85,76,221,237,86,132,255,115,79,61,107,23,194,92,56,75,113,216,10,200,183,87,26,0],[160,194,152,14,169,119,137,64,54,162,181,197,145,208,235,167,184,70,163,196,232,144,255,116,16,132,177,77,174,101,172,104,104,0],[160,49,47,172,152,7,7,6,11,232,103,121,231,161,101,145,71,211,123,164,44,71,10,103,248,185,164,232,204,165,45,250,102,0],[160,68,19,96,150,137,200,112,23,100,65,2,179,154,130,167,209,205,114,87,189,201,71,56,52,59,176,142,55,246,33,222,198,0],[160,154,160,226,122,150,161,250,227,154,127,249,5,115,168,213,204,10,210,96,165,110,239,21,181,237,166,107,108,251,168,143,202,0],[160,153,56,68,205,140,247,250,231,180,188,89,107,54,149,145,83,147,173,184,162,137,156,161,58,69,102,85,11,26,243,192,247,0],[160,189,78,17,3,103,251,67,209,231,7,107,34,75,249,112,207,143,183,4,253,86,33,145,44,155,125,33,243,72,193,143,176,0],[160,21,204,109,8,193,125,112,192,47,37,182,82,90,109,229,234,172,243,83,193,102,230,190,180,211,203,242,20,246,16,116,37,0],[160,2,110,30,248,38,115,226,23,53,13,149,185,153,44,145,216,62,245,29,160,176,11,217,110,165,94,251,184,155,55,249,242,0],[160,167,46,230,43,234,32,209,151,178,230,220,223,167,95,226,105,101,123,1,163,65,37,73,49,185,130,26,88,87,252,241,42,0],[160,137,62,202,192,116,223,58,179,189,121,20,106,116,93,190,135,19,188,37,163,59,107,40,241,88,142,206,9,234,163,219,69,0],[160,74,166,255,37,80,208,11,236,208,85,44,196,213,203,218,41,43,59,35,132,56,206,202,50,27,77,241,165,33,96,71,223,0],[160,145,245,133,65,255,26,96,140,173,209,133,207,36,36,151,166,254,245,244,101,139,185,231,35,159,31,57,31,33,18,45,78,0],[160,60,217,92,4,104,103,148,169,116,98,182,50,210,45,100,120,94,64,85,175,168,151,183,14,126,152,234,94,158,106,32,112,0],[160,79,71,88,62,75,54,226,220,72,114,42,84,193,10,153,112,156,49,56,210,107,120,3,176,215,31,85,113,94,10,176,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,0,206,33,240,101,251,90,188,73,10,150,144,56,188,30,27,85,139,94,5,74,204,46,227,225,161,245,164,212,123,119,17,160,158,197,146,195,133,234,84,43,152,85,76,221,237,86,132,255,115,79,61,107,23,194,92,56,75,113,216,10,200,183,87,26,160,194,152,14,169,119,137,64,54,162,181,197,145,208,235,167,184,70,163,196,232,144,255,116,16,132,177,77,174,101,172,104,104,160,49,47,172,152,7,7,6,11,232,103,121,231,161,101,145,71,211,123,164,44,71,10,103,248,185,164,232,204,165,45,250,102,160,68,19,96,150,137,200,112,23,100,65,2,179,154,130,167,209,205,114,87,189,201,71,56,52,59,176,142,55,246,33,222,198,160,154,160,226,122,150,161,250,227,154,127,249,5,115,168,213,204,10,210,96,165,110,239,21,181,237,166,107,108,251,168,143,202,160,153,56,68,205,140,247,250,231,180,188,89,107,54,149,145,83,147,173,184,162,137,156,161,58,69,102,85,11,26,243,192,247,160,189,78,17,3,103,251,67,209,231,7,107,34,75,249,112,207,143,183,4,253,86,33,145,44,155,125,33,243,72,193,143,176,160,21,204,109,8,193,125,112,192,47,37,182,82,90,109,229,234,172,243,83,193,102,230,190,180,211,203,242,20,246,16,116,37,160,2,110,30,248,38,115,226,23,53,13,149,185,153,44,145,216,62,245,29,160,176,11,217,110,165,94,251,184,155,55,249,242,160,167,46,230,43,234,32,209,151,178,230,220,223,167,95,226,105,101,123,1,163,65,37,73,49,185,130,26,88,87,252,241,42,160,137,62,202,192,116,223,58,179,189,121,20,106,116,93,190,135,19,188,37,163,59,107,40,241,88,142,206,9,234,163,219,69,160,74,166,255,37,80,208,11,236,208,85,44,196,213,203,218,41,43,59,35,132,56,206,202,50,27,77,241,165,33,96,71,223,160,145,245,133,65,255,26,96,140,173,209,133,207,36,36,151,166,254,245,244,101,139,185,231,35,159,31,57,31,33,18,45,78,160,60,217,92,4,104,103,148,169,116,98,182,50,210,45,100,120,94,64,85,175,168,151,183,14,126,152,234,94,158,106,32,112,160,79,71,88,62,75,54,226,220,72,114,42,84,193,10,153,112,156,49,56,210,107,120,3,176,215,31,85,113,94,10,176,0,128],[249,2,17,160,0,206,33,240,101,251,90,188,73,10,150,144,56,188,30,27,85,139,94,5,74,204,46,227,225,161,245,164,212,123,119,17,160,158,197,146,195,133,234,84,43,152,85,76,221,237,86,132,255,115,79,61,107,23,194,92,56,75,113,216,10,200,183,87,26,160,194,152,14,169,119,137,64,54,162,181,197,145,208,235,167,184,70,163,196,232,144,255,116,16,132,177,77,174,101,172,104,104,160,49,47,172,152,7,7,6,11,232,103,121,231,161,101,145,71,211,123,164,44,71,10,103,248,185,164,232,204,165,45,250,102,160,68,19,96,150,137,200,112,23,100,65,2,179,154,130,167,209,205,114,87,189,201,71,56,52,59,176,142,55,246,33,222,198,160,154,160,226,122,150,161,250,227,154,127,249,5,115,168,213,204,10,210,96,165,110,239,21,181,237,166,107,108,251,168,143,202,160,153,56,68,205,140,247,250,231,180,188,89,107,54,149,145,83,147,173,184,162,137,156,161,58,69,102,85,11,26,243,192,247,160,230,45,110,13,23,30,183,181,207,2,83,189,57,102,108,187,129,131,15,211,66,27,50,133,4,85,54,44,86,221,109,158,160,21,204,109,8,193,125,112,192,47,37,182,82,90,109,229,234,172,243,83,193,102,230,190,180,211,203,242,20,246,16,116,37,160,2,110,30,248,38,115,226,23,53,13,149,185,153,44,145,216,62,245,29,160,176,11,217,110,165,94,251,184,155,55,249,242,160,167,46,230,43,234,32,209,151,178,230,220,223,167,95,226,105,101,123,1,163,65,37,73,49,185,130,26,88,87,252,241,42,160,137,62,202,192,116,223,58,179,189,121,20,106,116,93,190,135,19,188,37,163,59,107,40,241,88,142,206,9,234,163,219,69,160,74,166,255,37,80,208,11,236,208,85,44,196,213,203,218,41,43,59,35,132,56,206,202,50,27,77,241,165,33,96,71,223,160,145,245,133,65,255,26,96,140,173,209,133,207,36,36,151,166,254,245,244,101,139,185,231,35,159,31,57,31,33,18,45,78,160,60,217,92,4,104,103,148,169,116,98,182,50,210,45,100,120,94,64,85,175,168,151,183,14,126,152,234,94,158,106,32,112,160,79,71,88,62,75,54,226,220,72,114,42,84,193,10,153,112,156,49,56,210,107,120,3,176,215,31,85,113,94,10,176,0,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":14,"drifted_index":14,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,71,100,171,20,217,22,14,161,33,183,185,165,222,91,120,80,202,165,62,145,39,173,206,247,209,147,209,200,189,12,222,246,0],[160,212,143,221,246,161,1,73,30,246,86,186,122,155,108,153,180,120,119,12,174,197,170,107,83,135,106,189,52,51,124,152,116,0],[160,147,167,17,120,9,130,238,148,40,147,85,106,45,163,69,77,73,121,62,19,102,72,55,187,171,113,229,207,32,251,227,242,0],[160,218,184,131,23,31,196,21,172,54,135,202,182,149,158,98,185,253,104,83,188,246,49,238,110,18,200,78,182,251,42,182,84,0],[160,31,59,227,250,248,209,21,236,216,182,51,138,27,48,53,64,120,152,255,213,166,140,139,222,136,238,236,7,87,232,140,212,0],[160,42,27,163,254,227,206,102,89,56,253,2,17,246,181,95,202,138,49,111,31,128,0,223,228,156,84,191,136,176,73,195,201,0],[160,89,40,117,212,213,171,9,115,24,150,103,120,244,131,88,142,51,129,187,98,225,20,69,112,26,79,229,86,21,109,181,187,0],[160,172,218,32,237,14,52,49,152,152,102,176,226,161,180,114,77,185,188,23,50,188,217,213,149,126,168,145,158,248,86,38,223,0],[160,168,153,128,165,94,67,2,173,111,240,100,150,205,57,132,173,107,135,213,53,27,254,241,85,205,123,82,250,189,205,200,8,0],[160,190,86,69,75,109,231,120,217,148,41,43,17,80,52,126,189,27,146,11,161,231,143,194,33,24,150,153,177,194,192,101,108,0],[160,237,202,150,67,28,233,56,89,34,141,228,54,77,6,20,142,150,159,21,14,6,68,214,48,202,121,0,121,230,230,68,184,0],[160,146,120,166,112,95,202,69,181,46,253,56,215,122,6,22,58,150,203,40,33,67,39,58,147,200,58,148,60,44,22,121,156,0],[160,30,14,11,193,133,139,12,67,238,164,188,141,79,119,174,75,198,254,101,220,161,49,183,206,118,61,78,90,21,128,181,241,0],[160,84,238,52,23,86,211,77,162,10,193,4,238,161,200,17,206,222,204,29,231,105,72,154,205,230,105,212,90,3,13,27,40,0],[160,63,185,55,194,230,92,205,112,240,42,112,19,114,186,72,224,124,221,232,55,196,78,183,39,105,208,80,42,145,228,26,140,0],[160,144,123,255,172,41,40,194,142,145,80,162,200,191,159,7,73,79,206,17,217,24,98,194,85,129,132,239,71,63,59,211,223,0],[160,214,64,120,166,159,104,248,26,23,197,136,82,245,211,251,229,16,19,0,65,139,234,102,212,80,12,9,98,189,148,123,128,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,212,143,221,246,161,1,73,30,246,86,186,122,155,108,153,180,120,119,12,174,197,170,107,83,135,106,189,52,51,124,152,116,160,147,167,17,120,9,130,238,148,40,147,85,106,45,163,69,77,73,121,62,19,102,72,55,187,171,113,229,207,32,251,227,242,160,218,184,131,23,31,196,21,172,54,135,202,182,149,158,98,185,253,104,83,188,246,49,238,110,18,200,78,182,251,42,182,84,160,31,59,227,250,248,209,21,236,216,182,51,138,27,48,53,64,120,152,255,213,166,140,139,222,136,238,236,7,87,232,140,212,160,42,27,163,254,227,206,102,89,56,253,2,17,246,181,95,202,138,49,111,31,128,0,223,228,156,84,191,136,176,73,195,201,160,89,40,117,212,213,171,9,115,24,150,103,120,244,131,88,142,51,129,187,98,225,20,69,112,26,79,229,86,21,109,181,187,160,172,218,32,237,14,52,49,152,152,102,176,226,161,180,114,77,185,188,23,50,188,217,213,149,126,168,145,158,248,86,38,223,160,168,153,128,165,94,67,2,173,111,240,100,150,205,57,132,173,107,135,213,53,27,254,241,85,205,123,82,250,189,205,200,8,160,190,86,69,75,109,231,120,217,148,41,43,17,80,52,126,189,27,146,11,161,231,143,194,33,24,150,153,177,194,192,101,108,160,237,202,150,67,28,233,56,89,34,141,228,54,77,6,20,142,150,159,21,14,6,68,214,48,202,121,0,121,230,230,68,184,160,146,120,166,112,95,202,69,181,46,253,56,215,122,6,22,58,150,203,40,33,67,39,58,147,200,58,148,60,44,22,121,156,160,30,14,11,193,133,139,12,67,238,164,188,141,79,119,174,75,198,254,101,220,161,49,183,206,118,61,78,90,21,128,181,241,160,84,238,52,23,86,211,77,162,10,193,4,238,161,200,17,206,222,204,29,231,105,72,154,205,230,105,212,90,3,13,27,40,160,63,185,55,194,230,92,205,112,240,42,112,19,114,186,72,224,124,221,232,55,196,78,183,39,105,208,80,42,145,228,26,140,160,144,123,255,172,41,40,194,142,145,80,162,200,191,159,7,73,79,206,17,217,24,98,194,85,129,132,239,71,63,59,211,223,160,214,64,120,166,159,104,248,26,23,197,136,82,245,211,251,229,16,19,0,65,139,234,102,212,80,12,9,98,189,148,123,128,128],[249,2,17,160,212,143,221,246,161,1,73,30,246,86,186,122,155,108,153,180,120,119,12,174,197,170,107,83,135,106,189,52,51,124,152,116,160,147,167,17,120,9,130,238,148,40,147,85,106,45,163,69,77,73,121,62,19,102,72,55,187,171,113,229,207,32,251,227,242,160,218,184,131,23,31,196,21,172,54,135,202,182,149,158,98,185,253,104,83,188,246,49,238,110,18,200,78,182,251,42,182,84,160,31,59,227,250,248,209,21,236,216,182,51,138,27,48,53,64,120,152,255,213,166,140,139,222,136,238,236,7,87,232,140,212,160,42,27,163,254,227,206,102,89,56,253,2,17,246,181,95,202,138,49,111,31,128,0,223,228,156,84,191,136,176,73,195,201,160,89,40,117,212,213,171,9,115,24,150,103,120,244,131,88,142,51,129,187,98,225,20,69,112,26,79,229,86,21,109,181,187,160,172,218,32,237,14,52,49,152,152,102,176,226,161,180,114,77,185,188,23,50,188,217,213,149,126,168,145,158,248,86,38,223,160,168,153,128,165,94,67,2,173,111,240,100,150,205,57,132,173,107,135,213,53,27,254,241,85,205,123,82,250,189,205,200,8,160,190,86,69,75,109,231,120,217,148,41,43,17,80,52,126,189,27,146,11,161,231,143,194,33,24,150,153,177,194,192,101,108,160,237,202,150,67,28,233,56,89,34,141,228,54,77,6,20,142,150,159,21,14,6,68,214,48,202,121,0,121,230,230,68,184,160,146,120,166,112,95,202,69,181,46,253,56,215,122,6,22,58,150,203,40,33,67,39,58,147,200,58,148,60,44,22,121,156,160,30,14,11,193,133,139,12,67,238,164,188,141,79,119,174,75,198,254,101,220,161,49,183,206,118,61,78,90,21,128,181,241,160,84,238,52,23,86,211,77,162,10,193,4,238,161,200,17,206,222,204,29,231,105,72,154,205,230,105,212,90,3,13,27,40,160,63,185,55,194,230,92,205,112,240,42,112,19,114,186,72,224,124,221,232,55,196,78,183,39,105,208,80,42,145,228,26,140,160,71,100,171,20,217,22,14,161,33,183,185,165,222,91,120,80,202,165,62,145,39,173,206,247,209,147,209,200,189,12,222,246,160,214,64,120,166,159,104,248,26,23,197,136,82,245,211,251,229,16,19,0,65,139,234,102,212,80,12,9,98,189,148,123,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":7,"drifted_index":7,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,30,119,37,47,59,45,27,73,246,35,152,136,21,50,238,178,96,160,131,160,235,208,170,62,113,242,3,80,106,204,15,224,0],[160,152,206,152,161,186,249,6,249,88,161,224,211,132,9,24,115,57,246,45,165,4,142,237,76,73,16,232,181,61,140,228,191,0],[160,75,36,115,207,246,127,154,196,188,211,166,132,43,124,131,167,78,24,115,106,192,105,46,239,133,178,137,124,236,144,155,92,0],[160,43,5,60,211,71,233,102,100,163,55,128,139,44,172,12,51,91,88,15,14,181,216,7,41,161,225,106,122,9,36,97,70,0],[160,152,26,106,62,119,12,211,102,254,97,28,23,246,208,176,239,145,247,93,215,216,235,120,201,65,190,35,191,143,2,183,227,0],[160,77,214,60,253,122,155,209,135,37,64,9,199,6,228,100,84,91,17,130,248,182,211,196,61,98,39,66,97,53,92,69,28,0],[160,43,219,182,150,201,202,152,63,13,225,98,193,80,80,160,32,159,107,66,193,181,169,218,63,194,29,81,255,75,10,99,67,0],[160,174,234,55,36,187,128,234,214,214,248,108,119,195,88,175,83,97,38,79,216,83,160,234,205,165,60,27,220,30,115,76,3,0],[160,220,171,0,169,65,182,130,227,170,113,177,129,133,191,242,165,166,221,142,188,146,80,44,248,67,218,151,181,95,245,217,139,0],[160,136,73,46,102,85,125,182,185,26,97,20,180,118,32,13,29,70,62,131,91,58,45,236,193,132,9,110,199,138,31,4,185,0],[160,238,30,52,20,114,98,239,115,231,79,239,250,177,163,82,161,116,206,205,124,28,227,33,9,125,221,159,156,6,176,127,91,0],[160,197,104,162,191,211,239,68,172,104,247,153,145,156,162,240,92,49,36,122,245,98,50,210,61,59,81,219,176,103,93,6,51,0],[160,91,46,22,56,239,8,171,7,180,47,124,92,147,148,31,178,171,102,217,89,96,247,162,141,98,235,138,6,225,125,164,109,0],[160,57,26,22,238,42,30,22,60,76,241,230,27,192,163,185,190,138,77,97,17,21,17,42,252,163,81,63,11,186,83,168,80,0],[160,153,7,222,113,10,145,24,106,212,244,194,186,208,33,218,112,101,177,7,158,199,68,132,30,125,58,56,93,57,131,220,50,0],[160,57,230,59,21,11,208,91,44,199,224,144,209,27,95,94,25,32,215,98,63,244,224,116,68,98,110,5,162,220,246,172,13,0],[160,37,236,123,96,34,40,57,27,102,71,21,134,126,135,138,132,119,184,140,23,134,232,246,204,251,147,9,1,137,71,29,110,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,152,206,152,161,186,249,6,249,88,161,224,211,132,9,24,115,57,246,45,165,4,142,237,76,73,16,232,181,61,140,228,191,160,75,36,115,207,246,127,154,196,188,211,166,132,43,124,131,167,78,24,115,106,192,105,46,239,133,178,137,124,236,144,155,92,160,43,5,60,211,71,233,102,100,163,55,128,139,44,172,12,51,91,88,15,14,181,216,7,41,161,225,106,122,9,36,97,70,160,152,26,106,62,119,12,211,102,254,97,28,23,246,208,176,239,145,247,93,215,216,235,120,201,65,190,35,191,143,2,183,227,160,77,214,60,253,122,155,209,135,37,64,9,199,6,228,100,84,91,17,130,248,182,211,196,61,98,39,66,97,53,92,69,28,160,43,219,182,150,201,202,152,63,13,225,98,193,80,80,160,32,159,107,66,193,181,169,218,63,194,29,81,255,75,10,99,67,160,174,234,55,36,187,128,234,214,214,248,108,119,195,88,175,83,97,38,79,216,83,160,234,205,165,60,27,220,30,115,76,3,160,220,171,0,169,65,182,130,227,170,113,177,129,133,191,242,165,166,221,142,188,146,80,44,248,67,218,151,181,95,245,217,139,160,136,73,46,102,85,125,182,185,26,97,20,180,118,32,13,29,70,62,131,91,58,45,236,193,132,9,110,199,138,31,4,185,160,238,30,52,20,114,98,239,115,231,79,239,250,177,163,82,161,116,206,205,124,28,227,33,9,125,221,159,156,6,176,127,91,160,197,104,162,191,211,239,68,172,104,247,153,145,156,162,240,92,49,36,122,245,98,50,210,61,59,81,219,176,103,93,6,51,160,91,46,22,56,239,8,171,7,180,47,124,92,147,148,31,178,171,102,217,89,96,247,162,141,98,235,138,6,225,125,164,109,160,57,26,22,238,42,30,22,60,76,241,230,27,192,163,185,190,138,77,97,17,21,17,42,252,163,81,63,11,186,83,168,80,160,153,7,222,113,10,145,24,106,212,244,194,186,208,33,218,112,101,177,7,158,199,68,132,30,125,58,56,93,57,131,220,50,160,57,230,59,21,11,208,91,44,199,224,144,209,27,95,94,25,32,215,98,63,244,224,116,68,98,110,5,162,220,246,172,13,160,37,236,123,96,34,40,57,27,102,71,21,134,126,135,138,132,119,184,140,23,134,232,246,204,251,147,9,1,137,71,29,110,128],[249,2,17,160,152,206,152,161,186,249,6,249,88,161,224,211,132,9,24,115,57,246,45,165,4,142,237,76,73,16,232,181,61,140,228,191,160,75,36,115,207,246,127,154,196,188,211,166,132,43,124,131,167,78,24,115,106,192,105,46,239,133,178,137,124,236,144,155,92,160,43,5,60,211,71,233,102,100,163,55,128,139,44,172,12,51,91,88,15,14,181,216,7,41,161,225,106,122,9,36,97,70,160,152,26,106,62,119,12,211,102,254,97,28,23,246,208,176,239,145,247,93,215,216,235,120,201,65,190,35,191,143,2,183,227,160,77,214,60,253,122,155,209,135,37,64,9,199,6,228,100,84,91,17,130,248,182,211,196,61,98,39,66,97,53,92,69,28,160,43,219,182,150,201,202,152,63,13,225,98,193,80,80,160,32,159,107,66,193,181,169,218,63,194,29,81,255,75,10,99,67,160,174,234,55,36,187,128,234,214,214,248,108,119,195,88,175,83,97,38,79,216,83,160,234,205,165,60,27,220,30,115,76,3,160,30,119,37,47,59,45,27,73,246,35,152,136,21,50,238,178,96,160,131,160,235,208,170,62,113,242,3,80,106,204,15,224,160,136,73,46,102,85,125,182,185,26,97,20,180,118,32,13,29,70,62,131,91,58,45,236,193,132,9,110,199,138,31,4,185,160,238,30,52,20,114,98,239,115,231,79,239,250,177,163,82,161,116,206,205,124,28,227,33,9,125,221,159,156,6,176,127,91,160,197,104,162,191,211,239,68,172,104,247,153,145,156,162,240,92,49,36,122,245,98,50,210,61,59,81,219,176,103,93,6,51,160,91,46,22,56,239,8,171,7,180,47,124,92,147,148,31,178,171,102,217,89,96,247,162,141,98,235,138,6,225,125,164,109,160,57,26,22,238,42,30,22,60,76,241,230,27,192,163,185,190,138,77,97,17,21,17,42,252,163,81,63,11,186,83,168,80,160,153,7,222,113,10,145,24,106,212,244,194,186,208,33,218,112,101,177,7,158,199,68,132,30,125,58,56,93,57,131,220,50,160,57,230,59,21,11,208,91,44,199,224,144,209,27,95,94,25,32,215,98,63,244,224,116,68,98,110,5,162,220,246,172,13,160,37,236,123,96,34,40,57,27,102,71,21,134,126,135,138,132,119,184,140,23,134,232,246,204,251,147,9,1,137,71,29,110,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,41,56,70,118,31,5,32,241,175,119,228,41,120,90,118,184,180,250,250,22,184,124,92,72,248,157,0,60,121,70,234,1,0],[160,133,53,140,149,13,242,8,239,20,18,81,91,58,34,161,230,139,38,155,58,108,138,163,243,226,216,54,151,122,171,196,53,0],[160,171,55,116,203,153,137,197,14,168,53,6,42,105,150,190,227,136,180,231,84,220,134,67,229,23,34,115,192,38,183,176,178,0],[160,131,163,144,144,65,7,31,139,191,116,99,41,115,250,237,195,24,1,220,63,85,176,243,108,230,166,168,119,59,219,212,15,0],[160,73,44,193,179,181,82,121,28,64,124,180,198,53,109,224,48,159,40,210,153,0,225,156,47,203,114,161,126,192,190,140,95,0],[160,75,244,27,221,167,108,63,60,127,219,121,120,71,199,149,48,243,135,61,109,180,96,196,70,13,157,30,50,213,134,84,222,0],[160,206,232,108,50,184,22,154,196,191,249,228,225,15,207,132,175,199,220,12,200,243,155,235,146,161,232,183,120,25,147,214,221,0],[160,111,145,159,11,227,52,108,46,174,52,174,172,253,116,254,76,8,207,26,149,143,226,91,107,240,47,24,155,251,214,51,108,0],[160,215,169,194,9,197,250,96,6,134,1,40,113,22,228,166,119,66,195,140,251,123,120,85,168,126,228,163,252,234,48,240,164,0],[160,49,249,151,31,194,199,207,253,195,132,228,87,201,13,50,155,253,45,212,146,98,126,43,37,110,28,117,138,19,180,49,254,0],[160,55,137,170,248,114,41,208,241,223,58,25,23,90,175,225,150,165,177,191,193,188,128,191,76,226,40,210,208,231,61,113,3,0],[160,110,128,62,203,73,252,121,222,114,211,69,5,91,57,116,78,36,4,35,176,204,210,60,83,225,54,230,250,204,219,90,239,0],[160,156,132,239,198,51,24,208,183,255,1,198,219,154,179,228,71,62,136,232,63,218,162,61,224,51,236,252,58,30,173,69,213,0],[160,91,94,75,61,181,33,192,109,0,233,238,253,11,51,34,69,70,39,43,223,42,104,0,76,217,208,219,113,199,109,82,113,0],[160,117,199,53,64,181,175,85,108,99,27,193,84,241,82,128,17,162,115,37,166,12,38,34,164,252,24,129,35,236,162,30,44,0],[160,175,23,39,17,64,131,20,25,63,119,203,82,134,165,153,40,32,61,64,184,175,194,126,178,14,88,4,239,188,146,90,240,0],[160,16,246,22,202,214,112,83,215,7,125,65,139,7,104,78,200,161,117,48,185,174,29,38,165,73,85,51,130,69,11,198,120,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,133,53,140,149,13,242,8,239,20,18,81,91,58,34,161,230,139,38,155,58,108,138,163,243,226,216,54,151,122,171,196,53,160,171,55,116,203,153,137,197,14,168,53,6,42,105,150,190,227,136,180,231,84,220,134,67,229,23,34,115,192,38,183,176,178,160,131,163,144,144,65,7,31,139,191,116,99,41,115,250,237,195,24,1,220,63,85,176,243,108,230,166,168,119,59,219,212,15,160,73,44,193,179,181,82,121,28,64,124,180,198,53,109,224,48,159,40,210,153,0,225,156,47,203,114,161,126,192,190,140,95,160,75,244,27,221,167,108,63,60,127,219,121,120,71,199,149,48,243,135,61,109,180,96,196,70,13,157,30,50,213,134,84,222,160,206,232,108,50,184,22,154,196,191,249,228,225,15,207,132,175,199,220,12,200,243,155,235,146,161,232,183,120,25,147,214,221,160,111,145,159,11,227,52,108,46,174,52,174,172,253,116,254,76,8,207,26,149,143,226,91,107,240,47,24,155,251,214,51,108,160,215,169,194,9,197,250,96,6,134,1,40,113,22,228,166,119,66,195,140,251,123,120,85,168,126,228,163,252,234,48,240,164,160,49,249,151,31,194,199,207,253,195,132,228,87,201,13,50,155,253,45,212,146,98,126,43,37,110,28,117,138,19,180,49,254,160,55,137,170,248,114,41,208,241,223,58,25,23,90,175,225,150,165,177,191,193,188,128,191,76,226,40,210,208,231,61,113,3,160,110,128,62,203,73,252,121,222,114,211,69,5,91,57,116,78,36,4,35,176,204,210,60,83,225,54,230,250,204,219,90,239,160,156,132,239,198,51,24,208,183,255,1,198,219,154,179,228,71,62,136,232,63,218,162,61,224,51,236,252,58,30,173,69,213,160,91,94,75,61,181,33,192,109,0,233,238,253,11,51,34,69,70,39,43,223,42,104,0,76,217,208,219,113,199,109,82,113,160,117,199,53,64,181,175,85,108,99,27,193,84,241,82,128,17,162,115,37,166,12,38,34,164,252,24,129,35,236,162,30,44,160,175,23,39,17,64,131,20,25,63,119,203,82,134,165,153,40,32,61,64,184,175,194,126,178,14,88,4,239,188,146,90,240,160,16,246,22,202,214,112,83,215,7,125,65,139,7,104,78,200,161,117,48,185,174,29,38,165,73,85,51,130,69,11,198,120,128],[249,2,17,160,133,53,140,149,13,242,8,239,20,18,81,91,58,34,161,230,139,38,155,58,108,138,163,243,226,216,54,151,122,171,196,53,160,171,55,116,203,153,137,197,14,168,53,6,42,105,150,190,227,136,180,231,84,220,134,67,229,23,34,115,192,38,183,176,178,160,131,163,144,144,65,7,31,139,191,116,99,41,115,250,237,195,24,1,220,63,85,176,243,108,230,166,168,119,59,219,212,15,160,73,44,193,179,181,82,121,28,64,124,180,198,53,109,224,48,159,40,210,153,0,225,156,47,203,114,161,126,192,190,140,95,160,75,244,27,221,167,108,63,60,127,219,121,120,71,199,149,48,243,135,61,109,180,96,196,70,13,157,30,50,213,134,84,222,160,206,232,108,50,184,22,154,196,191,249,228,225,15,207,132,175,199,220,12,200,243,155,235,146,161,232,183,120,25,147,214,221,160,111,145,159,11,227,52,108,46,174,52,174,172,253,116,254,76,8,207,26,149,143,226,91,107,240,47,24,155,251,214,51,108,160,215,169,194,9,197,250,96,6,134,1,40,113,22,228,166,119,66,195,140,251,123,120,85,168,126,228,163,252,234,48,240,164,160,49,249,151,31,194,199,207,253,195,132,228,87,201,13,50,155,253,45,212,146,98,126,43,37,110,28,117,138,19,180,49,254,160,41,56,70,118,31,5,32,241,175,119,228,41,120,90,118,184,180,250,250,22,184,124,92,72,248,157,0,60,121,70,234,1,160,110,128,62,203,73,252,121,222,114,211,69,5,91,57,116,78,36,4,35,176,204,210,60,83,225,54,230,250,204,219,90,239,160,156,132,239,198,51,24,208,183,255,1,198,219,154,179,228,71,62,136,232,63,218,162,61,224,51,236,252,58,30,173,69,213,160,91,94,75,61,181,33,192,109,0,233,238,253,11,51,34,69,70,39,43,223,42,104,0,76,217,208,219,113,199,109,82,113,160,117,199,53,64,181,175,85,108,99,27,193,84,241,82,128,17,162,115,37,166,12,38,34,164,252,24,129,35,236,162,30,44,160,175,23,39,17,64,131,20,25,63,119,203,82,134,165,153,40,32,61,64,184,175,194,126,178,14,88,4,239,188,146,90,240,160,16,246,22,202,214,112,83,215,7,125,65,139,7,104,78,200,161,117,48,185,174,29,38,165,73,85,51,130,69,11,198,120,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,54,14,79,131,74,213,8,128,93,133,115,152,146,233,146,254,72,145,86,69,76,241,221,14,110,108,185,44,91,194,245,64,0],[160,224,182,134,186,254,171,21,2,110,167,190,134,45,248,76,174,174,138,191,117,27,166,180,44,154,70,192,98,50,222,148,169,0],[160,48,234,105,154,222,98,203,136,113,190,120,68,108,71,178,17,248,83,30,112,75,76,230,142,23,83,232,182,4,172,174,206,0],[160,67,182,172,125,7,164,99,64,183,217,46,67,176,129,9,38,133,20,135,111,113,117,126,6,111,51,217,179,99,220,246,228,0],[160,91,87,191,38,162,111,174,90,100,29,140,178,211,68,34,22,67,141,5,33,33,33,216,68,182,237,248,126,195,238,51,172,0],[160,216,45,179,221,54,75,153,137,44,131,180,199,183,208,231,220,198,123,132,13,75,22,3,174,81,181,75,250,168,219,21,159,0],[160,137,255,77,175,96,83,89,51,218,170,164,248,98,92,65,158,122,100,165,213,68,29,5,198,49,146,188,93,188,1,73,69,0],[160,138,79,41,211,11,229,137,214,36,81,209,37,161,146,206,239,97,177,7,55,81,174,221,106,108,87,163,189,169,210,189,106,0],[160,153,95,2,118,176,114,106,169,155,188,111,215,51,194,5,231,34,125,210,81,176,174,249,55,233,42,217,225,161,34,180,142,0],[160,158,80,194,253,97,165,202,153,145,247,164,36,184,60,136,70,27,45,27,14,115,234,4,89,196,233,21,80,143,15,204,126,0],[160,61,64,228,252,181,3,140,201,243,160,99,179,113,99,94,78,83,148,145,10,201,167,149,68,118,177,15,62,128,141,245,30,0],[160,32,237,35,116,22,178,47,148,68,0,251,247,161,144,189,232,143,10,142,185,158,244,240,75,126,150,151,66,39,102,183,253,0],[160,191,18,174,229,234,90,161,4,251,51,165,34,219,58,208,229,165,172,100,249,226,224,109,27,211,165,115,20,174,217,18,235,0],[160,55,163,126,142,241,10,171,151,43,201,181,80,255,75,77,159,120,0,39,159,199,92,133,179,87,37,56,123,211,223,245,254,0],[160,154,5,242,211,142,200,39,203,115,41,143,216,124,93,239,153,42,15,148,64,78,48,147,250,109,215,167,73,73,196,73,71,0],[160,208,48,200,202,81,141,33,52,130,235,56,169,70,244,37,196,140,70,225,156,194,203,187,57,40,1,21,137,184,140,151,130,0],[160,10,255,50,86,204,24,175,114,88,55,81,8,157,243,41,163,107,233,196,82,197,84,209,97,4,25,113,151,224,174,76,15,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,224,182,134,186,254,171,21,2,110,167,190,134,45,248,76,174,174,138,191,117,27,166,180,44,154,70,192,98,50,222,148,169,160,48,234,105,154,222,98,203,136,113,190,120,68,108,71,178,17,248,83,30,112,75,76,230,142,23,83,232,182,4,172,174,206,160,67,182,172,125,7,164,99,64,183,217,46,67,176,129,9,38,133,20,135,111,113,117,126,6,111,51,217,179,99,220,246,228,160,91,87,191,38,162,111,174,90,100,29,140,178,211,68,34,22,67,141,5,33,33,33,216,68,182,237,248,126,195,238,51,172,160,216,45,179,221,54,75,153,137,44,131,180,199,183,208,231,220,198,123,132,13,75,22,3,174,81,181,75,250,168,219,21,159,160,137,255,77,175,96,83,89,51,218,170,164,248,98,92,65,158,122,100,165,213,68,29,5,198,49,146,188,93,188,1,73,69,160,138,79,41,211,11,229,137,214,36,81,209,37,161,146,206,239,97,177,7,55,81,174,221,106,108,87,163,189,169,210,189,106,160,153,95,2,118,176,114,106,169,155,188,111,215,51,194,5,231,34,125,210,81,176,174,249,55,233,42,217,225,161,34,180,142,160,158,80,194,253,97,165,202,153,145,247,164,36,184,60,136,70,27,45,27,14,115,234,4,89,196,233,21,80,143,15,204,126,160,61,64,228,252,181,3,140,201,243,160,99,179,113,99,94,78,83,148,145,10,201,167,149,68,118,177,15,62,128,141,245,30,160,32,237,35,116,22,178,47,148,68,0,251,247,161,144,189,232,143,10,142,185,158,244,240,75,126,150,151,66,39,102,183,253,160,191,18,174,229,234,90,161,4,251,51,165,34,219,58,208,229,165,172,100,249,226,224,109,27,211,165,115,20,174,217,18,235,160,55,163,126,142,241,10,171,151,43,201,181,80,255,75,77,159,120,0,39,159,199,92,133,179,87,37,56,123,211,223,245,254,160,154,5,242,211,142,200,39,203,115,41,143,216,124,93,239,153,42,15,148,64,78,48,147,250,109,215,167,73,73,196,73,71,160,208,48,200,202,81,141,33,52,130,235,56,169,70,244,37,196,140,70,225,156,194,203,187,57,40,1,21,137,184,140,151,130,160,10,255,50,86,204,24,175,114,88,55,81,8,157,243,41,163,107,233,196,82,197,84,209,97,4,25,113,151,224,174,76,15,128],[249,2,17,160,224,182,134,186,254,171,21,2,110,167,190,134,45,248,76,174,174,138,191,117,27,166,180,44,154,70,192,98,50,222,148,169,160,54,14,79,131,74,213,8,128,93,133,115,152,146,233,146,254,72,145,86,69,76,241,221,14,110,108,185,44,91,194,245,64,160,67,182,172,125,7,164,99,64,183,217,46,67,176,129,9,38,133,20,135,111,113,117,126,6,111,51,217,179,99,220,246,228,160,91,87,191,38,162,111,174,90,100,29,140,178,211,68,34,22,67,141,5,33,33,33,216,68,182,237,248,126,195,238,51,172,160,216,45,179,221,54,75,153,137,44,131,180,199,183,208,231,220,198,123,132,13,75,22,3,174,81,181,75,250,168,219,21,159,160,137,255,77,175,96,83,89,51,218,170,164,248,98,92,65,158,122,100,165,213,68,29,5,198,49,146,188,93,188,1,73,69,160,138,79,41,211,11,229,137,214,36,81,209,37,161,146,206,239,97,177,7,55,81,174,221,106,108,87,163,189,169,210,189,106,160,153,95,2,118,176,114,106,169,155,188,111,215,51,194,5,231,34,125,210,81,176,174,249,55,233,42,217,225,161,34,180,142,160,158,80,194,253,97,165,202,153,145,247,164,36,184,60,136,70,27,45,27,14,115,234,4,89,196,233,21,80,143,15,204,126,160,61,64,228,252,181,3,140,201,243,160,99,179,113,99,94,78,83,148,145,10,201,167,149,68,118,177,15,62,128,141,245,30,160,32,237,35,116,22,178,47,148,68,0,251,247,161,144,189,232,143,10,142,185,158,244,240,75,126,150,151,66,39,102,183,253,160,191,18,174,229,234,90,161,4,251,51,165,34,219,58,208,229,165,172,100,249,226,224,109,27,211,165,115,20,174,217,18,235,160,55,163,126,142,241,10,171,151,43,201,181,80,255,75,77,159,120,0,39,159,199,92,133,179,87,37,56,123,211,223,245,254,160,154,5,242,211,142,200,39,203,115,41,143,216,124,93,239,153,42,15,148,64,78,48,147,250,109,215,167,73,73,196,73,71,160,208,48,200,202,81,141,33,52,130,235,56,169,70,244,37,196,140,70,225,156,194,203,187,57,40,1,21,137,184,140,151,130,160,10,255,50,86,204,24,175,114,88,55,81,8,157,243,41,163,107,233,196,82,197,84,209,97,4,25,113,151,224,174,76,15,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[248,209],[248,209]]}},"account":null,"storage":null,"values":[[160,37,205,37,202,117,175,55,124,141,76,43,251,13,233,84,76,55,174,108,137,120,244,47,179,0,95,3,132,172,146,236,182,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,197,234,12,103,110,242,92,69,6,62,162,144,64,92,131,45,135,2,37,58,66,125,63,51,29,138,28,248,78,153,136,119,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,25,13,67,31,199,222,216,107,34,40,142,133,149,184,41,125,236,103,176,235,125,80,186,176,3,203,64,65,134,5,222,1,0],[160,167,63,90,119,245,124,235,222,105,144,183,18,93,239,206,233,79,197,80,131,11,214,234,47,63,126,97,186,156,48,161,133,0],[160,178,104,97,159,142,99,51,238,197,231,64,226,44,127,242,213,36,210,114,64,167,78,232,37,181,247,120,175,109,220,97,139,0],[160,6,109,40,142,107,137,194,101,49,95,195,9,9,67,94,201,125,238,165,70,88,152,223,116,129,254,242,223,227,194,104,66,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,203,74,115,196,67,113,254,236,50,165,82,128,88,172,155,41,236,5,172,165,112,51,191,129,132,179,11,60,163,223,106,21,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,209,128,160,197,234,12,103,110,242,92,69,6,62,162,144,64,92,131,45,135,2,37,58,66,125,63,51,29,138,28,248,78,153,136,119,128,128,128,160,25,13,67,31,199,222,216,107,34,40,142,133,149,184,41,125,236,103,176,235,125,80,186,176,3,203,64,65,134,5,222,1,160,167,63,90,119,245,124,235,222,105,144,183,18,93,239,206,233,79,197,80,131,11,214,234,47,63,126,97,186,156,48,161,133,160,178,104,97,159,142,99,51,238,197,231,64,226,44,127,242,213,36,210,114,64,167,78,232,37,181,247,120,175,109,220,97,139,160,6,109,40,142,107,137,194,101,49,95,195,9,9,67,94,201,125,238,165,70,88,152,223,116,129,254,242,223,227,194,104,66,128,160,203,74,115,196,67,113,254,236,50,165,82,128,88,172,155,41,236,5,172,165,112,51,191,129,132,179,11,60,163,223,106,21,128,128,128,128,128,128],[248,209,128,160,37,205,37,202,117,175,55,124,141,76,43,251,13,233,84,76,55,174,108,137,120,244,47,179,0,95,3,132,172,146,236,182,128,128,128,160,25,13,67,31,199,222,216,107,34,40,142,133,149,184,41,125,236,103,176,235,125,80,186,176,3,203,64,65,134,5,222,1,160,167,63,90,119,245,124,235,222,105,144,183,18,93,239,206,233,79,197,80,131,11,214,234,47,63,126,97,186,156,48,161,133,160,178,104,97,159,142,99,51,238,197,231,64,226,44,127,242,213,36,210,114,64,167,78,232,37,181,247,120,175,109,220,97,139,160,6,109,40,142,107,137,194,101,49,95,195,9,9,67,94,201,125,238,165,70,88,152,223,116,129,254,242,223,227,194,104,66,128,160,203,74,115,196,67,113,254,236,50,165,82,128,88,172,155,41,236,5,172,165,112,51,191,129,132,179,11,60,163,223,106,21,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[170,172,207,18,88,1,56,188,43,188,149,122,168,38,223,78,66,171,129,255],"key":[71,231,145,29,62,148,227,204,33,33,162,231,150,201,153,64,76,184,205,22,90,144,29,188,207,197,100,32,183,247,220,126],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,61,62,148,227,204,33,33,162,231,150,201,153,64,76,184,205,22,90,144,29,188,207,197,100,32,183,247,220,126,0,0,0,0],[157,61,62,148,227,204,33,33,162,231,150,201,153,64,76,184,205,22,90,144,29,188,207,197,100,32,183,247,220,126,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,9,84,15,203,127,153,20,190,241,78,52,251,208,65,232,227,142,92,168,16,165,140,39,119,196,231,131,74,63,196,243,60,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,121,157,99,39,34,97,185,88,103,202,36,124,232,176,198,158,112,8,48,188,82,110,226,136,56,21,114,170,167,1,213,4,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,61,62,148,227,204,33,33,162,231,150,201,153,64,76,184,205,22,90,144,29,188,207,197,100,32,183,247,220,126,0,0,0,0]],"keccak_data":[[248,102,157,61,62,148,227,204,33,33,162,231,150,201,153,64,76,184,205,22,90,144,29,188,207,197,100,32,183,247,220,126,184,70,248,68,128,128,160,9,84,15,203,127,153,20,190,241,78,52,251,208,65,232,227,142,92,168,16,165,140,39,119,196,231,131,74,63,196,243,60,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,61,62,148,227,204,33,33,162,231,150,201,153,64,76,184,205,22,90,144,29,188,207,197,100,32,183,247,220,126,184,70,248,68,128,128,160,121,157,99,39,34,97,185,88,103,202,36,124,232,176,198,158,112,8,48,188,82,110,226,136,56,21,114,170,167,1,213,4,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[170,172,207,18,88,1,56,188,43,188,149,122,168,38,223,78,66,171,129,255]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,189,208,233,93,62,73,198,52,71,170,5,121,44,143,52,80,3,227,97,219,165,147,199,111,44,10,224,215,8,5,39,214,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,169,184,158,55,8,215,67,17,7,135,162,219,160,221,5,17,129,106,64,40,193,232,134,216,205,151,23,215,168,161,234,80,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,160,169,184,158,55,8,215,67,17,7,135,162,219,160,221,5,17,129,106,64,40,193,232,134,216,205,151,23,215,168,161,234,80,128,128,128,128,128,128,128,160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,128,128,128,128,128],[248,81,128,128,128,160,189,208,233,93,62,73,198,52,71,170,5,121,44,143,52,80,3,227,97,219,165,147,199,111,44,10,224,215,8,5,39,214,128,128,128,128,128,128,128,160,204,123,237,30,197,175,26,208,74,15,150,211,15,238,169,175,151,34,192,58,177,202,8,45,196,255,144,212,1,208,149,21,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,236,175,157,122,15,115,242,218,138,108,219,108,108,164,199,183,140,143,182,0,50,40,63,167,62,12,160,144,76,102,29,49,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,144,251,124,202,220,92,31,133,222,150,215,207,225,250,167,226,181,121,66,196,246,55,16,157,64,177,79,73,60,151,194,209,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,141,203,27,132,71,133,121,242,117,169,74,104,137,216,230,118,125,138,242,115,166,118,39,237,209,234,156,251,107,97,244,220,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,160,144,251,124,202,220,92,31,133,222,150,215,207,225,250,167,226,181,121,66,196,246,55,16,157,64,177,79,73,60,151,194,209,128,128,128,128,128,128,128,128,160,141,203,27,132,71,133,121,242,117,169,74,104,137,216,230,118,125,138,242,115,166,118,39,237,209,234,156,251,107,97,244,220,128,128,128,128,128,128],[248,81,128,160,236,175,157,122,15,115,242,218,138,108,219,108,108,164,199,183,140,143,182,0,50,40,63,167,62,12,160,144,76,102,29,49,128,128,128,128,128,128,128,128,160,141,203,27,132,71,133,121,242,117,169,74,104,137,216,230,118,125,138,242,115,166,118,39,237,209,234,156,251,107,97,244,220,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17],"key":[49,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104],"list_rlp_bytes":[[226],[248,67]],"value_rlp_bytes":[[1],[161]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,32,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,0],[160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[226,160,32,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,1],[248,67,160,32,236,194,26,116,94,57,104,160,78,149,112,228,66,91,193,143,168,1,156,104,2,129,150,181,70,209,102,156,32,12,104,161,160,187,239,170,18,88,1,56,188,38,60,149,117,120,38,223,78,36,235,129,201,170,170,170,170,170,170,170,170,170,170,170,170],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/tests/UpdateTwoModifications.json b/zkevm-circuits/src/mpt_circuit/tests/UpdateTwoModifications.json new file mode 100644 index 0000000000..d1889ef101 --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/tests/UpdateTwoModifications.json @@ -0,0 +1 @@ +[{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,12,220,200,131,11,99,241,113,38,48,155,83,27,126,197,128,43,20,60,71,245,146,6,14,136,6,70,32,35,190,225,227,0],[160,188,253,56,169,100,2,17,242,243,234,103,159,67,42,132,225,56,107,6,1,254,5,79,2,128,110,168,245,3,1,122,124,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,242,53,142,209,2,82,55,238,235,240,245,146,164,233,25,218,193,111,191,54,29,125,47,122,203,150,59,247,37,203,201,142,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,91,17,33,207,142,243,30,99,20,173,20,129,191,59,158,186,174,22,77,226,131,140,56,74,194,53,68,176,249,189,108,176,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,91,17,33,207,142,243,30,99,20,173,20,129,191,59,158,186,174,22,77,226,131,140,56,74,194,53,68,176,249,189,108,176,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,242,53,142,209,2,82,55,238,235,240,245,146,164,233,25,218,193,111,191,54,29,125,47,122,203,150,59,247,37,203,201,142,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,241,74,61,103,119,85,240,184,127,193,61,247,232,174,103,210,182,230,195,48,64,136,119,99,2,145,239,59,167,83,220,15,0],[160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,0],[160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,0],[160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,0],[160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,0],[160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,0],[160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,0],[160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,0],[160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,0],[160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,0],[160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,0],[160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,0],[160,236,102,54,166,85,124,27,168,225,101,119,156,164,248,153,23,24,33,109,132,210,182,0,142,98,123,208,228,113,252,131,40,0],[160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,0],[160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,0],[160,3,91,168,70,252,161,34,13,56,101,117,116,0,69,133,33,133,182,68,237,187,94,164,129,197,95,209,251,76,83,82,29,0],[160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,160,236,102,54,166,85,124,27,168,225,101,119,156,164,248,153,23,24,33,109,132,210,182,0,142,98,123,208,228,113,252,131,40,160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,160,3,91,168,70,252,161,34,13,56,101,117,116,0,69,133,33,133,182,68,237,187,94,164,129,197,95,209,251,76,83,82,29,160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,128],[249,2,17,160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,160,241,74,61,103,119,85,240,184,127,193,61,247,232,174,103,210,182,230,195,48,64,136,119,99,2,145,239,59,167,83,220,15,160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,160,3,91,168,70,252,161,34,13,56,101,117,116,0,69,133,33,133,182,68,237,187,94,164,129,197,95,209,251,76,83,82,29,160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,202,102,232,164,91,235,102,94,47,16,91,198,211,144,46,93,209,140,29,37,115,203,45,117,166,202,188,147,19,105,250,95,0],[160,125,134,21,25,148,76,34,108,129,31,190,172,71,105,212,63,117,183,81,247,255,183,238,123,146,18,144,145,23,134,83,181,0],[160,71,157,157,105,224,228,218,1,206,168,66,253,0,205,140,224,117,16,128,248,14,36,178,23,60,194,198,76,132,198,235,103,0],[160,126,222,206,77,7,198,17,169,62,197,24,56,231,50,35,186,202,92,137,109,23,136,85,228,55,56,55,161,173,203,85,157,0],[160,109,150,134,113,91,227,132,232,93,110,56,241,195,74,144,111,104,86,58,32,150,26,246,229,43,169,139,109,147,88,36,197,0],[160,251,95,167,241,15,84,41,26,61,74,17,201,110,210,86,89,93,62,68,72,69,195,152,174,222,208,92,219,112,214,137,230,0],[160,49,166,29,87,20,89,8,214,78,231,18,215,65,84,45,69,196,72,80,169,30,25,141,197,1,189,226,241,66,68,241,96,0],[160,252,125,31,240,143,109,232,181,126,64,79,18,103,37,118,29,21,105,134,132,247,116,248,188,52,101,65,172,197,52,167,129,0],[160,80,1,249,119,135,11,97,101,169,4,42,49,134,235,172,146,253,186,150,169,40,103,161,163,39,50,250,26,69,3,221,165,0],[160,195,61,77,110,236,12,101,138,100,60,5,180,193,127,47,53,120,124,71,65,128,188,84,142,189,76,104,252,246,161,232,246,0],[160,226,128,149,68,248,109,20,97,198,65,80,34,87,75,208,175,255,214,158,219,53,119,181,174,243,165,73,205,200,94,9,59,0],[160,118,145,214,158,5,191,203,190,235,3,196,239,16,127,36,59,71,193,26,85,65,171,168,40,160,21,83,240,218,220,61,68,0],[160,138,189,227,240,9,94,113,211,74,169,110,126,212,35,86,188,16,121,79,58,168,201,227,251,218,75,67,34,128,139,31,197,0],[160,199,5,45,220,63,186,237,162,158,226,123,151,65,104,207,81,113,152,226,234,210,190,218,15,197,224,143,1,118,30,78,136,0],[160,227,220,156,104,221,90,241,110,74,52,161,231,21,157,246,48,148,249,8,39,63,79,142,234,10,10,121,10,139,13,143,87,0],[160,210,188,81,157,60,138,175,117,27,0,51,226,168,174,40,87,104,94,34,232,123,145,186,235,195,20,87,132,36,196,121,184,0],[160,230,20,66,16,216,220,179,92,37,100,104,78,223,146,1,150,15,180,89,34,144,3,21,220,21,38,249,71,142,12,122,31,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,125,134,21,25,148,76,34,108,129,31,190,172,71,105,212,63,117,183,81,247,255,183,238,123,146,18,144,145,23,134,83,181,160,71,157,157,105,224,228,218,1,206,168,66,253,0,205,140,224,117,16,128,248,14,36,178,23,60,194,198,76,132,198,235,103,160,126,222,206,77,7,198,17,169,62,197,24,56,231,50,35,186,202,92,137,109,23,136,85,228,55,56,55,161,173,203,85,157,160,109,150,134,113,91,227,132,232,93,110,56,241,195,74,144,111,104,86,58,32,150,26,246,229,43,169,139,109,147,88,36,197,160,251,95,167,241,15,84,41,26,61,74,17,201,110,210,86,89,93,62,68,72,69,195,152,174,222,208,92,219,112,214,137,230,160,49,166,29,87,20,89,8,214,78,231,18,215,65,84,45,69,196,72,80,169,30,25,141,197,1,189,226,241,66,68,241,96,160,252,125,31,240,143,109,232,181,126,64,79,18,103,37,118,29,21,105,134,132,247,116,248,188,52,101,65,172,197,52,167,129,160,80,1,249,119,135,11,97,101,169,4,42,49,134,235,172,146,253,186,150,169,40,103,161,163,39,50,250,26,69,3,221,165,160,195,61,77,110,236,12,101,138,100,60,5,180,193,127,47,53,120,124,71,65,128,188,84,142,189,76,104,252,246,161,232,246,160,226,128,149,68,248,109,20,97,198,65,80,34,87,75,208,175,255,214,158,219,53,119,181,174,243,165,73,205,200,94,9,59,160,118,145,214,158,5,191,203,190,235,3,196,239,16,127,36,59,71,193,26,85,65,171,168,40,160,21,83,240,218,220,61,68,160,138,189,227,240,9,94,113,211,74,169,110,126,212,35,86,188,16,121,79,58,168,201,227,251,218,75,67,34,128,139,31,197,160,199,5,45,220,63,186,237,162,158,226,123,151,65,104,207,81,113,152,226,234,210,190,218,15,197,224,143,1,118,30,78,136,160,227,220,156,104,221,90,241,110,74,52,161,231,21,157,246,48,148,249,8,39,63,79,142,234,10,10,121,10,139,13,143,87,160,210,188,81,157,60,138,175,117,27,0,51,226,168,174,40,87,104,94,34,232,123,145,186,235,195,20,87,132,36,196,121,184,160,230,20,66,16,216,220,179,92,37,100,104,78,223,146,1,150,15,180,89,34,144,3,21,220,21,38,249,71,142,12,122,31,128],[249,2,17,160,125,134,21,25,148,76,34,108,129,31,190,172,71,105,212,63,117,183,81,247,255,183,238,123,146,18,144,145,23,134,83,181,160,71,157,157,105,224,228,218,1,206,168,66,253,0,205,140,224,117,16,128,248,14,36,178,23,60,194,198,76,132,198,235,103,160,126,222,206,77,7,198,17,169,62,197,24,56,231,50,35,186,202,92,137,109,23,136,85,228,55,56,55,161,173,203,85,157,160,109,150,134,113,91,227,132,232,93,110,56,241,195,74,144,111,104,86,58,32,150,26,246,229,43,169,139,109,147,88,36,197,160,251,95,167,241,15,84,41,26,61,74,17,201,110,210,86,89,93,62,68,72,69,195,152,174,222,208,92,219,112,214,137,230,160,49,166,29,87,20,89,8,214,78,231,18,215,65,84,45,69,196,72,80,169,30,25,141,197,1,189,226,241,66,68,241,96,160,252,125,31,240,143,109,232,181,126,64,79,18,103,37,118,29,21,105,134,132,247,116,248,188,52,101,65,172,197,52,167,129,160,80,1,249,119,135,11,97,101,169,4,42,49,134,235,172,146,253,186,150,169,40,103,161,163,39,50,250,26,69,3,221,165,160,195,61,77,110,236,12,101,138,100,60,5,180,193,127,47,53,120,124,71,65,128,188,84,142,189,76,104,252,246,161,232,246,160,226,128,149,68,248,109,20,97,198,65,80,34,87,75,208,175,255,214,158,219,53,119,181,174,243,165,73,205,200,94,9,59,160,118,145,214,158,5,191,203,190,235,3,196,239,16,127,36,59,71,193,26,85,65,171,168,40,160,21,83,240,218,220,61,68,160,202,102,232,164,91,235,102,94,47,16,91,198,211,144,46,93,209,140,29,37,115,203,45,117,166,202,188,147,19,105,250,95,160,199,5,45,220,63,186,237,162,158,226,123,151,65,104,207,81,113,152,226,234,210,190,218,15,197,224,143,1,118,30,78,136,160,227,220,156,104,221,90,241,110,74,52,161,231,21,157,246,48,148,249,8,39,63,79,142,234,10,10,121,10,139,13,143,87,160,210,188,81,157,60,138,175,117,27,0,51,226,168,174,40,87,104,94,34,232,123,145,186,235,195,20,87,132,36,196,121,184,160,230,20,66,16,216,220,179,92,37,100,104,78,223,146,1,150,15,180,89,34,144,3,21,220,21,38,249,71,142,12,122,31,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,118,71,127,35,168,227,214,144,90,249,253,38,109,0,167,9,11,189,164,199,204,15,152,28,217,108,135,22,252,237,174,78,0],[160,26,187,162,237,23,106,121,97,82,122,107,76,242,18,67,237,148,156,180,75,198,171,211,85,62,86,34,74,167,242,255,134,0],[160,195,189,90,8,101,103,96,113,8,13,127,196,94,67,45,205,113,174,59,159,45,114,128,77,74,211,174,3,14,236,79,18,0],[160,128,161,5,210,87,0,80,210,17,88,126,80,21,111,212,152,71,139,181,56,138,168,217,4,18,137,133,217,216,60,232,31,0],[160,202,84,212,164,47,29,173,99,36,184,70,96,111,189,3,217,167,232,44,47,115,187,102,254,198,152,155,75,237,29,116,206,0],[160,101,205,254,64,54,90,108,63,65,99,231,221,103,129,90,232,59,94,242,204,165,243,101,63,2,190,179,91,14,139,226,205,0],[160,7,227,73,226,65,124,54,35,81,53,54,9,21,180,111,83,37,153,146,135,142,102,231,229,125,95,183,53,234,229,245,58,0],[160,88,204,154,170,68,56,10,123,107,120,76,169,97,203,225,8,46,98,13,49,226,124,117,96,254,229,94,156,123,99,174,100,0],[160,90,208,114,191,8,171,250,36,243,174,229,135,184,235,93,70,65,191,20,96,130,231,175,244,26,13,49,55,16,204,205,117,0],[160,164,143,135,168,218,170,124,44,199,22,172,172,104,37,73,142,171,61,238,207,187,8,4,215,205,209,61,215,140,101,179,250,0],[160,80,179,240,177,83,136,17,124,49,99,182,169,9,254,33,228,127,230,66,243,79,166,110,84,224,224,158,242,143,33,195,244,0],[160,152,84,146,108,152,111,104,56,121,239,253,211,55,23,163,119,220,33,63,208,205,168,111,237,81,99,139,244,15,18,244,116,0],[160,146,201,137,243,43,254,170,197,245,108,170,4,28,98,161,176,108,162,90,24,102,202,44,103,41,117,107,145,213,240,1,148,0],[160,35,6,253,241,96,55,112,126,224,54,87,2,134,48,77,14,114,247,160,27,26,59,154,186,50,91,214,238,93,44,28,32,0],[160,138,181,170,135,120,70,121,11,54,168,145,241,12,188,37,93,12,217,186,68,165,183,11,223,6,142,71,120,53,195,217,146,0],[160,68,176,244,148,187,236,187,6,96,87,53,16,44,73,143,38,66,111,204,84,13,207,64,235,224,13,83,141,102,75,5,80,0],[160,255,135,249,148,116,64,144,42,162,168,102,222,153,188,213,241,18,128,63,172,167,162,17,106,159,211,213,73,161,249,35,114,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,26,187,162,237,23,106,121,97,82,122,107,76,242,18,67,237,148,156,180,75,198,171,211,85,62,86,34,74,167,242,255,134,160,195,189,90,8,101,103,96,113,8,13,127,196,94,67,45,205,113,174,59,159,45,114,128,77,74,211,174,3,14,236,79,18,160,128,161,5,210,87,0,80,210,17,88,126,80,21,111,212,152,71,139,181,56,138,168,217,4,18,137,133,217,216,60,232,31,160,202,84,212,164,47,29,173,99,36,184,70,96,111,189,3,217,167,232,44,47,115,187,102,254,198,152,155,75,237,29,116,206,160,101,205,254,64,54,90,108,63,65,99,231,221,103,129,90,232,59,94,242,204,165,243,101,63,2,190,179,91,14,139,226,205,160,7,227,73,226,65,124,54,35,81,53,54,9,21,180,111,83,37,153,146,135,142,102,231,229,125,95,183,53,234,229,245,58,160,88,204,154,170,68,56,10,123,107,120,76,169,97,203,225,8,46,98,13,49,226,124,117,96,254,229,94,156,123,99,174,100,160,90,208,114,191,8,171,250,36,243,174,229,135,184,235,93,70,65,191,20,96,130,231,175,244,26,13,49,55,16,204,205,117,160,164,143,135,168,218,170,124,44,199,22,172,172,104,37,73,142,171,61,238,207,187,8,4,215,205,209,61,215,140,101,179,250,160,80,179,240,177,83,136,17,124,49,99,182,169,9,254,33,228,127,230,66,243,79,166,110,84,224,224,158,242,143,33,195,244,160,152,84,146,108,152,111,104,56,121,239,253,211,55,23,163,119,220,33,63,208,205,168,111,237,81,99,139,244,15,18,244,116,160,146,201,137,243,43,254,170,197,245,108,170,4,28,98,161,176,108,162,90,24,102,202,44,103,41,117,107,145,213,240,1,148,160,35,6,253,241,96,55,112,126,224,54,87,2,134,48,77,14,114,247,160,27,26,59,154,186,50,91,214,238,93,44,28,32,160,138,181,170,135,120,70,121,11,54,168,145,241,12,188,37,93,12,217,186,68,165,183,11,223,6,142,71,120,53,195,217,146,160,68,176,244,148,187,236,187,6,96,87,53,16,44,73,143,38,66,111,204,84,13,207,64,235,224,13,83,141,102,75,5,80,160,255,135,249,148,116,64,144,42,162,168,102,222,153,188,213,241,18,128,63,172,167,162,17,106,159,211,213,73,161,249,35,114,128],[249,2,17,160,118,71,127,35,168,227,214,144,90,249,253,38,109,0,167,9,11,189,164,199,204,15,152,28,217,108,135,22,252,237,174,78,160,195,189,90,8,101,103,96,113,8,13,127,196,94,67,45,205,113,174,59,159,45,114,128,77,74,211,174,3,14,236,79,18,160,128,161,5,210,87,0,80,210,17,88,126,80,21,111,212,152,71,139,181,56,138,168,217,4,18,137,133,217,216,60,232,31,160,202,84,212,164,47,29,173,99,36,184,70,96,111,189,3,217,167,232,44,47,115,187,102,254,198,152,155,75,237,29,116,206,160,101,205,254,64,54,90,108,63,65,99,231,221,103,129,90,232,59,94,242,204,165,243,101,63,2,190,179,91,14,139,226,205,160,7,227,73,226,65,124,54,35,81,53,54,9,21,180,111,83,37,153,146,135,142,102,231,229,125,95,183,53,234,229,245,58,160,88,204,154,170,68,56,10,123,107,120,76,169,97,203,225,8,46,98,13,49,226,124,117,96,254,229,94,156,123,99,174,100,160,90,208,114,191,8,171,250,36,243,174,229,135,184,235,93,70,65,191,20,96,130,231,175,244,26,13,49,55,16,204,205,117,160,164,143,135,168,218,170,124,44,199,22,172,172,104,37,73,142,171,61,238,207,187,8,4,215,205,209,61,215,140,101,179,250,160,80,179,240,177,83,136,17,124,49,99,182,169,9,254,33,228,127,230,66,243,79,166,110,84,224,224,158,242,143,33,195,244,160,152,84,146,108,152,111,104,56,121,239,253,211,55,23,163,119,220,33,63,208,205,168,111,237,81,99,139,244,15,18,244,116,160,146,201,137,243,43,254,170,197,245,108,170,4,28,98,161,176,108,162,90,24,102,202,44,103,41,117,107,145,213,240,1,148,160,35,6,253,241,96,55,112,126,224,54,87,2,134,48,77,14,114,247,160,27,26,59,154,186,50,91,214,238,93,44,28,32,160,138,181,170,135,120,70,121,11,54,168,145,241,12,188,37,93,12,217,186,68,165,183,11,223,6,142,71,120,53,195,217,146,160,68,176,244,148,187,236,187,6,96,87,53,16,44,73,143,38,66,111,204,84,13,207,64,235,224,13,83,141,102,75,5,80,160,255,135,249,148,116,64,144,42,162,168,102,222,153,188,213,241,18,128,63,172,167,162,17,106,159,211,213,73,161,249,35,114,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,155,177,169,178,207,25,115,178,220,237,213,105,61,99,63,204,11,40,200,146,38,126,99,253,174,82,103,206,143,115,171,178,0],[160,201,74,13,88,41,184,70,77,128,44,60,141,143,0,249,230,36,175,159,57,82,243,216,53,24,144,85,58,51,3,221,192,0],[160,30,252,92,85,186,88,238,59,120,224,213,142,217,57,166,9,110,91,44,215,176,156,103,42,21,149,35,201,163,53,161,214,0],[160,182,131,81,90,235,179,229,171,82,90,216,94,104,92,118,199,28,217,251,33,72,34,214,219,112,250,144,230,66,161,235,124,0],[160,38,36,255,222,210,228,111,43,108,59,6,129,142,143,164,16,101,68,73,158,137,156,252,36,97,111,2,47,11,88,74,137,0],[160,86,108,16,212,154,199,179,123,7,68,140,79,186,19,178,72,5,108,78,199,184,66,55,122,236,94,45,111,152,209,100,204,0],[160,8,44,168,138,142,220,115,97,116,47,244,112,50,126,109,130,47,191,98,56,17,12,46,32,226,198,101,255,123,80,41,9,0],[160,149,66,87,246,81,7,169,104,20,176,78,172,62,67,199,177,247,222,147,50,139,14,163,168,81,5,127,143,32,179,202,124,0],[160,156,35,147,112,152,222,157,250,178,31,105,229,151,90,242,78,224,8,90,166,248,203,138,217,249,98,101,187,69,208,195,186,0],[160,235,70,63,42,145,65,172,52,149,163,110,28,162,64,38,10,45,148,136,98,143,146,202,23,147,56,249,91,33,61,7,180,0],[160,41,176,152,154,156,79,96,95,106,117,53,179,16,166,126,139,128,5,76,236,225,140,233,147,93,130,38,96,36,211,102,147,0],[160,33,174,166,200,193,116,43,170,104,204,122,205,211,139,211,132,16,152,249,200,223,211,198,16,145,240,213,161,103,114,103,247,0],[160,246,131,82,23,125,78,177,92,5,35,11,239,241,30,114,3,173,48,117,59,221,162,34,41,195,136,188,39,101,158,41,26,0],[160,165,205,63,186,2,162,214,26,42,213,218,184,107,178,211,130,46,5,51,134,230,7,44,65,51,247,32,178,110,10,36,11,0],[160,192,226,195,87,143,249,17,187,202,196,51,79,225,75,32,243,167,21,80,20,8,79,66,11,254,98,251,153,51,106,103,69,0],[160,115,7,228,239,195,15,90,20,25,106,49,253,95,138,5,51,143,22,159,156,200,242,230,21,36,168,65,144,147,65,129,100,0],[160,84,157,218,127,239,160,140,65,236,101,138,169,111,204,65,187,133,68,170,212,72,238,19,168,181,30,128,108,91,219,149,183,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,201,74,13,88,41,184,70,77,128,44,60,141,143,0,249,230,36,175,159,57,82,243,216,53,24,144,85,58,51,3,221,192,160,30,252,92,85,186,88,238,59,120,224,213,142,217,57,166,9,110,91,44,215,176,156,103,42,21,149,35,201,163,53,161,214,160,182,131,81,90,235,179,229,171,82,90,216,94,104,92,118,199,28,217,251,33,72,34,214,219,112,250,144,230,66,161,235,124,160,38,36,255,222,210,228,111,43,108,59,6,129,142,143,164,16,101,68,73,158,137,156,252,36,97,111,2,47,11,88,74,137,160,86,108,16,212,154,199,179,123,7,68,140,79,186,19,178,72,5,108,78,199,184,66,55,122,236,94,45,111,152,209,100,204,160,8,44,168,138,142,220,115,97,116,47,244,112,50,126,109,130,47,191,98,56,17,12,46,32,226,198,101,255,123,80,41,9,160,149,66,87,246,81,7,169,104,20,176,78,172,62,67,199,177,247,222,147,50,139,14,163,168,81,5,127,143,32,179,202,124,160,156,35,147,112,152,222,157,250,178,31,105,229,151,90,242,78,224,8,90,166,248,203,138,217,249,98,101,187,69,208,195,186,160,235,70,63,42,145,65,172,52,149,163,110,28,162,64,38,10,45,148,136,98,143,146,202,23,147,56,249,91,33,61,7,180,160,41,176,152,154,156,79,96,95,106,117,53,179,16,166,126,139,128,5,76,236,225,140,233,147,93,130,38,96,36,211,102,147,160,33,174,166,200,193,116,43,170,104,204,122,205,211,139,211,132,16,152,249,200,223,211,198,16,145,240,213,161,103,114,103,247,160,246,131,82,23,125,78,177,92,5,35,11,239,241,30,114,3,173,48,117,59,221,162,34,41,195,136,188,39,101,158,41,26,160,165,205,63,186,2,162,214,26,42,213,218,184,107,178,211,130,46,5,51,134,230,7,44,65,51,247,32,178,110,10,36,11,160,192,226,195,87,143,249,17,187,202,196,51,79,225,75,32,243,167,21,80,20,8,79,66,11,254,98,251,153,51,106,103,69,160,115,7,228,239,195,15,90,20,25,106,49,253,95,138,5,51,143,22,159,156,200,242,230,21,36,168,65,144,147,65,129,100,160,84,157,218,127,239,160,140,65,236,101,138,169,111,204,65,187,133,68,170,212,72,238,19,168,181,30,128,108,91,219,149,183,128],[249,2,17,160,201,74,13,88,41,184,70,77,128,44,60,141,143,0,249,230,36,175,159,57,82,243,216,53,24,144,85,58,51,3,221,192,160,30,252,92,85,186,88,238,59,120,224,213,142,217,57,166,9,110,91,44,215,176,156,103,42,21,149,35,201,163,53,161,214,160,182,131,81,90,235,179,229,171,82,90,216,94,104,92,118,199,28,217,251,33,72,34,214,219,112,250,144,230,66,161,235,124,160,38,36,255,222,210,228,111,43,108,59,6,129,142,143,164,16,101,68,73,158,137,156,252,36,97,111,2,47,11,88,74,137,160,86,108,16,212,154,199,179,123,7,68,140,79,186,19,178,72,5,108,78,199,184,66,55,122,236,94,45,111,152,209,100,204,160,155,177,169,178,207,25,115,178,220,237,213,105,61,99,63,204,11,40,200,146,38,126,99,253,174,82,103,206,143,115,171,178,160,149,66,87,246,81,7,169,104,20,176,78,172,62,67,199,177,247,222,147,50,139,14,163,168,81,5,127,143,32,179,202,124,160,156,35,147,112,152,222,157,250,178,31,105,229,151,90,242,78,224,8,90,166,248,203,138,217,249,98,101,187,69,208,195,186,160,235,70,63,42,145,65,172,52,149,163,110,28,162,64,38,10,45,148,136,98,143,146,202,23,147,56,249,91,33,61,7,180,160,41,176,152,154,156,79,96,95,106,117,53,179,16,166,126,139,128,5,76,236,225,140,233,147,93,130,38,96,36,211,102,147,160,33,174,166,200,193,116,43,170,104,204,122,205,211,139,211,132,16,152,249,200,223,211,198,16,145,240,213,161,103,114,103,247,160,246,131,82,23,125,78,177,92,5,35,11,239,241,30,114,3,173,48,117,59,221,162,34,41,195,136,188,39,101,158,41,26,160,165,205,63,186,2,162,214,26,42,213,218,184,107,178,211,130,46,5,51,134,230,7,44,65,51,247,32,178,110,10,36,11,160,192,226,195,87,143,249,17,187,202,196,51,79,225,75,32,243,167,21,80,20,8,79,66,11,254,98,251,153,51,106,103,69,160,115,7,228,239,195,15,90,20,25,106,49,253,95,138,5,51,143,22,159,156,200,242,230,21,36,168,65,144,147,65,129,100,160,84,157,218,127,239,160,140,65,236,101,138,169,111,204,65,187,133,68,170,212,72,238,19,168,181,30,128,108,91,219,149,183,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,123,171,42,213,155,121,113,37,156,12,93,15,148,14,156,94,140,247,237,156,1,226,58,29,74,49,252,242,231,92,226,186,0],[160,0,60,239,195,90,41,35,145,71,234,254,226,95,214,157,137,249,69,51,46,116,43,172,197,209,106,62,107,13,134,118,12,0],[160,7,214,73,225,45,125,70,176,49,93,46,135,187,246,2,61,183,208,247,221,171,46,83,6,128,133,22,210,225,167,12,37,0],[160,29,88,219,67,109,5,1,241,225,154,220,207,78,188,163,225,231,89,62,34,116,154,46,13,83,23,24,59,159,65,38,74,0],[160,130,244,97,0,144,113,26,189,84,140,251,10,58,239,176,49,52,232,144,60,157,64,196,120,135,238,127,214,211,2,113,50,0],[160,4,137,113,20,238,132,102,100,100,29,39,244,133,178,220,183,170,31,35,178,129,205,69,155,252,119,243,44,166,230,179,70,0],[160,158,112,50,206,63,122,189,110,174,190,192,159,219,94,187,205,2,19,6,149,233,30,249,214,239,88,42,47,241,158,212,241,0],[160,139,177,70,74,121,27,54,183,246,177,214,132,90,25,96,203,123,48,130,3,201,77,179,186,165,180,193,11,103,111,250,67,0],[160,119,185,133,18,119,245,43,92,66,104,198,123,172,48,56,26,148,253,76,127,186,243,26,34,29,135,57,229,42,190,35,242,0],[160,49,199,77,37,182,66,131,145,200,81,42,32,117,88,165,127,108,181,220,174,253,22,61,73,37,219,95,162,125,30,202,47,0],[160,94,39,91,173,139,183,90,208,86,51,72,72,4,200,124,24,108,62,147,41,211,29,234,48,180,55,10,48,173,57,11,152,0],[160,38,74,194,250,157,49,162,80,68,11,249,87,137,126,205,203,198,124,212,5,80,21,173,34,105,17,232,53,229,184,112,169,0],[160,214,242,56,104,19,113,93,205,196,168,196,139,239,159,220,184,92,225,43,223,135,164,201,197,243,18,57,180,227,22,97,223,0],[160,238,12,160,145,45,78,200,230,235,210,199,203,205,223,25,224,105,52,161,176,115,72,6,35,236,182,72,52,155,199,54,219,0],[160,111,118,2,77,94,56,177,212,139,134,29,143,147,111,81,240,101,171,10,232,166,243,98,134,217,253,123,216,2,110,210,105,0],[160,198,81,63,253,42,110,69,175,197,188,81,39,194,60,176,138,85,220,164,47,130,126,45,169,71,172,210,173,243,220,141,141,0],[160,160,167,52,10,186,217,166,143,254,229,248,207,108,139,204,25,40,89,252,48,113,47,218,210,101,203,152,120,152,146,118,47,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,0,60,239,195,90,41,35,145,71,234,254,226,95,214,157,137,249,69,51,46,116,43,172,197,209,106,62,107,13,134,118,12,160,7,214,73,225,45,125,70,176,49,93,46,135,187,246,2,61,183,208,247,221,171,46,83,6,128,133,22,210,225,167,12,37,160,29,88,219,67,109,5,1,241,225,154,220,207,78,188,163,225,231,89,62,34,116,154,46,13,83,23,24,59,159,65,38,74,160,130,244,97,0,144,113,26,189,84,140,251,10,58,239,176,49,52,232,144,60,157,64,196,120,135,238,127,214,211,2,113,50,160,4,137,113,20,238,132,102,100,100,29,39,244,133,178,220,183,170,31,35,178,129,205,69,155,252,119,243,44,166,230,179,70,160,158,112,50,206,63,122,189,110,174,190,192,159,219,94,187,205,2,19,6,149,233,30,249,214,239,88,42,47,241,158,212,241,160,139,177,70,74,121,27,54,183,246,177,214,132,90,25,96,203,123,48,130,3,201,77,179,186,165,180,193,11,103,111,250,67,160,119,185,133,18,119,245,43,92,66,104,198,123,172,48,56,26,148,253,76,127,186,243,26,34,29,135,57,229,42,190,35,242,160,49,199,77,37,182,66,131,145,200,81,42,32,117,88,165,127,108,181,220,174,253,22,61,73,37,219,95,162,125,30,202,47,160,94,39,91,173,139,183,90,208,86,51,72,72,4,200,124,24,108,62,147,41,211,29,234,48,180,55,10,48,173,57,11,152,160,38,74,194,250,157,49,162,80,68,11,249,87,137,126,205,203,198,124,212,5,80,21,173,34,105,17,232,53,229,184,112,169,160,214,242,56,104,19,113,93,205,196,168,196,139,239,159,220,184,92,225,43,223,135,164,201,197,243,18,57,180,227,22,97,223,160,238,12,160,145,45,78,200,230,235,210,199,203,205,223,25,224,105,52,161,176,115,72,6,35,236,182,72,52,155,199,54,219,160,111,118,2,77,94,56,177,212,139,134,29,143,147,111,81,240,101,171,10,232,166,243,98,134,217,253,123,216,2,110,210,105,160,198,81,63,253,42,110,69,175,197,188,81,39,194,60,176,138,85,220,164,47,130,126,45,169,71,172,210,173,243,220,141,141,160,160,167,52,10,186,217,166,143,254,229,248,207,108,139,204,25,40,89,252,48,113,47,218,210,101,203,152,120,152,146,118,47,128],[249,2,17,160,0,60,239,195,90,41,35,145,71,234,254,226,95,214,157,137,249,69,51,46,116,43,172,197,209,106,62,107,13,134,118,12,160,7,214,73,225,45,125,70,176,49,93,46,135,187,246,2,61,183,208,247,221,171,46,83,6,128,133,22,210,225,167,12,37,160,29,88,219,67,109,5,1,241,225,154,220,207,78,188,163,225,231,89,62,34,116,154,46,13,83,23,24,59,159,65,38,74,160,130,244,97,0,144,113,26,189,84,140,251,10,58,239,176,49,52,232,144,60,157,64,196,120,135,238,127,214,211,2,113,50,160,4,137,113,20,238,132,102,100,100,29,39,244,133,178,220,183,170,31,35,178,129,205,69,155,252,119,243,44,166,230,179,70,160,158,112,50,206,63,122,189,110,174,190,192,159,219,94,187,205,2,19,6,149,233,30,249,214,239,88,42,47,241,158,212,241,160,139,177,70,74,121,27,54,183,246,177,214,132,90,25,96,203,123,48,130,3,201,77,179,186,165,180,193,11,103,111,250,67,160,119,185,133,18,119,245,43,92,66,104,198,123,172,48,56,26,148,253,76,127,186,243,26,34,29,135,57,229,42,190,35,242,160,49,199,77,37,182,66,131,145,200,81,42,32,117,88,165,127,108,181,220,174,253,22,61,73,37,219,95,162,125,30,202,47,160,123,171,42,213,155,121,113,37,156,12,93,15,148,14,156,94,140,247,237,156,1,226,58,29,74,49,252,242,231,92,226,186,160,38,74,194,250,157,49,162,80,68,11,249,87,137,126,205,203,198,124,212,5,80,21,173,34,105,17,232,53,229,184,112,169,160,214,242,56,104,19,113,93,205,196,168,196,139,239,159,220,184,92,225,43,223,135,164,201,197,243,18,57,180,227,22,97,223,160,238,12,160,145,45,78,200,230,235,210,199,203,205,223,25,224,105,52,161,176,115,72,6,35,236,182,72,52,155,199,54,219,160,111,118,2,77,94,56,177,212,139,134,29,143,147,111,81,240,101,171,10,232,166,243,98,134,217,253,123,216,2,110,210,105,160,198,81,63,253,42,110,69,175,197,188,81,39,194,60,176,138,85,220,164,47,130,126,45,169,71,172,210,173,243,220,141,141,160,160,167,52,10,186,217,166,143,254,229,248,207,108,139,204,25,40,89,252,48,113,47,218,210,101,203,152,120,152,146,118,47,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[248,241],[248,241]]}},"account":null,"storage":null,"values":[[160,95,174,59,239,229,74,221,53,227,115,207,137,94,29,119,126,56,209,55,198,212,179,38,213,219,36,111,62,46,43,176,168,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,164,92,78,34,81,137,173,236,78,208,145,118,128,60,46,5,176,8,229,165,42,222,110,4,252,228,93,243,26,160,241,85,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,60,157,212,182,167,69,206,32,151,2,14,23,149,67,58,187,84,249,195,159,106,68,203,199,199,65,194,33,215,102,71,138,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,21,230,18,20,253,84,192,151,178,53,157,0,9,105,229,121,222,71,120,109,159,109,9,218,254,1,50,139,117,216,194,252,0],[160,229,29,220,149,183,173,68,40,11,103,39,76,251,20,162,242,21,49,103,245,160,99,143,218,74,196,2,61,51,34,105,123,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,140,67,252,58,164,68,143,34,163,138,133,54,27,218,38,80,20,142,115,221,100,73,161,165,75,83,53,8,58,236,1,0],[160,149,169,206,0,129,86,168,48,42,127,100,73,109,90,171,56,216,28,132,44,167,14,46,189,224,213,37,0,234,165,140,236,0],[160,42,63,45,28,165,209,201,220,231,99,153,208,48,174,250,66,196,18,123,250,55,107,64,178,159,49,190,84,159,179,138,235,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,241,128,160,164,92,78,34,81,137,173,236,78,208,145,118,128,60,46,5,176,8,229,165,42,222,110,4,252,228,93,243,26,160,241,85,128,160,60,157,212,182,167,69,206,32,151,2,14,23,149,67,58,187,84,249,195,159,106,68,203,199,199,65,194,33,215,102,71,138,128,128,160,21,230,18,20,253,84,192,151,178,53,157,0,9,105,229,121,222,71,120,109,159,109,9,218,254,1,50,139,117,216,194,252,160,229,29,220,149,183,173,68,40,11,103,39,76,251,20,162,242,21,49,103,245,160,99,143,218,74,196,2,61,51,34,105,123,128,160,0,140,67,252,58,164,68,143,34,163,138,133,54,27,218,38,80,20,142,115,221,100,73,161,165,75,83,53,8,58,236,1,160,149,169,206,0,129,86,168,48,42,127,100,73,109,90,171,56,216,28,132,44,167,14,46,189,224,213,37,0,234,165,140,236,160,42,63,45,28,165,209,201,220,231,99,153,208,48,174,250,66,196,18,123,250,55,107,64,178,159,49,190,84,159,179,138,235,128,128,128,128,128],[248,241,128,160,95,174,59,239,229,74,221,53,227,115,207,137,94,29,119,126,56,209,55,198,212,179,38,213,219,36,111,62,46,43,176,168,128,160,60,157,212,182,167,69,206,32,151,2,14,23,149,67,58,187,84,249,195,159,106,68,203,199,199,65,194,33,215,102,71,138,128,128,160,21,230,18,20,253,84,192,151,178,53,157,0,9,105,229,121,222,71,120,109,159,109,9,218,254,1,50,139,117,216,194,252,160,229,29,220,149,183,173,68,40,11,103,39,76,251,20,162,242,21,49,103,245,160,99,143,218,74,196,2,61,51,34,105,123,128,160,0,140,67,252,58,164,68,143,34,163,138,133,54,27,218,38,80,20,142,115,221,100,73,161,165,75,83,53,8,58,236,1,160,149,169,206,0,129,86,168,48,42,127,100,73,109,90,171,56,216,28,132,44,167,14,46,189,224,213,37,0,234,165,140,236,160,42,63,45,28,165,209,201,220,231,99,153,208,48,174,250,66,196,18,123,250,55,107,64,178,159,49,190,84,159,179,138,235,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,52,4,37,146,118,69,49,114,184,159,37,243,255,228,220,196,35,8,171,49,38,162,66,31,212,58,224,231,218,211,184,144,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,144,48,115,239,88,53,180,108,71,36,183,251,218,38,71,26,8,89,197,32,24,4,70,152,114,2,183,162,126,72,33,227,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,251,153,39,224,146,12,96,214,202,199,242,200,161,197,62,97,33,130,168,28,76,148,143,8,6,221,111,38,197,246,94,81,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,160,144,48,115,239,88,53,180,108,71,36,183,251,218,38,71,26,8,89,197,32,24,4,70,152,114,2,183,162,126,72,33,227,128,128,128,128,128,128,128,160,251,153,39,224,146,12,96,214,202,199,242,200,161,197,62,97,33,130,168,28,76,148,143,8,6,221,111,38,197,246,94,81,128,128,128,128,128,128,128],[248,81,128,160,144,48,115,239,88,53,180,108,71,36,183,251,218,38,71,26,8,89,197,32,24,4,70,152,114,2,183,162,126,72,33,227,128,128,128,128,128,128,128,160,52,4,37,146,118,69,49,114,184,159,37,243,255,228,220,196,35,8,171,49,38,162,66,31,212,58,224,231,218,211,184,144,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[170,172,207,18,88,1,56,188,43,188,238,234,161,17,223,78,66,171,129,255],"key":[187,176,89,25,94,161,196,62,242,155,22,174,238,170,32,29,45,107,194,210,205,38,230,21,112,4,40,92,60,227,225,116],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,32,94,161,196,62,242,155,22,174,238,170,32,29,45,107,194,210,205,38,230,21,112,4,40,92,60,227,225,116,0,0,0,0],[157,32,94,161,196,62,242,155,22,174,238,170,32,29,45,107,194,210,205,38,230,21,112,4,40,92,60,227,225,116,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,211,193,60,172,211,5,56,197,142,83,128,89,64,43,239,126,252,208,254,86,205,43,118,150,9,91,97,35,134,86,23,79,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,115,101,31,4,216,67,253,144,32,4,150,223,147,248,67,66,137,178,8,163,165,90,240,58,237,161,156,222,22,64,213,241,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,32,94,161,196,62,242,155,22,174,238,170,32,29,45,107,194,210,205,38,230,21,112,4,40,92,60,227,225,116,0,0,0,0]],"keccak_data":[[248,102,157,32,94,161,196,62,242,155,22,174,238,170,32,29,45,107,194,210,205,38,230,21,112,4,40,92,60,227,225,116,184,70,248,68,128,128,160,211,193,60,172,211,5,56,197,142,83,128,89,64,43,239,126,252,208,254,86,205,43,118,150,9,91,97,35,134,86,23,79,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,32,94,161,196,62,242,155,22,174,238,170,32,29,45,107,194,210,205,38,230,21,112,4,40,92,60,227,225,116,184,70,248,68,128,128,160,115,101,31,4,216,67,253,144,32,4,150,223,147,248,67,66,137,178,8,163,165,90,240,58,237,161,156,222,22,64,213,241,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[170,172,207,18,88,1,56,188,43,188,238,234,161,17,223,78,66,171,129,255]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,88,197,127,237,244,146,28,57,104,36,96,69,159,84,254,170,28,196,41,183,253,107,213,32,170,141,111,191,30,100,117,55,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,34,39,131,73,65,47,37,211,142,206,231,172,16,11,203,33,107,30,7,213,226,2,174,55,216,4,117,220,10,186,68,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,55,235,85,86,230,197,53,159,28,141,120,87,82,57,4,132,185,12,24,158,142,210,106,188,12,87,179,231,52,16,126,229,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,160,32,34,39,131,73,65,47,37,211,142,206,231,172,16,11,203,33,107,30,7,213,226,2,174,55,216,4,117,220,10,186,68,128,128,128,128,128,128,128,160,55,235,85,86,230,197,53,159,28,141,120,87,82,57,4,132,185,12,24,158,142,210,106,188,12,87,179,231,52,16,126,229,128,128,128,128,128],[248,81,128,128,128,160,32,34,39,131,73,65,47,37,211,142,206,231,172,16,11,203,33,107,30,7,213,226,2,174,55,216,4,117,220,10,186,68,128,128,128,128,128,128,128,160,88,197,127,237,244,146,28,57,104,36,96,69,159,84,254,170,28,196,41,183,253,107,213,32,170,141,111,191,30,100,117,55,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18],"key":[187,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68],"list_rlp_bytes":[[226],[226]],"value_rlp_bytes":[[1],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,59,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,59,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[226,160,59,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,1],[226,160,59,138,106,70,105,186,37,13,38,205,122,69,158,202,157,33,95,131,7,227,58,235,229,3,121,188,90,54,23,236,52,68,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]},{"start":{"disable_preimage_check":false,"proof_type":"StorageChanged"},"extension_branch":null,"account":null,"storage":null,"values":[[160,188,253,56,169,100,2,17,242,243,234,103,159,67,42,132,225,56,107,6,1,254,5,79,2,128,110,168,245,3,1,122,124,0],[160,154,135,11,223,165,94,104,54,161,51,125,105,28,1,166,45,35,139,75,88,41,220,15,14,70,47,182,195,13,183,222,216,0]],"keccak_data":[]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,0,212,25,109,31,173,7,116,130,254,67,241,114,58,15,87,166,61,19,160,171,123,226,131,31,63,33,241,243,231,125,49,0],[160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,0],[160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,0],[160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,0],[160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,0],[160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,0],[160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,0],[160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,0],[160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,0],[160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,0],[160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,0],[160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,0],[160,242,53,142,209,2,82,55,238,235,240,245,146,164,233,25,218,193,111,191,54,29,125,47,122,203,150,59,247,37,203,201,142,0],[160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,0],[160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,0],[160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,0],[160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,242,53,142,209,2,82,55,238,235,240,245,146,164,233,25,218,193,111,191,54,29,125,47,122,203,150,59,247,37,203,201,142,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128],[249,2,17,160,215,178,43,142,72,221,147,48,230,157,99,126,109,240,144,184,54,167,1,19,157,71,126,226,97,100,220,221,118,5,202,114,160,195,19,38,251,242,179,135,46,118,82,177,213,78,156,167,171,134,95,6,233,153,168,219,176,131,34,215,213,95,252,168,165,160,242,119,75,182,209,50,158,172,168,239,218,202,172,144,155,94,44,154,149,92,253,83,150,12,4,176,33,46,25,36,170,225,160,156,18,160,254,15,159,132,100,9,112,178,98,98,93,76,54,189,166,63,219,45,193,25,238,218,78,235,150,206,67,252,253,160,100,75,99,34,122,170,85,172,143,62,172,142,154,219,40,105,162,136,113,194,41,38,129,211,105,114,94,62,145,244,97,170,160,229,94,177,9,226,34,180,156,33,249,119,163,74,194,218,172,92,90,13,44,22,231,5,100,72,203,19,192,62,46,34,34,160,15,175,179,52,244,84,197,105,112,43,252,115,186,76,237,251,88,5,62,201,157,9,7,153,100,224,202,249,250,183,125,248,160,14,229,239,45,75,116,39,109,41,89,200,43,18,94,204,133,62,175,23,200,68,93,170,95,36,226,233,183,66,98,37,184,160,6,197,49,201,57,39,248,81,26,196,11,167,230,243,100,223,97,38,20,1,226,39,180,161,172,204,67,80,173,223,89,42,160,3,131,195,206,124,22,207,14,142,91,216,135,77,202,69,1,53,115,223,85,52,95,43,227,237,82,138,95,93,70,227,232,160,98,109,64,32,201,140,205,221,164,1,209,57,84,209,249,108,87,101,70,12,37,160,114,139,27,145,104,130,62,183,150,108,160,0,212,25,109,31,173,7,116,130,254,67,241,114,58,15,87,166,61,19,160,171,123,226,131,31,63,33,241,243,231,125,49,160,39,24,29,240,236,191,237,195,74,255,251,61,19,232,218,181,111,83,69,125,70,208,135,182,81,0,125,85,38,21,25,11,160,191,249,76,252,217,172,58,95,133,138,144,243,9,87,191,253,23,150,215,186,153,214,27,17,128,10,154,202,202,43,193,173,160,238,147,22,82,116,71,41,238,84,0,62,40,0,153,205,90,194,234,61,255,205,197,55,0,41,239,197,174,219,163,6,130,160,22,99,129,222,131,163,115,40,32,94,210,97,181,141,77,173,9,184,214,164,50,44,139,113,241,255,7,213,43,8,145,41,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,171,93,83,179,204,85,71,110,198,238,3,233,27,181,24,172,163,85,189,57,66,208,235,213,95,232,239,143,36,115,106,225,0],[160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,0],[160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,0],[160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,0],[160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,0],[160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,0],[160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,0],[160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,0],[160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,0],[160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,0],[160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,0],[160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,0],[160,241,74,61,103,119,85,240,184,127,193,61,247,232,174,103,210,182,230,195,48,64,136,119,99,2,145,239,59,167,83,220,15,0],[160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,0],[160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,0],[160,3,91,168,70,252,161,34,13,56,101,117,116,0,69,133,33,133,182,68,237,187,94,164,129,197,95,209,251,76,83,82,29,0],[160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,160,241,74,61,103,119,85,240,184,127,193,61,247,232,174,103,210,182,230,195,48,64,136,119,99,2,145,239,59,167,83,220,15,160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,160,3,91,168,70,252,161,34,13,56,101,117,116,0,69,133,33,133,182,68,237,187,94,164,129,197,95,209,251,76,83,82,29,160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,128],[249,2,17,160,246,213,201,202,145,70,180,68,45,235,21,79,176,2,175,157,234,193,214,190,40,17,91,88,8,171,10,167,28,194,10,250,160,42,128,26,212,248,99,175,205,255,133,239,169,219,179,199,230,211,20,17,37,155,51,151,213,195,142,143,0,207,81,101,176,160,121,219,239,41,76,92,182,155,47,161,251,146,202,11,151,143,212,232,156,2,56,205,249,61,35,163,54,29,15,130,85,98,160,38,51,184,203,153,53,137,155,130,226,136,55,64,240,136,112,66,211,1,38,187,51,67,75,182,191,122,228,142,201,249,130,160,52,53,216,96,101,199,20,55,137,234,101,91,196,28,40,34,152,212,70,72,234,155,121,38,234,13,52,212,113,132,101,194,160,66,109,68,83,30,181,232,79,91,127,48,73,66,30,56,170,238,44,126,133,71,191,189,117,245,35,35,45,124,3,117,170,160,42,40,40,141,21,163,114,123,160,71,17,214,128,54,96,192,116,12,243,71,141,84,249,118,163,123,53,185,144,167,15,135,160,162,139,152,0,46,151,59,54,128,91,186,161,105,186,123,138,69,112,188,142,156,11,88,90,107,71,60,70,211,199,33,44,160,243,27,71,41,160,253,17,209,76,161,32,213,91,192,208,205,245,23,114,18,220,178,250,4,62,168,188,69,248,155,109,175,160,94,114,218,129,92,7,168,160,23,205,211,134,83,131,122,232,227,14,20,198,251,175,73,34,64,190,251,217,186,67,63,42,160,143,210,179,219,215,165,72,185,164,63,240,192,157,230,224,71,195,85,216,94,185,196,112,187,58,121,226,59,203,90,122,181,160,171,93,83,179,204,85,71,110,198,238,3,233,27,181,24,172,163,85,189,57,66,208,235,213,95,232,239,143,36,115,106,225,160,206,148,132,150,124,106,77,67,140,55,254,176,105,126,21,67,42,6,107,83,49,76,69,112,163,13,59,79,185,231,205,234,160,28,27,38,106,225,154,5,142,197,69,24,85,243,184,116,226,17,100,230,244,127,255,195,123,200,191,31,148,152,140,16,157,160,3,91,168,70,252,161,34,13,56,101,117,116,0,69,133,33,133,182,68,237,187,94,164,129,197,95,209,251,76,83,82,29,160,245,28,77,61,197,66,248,9,150,64,64,130,82,209,132,59,38,210,58,13,94,81,70,197,27,122,126,173,98,243,159,196,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":11,"drifted_index":11,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,238,58,205,147,15,169,73,17,213,42,234,64,236,92,240,115,232,154,171,254,50,255,42,192,133,177,3,2,253,160,242,88,0],[160,125,134,21,25,148,76,34,108,129,31,190,172,71,105,212,63,117,183,81,247,255,183,238,123,146,18,144,145,23,134,83,181,0],[160,71,157,157,105,224,228,218,1,206,168,66,253,0,205,140,224,117,16,128,248,14,36,178,23,60,194,198,76,132,198,235,103,0],[160,126,222,206,77,7,198,17,169,62,197,24,56,231,50,35,186,202,92,137,109,23,136,85,228,55,56,55,161,173,203,85,157,0],[160,109,150,134,113,91,227,132,232,93,110,56,241,195,74,144,111,104,86,58,32,150,26,246,229,43,169,139,109,147,88,36,197,0],[160,251,95,167,241,15,84,41,26,61,74,17,201,110,210,86,89,93,62,68,72,69,195,152,174,222,208,92,219,112,214,137,230,0],[160,49,166,29,87,20,89,8,214,78,231,18,215,65,84,45,69,196,72,80,169,30,25,141,197,1,189,226,241,66,68,241,96,0],[160,252,125,31,240,143,109,232,181,126,64,79,18,103,37,118,29,21,105,134,132,247,116,248,188,52,101,65,172,197,52,167,129,0],[160,80,1,249,119,135,11,97,101,169,4,42,49,134,235,172,146,253,186,150,169,40,103,161,163,39,50,250,26,69,3,221,165,0],[160,195,61,77,110,236,12,101,138,100,60,5,180,193,127,47,53,120,124,71,65,128,188,84,142,189,76,104,252,246,161,232,246,0],[160,226,128,149,68,248,109,20,97,198,65,80,34,87,75,208,175,255,214,158,219,53,119,181,174,243,165,73,205,200,94,9,59,0],[160,118,145,214,158,5,191,203,190,235,3,196,239,16,127,36,59,71,193,26,85,65,171,168,40,160,21,83,240,218,220,61,68,0],[160,202,102,232,164,91,235,102,94,47,16,91,198,211,144,46,93,209,140,29,37,115,203,45,117,166,202,188,147,19,105,250,95,0],[160,199,5,45,220,63,186,237,162,158,226,123,151,65,104,207,81,113,152,226,234,210,190,218,15,197,224,143,1,118,30,78,136,0],[160,227,220,156,104,221,90,241,110,74,52,161,231,21,157,246,48,148,249,8,39,63,79,142,234,10,10,121,10,139,13,143,87,0],[160,210,188,81,157,60,138,175,117,27,0,51,226,168,174,40,87,104,94,34,232,123,145,186,235,195,20,87,132,36,196,121,184,0],[160,230,20,66,16,216,220,179,92,37,100,104,78,223,146,1,150,15,180,89,34,144,3,21,220,21,38,249,71,142,12,122,31,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,125,134,21,25,148,76,34,108,129,31,190,172,71,105,212,63,117,183,81,247,255,183,238,123,146,18,144,145,23,134,83,181,160,71,157,157,105,224,228,218,1,206,168,66,253,0,205,140,224,117,16,128,248,14,36,178,23,60,194,198,76,132,198,235,103,160,126,222,206,77,7,198,17,169,62,197,24,56,231,50,35,186,202,92,137,109,23,136,85,228,55,56,55,161,173,203,85,157,160,109,150,134,113,91,227,132,232,93,110,56,241,195,74,144,111,104,86,58,32,150,26,246,229,43,169,139,109,147,88,36,197,160,251,95,167,241,15,84,41,26,61,74,17,201,110,210,86,89,93,62,68,72,69,195,152,174,222,208,92,219,112,214,137,230,160,49,166,29,87,20,89,8,214,78,231,18,215,65,84,45,69,196,72,80,169,30,25,141,197,1,189,226,241,66,68,241,96,160,252,125,31,240,143,109,232,181,126,64,79,18,103,37,118,29,21,105,134,132,247,116,248,188,52,101,65,172,197,52,167,129,160,80,1,249,119,135,11,97,101,169,4,42,49,134,235,172,146,253,186,150,169,40,103,161,163,39,50,250,26,69,3,221,165,160,195,61,77,110,236,12,101,138,100,60,5,180,193,127,47,53,120,124,71,65,128,188,84,142,189,76,104,252,246,161,232,246,160,226,128,149,68,248,109,20,97,198,65,80,34,87,75,208,175,255,214,158,219,53,119,181,174,243,165,73,205,200,94,9,59,160,118,145,214,158,5,191,203,190,235,3,196,239,16,127,36,59,71,193,26,85,65,171,168,40,160,21,83,240,218,220,61,68,160,202,102,232,164,91,235,102,94,47,16,91,198,211,144,46,93,209,140,29,37,115,203,45,117,166,202,188,147,19,105,250,95,160,199,5,45,220,63,186,237,162,158,226,123,151,65,104,207,81,113,152,226,234,210,190,218,15,197,224,143,1,118,30,78,136,160,227,220,156,104,221,90,241,110,74,52,161,231,21,157,246,48,148,249,8,39,63,79,142,234,10,10,121,10,139,13,143,87,160,210,188,81,157,60,138,175,117,27,0,51,226,168,174,40,87,104,94,34,232,123,145,186,235,195,20,87,132,36,196,121,184,160,230,20,66,16,216,220,179,92,37,100,104,78,223,146,1,150,15,180,89,34,144,3,21,220,21,38,249,71,142,12,122,31,128],[249,2,17,160,125,134,21,25,148,76,34,108,129,31,190,172,71,105,212,63,117,183,81,247,255,183,238,123,146,18,144,145,23,134,83,181,160,71,157,157,105,224,228,218,1,206,168,66,253,0,205,140,224,117,16,128,248,14,36,178,23,60,194,198,76,132,198,235,103,160,126,222,206,77,7,198,17,169,62,197,24,56,231,50,35,186,202,92,137,109,23,136,85,228,55,56,55,161,173,203,85,157,160,109,150,134,113,91,227,132,232,93,110,56,241,195,74,144,111,104,86,58,32,150,26,246,229,43,169,139,109,147,88,36,197,160,251,95,167,241,15,84,41,26,61,74,17,201,110,210,86,89,93,62,68,72,69,195,152,174,222,208,92,219,112,214,137,230,160,49,166,29,87,20,89,8,214,78,231,18,215,65,84,45,69,196,72,80,169,30,25,141,197,1,189,226,241,66,68,241,96,160,252,125,31,240,143,109,232,181,126,64,79,18,103,37,118,29,21,105,134,132,247,116,248,188,52,101,65,172,197,52,167,129,160,80,1,249,119,135,11,97,101,169,4,42,49,134,235,172,146,253,186,150,169,40,103,161,163,39,50,250,26,69,3,221,165,160,195,61,77,110,236,12,101,138,100,60,5,180,193,127,47,53,120,124,71,65,128,188,84,142,189,76,104,252,246,161,232,246,160,226,128,149,68,248,109,20,97,198,65,80,34,87,75,208,175,255,214,158,219,53,119,181,174,243,165,73,205,200,94,9,59,160,118,145,214,158,5,191,203,190,235,3,196,239,16,127,36,59,71,193,26,85,65,171,168,40,160,21,83,240,218,220,61,68,160,238,58,205,147,15,169,73,17,213,42,234,64,236,92,240,115,232,154,171,254,50,255,42,192,133,177,3,2,253,160,242,88,160,199,5,45,220,63,186,237,162,158,226,123,151,65,104,207,81,113,152,226,234,210,190,218,15,197,224,143,1,118,30,78,136,160,227,220,156,104,221,90,241,110,74,52,161,231,21,157,246,48,148,249,8,39,63,79,142,234,10,10,121,10,139,13,143,87,160,210,188,81,157,60,138,175,117,27,0,51,226,168,174,40,87,104,94,34,232,123,145,186,235,195,20,87,132,36,196,121,184,160,230,20,66,16,216,220,179,92,37,100,104,78,223,146,1,150,15,180,89,34,144,3,21,220,21,38,249,71,142,12,122,31,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":0,"drifted_index":0,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,38,47,103,166,222,158,110,181,130,246,207,142,220,226,180,44,128,254,104,16,162,229,217,174,29,200,5,194,97,100,147,140,0],[160,118,71,127,35,168,227,214,144,90,249,253,38,109,0,167,9,11,189,164,199,204,15,152,28,217,108,135,22,252,237,174,78,0],[160,195,189,90,8,101,103,96,113,8,13,127,196,94,67,45,205,113,174,59,159,45,114,128,77,74,211,174,3,14,236,79,18,0],[160,128,161,5,210,87,0,80,210,17,88,126,80,21,111,212,152,71,139,181,56,138,168,217,4,18,137,133,217,216,60,232,31,0],[160,202,84,212,164,47,29,173,99,36,184,70,96,111,189,3,217,167,232,44,47,115,187,102,254,198,152,155,75,237,29,116,206,0],[160,101,205,254,64,54,90,108,63,65,99,231,221,103,129,90,232,59,94,242,204,165,243,101,63,2,190,179,91,14,139,226,205,0],[160,7,227,73,226,65,124,54,35,81,53,54,9,21,180,111,83,37,153,146,135,142,102,231,229,125,95,183,53,234,229,245,58,0],[160,88,204,154,170,68,56,10,123,107,120,76,169,97,203,225,8,46,98,13,49,226,124,117,96,254,229,94,156,123,99,174,100,0],[160,90,208,114,191,8,171,250,36,243,174,229,135,184,235,93,70,65,191,20,96,130,231,175,244,26,13,49,55,16,204,205,117,0],[160,164,143,135,168,218,170,124,44,199,22,172,172,104,37,73,142,171,61,238,207,187,8,4,215,205,209,61,215,140,101,179,250,0],[160,80,179,240,177,83,136,17,124,49,99,182,169,9,254,33,228,127,230,66,243,79,166,110,84,224,224,158,242,143,33,195,244,0],[160,152,84,146,108,152,111,104,56,121,239,253,211,55,23,163,119,220,33,63,208,205,168,111,237,81,99,139,244,15,18,244,116,0],[160,146,201,137,243,43,254,170,197,245,108,170,4,28,98,161,176,108,162,90,24,102,202,44,103,41,117,107,145,213,240,1,148,0],[160,35,6,253,241,96,55,112,126,224,54,87,2,134,48,77,14,114,247,160,27,26,59,154,186,50,91,214,238,93,44,28,32,0],[160,138,181,170,135,120,70,121,11,54,168,145,241,12,188,37,93,12,217,186,68,165,183,11,223,6,142,71,120,53,195,217,146,0],[160,68,176,244,148,187,236,187,6,96,87,53,16,44,73,143,38,66,111,204,84,13,207,64,235,224,13,83,141,102,75,5,80,0],[160,255,135,249,148,116,64,144,42,162,168,102,222,153,188,213,241,18,128,63,172,167,162,17,106,159,211,213,73,161,249,35,114,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,118,71,127,35,168,227,214,144,90,249,253,38,109,0,167,9,11,189,164,199,204,15,152,28,217,108,135,22,252,237,174,78,160,195,189,90,8,101,103,96,113,8,13,127,196,94,67,45,205,113,174,59,159,45,114,128,77,74,211,174,3,14,236,79,18,160,128,161,5,210,87,0,80,210,17,88,126,80,21,111,212,152,71,139,181,56,138,168,217,4,18,137,133,217,216,60,232,31,160,202,84,212,164,47,29,173,99,36,184,70,96,111,189,3,217,167,232,44,47,115,187,102,254,198,152,155,75,237,29,116,206,160,101,205,254,64,54,90,108,63,65,99,231,221,103,129,90,232,59,94,242,204,165,243,101,63,2,190,179,91,14,139,226,205,160,7,227,73,226,65,124,54,35,81,53,54,9,21,180,111,83,37,153,146,135,142,102,231,229,125,95,183,53,234,229,245,58,160,88,204,154,170,68,56,10,123,107,120,76,169,97,203,225,8,46,98,13,49,226,124,117,96,254,229,94,156,123,99,174,100,160,90,208,114,191,8,171,250,36,243,174,229,135,184,235,93,70,65,191,20,96,130,231,175,244,26,13,49,55,16,204,205,117,160,164,143,135,168,218,170,124,44,199,22,172,172,104,37,73,142,171,61,238,207,187,8,4,215,205,209,61,215,140,101,179,250,160,80,179,240,177,83,136,17,124,49,99,182,169,9,254,33,228,127,230,66,243,79,166,110,84,224,224,158,242,143,33,195,244,160,152,84,146,108,152,111,104,56,121,239,253,211,55,23,163,119,220,33,63,208,205,168,111,237,81,99,139,244,15,18,244,116,160,146,201,137,243,43,254,170,197,245,108,170,4,28,98,161,176,108,162,90,24,102,202,44,103,41,117,107,145,213,240,1,148,160,35,6,253,241,96,55,112,126,224,54,87,2,134,48,77,14,114,247,160,27,26,59,154,186,50,91,214,238,93,44,28,32,160,138,181,170,135,120,70,121,11,54,168,145,241,12,188,37,93,12,217,186,68,165,183,11,223,6,142,71,120,53,195,217,146,160,68,176,244,148,187,236,187,6,96,87,53,16,44,73,143,38,66,111,204,84,13,207,64,235,224,13,83,141,102,75,5,80,160,255,135,249,148,116,64,144,42,162,168,102,222,153,188,213,241,18,128,63,172,167,162,17,106,159,211,213,73,161,249,35,114,128],[249,2,17,160,38,47,103,166,222,158,110,181,130,246,207,142,220,226,180,44,128,254,104,16,162,229,217,174,29,200,5,194,97,100,147,140,160,195,189,90,8,101,103,96,113,8,13,127,196,94,67,45,205,113,174,59,159,45,114,128,77,74,211,174,3,14,236,79,18,160,128,161,5,210,87,0,80,210,17,88,126,80,21,111,212,152,71,139,181,56,138,168,217,4,18,137,133,217,216,60,232,31,160,202,84,212,164,47,29,173,99,36,184,70,96,111,189,3,217,167,232,44,47,115,187,102,254,198,152,155,75,237,29,116,206,160,101,205,254,64,54,90,108,63,65,99,231,221,103,129,90,232,59,94,242,204,165,243,101,63,2,190,179,91,14,139,226,205,160,7,227,73,226,65,124,54,35,81,53,54,9,21,180,111,83,37,153,146,135,142,102,231,229,125,95,183,53,234,229,245,58,160,88,204,154,170,68,56,10,123,107,120,76,169,97,203,225,8,46,98,13,49,226,124,117,96,254,229,94,156,123,99,174,100,160,90,208,114,191,8,171,250,36,243,174,229,135,184,235,93,70,65,191,20,96,130,231,175,244,26,13,49,55,16,204,205,117,160,164,143,135,168,218,170,124,44,199,22,172,172,104,37,73,142,171,61,238,207,187,8,4,215,205,209,61,215,140,101,179,250,160,80,179,240,177,83,136,17,124,49,99,182,169,9,254,33,228,127,230,66,243,79,166,110,84,224,224,158,242,143,33,195,244,160,152,84,146,108,152,111,104,56,121,239,253,211,55,23,163,119,220,33,63,208,205,168,111,237,81,99,139,244,15,18,244,116,160,146,201,137,243,43,254,170,197,245,108,170,4,28,98,161,176,108,162,90,24,102,202,44,103,41,117,107,145,213,240,1,148,160,35,6,253,241,96,55,112,126,224,54,87,2,134,48,77,14,114,247,160,27,26,59,154,186,50,91,214,238,93,44,28,32,160,138,181,170,135,120,70,121,11,54,168,145,241,12,188,37,93,12,217,186,68,165,183,11,223,6,142,71,120,53,195,217,146,160,68,176,244,148,187,236,187,6,96,87,53,16,44,73,143,38,66,111,204,84,13,207,64,235,224,13,83,141,102,75,5,80,160,255,135,249,148,116,64,144,42,162,168,102,222,153,188,213,241,18,128,63,172,167,162,17,106,159,211,213,73,161,249,35,114,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":5,"drifted_index":5,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,89,236,75,249,198,41,150,171,8,137,114,163,151,150,71,170,155,193,92,73,237,126,101,253,86,159,97,60,24,245,107,97,0],[160,201,74,13,88,41,184,70,77,128,44,60,141,143,0,249,230,36,175,159,57,82,243,216,53,24,144,85,58,51,3,221,192,0],[160,30,252,92,85,186,88,238,59,120,224,213,142,217,57,166,9,110,91,44,215,176,156,103,42,21,149,35,201,163,53,161,214,0],[160,182,131,81,90,235,179,229,171,82,90,216,94,104,92,118,199,28,217,251,33,72,34,214,219,112,250,144,230,66,161,235,124,0],[160,38,36,255,222,210,228,111,43,108,59,6,129,142,143,164,16,101,68,73,158,137,156,252,36,97,111,2,47,11,88,74,137,0],[160,86,108,16,212,154,199,179,123,7,68,140,79,186,19,178,72,5,108,78,199,184,66,55,122,236,94,45,111,152,209,100,204,0],[160,155,177,169,178,207,25,115,178,220,237,213,105,61,99,63,204,11,40,200,146,38,126,99,253,174,82,103,206,143,115,171,178,0],[160,149,66,87,246,81,7,169,104,20,176,78,172,62,67,199,177,247,222,147,50,139,14,163,168,81,5,127,143,32,179,202,124,0],[160,156,35,147,112,152,222,157,250,178,31,105,229,151,90,242,78,224,8,90,166,248,203,138,217,249,98,101,187,69,208,195,186,0],[160,235,70,63,42,145,65,172,52,149,163,110,28,162,64,38,10,45,148,136,98,143,146,202,23,147,56,249,91,33,61,7,180,0],[160,41,176,152,154,156,79,96,95,106,117,53,179,16,166,126,139,128,5,76,236,225,140,233,147,93,130,38,96,36,211,102,147,0],[160,33,174,166,200,193,116,43,170,104,204,122,205,211,139,211,132,16,152,249,200,223,211,198,16,145,240,213,161,103,114,103,247,0],[160,246,131,82,23,125,78,177,92,5,35,11,239,241,30,114,3,173,48,117,59,221,162,34,41,195,136,188,39,101,158,41,26,0],[160,165,205,63,186,2,162,214,26,42,213,218,184,107,178,211,130,46,5,51,134,230,7,44,65,51,247,32,178,110,10,36,11,0],[160,192,226,195,87,143,249,17,187,202,196,51,79,225,75,32,243,167,21,80,20,8,79,66,11,254,98,251,153,51,106,103,69,0],[160,115,7,228,239,195,15,90,20,25,106,49,253,95,138,5,51,143,22,159,156,200,242,230,21,36,168,65,144,147,65,129,100,0],[160,84,157,218,127,239,160,140,65,236,101,138,169,111,204,65,187,133,68,170,212,72,238,19,168,181,30,128,108,91,219,149,183,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,201,74,13,88,41,184,70,77,128,44,60,141,143,0,249,230,36,175,159,57,82,243,216,53,24,144,85,58,51,3,221,192,160,30,252,92,85,186,88,238,59,120,224,213,142,217,57,166,9,110,91,44,215,176,156,103,42,21,149,35,201,163,53,161,214,160,182,131,81,90,235,179,229,171,82,90,216,94,104,92,118,199,28,217,251,33,72,34,214,219,112,250,144,230,66,161,235,124,160,38,36,255,222,210,228,111,43,108,59,6,129,142,143,164,16,101,68,73,158,137,156,252,36,97,111,2,47,11,88,74,137,160,86,108,16,212,154,199,179,123,7,68,140,79,186,19,178,72,5,108,78,199,184,66,55,122,236,94,45,111,152,209,100,204,160,155,177,169,178,207,25,115,178,220,237,213,105,61,99,63,204,11,40,200,146,38,126,99,253,174,82,103,206,143,115,171,178,160,149,66,87,246,81,7,169,104,20,176,78,172,62,67,199,177,247,222,147,50,139,14,163,168,81,5,127,143,32,179,202,124,160,156,35,147,112,152,222,157,250,178,31,105,229,151,90,242,78,224,8,90,166,248,203,138,217,249,98,101,187,69,208,195,186,160,235,70,63,42,145,65,172,52,149,163,110,28,162,64,38,10,45,148,136,98,143,146,202,23,147,56,249,91,33,61,7,180,160,41,176,152,154,156,79,96,95,106,117,53,179,16,166,126,139,128,5,76,236,225,140,233,147,93,130,38,96,36,211,102,147,160,33,174,166,200,193,116,43,170,104,204,122,205,211,139,211,132,16,152,249,200,223,211,198,16,145,240,213,161,103,114,103,247,160,246,131,82,23,125,78,177,92,5,35,11,239,241,30,114,3,173,48,117,59,221,162,34,41,195,136,188,39,101,158,41,26,160,165,205,63,186,2,162,214,26,42,213,218,184,107,178,211,130,46,5,51,134,230,7,44,65,51,247,32,178,110,10,36,11,160,192,226,195,87,143,249,17,187,202,196,51,79,225,75,32,243,167,21,80,20,8,79,66,11,254,98,251,153,51,106,103,69,160,115,7,228,239,195,15,90,20,25,106,49,253,95,138,5,51,143,22,159,156,200,242,230,21,36,168,65,144,147,65,129,100,160,84,157,218,127,239,160,140,65,236,101,138,169,111,204,65,187,133,68,170,212,72,238,19,168,181,30,128,108,91,219,149,183,128],[249,2,17,160,201,74,13,88,41,184,70,77,128,44,60,141,143,0,249,230,36,175,159,57,82,243,216,53,24,144,85,58,51,3,221,192,160,30,252,92,85,186,88,238,59,120,224,213,142,217,57,166,9,110,91,44,215,176,156,103,42,21,149,35,201,163,53,161,214,160,182,131,81,90,235,179,229,171,82,90,216,94,104,92,118,199,28,217,251,33,72,34,214,219,112,250,144,230,66,161,235,124,160,38,36,255,222,210,228,111,43,108,59,6,129,142,143,164,16,101,68,73,158,137,156,252,36,97,111,2,47,11,88,74,137,160,86,108,16,212,154,199,179,123,7,68,140,79,186,19,178,72,5,108,78,199,184,66,55,122,236,94,45,111,152,209,100,204,160,89,236,75,249,198,41,150,171,8,137,114,163,151,150,71,170,155,193,92,73,237,126,101,253,86,159,97,60,24,245,107,97,160,149,66,87,246,81,7,169,104,20,176,78,172,62,67,199,177,247,222,147,50,139,14,163,168,81,5,127,143,32,179,202,124,160,156,35,147,112,152,222,157,250,178,31,105,229,151,90,242,78,224,8,90,166,248,203,138,217,249,98,101,187,69,208,195,186,160,235,70,63,42,145,65,172,52,149,163,110,28,162,64,38,10,45,148,136,98,143,146,202,23,147,56,249,91,33,61,7,180,160,41,176,152,154,156,79,96,95,106,117,53,179,16,166,126,139,128,5,76,236,225,140,233,147,93,130,38,96,36,211,102,147,160,33,174,166,200,193,116,43,170,104,204,122,205,211,139,211,132,16,152,249,200,223,211,198,16,145,240,213,161,103,114,103,247,160,246,131,82,23,125,78,177,92,5,35,11,239,241,30,114,3,173,48,117,59,221,162,34,41,195,136,188,39,101,158,41,26,160,165,205,63,186,2,162,214,26,42,213,218,184,107,178,211,130,46,5,51,134,230,7,44,65,51,247,32,178,110,10,36,11,160,192,226,195,87,143,249,17,187,202,196,51,79,225,75,32,243,167,21,80,20,8,79,66,11,254,98,251,153,51,106,103,69,160,115,7,228,239,195,15,90,20,25,106,49,253,95,138,5,51,143,22,159,156,200,242,230,21,36,168,65,144,147,65,129,100,160,84,157,218,127,239,160,140,65,236,101,138,169,111,204,65,187,133,68,170,212,72,238,19,168,181,30,128,108,91,219,149,183,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[249,2,17],[249,2,17]]}},"account":null,"storage":null,"values":[[160,80,192,227,190,11,37,208,16,139,112,244,29,86,74,246,75,208,86,244,24,95,169,208,191,141,176,239,26,113,163,212,245,0],[160,0,60,239,195,90,41,35,145,71,234,254,226,95,214,157,137,249,69,51,46,116,43,172,197,209,106,62,107,13,134,118,12,0],[160,7,214,73,225,45,125,70,176,49,93,46,135,187,246,2,61,183,208,247,221,171,46,83,6,128,133,22,210,225,167,12,37,0],[160,29,88,219,67,109,5,1,241,225,154,220,207,78,188,163,225,231,89,62,34,116,154,46,13,83,23,24,59,159,65,38,74,0],[160,130,244,97,0,144,113,26,189,84,140,251,10,58,239,176,49,52,232,144,60,157,64,196,120,135,238,127,214,211,2,113,50,0],[160,4,137,113,20,238,132,102,100,100,29,39,244,133,178,220,183,170,31,35,178,129,205,69,155,252,119,243,44,166,230,179,70,0],[160,158,112,50,206,63,122,189,110,174,190,192,159,219,94,187,205,2,19,6,149,233,30,249,214,239,88,42,47,241,158,212,241,0],[160,139,177,70,74,121,27,54,183,246,177,214,132,90,25,96,203,123,48,130,3,201,77,179,186,165,180,193,11,103,111,250,67,0],[160,119,185,133,18,119,245,43,92,66,104,198,123,172,48,56,26,148,253,76,127,186,243,26,34,29,135,57,229,42,190,35,242,0],[160,49,199,77,37,182,66,131,145,200,81,42,32,117,88,165,127,108,181,220,174,253,22,61,73,37,219,95,162,125,30,202,47,0],[160,123,171,42,213,155,121,113,37,156,12,93,15,148,14,156,94,140,247,237,156,1,226,58,29,74,49,252,242,231,92,226,186,0],[160,38,74,194,250,157,49,162,80,68,11,249,87,137,126,205,203,198,124,212,5,80,21,173,34,105,17,232,53,229,184,112,169,0],[160,214,242,56,104,19,113,93,205,196,168,196,139,239,159,220,184,92,225,43,223,135,164,201,197,243,18,57,180,227,22,97,223,0],[160,238,12,160,145,45,78,200,230,235,210,199,203,205,223,25,224,105,52,161,176,115,72,6,35,236,182,72,52,155,199,54,219,0],[160,111,118,2,77,94,56,177,212,139,134,29,143,147,111,81,240,101,171,10,232,166,243,98,134,217,253,123,216,2,110,210,105,0],[160,198,81,63,253,42,110,69,175,197,188,81,39,194,60,176,138,85,220,164,47,130,126,45,169,71,172,210,173,243,220,141,141,0],[160,160,167,52,10,186,217,166,143,254,229,248,207,108,139,204,25,40,89,252,48,113,47,218,210,101,203,152,120,152,146,118,47,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[249,2,17,160,0,60,239,195,90,41,35,145,71,234,254,226,95,214,157,137,249,69,51,46,116,43,172,197,209,106,62,107,13,134,118,12,160,7,214,73,225,45,125,70,176,49,93,46,135,187,246,2,61,183,208,247,221,171,46,83,6,128,133,22,210,225,167,12,37,160,29,88,219,67,109,5,1,241,225,154,220,207,78,188,163,225,231,89,62,34,116,154,46,13,83,23,24,59,159,65,38,74,160,130,244,97,0,144,113,26,189,84,140,251,10,58,239,176,49,52,232,144,60,157,64,196,120,135,238,127,214,211,2,113,50,160,4,137,113,20,238,132,102,100,100,29,39,244,133,178,220,183,170,31,35,178,129,205,69,155,252,119,243,44,166,230,179,70,160,158,112,50,206,63,122,189,110,174,190,192,159,219,94,187,205,2,19,6,149,233,30,249,214,239,88,42,47,241,158,212,241,160,139,177,70,74,121,27,54,183,246,177,214,132,90,25,96,203,123,48,130,3,201,77,179,186,165,180,193,11,103,111,250,67,160,119,185,133,18,119,245,43,92,66,104,198,123,172,48,56,26,148,253,76,127,186,243,26,34,29,135,57,229,42,190,35,242,160,49,199,77,37,182,66,131,145,200,81,42,32,117,88,165,127,108,181,220,174,253,22,61,73,37,219,95,162,125,30,202,47,160,123,171,42,213,155,121,113,37,156,12,93,15,148,14,156,94,140,247,237,156,1,226,58,29,74,49,252,242,231,92,226,186,160,38,74,194,250,157,49,162,80,68,11,249,87,137,126,205,203,198,124,212,5,80,21,173,34,105,17,232,53,229,184,112,169,160,214,242,56,104,19,113,93,205,196,168,196,139,239,159,220,184,92,225,43,223,135,164,201,197,243,18,57,180,227,22,97,223,160,238,12,160,145,45,78,200,230,235,210,199,203,205,223,25,224,105,52,161,176,115,72,6,35,236,182,72,52,155,199,54,219,160,111,118,2,77,94,56,177,212,139,134,29,143,147,111,81,240,101,171,10,232,166,243,98,134,217,253,123,216,2,110,210,105,160,198,81,63,253,42,110,69,175,197,188,81,39,194,60,176,138,85,220,164,47,130,126,45,169,71,172,210,173,243,220,141,141,160,160,167,52,10,186,217,166,143,254,229,248,207,108,139,204,25,40,89,252,48,113,47,218,210,101,203,152,120,152,146,118,47,128],[249,2,17,160,0,60,239,195,90,41,35,145,71,234,254,226,95,214,157,137,249,69,51,46,116,43,172,197,209,106,62,107,13,134,118,12,160,7,214,73,225,45,125,70,176,49,93,46,135,187,246,2,61,183,208,247,221,171,46,83,6,128,133,22,210,225,167,12,37,160,29,88,219,67,109,5,1,241,225,154,220,207,78,188,163,225,231,89,62,34,116,154,46,13,83,23,24,59,159,65,38,74,160,130,244,97,0,144,113,26,189,84,140,251,10,58,239,176,49,52,232,144,60,157,64,196,120,135,238,127,214,211,2,113,50,160,4,137,113,20,238,132,102,100,100,29,39,244,133,178,220,183,170,31,35,178,129,205,69,155,252,119,243,44,166,230,179,70,160,158,112,50,206,63,122,189,110,174,190,192,159,219,94,187,205,2,19,6,149,233,30,249,214,239,88,42,47,241,158,212,241,160,139,177,70,74,121,27,54,183,246,177,214,132,90,25,96,203,123,48,130,3,201,77,179,186,165,180,193,11,103,111,250,67,160,119,185,133,18,119,245,43,92,66,104,198,123,172,48,56,26,148,253,76,127,186,243,26,34,29,135,57,229,42,190,35,242,160,49,199,77,37,182,66,131,145,200,81,42,32,117,88,165,127,108,181,220,174,253,22,61,73,37,219,95,162,125,30,202,47,160,80,192,227,190,11,37,208,16,139,112,244,29,86,74,246,75,208,86,244,24,95,169,208,191,141,176,239,26,113,163,212,245,160,38,74,194,250,157,49,162,80,68,11,249,87,137,126,205,203,198,124,212,5,80,21,173,34,105,17,232,53,229,184,112,169,160,214,242,56,104,19,113,93,205,196,168,196,139,239,159,220,184,92,225,43,223,135,164,201,197,243,18,57,180,227,22,97,223,160,238,12,160,145,45,78,200,230,235,210,199,203,205,223,25,224,105,52,161,176,115,72,6,35,236,182,72,52,155,199,54,219,160,111,118,2,77,94,56,177,212,139,134,29,143,147,111,81,240,101,171,10,232,166,243,98,134,217,253,123,216,2,110,210,105,160,198,81,63,253,42,110,69,175,197,188,81,39,194,60,176,138,85,220,164,47,130,126,45,169,71,172,210,173,243,220,141,141,160,160,167,52,10,186,217,166,143,254,229,248,207,108,139,204,25,40,89,252,48,113,47,218,210,101,203,152,120,152,146,118,47,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":1,"drifted_index":1,"list_rlp_bytes":[[248,241],[248,241]]}},"account":null,"storage":null,"values":[[160,28,48,199,244,40,102,134,3,48,196,89,19,142,136,163,203,246,144,44,30,112,183,74,134,113,224,175,193,151,84,221,100,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,95,174,59,239,229,74,221,53,227,115,207,137,94,29,119,126,56,209,55,198,212,179,38,213,219,36,111,62,46,43,176,168,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,60,157,212,182,167,69,206,32,151,2,14,23,149,67,58,187,84,249,195,159,106,68,203,199,199,65,194,33,215,102,71,138,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,21,230,18,20,253,84,192,151,178,53,157,0,9,105,229,121,222,71,120,109,159,109,9,218,254,1,50,139,117,216,194,252,0],[160,229,29,220,149,183,173,68,40,11,103,39,76,251,20,162,242,21,49,103,245,160,99,143,218,74,196,2,61,51,34,105,123,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,140,67,252,58,164,68,143,34,163,138,133,54,27,218,38,80,20,142,115,221,100,73,161,165,75,83,53,8,58,236,1,0],[160,149,169,206,0,129,86,168,48,42,127,100,73,109,90,171,56,216,28,132,44,167,14,46,189,224,213,37,0,234,165,140,236,0],[160,42,63,45,28,165,209,201,220,231,99,153,208,48,174,250,66,196,18,123,250,55,107,64,178,159,49,190,84,159,179,138,235,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,241,128,160,95,174,59,239,229,74,221,53,227,115,207,137,94,29,119,126,56,209,55,198,212,179,38,213,219,36,111,62,46,43,176,168,128,160,60,157,212,182,167,69,206,32,151,2,14,23,149,67,58,187,84,249,195,159,106,68,203,199,199,65,194,33,215,102,71,138,128,128,160,21,230,18,20,253,84,192,151,178,53,157,0,9,105,229,121,222,71,120,109,159,109,9,218,254,1,50,139,117,216,194,252,160,229,29,220,149,183,173,68,40,11,103,39,76,251,20,162,242,21,49,103,245,160,99,143,218,74,196,2,61,51,34,105,123,128,160,0,140,67,252,58,164,68,143,34,163,138,133,54,27,218,38,80,20,142,115,221,100,73,161,165,75,83,53,8,58,236,1,160,149,169,206,0,129,86,168,48,42,127,100,73,109,90,171,56,216,28,132,44,167,14,46,189,224,213,37,0,234,165,140,236,160,42,63,45,28,165,209,201,220,231,99,153,208,48,174,250,66,196,18,123,250,55,107,64,178,159,49,190,84,159,179,138,235,128,128,128,128,128],[248,241,128,160,28,48,199,244,40,102,134,3,48,196,89,19,142,136,163,203,246,144,44,30,112,183,74,134,113,224,175,193,151,84,221,100,128,160,60,157,212,182,167,69,206,32,151,2,14,23,149,67,58,187,84,249,195,159,106,68,203,199,199,65,194,33,215,102,71,138,128,128,160,21,230,18,20,253,84,192,151,178,53,157,0,9,105,229,121,222,71,120,109,159,109,9,218,254,1,50,139,117,216,194,252,160,229,29,220,149,183,173,68,40,11,103,39,76,251,20,162,242,21,49,103,245,160,99,143,218,74,196,2,61,51,34,105,123,128,160,0,140,67,252,58,164,68,143,34,163,138,133,54,27,218,38,80,20,142,115,221,100,73,161,165,75,83,53,8,58,236,1,160,149,169,206,0,129,86,168,48,42,127,100,73,109,90,171,56,216,28,132,44,167,14,46,189,224,213,37,0,234,165,140,236,160,42,63,45,28,165,209,201,220,231,99,153,208,48,174,250,66,196,18,123,250,55,107,64,178,159,49,190,84,159,179,138,235,128,128,128,128,128]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":9,"drifted_index":9,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,203,75,155,2,92,98,158,134,128,81,101,193,235,150,99,58,83,202,29,54,172,18,237,102,46,80,2,77,38,138,194,72,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,144,48,115,239,88,53,180,108,71,36,183,251,218,38,71,26,8,89,197,32,24,4,70,152,114,2,183,162,126,72,33,227,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,52,4,37,146,118,69,49,114,184,159,37,243,255,228,220,196,35,8,171,49,38,162,66,31,212,58,224,231,218,211,184,144,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,160,144,48,115,239,88,53,180,108,71,36,183,251,218,38,71,26,8,89,197,32,24,4,70,152,114,2,183,162,126,72,33,227,128,128,128,128,128,128,128,160,52,4,37,146,118,69,49,114,184,159,37,243,255,228,220,196,35,8,171,49,38,162,66,31,212,58,224,231,218,211,184,144,128,128,128,128,128,128,128],[248,81,128,160,144,48,115,239,88,53,180,108,71,36,183,251,218,38,71,26,8,89,197,32,24,4,70,152,114,2,183,162,126,72,33,227,128,128,128,128,128,128,128,160,203,75,155,2,92,98,158,134,128,81,101,193,235,150,99,58,83,202,29,54,172,18,237,102,46,80,2,77,38,138,194,72,128,128,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":{"address":[170,172,207,18,88,1,56,188,43,188,238,234,161,17,223,78,66,171,129,255],"key":[187,176,89,25,94,161,196,62,242,155,22,174,238,170,32,29,45,107,194,210,205,38,230,21,112,4,40,92,60,227,225,116],"list_rlp_bytes":[[248,102],[248,102]],"value_rlp_bytes":[[184,70],[184,70]],"value_list_rlp_bytes":[[248,68],[248,68]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[248,102]},"storage":null,"values":[[157,32,94,161,196,62,242,155,22,174,238,170,32,29,45,107,194,210,205,38,230,21,112,4,40,92,60,227,225,116,0,0,0,0],[157,32,94,161,196,62,242,155,22,174,238,170,32,29,45,107,194,210,205,38,230,21,112,4,40,92,60,227,225,116,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,115,101,31,4,216,67,253,144,32,4,150,223,147,248,67,66,137,178,8,163,165,90,240,58,237,161,156,222,22,64,213,241,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,25,229,69,2,72,204,218,133,9,174,116,191,29,135,209,173,175,51,242,60,121,99,159,225,202,236,166,142,108,116,46,175,0],[160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[157,32,94,161,196,62,242,155,22,174,238,170,32,29,45,107,194,210,205,38,230,21,112,4,40,92,60,227,225,116,0,0,0,0]],"keccak_data":[[248,102,157,32,94,161,196,62,242,155,22,174,238,170,32,29,45,107,194,210,205,38,230,21,112,4,40,92,60,227,225,116,184,70,248,68,128,128,160,115,101,31,4,216,67,253,144,32,4,150,223,147,248,67,66,137,178,8,163,165,90,240,58,237,161,156,222,22,64,213,241,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[248,102,157,32,94,161,196,62,242,155,22,174,238,170,32,29,45,107,194,210,205,38,230,21,112,4,40,92,60,227,225,116,184,70,248,68,128,128,160,25,229,69,2,72,204,218,133,9,174,116,191,29,135,209,173,175,51,242,60,121,99,159,225,202,236,166,142,108,116,46,175,160,197,210,70,1,134,247,35,60,146,126,125,178,220,199,3,192,229,0,182,83,202,130,39,59,123,250,216,4,93,133,164,112],[170,172,207,18,88,1,56,188,43,188,238,234,161,17,223,78,66,171,129,255]]},{"start":null,"extension_branch":{"is_extension":false,"is_placeholder":[false,false],"extension":{"list_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"branch":{"modified_index":3,"drifted_index":3,"list_rlp_bytes":[[248,81],[248,81]]}},"account":null,"storage":null,"values":[[160,165,81,83,100,145,26,113,232,41,53,70,133,150,134,150,98,49,6,4,21,47,83,120,193,112,83,162,217,156,146,203,31,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,32,34,39,131,73,65,47,37,211,142,206,231,172,16,11,203,33,107,30,7,213,226,2,174,55,216,4,117,220,10,186,68,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,88,197,127,237,244,146,28,57,104,36,96,69,159,84,254,170,28,196,41,183,253,107,213,32,170,141,111,191,30,100,117,55,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[248,81,128,128,128,160,32,34,39,131,73,65,47,37,211,142,206,231,172,16,11,203,33,107,30,7,213,226,2,174,55,216,4,117,220,10,186,68,128,128,128,128,128,128,128,160,88,197,127,237,244,146,28,57,104,36,96,69,159,84,254,170,28,196,41,183,253,107,213,32,170,141,111,191,30,100,117,55,128,128,128,128,128],[248,81,128,128,128,160,165,81,83,100,145,26,113,232,41,53,70,133,150,134,150,98,49,6,4,21,47,83,120,193,112,83,162,217,156,146,203,31,128,128,128,128,128,128,128,160,88,197,127,237,244,146,28,57,104,36,96,69,159,84,254,170,28,196,41,183,253,107,213,32,170,141,111,191,30,100,117,55,128,128,128,128,128]]},{"start":null,"extension_branch":null,"account":null,"storage":{"address":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33],"key":[58,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112],"list_rlp_bytes":[[226],[226]],"value_rlp_bytes":[[2],[17]],"drifted_rlp_bytes":[0],"wrong_rlp_bytes":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"values":[[160,58,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,58,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[[226,160,58,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112,2],[226,160,58,99,87,1,44,26,58,224,161,125,48,76,153,32,49,3,130,217,104,235,204,75,23,113,244,28,107,48,66,5,181,112,17],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33]]},{"start":{"disable_preimage_check":false,"proof_type":"Disabled"},"extension_branch":null,"account":null,"storage":null,"values":[[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],"keccak_data":[]}] \ No newline at end of file diff --git a/zkevm-circuits/src/mpt_circuit/witness_row.rs b/zkevm-circuits/src/mpt_circuit/witness_row.rs new file mode 100644 index 0000000000..41356b69ae --- /dev/null +++ b/zkevm-circuits/src/mpt_circuit/witness_row.rs @@ -0,0 +1,195 @@ +use crate::table::MPTProofType; + +use serde::{Deserialize, Serialize}; + +use super::RlpItemType; + +#[derive(Debug, Eq, PartialEq)] +pub(crate) enum StorageRowType { + KeyS, + ValueS, + KeyC, + ValueC, + Drifted, + Wrong, + Address, + Key, + Count, +} + +#[derive(Debug, Eq, PartialEq)] +pub(crate) enum AccountRowType { + KeyS, + KeyC, + NonceS, + BalanceS, + StorageS, + CodehashS, + NonceC, + BalanceC, + StorageC, + CodehashC, + Drifted, + Wrong, + Address, + Key, + Count, +} + +#[derive(Debug, Eq, PartialEq)] +pub(crate) enum ExtensionBranchRowType { + Mod, + Child0, + Child1, + Child2, + Child3, + Child4, + Child5, + Child6, + Child7, + Child8, + Child9, + Child10, + Child11, + Child12, + Child13, + Child14, + Child15, + KeyS, + ValueS, + KeyC, + ValueC, + Count, +} + +#[derive(Debug, Eq, PartialEq)] +pub(crate) enum StartRowType { + RootS, + RootC, + Count, +} + +/// MPT branch node +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct BranchNode { + pub(crate) modified_index: usize, + pub(crate) drifted_index: usize, + pub(crate) list_rlp_bytes: [Vec<u8>; 2], +} + +/// MPT extension node +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct ExtensionNode { + pub(crate) list_rlp_bytes: Vec<u8>, +} + +/// MPT start node +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct StartNode { + pub(crate) disable_preimage_check: bool, + pub(crate) proof_type: MPTProofType, +} + +/// MPT extension branch node +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct ExtensionBranchNode { + pub(crate) is_extension: bool, + pub(crate) is_placeholder: [bool; 2], + pub(crate) extension: ExtensionNode, + pub(crate) branch: BranchNode, +} + +/// MPT account node +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct AccountNode { + pub(crate) address: Vec<u8>, + pub(crate) key: Vec<u8>, + pub(crate) list_rlp_bytes: [Vec<u8>; 2], + pub(crate) value_rlp_bytes: [Vec<u8>; 2], + pub(crate) value_list_rlp_bytes: [Vec<u8>; 2], + pub(crate) drifted_rlp_bytes: Vec<u8>, + pub(crate) wrong_rlp_bytes: Vec<u8>, +} + +/// MPT storage node +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct StorageNode { + pub(crate) address: Vec<u8>, + pub(crate) key: Vec<u8>, + pub(crate) list_rlp_bytes: [Vec<u8>; 2], + pub(crate) value_rlp_bytes: [Vec<u8>; 2], + pub(crate) drifted_rlp_bytes: Vec<u8>, + pub(crate) wrong_rlp_bytes: Vec<u8>, +} + +/// MPT node +#[derive(Clone, Debug, Default, Serialize, Deserialize)] +pub struct Node { + pub(crate) start: Option<StartNode>, + pub(crate) extension_branch: Option<ExtensionBranchNode>, + pub(crate) account: Option<AccountNode>, + pub(crate) storage: Option<StorageNode>, + /// MPT node values + pub values: Vec<Vec<u8>>, + /// MPT keccak data + pub keccak_data: Vec<Vec<u8>>, +} + +/// RLP types start +pub const NODE_RLP_TYPES_START: [RlpItemType; StartRowType::Count as usize] = + [RlpItemType::Hash, RlpItemType::Hash]; + +/// RLP types branch +pub const NODE_RLP_TYPES_BRANCH: [RlpItemType; ExtensionBranchRowType::Count as usize] = [ + RlpItemType::Node, + RlpItemType::Node, + RlpItemType::Node, + RlpItemType::Node, + RlpItemType::Node, + RlpItemType::Node, + RlpItemType::Node, + RlpItemType::Node, + RlpItemType::Node, + RlpItemType::Node, + RlpItemType::Node, + RlpItemType::Node, + RlpItemType::Node, + RlpItemType::Node, + RlpItemType::Node, + RlpItemType::Node, + RlpItemType::Node, + RlpItemType::Key, + RlpItemType::Node, + RlpItemType::Nibbles, + RlpItemType::Node, +]; + +/// RLP types account +pub const NODE_RLP_TYPES_ACCOUNT: [RlpItemType; AccountRowType::Count as usize] = [ + RlpItemType::Key, + RlpItemType::Key, + RlpItemType::Value, + RlpItemType::Value, + RlpItemType::Hash, + RlpItemType::Hash, + RlpItemType::Value, + RlpItemType::Value, + RlpItemType::Hash, + RlpItemType::Hash, + RlpItemType::Key, + RlpItemType::Key, + RlpItemType::Value, + RlpItemType::Hash, +]; + +/// RLP types account +pub const NODE_RLP_TYPES_STORAGE: [RlpItemType; StorageRowType::Count as usize] = [ + RlpItemType::Key, + RlpItemType::Value, + RlpItemType::Key, + RlpItemType::Value, + RlpItemType::Key, + RlpItemType::Key, + RlpItemType::Value, + RlpItemType::Hash, +]; diff --git a/zkevm-circuits/src/pi_circuit.rs b/zkevm-circuits/src/pi_circuit.rs index cebe069cba..c4e482b97a 100644 --- a/zkevm-circuits/src/pi_circuit.rs +++ b/zkevm-circuits/src/pi_circuit.rs @@ -1,26 +1,38 @@ //! Public Input Circuit implementation mod param; -#[cfg(any(feature = "test", test, feature = "test-circuits"))] +#[cfg(any(test, feature = "test-circuits"))] mod dev; -#[cfg(any(feature = "test", test))] +#[cfg(test)] mod test; -#[cfg(any(feature = "test", test, feature = "test-circuits"))] -pub use dev::PiCircuit as TestPiCircuit; +use std::{cmp::min, iter, marker::PhantomData}; -use eth_types::{ - geth_types::{BlockConstants, Transaction}, - sign_types::SignData, - Address, BigEndianHash, Field, Keccak, ToBigEndian, ToLittleEndian, ToScalar, Word, H256, -}; -use halo2_proofs::plonk::{Instance, SecondPhase}; +#[cfg(feature = "test-circuits")] +pub use PiCircuit as TestPiCircuit; + +use eth_types::{self, Field, ToLittleEndian}; +use halo2_proofs::plonk::{Expression, Instance, SecondPhase}; +use itertools::Itertools; use param::*; -use std::marker::PhantomData; use crate::{ - table::{BlockTable, LookupTable, TxFieldTag, TxTable}, + evm_circuit::{ + param::{ + N_BYTES_BLOCK, N_BYTES_EXTRA_VALUE, N_BYTES_HALF_WORD, N_BYTES_TX, N_BYTES_U64, + N_BYTES_WORD, + }, + util::{ + constraint_builder::{BaseConstraintBuilder, ConstrainBuilderCommon}, + from_bytes, + }, + }, + instance::{ + public_data_convert, BlockValues, ExtraValues, PublicData, TxValues, NONZERO_BYTE_GAS_COST, + ZERO_BYTE_GAS_COST, + }, + table::{BlockTable, KeccakTable, LookupTable, TxFieldTag, TxTable}, tx_circuit::TX_LEN, - util::{random_linear_combine_word as rlc, Challenges, SubCircuit, SubCircuitConfig}, + util::{word::Word, Challenges, SubCircuit, SubCircuitConfig}, witness, }; use gadgets::{ @@ -33,142 +45,6 @@ use halo2_proofs::{ poly::Rotation, }; -#[cfg(any(feature = "test", test, feature = "test-circuits"))] -use halo2_proofs::{circuit::SimpleFloorPlanner, plonk::Circuit}; - -/// Values of the block table (as in the spec) -#[derive(Clone, Default, Debug)] -pub struct BlockValues { - coinbase: Address, - gas_limit: u64, - number: u64, - timestamp: u64, - difficulty: Word, - base_fee: Word, // NOTE: BaseFee was added by EIP-1559 and is ignored in legacy headers. - chain_id: u64, - history_hashes: Vec<H256>, -} - -/// Values of the tx table (as in the spec) -#[derive(Default, Debug, Clone)] -pub struct TxValues { - nonce: u64, - gas: u64, // gas limit - gas_price: Word, - from_addr: Address, - to_addr: Address, - is_create: bool, - value: Word, - call_data_len: u64, - call_data_gas_cost: u64, - tx_sign_hash: [u8; 32], -} - -/// Extra values (not contained in block or tx tables) -#[derive(Default, Debug, Clone)] -pub struct ExtraValues { - // block_hash: H256, - state_root: H256, - prev_state_root: H256, -} - -/// PublicData contains all the values that the PiCircuit recieves as input -#[derive(Debug, Clone)] -pub struct PublicData { - /// chain id - pub chain_id: Word, - /// History hashes contains the most recent 256 block hashes in history, - /// where the latest one is at history_hashes[history_hashes.len() - 1]. - pub history_hashes: Vec<Word>, - /// Block Transactions - pub transactions: Vec<eth_types::Transaction>, - /// Block State Root - pub state_root: H256, - /// Previous block root - pub prev_state_root: H256, - /// Constants related to Ethereum block - pub block_constants: BlockConstants, -} - -impl Default for PublicData { - fn default() -> Self { - PublicData { - chain_id: Word::default(), - history_hashes: vec![], - transactions: vec![], - state_root: H256::zero(), - prev_state_root: H256::zero(), - block_constants: BlockConstants::default(), - } - } -} - -impl PublicData { - /// Returns struct with values for the block table - pub fn get_block_table_values(&self) -> BlockValues { - let history_hashes = [ - vec![H256::zero(); 256 - self.history_hashes.len()], - self.history_hashes - .iter() - .map(|&hash| H256::from(hash.to_be_bytes())) - .collect(), - ] - .concat(); - BlockValues { - coinbase: self.block_constants.coinbase, - gas_limit: self.block_constants.gas_limit.as_u64(), - number: self.block_constants.number.as_u64(), - timestamp: self.block_constants.timestamp.as_u64(), - difficulty: self.block_constants.difficulty, - base_fee: self.block_constants.base_fee, - chain_id: self.chain_id.as_u64(), - history_hashes, - } - } - - /// Returns struct with values for the tx table - pub fn get_tx_table_values(&self) -> Vec<TxValues> { - let chain_id: u64 = self - .chain_id - .try_into() - .expect("Error converting chain_id to u64"); - let mut tx_vals = vec![]; - for tx in &self.txs() { - let sign_data: SignData = tx - .sign_data(chain_id) - .expect("Error computing tx_sign_hash"); - let mut msg_hash_le = [0u8; 32]; - msg_hash_le.copy_from_slice(sign_data.msg_hash.to_bytes().as_slice()); - tx_vals.push(TxValues { - nonce: tx.nonce.as_u64(), - gas_price: tx.gas_price, - gas: tx.gas_limit.as_u64(), - from_addr: tx.from, - to_addr: tx.to_or_zero(), - is_create: tx.is_create(), - value: tx.value, - call_data_len: tx.call_data.len() as u64, - call_data_gas_cost: tx.call_data_gas_cost(), - tx_sign_hash: msg_hash_le, - }); - } - tx_vals - } - - /// Returns struct with the extra values - pub fn get_extra_values(&self) -> ExtraValues { - ExtraValues { - // block_hash: self.hash.unwrap_or_else(H256::zero), - state_root: self.state_root, - prev_state_root: self.prev_state_root, - } - } - - fn txs(&self) -> Vec<Transaction> { - self.transactions.iter().map(Transaction::from).collect() - } -} - /// Config for PiCircuit #[derive(Clone, Debug)] pub struct PiCircuitConfig<F: Field> { @@ -177,34 +53,62 @@ pub struct PiCircuitConfig<F: Field> { /// Max number of supported calldata bytes max_calldata: usize, - q_block_table: Selector, + // q_digest_last: will be 1 on last byte of keccak digest, others are 0 + q_digest_last: Selector, + // q_bytes_last: will be 1 on last byte of raw public input last byte, others are 0 + q_bytes_last: Selector, + // q_tx_table: 1 on the rows where tx_table is activated, others are 0 q_tx_table: Selector, + // q_tx_calldata: 1 on the rows where tx_table calldata is activated, others are 0 q_tx_calldata: Selector, + // q_calldata_start: 1 on the starting row of calldata in tx_table, others are 0 q_calldata_start: Selector, + // q_rpi_keccak_lookup: enable keccak lookup + q_rpi_keccak_lookup: Selector, + // q_rpi_value_start: assure rpi_bytes sync with rpi_value_lc when cross boundary. + // because we layout rpi bytes vertically, which is concated from multiple original values. + // The value can be one byte or multiple bytes. The order of values is pre-defined and + // hardcode. can't use selector here because we need rotation + q_rpi_value_start: Column<Fixed>, + // q_digest_value_start: mark starting of hi and low. can't use selector here because we need + // rotation + q_digest_value_start: Column<Fixed>, tx_id_inv: Column<Advice>, - tx_value_inv: Column<Advice>, + // Do not need tx_value_hi_inv, because tx_value_inv only + // refer in tx_calldata constrains, and only need tx_value.lo() part + tx_value_lo_inv: Column<Advice>, tx_id_diff_inv: Column<Advice>, fixed_u16: Column<Fixed>, calldata_gas_cost: Column<Advice>, is_final: Column<Advice>, - raw_public_inputs: Column<Advice>, - rpi_rlc_acc: Column<Advice>, - rand_rpi: Column<Advice>, - q_not_end: Selector, - q_end: Selector, + // rpi_bytes: raw public input bytes laid verticlly + rpi_bytes: Column<Advice>, + // rpi_bytes_keccakrlc: rpi_bytes rlc by keccak challenge. This is for Keccak lookup input + // rlc + rpi_bytes_keccakrlc: Column<Advice>, + // rpi_value_lc: This is similar with rpi_bytes_keccakrlc, while the key differences is + // it's linear combination with base 256. + rpi_value_lc: Column<Advice>, + // rpi_digest_bytes: Keccak digest raw bytes laid verticlly in this column + rpi_digest_bytes: Column<Advice>, + // rpi_digest_bytes_limbs: hi, lo limbs of digest + rpi_digest_bytes_limbs: Column<Advice>, - pi: Column<Instance>, // rpi_rand, rpi_rlc, chain_ID, state_root, prev_state_root + q_rpi_byte_enable: Selector, + + pi_instance: Column<Instance>, // keccak_digest_hi, keccak_digest_lo _marker: PhantomData<F>, // External tables block_table: BlockTable, tx_table: TxTable, + keccak_table: KeccakTable, } /// Circuit configuration arguments -pub struct PiCircuitConfigArgs { +pub struct PiCircuitConfigArgs<F: Field> { /// Max number of supported transactions pub max_txs: usize, /// Max number of supported calldata bytes @@ -213,10 +117,14 @@ pub struct PiCircuitConfigArgs { pub tx_table: TxTable, /// BlockTable pub block_table: BlockTable, + /// Keccak Table + pub keccak_table: KeccakTable, + /// Challenges + pub challenges: Challenges<Expression<F>>, } impl<F: Field> SubCircuitConfig<F> for PiCircuitConfig<F> { - type ConfigArgs = PiCircuitConfigArgs; + type ConfigArgs = PiCircuitConfigArgs<F>; /// Return a new PiCircuitConfig fn new( @@ -226,20 +134,21 @@ impl<F: Field> SubCircuitConfig<F> for PiCircuitConfig<F> { max_calldata, block_table, tx_table, + keccak_table, + challenges, }: Self::ConfigArgs, ) -> Self { - let q_block_table = meta.selector(); - let q_tx_table = meta.complex_selector(); let q_tx_calldata = meta.complex_selector(); let q_calldata_start = meta.complex_selector(); + let q_rpi_keccak_lookup = meta.complex_selector(); // Tx Table let tx_id = tx_table.tx_id; let tx_value = tx_table.value; let tag = tx_table.tag; let index = tx_table.index; let tx_id_inv = meta.advice_column(); - let tx_value_inv = meta.advice_column_in(SecondPhase); + let tx_value_lo_inv = meta.advice_column(); let tx_id_diff_inv = meta.advice_column(); // The difference of tx_id of adjacent rows in calldata part of tx table // lies in the interval [0, 2^16] if their tx_id both do not equal to zero. @@ -249,113 +158,145 @@ impl<F: Field> SubCircuitConfig<F> for PiCircuitConfig<F> { let calldata_gas_cost = meta.advice_column_in(SecondPhase); let is_final = meta.advice_column(); - let raw_public_inputs = meta.advice_column_in(SecondPhase); - let rpi_rlc_acc = meta.advice_column_in(SecondPhase); - let rand_rpi = meta.advice_column(); - let q_not_end = meta.selector(); - let q_end = meta.selector(); + let q_digest_last = meta.complex_selector(); + let q_bytes_last = meta.complex_selector(); + let q_rpi_byte_enable = meta.complex_selector(); + let q_rpi_value_start = meta.fixed_column(); + let q_digest_value_start = meta.fixed_column(); + + let rpi_bytes = meta.advice_column(); + let rpi_bytes_keccakrlc = meta.advice_column_in(SecondPhase); + let rpi_value_lc = meta.advice_column(); + let rpi_digest_bytes = meta.advice_column(); + let rpi_digest_bytes_limbs = meta.advice_column(); - let pi = meta.instance_column(); + let pi_instance = meta.instance_column(); // Annotate table columns tx_table.annotate_columns(meta); block_table.annotate_columns(meta); - meta.enable_equality(raw_public_inputs); - meta.enable_equality(rpi_rlc_acc); - meta.enable_equality(rand_rpi); - meta.enable_equality(pi); + meta.enable_equality(block_table.value.lo()); + meta.enable_equality(block_table.value.hi()); + meta.enable_equality(tx_table.tx_id); + meta.enable_equality(tx_table.index); + meta.enable_equality(tx_table.value.lo()); + meta.enable_equality(tx_table.value.hi()); - // 0.0 rpi_rlc_acc[0] == RLC(raw_public_inputs, rand_rpi) - meta.create_gate( - "rpi_rlc_acc[i] = rand_rpi * rpi_rlc_acc[i+1] + raw_public_inputs[i]", - |meta| { - // q_not_end * row.rpi_rlc_acc == - // (q_not_end * row_next.rpi_rlc_acc * row.rand_rpi + row.raw_public_inputs ) - let q_not_end = meta.query_selector(q_not_end); - let cur_rpi_rlc_acc = meta.query_advice(rpi_rlc_acc, Rotation::cur()); - let next_rpi_rlc_acc = meta.query_advice(rpi_rlc_acc, Rotation::next()); - let rand_rpi = meta.query_advice(rand_rpi, Rotation::cur()); - let raw_public_inputs = meta.query_advice(raw_public_inputs, Rotation::cur()); + meta.enable_equality(rpi_value_lc); + meta.enable_equality(rpi_bytes_keccakrlc); - vec![ - q_not_end * (next_rpi_rlc_acc * rand_rpi + raw_public_inputs - cur_rpi_rlc_acc), - ] - }, - ); - meta.create_gate("rpi_rlc_acc[last] = raw_public_inputs[last]", |meta| { - let q_end = meta.query_selector(q_end); - let raw_public_inputs = meta.query_advice(raw_public_inputs, Rotation::cur()); - let rpi_rlc_acc = meta.query_advice(rpi_rlc_acc, Rotation::cur()); - vec![q_end * (raw_public_inputs - rpi_rlc_acc)] - }); + meta.enable_equality(rpi_digest_bytes_limbs); - // 0.1 rand_rpi[i] == rand_rpi[j] - meta.create_gate("rand_pi = rand_rpi.next", |meta| { - // q_not_end * row.rand_rpi == q_not_end * row_next.rand_rpi - let q_not_end = meta.query_selector(q_not_end); - let cur_rand_rpi = meta.query_advice(rand_rpi, Rotation::cur()); - let next_rand_rpi = meta.query_advice(rand_rpi, Rotation::next()); + meta.enable_equality(pi_instance); - vec![q_not_end * (cur_rand_rpi - next_rand_rpi)] - }); + // gate 1 and gate 2 are compensation branch + // 1: rpi_bytes_keccakrlc[last] = rpi_bytes[last] + meta.create_gate("rpi_bytes_keccakrlc[last] = rpi_bytes[last]", |meta| { + let mut cb = BaseConstraintBuilder::default(); - // 0.2 Block table -> value column match with raw_public_inputs at expected - // offset - meta.create_gate("block_table[i] = raw_public_inputs[offset + i]", |meta| { - let q_block_table = meta.query_selector(q_block_table); - let block_value = meta.query_advice(block_table.value, Rotation::cur()); - let rpi_block_value = meta.query_advice(raw_public_inputs, Rotation::cur()); - vec![q_block_table * (block_value - rpi_block_value)] - }); + cb.require_equal( + "rpi_bytes_keccakrlc[last] = rpi_bytes[last]", + meta.query_advice(rpi_bytes_keccakrlc, Rotation::cur()), + meta.query_advice(rpi_bytes, Rotation::cur()), + ); - let offset = BLOCK_LEN + 1 + EXTRA_LEN; - let tx_table_len = max_txs * TX_LEN + 1; + cb.gate(meta.query_selector(q_bytes_last) * meta.query_selector(q_rpi_byte_enable)) + }); - // 0.3 Tx table -> {tx_id, index, value} column match with raw_public_inputs - // at expected offset + // 2: rpi_bytes_keccakrlc[i] = keccak_rand * rpi_bytes_keccakrlc[i+1] + rpi_bytes[i]" meta.create_gate( - "tx_table.tx_id[i] == raw_public_inputs[offset + i]", + "rpi_bytes_keccakrlc[i] = keccak_rand * rpi_bytes_keccakrlc[i+1] + rpi_bytes[i]", |meta| { - // row.q_tx_table * row.tx_table.tx_id - // == row.q_tx_table * row_offset_tx_table_tx_id.raw_public_inputs - let q_tx_table = meta.query_selector(q_tx_table); - let tx_id = meta.query_advice(tx_table.tx_id, Rotation::cur()); - let rpi_tx_id = meta.query_advice(raw_public_inputs, Rotation(offset as i32)); + let mut cb = BaseConstraintBuilder::default(); + + let rpi_bytes_keccakrlc_cur = + meta.query_advice(rpi_bytes_keccakrlc, Rotation::cur()); + let rpi_bytes_keccakrlc_next = + meta.query_advice(rpi_bytes_keccakrlc, Rotation::next()); + let rpi_bytes_cur = meta.query_advice(rpi_bytes, Rotation::cur()); + + let keccak_rand = challenges.keccak_input(); + cb.require_equal( + "rpi_bytes_keccakrlc[i] = keccak_rand * rpi_bytes_keccakrlc[i+1] + rpi_bytes[i]", + rpi_bytes_keccakrlc_cur, + rpi_bytes_keccakrlc_next * keccak_rand + rpi_bytes_cur, + ); - vec![q_tx_table * (tx_id - rpi_tx_id)] + cb.gate( + not::expr(meta.query_selector(q_bytes_last)) * + meta.query_selector(q_rpi_byte_enable) + ) }, ); + // gate 3 and gate 4 are compensation branch + // 3: rpi_value_lc[i] = rpi_value_lc[i+1] * byte_pow_base + // + rpi_bytes[i] meta.create_gate( - "tx_table.index[i] == raw_public_inputs[offset + tx_table_len + i]", + "rpi_value_lc[i] = rpi_value_lc[i-1] * byte_pow_base + rpi_bytes[i]", |meta| { - // row.q_tx_table * row.tx_table.tx_index - // == row.q_tx_table * row_offset_tx_table_tx_index.raw_public_inputs - let q_tx_table = meta.query_selector(q_tx_table); - let tx_index = meta.query_advice(tx_table.index, Rotation::cur()); - let rpi_tx_index = - meta.query_advice(raw_public_inputs, Rotation((offset + tx_table_len) as i32)); + let mut cb = BaseConstraintBuilder::default(); + let q_rpi_value_start_cur = meta.query_fixed(q_rpi_value_start, Rotation::cur()); + let rpi_value_lc_next = meta.query_advice(rpi_value_lc, Rotation::next()); + let rpi_value_lc_cur = meta.query_advice(rpi_value_lc, Rotation::cur()); + let rpi_bytes_cur = meta.query_advice(rpi_bytes, Rotation::cur()); + + cb.require_equal( + "rpi_value_lc[i] = rpi_value_lc[i+1] * r + rpi_bytes[i]", + rpi_value_lc_cur, + rpi_value_lc_next * BYTE_POW_BASE.expr() + rpi_bytes_cur, + ); - vec![q_tx_table * (tx_index - rpi_tx_index)] + cb.gate(not::expr(q_rpi_value_start_cur) * meta.query_selector(q_rpi_byte_enable)) }, ); - meta.create_gate( - "tx_table.tx_value[i] == raw_public_inputs[offset + 2* tx_table_len + i]", + // 4. rpi_value_lc[i] = rpi_bytes[i] + meta.create_gate("rpi_value_lc[i] = rpi_bytes[i]", |meta| { + let mut cb = BaseConstraintBuilder::default(); + let q_rpi_value_start_cur = meta.query_fixed(q_rpi_value_start, Rotation::cur()); + + cb.require_equal( + "rpi_value_lc[i] = rpi_bytes[i]", + meta.query_advice(rpi_bytes, Rotation::cur()), + meta.query_advice(rpi_value_lc, Rotation::cur()), + ); + + cb.gate(q_rpi_value_start_cur * meta.query_selector(q_rpi_byte_enable)) + }); + + // 5. lookup rpi_bytes_keccakrlc against rpi_digest_bytes_limbs + meta.lookup_any( + "lookup rpi_bytes_keccakrlc against rpi_digest_bytes_limbs", |meta| { - // (row.q_tx_calldata | row.q_tx_table) * row.tx_table.tx_value - // == (row.q_tx_calldata | row.q_tx_table) * - // row_offset_tx_table_tx_value.raw_public_inputs - let q_tx_table = meta.query_selector(q_tx_table); - let tx_value = meta.query_advice(tx_value, Rotation::cur()); - let q_tx_calldata = meta.query_selector(q_tx_calldata); - let rpi_tx_value = meta.query_advice( - raw_public_inputs, - Rotation((offset + 2 * tx_table_len) as i32), - ); + let circuit_len = + PiCircuitConfig::<F>::circuit_len_by_txs_calldata(max_txs, max_calldata).expr(); + let is_enabled = meta.query_advice(keccak_table.is_enabled, Rotation::cur()); + let input_rlc = meta.query_advice(keccak_table.input_rlc, Rotation::cur()); + let input_len = meta.query_advice(keccak_table.input_len, Rotation::cur()); + let output_lo = meta.query_advice(keccak_table.output.lo(), Rotation::cur()); + let output_hi = meta.query_advice(keccak_table.output.hi(), Rotation::cur()); + + // is_enabled + let q_rpi_keccak_lookup = meta.query_selector(q_rpi_keccak_lookup); + // input_rlc + let rpi_bytes_keccakrlc_cur = + meta.query_advice(rpi_bytes_keccakrlc, Rotation::cur()); + // output + let rpi_digest_lo = meta.query_advice(rpi_digest_bytes_limbs, Rotation::cur()); + let rpi_digest_hi = meta.query_advice(rpi_digest_bytes_limbs, Rotation::next()); - vec![or::expr([q_tx_table, q_tx_calldata]) * (tx_value - rpi_tx_value)] + vec![ + (q_rpi_keccak_lookup.expr() * 1.expr(), is_enabled), + ( + q_rpi_keccak_lookup.expr() * rpi_bytes_keccakrlc_cur, + input_rlc, + ), + (q_rpi_keccak_lookup.expr() * circuit_len, input_len), + (q_rpi_keccak_lookup.expr() * rpi_digest_lo, output_lo), + (q_rpi_keccak_lookup * rpi_digest_hi, output_hi), + ] }, ); @@ -365,7 +306,8 @@ impl<F: Field> SubCircuitConfig<F> for PiCircuitConfig<F> { |meta| meta.query_advice(tx_table.tx_id, Rotation::cur()), tx_id_inv, ); - let tx_value_is_zero_config = IsZeroChip::configure( + + let tx_value_is_zero_lo_config = IsZeroChip::configure( meta, |meta| { or::expr([ @@ -373,9 +315,10 @@ impl<F: Field> SubCircuitConfig<F> for PiCircuitConfig<F> { meta.query_selector(q_tx_calldata), ]) }, - |meta| meta.query_advice(tx_value, Rotation::cur()), - tx_value_inv, + |meta| meta.query_advice(tx_value.lo(), Rotation::cur()), + tx_value_lo_inv, ); + let tx_value_is_zero_config = tx_value_is_zero_lo_config.expr(); let _tx_id_diff_is_zero_config = IsZeroChip::configure( meta, |meta| meta.query_selector(q_tx_calldata), @@ -412,8 +355,8 @@ impl<F: Field> SubCircuitConfig<F> for PiCircuitConfig<F> { let tx_idx_diff_inv = meta.query_advice(tx_id_diff_inv, Rotation::cur()); let idx = meta.query_advice(index, Rotation::cur()); let idx_next = meta.query_advice(index, Rotation::next()); - let value_next = meta.query_advice(tx_value, Rotation::next()); - let value_next_inv = meta.query_advice(tx_value_inv, Rotation::next()); + let value_next_lo = meta.query_advice(tx_value.lo(), Rotation::next()); + let value_inv_next_lo = meta.query_advice(tx_value_lo_inv, Rotation::next()); let gas_cost = meta.query_advice(calldata_gas_cost, Rotation::cur()); let gas_cost_next = meta.query_advice(calldata_gas_cost, Rotation::next()); @@ -425,7 +368,7 @@ impl<F: Field> SubCircuitConfig<F> for PiCircuitConfig<F> { let is_value_zero = tx_value_is_zero_config.expr(); let is_value_nonzero = not::expr(tx_value_is_zero_config.expr()); - let is_value_next_nonzero = value_next.expr() * value_next_inv.expr(); + let is_value_next_nonzero = value_next_lo.expr() * value_inv_next_lo.expr(); let is_value_next_zero = not::expr(is_value_next_nonzero.expr()); // gas = value == 0 ? 4 : 16 @@ -499,7 +442,7 @@ impl<F: Field> SubCircuitConfig<F> for PiCircuitConfig<F> { let is_calldata_length_zero = tx_value_is_zero_config.expr(); let is_calldata_length_row = tx_tag_is_cdl_config.expr(); - let calldata_cost = meta.query_advice(tx_value, Rotation::next()); + let calldata_cost = meta.query_advice(tx_value.lo(), Rotation::next()); vec![q_tx_table * is_calldata_length_row * is_calldata_length_zero * calldata_cost] }, @@ -513,7 +456,7 @@ impl<F: Field> SubCircuitConfig<F> for PiCircuitConfig<F> { // calldata gas cost assigned in the tx table // CallDataGasCost is on the next row of CallDataLength - let calldata_cost_assigned = meta.query_advice(tx_value, Rotation::next()); + let calldata_cost_assigned = meta.query_advice(tx_value.lo(), Rotation::next()); // calldata gas cost calculated in call data let calldata_cost_calc = meta.query_advice(calldata_gas_cost, Rotation::cur()); @@ -538,24 +481,30 @@ impl<F: Field> SubCircuitConfig<F> for PiCircuitConfig<F> { Self { max_txs, max_calldata, - q_block_table, block_table, - q_tx_table, + q_digest_last, + q_bytes_last, q_tx_calldata, q_calldata_start, + q_rpi_keccak_lookup, + q_rpi_value_start, + q_tx_table, + q_digest_value_start, tx_table, + keccak_table, tx_id_inv, - tx_value_inv, + tx_value_lo_inv, tx_id_diff_inv, fixed_u16, calldata_gas_cost, is_final, - raw_public_inputs, - rpi_rlc_acc, - rand_rpi, - q_not_end, - q_end, - pi, + rpi_bytes, + rpi_bytes_keccakrlc, + rpi_value_lc, + rpi_digest_bytes, + rpi_digest_bytes_limbs, + q_rpi_byte_enable, + pi_instance, _marker: PhantomData, } } @@ -565,20 +514,68 @@ impl<F: Field> PiCircuitConfig<F> { /// Return the number of rows in the circuit #[inline] fn circuit_len(&self) -> usize { - // +1 empty row in block table, +1 empty row in tx_table - BLOCK_LEN + 1 + EXTRA_LEN + 3 * (TX_LEN * self.max_txs + 1) + self.max_calldata + Self::circuit_len_by_txs_calldata(self.max_txs, self.max_calldata) } - fn assign_tx_empty_row(&self, region: &mut Region<'_, F>, offset: usize) -> Result<(), Error> { + /// Return the number of rows for txs and calldata + #[inline] + fn circuit_len_by_txs_calldata(txs: usize, calldata: usize) -> usize { + N_BYTES_ONE + + N_BYTES_BLOCK + + N_BYTES_EXTRA_VALUE + + Self::circuit_len_tx_id(txs) + + Self::circuit_len_tx_index(txs) + + Self::circuit_len_tx_values(txs) + + calldata + } + + #[inline] + fn circuit_len_tx_values(txs: usize) -> usize { + N_BYTES_TX * (txs) + N_BYTES_ONE + } + + #[inline] + fn circuit_len_tx_id(txs: usize) -> usize { + N_BYTES_U64 * TX_LEN * txs + N_BYTES_U64 // empty row + } + + #[inline] + fn circuit_len_tx_index(txs: usize) -> usize { + N_BYTES_U64 * TX_LEN * txs + N_BYTES_U64 // empty row + } + + fn assign_empty_txtable_row( + &self, + region: &mut Region<'_, F>, + offset: usize, + ) -> Result<(), Error> { region.assign_advice( - || "tx_id", - self.tx_table.tx_id, + || "tx_id_inv", + self.tx_id_inv, offset, || Value::known(F::ZERO), )?; region.assign_advice( - || "tx_id_inv", - self.tx_id_inv, + || "tx_value_lo_inv", + self.tx_value_lo_inv, + offset, + || Value::known(F::ZERO), + )?; + region.assign_advice( + || "is_final", + self.is_final, + offset, + || Value::known(F::ZERO), + )?; + region.assign_advice( + || "gas_cost", + self.calldata_gas_cost, + offset, + || Value::known(F::ZERO), + )?; + region.assign_advice( + || "tx_id", + self.tx_table.tx_id, offset, || Value::known(F::ZERO), )?; @@ -594,32 +591,62 @@ impl<F: Field> PiCircuitConfig<F> { offset, || Value::known(F::ZERO), )?; - region.assign_advice( + Word::default().into_value().assign_advice( + region, || "tx_value", self.tx_table.value, offset, + )?; + Ok(()) + } + + fn reset_rpi_digest_row(&self, region: &mut Region<'_, F>, offset: usize) -> Result<(), Error> { + region.assign_advice( + || "rpi_digest_bytes_limbs", + self.rpi_digest_bytes_limbs, + offset, || Value::known(F::ZERO), )?; + + Ok(()) + } + + fn reset_rpi_bytes_row(&self, region: &mut Region<'_, F>, offset: usize) -> Result<(), Error> { + // assign q_rpi_value_start + region.assign_fixed( + || "q_rpi_value_start", + self.q_rpi_value_start, + offset, + || Value::known(F::ZERO), + )?; + + // assign rpi bytes region.assign_advice( - || "tx_value_inv", - self.tx_value_inv, + || "rpi_bytes", + self.rpi_bytes, offset, || Value::known(F::ZERO), )?; + + // assign rpi_bytes_keccakrlc region.assign_advice( - || "is_final", - self.is_final, + || "rpi_bytes_keccakrlc", + self.rpi_bytes_keccakrlc, offset, || Value::known(F::ZERO), )?; + + // assign rpi_value_lc region.assign_advice( - || "gas_cost", - self.calldata_gas_cost, + || "rpi_value_lc", + self.rpi_value_lc, offset, || Value::known(F::ZERO), )?; + Ok(()) } + /// Assigns a tx_table row and stores the values in a vec for the /// raw_public_inputs column #[allow(clippy::too_many_arguments)] @@ -627,13 +654,16 @@ impl<F: Field> PiCircuitConfig<F> { &self, region: &mut Region<'_, F>, offset: usize, - tx_id: usize, + tx_id: u64, tag: TxFieldTag, - index: usize, - tx_value: F, - raw_pi_vals: &mut [F], + index: u64, + tx_value_bytes_le: &[u8], + rpi_bytes_keccakrlc: &mut Value<F>, + challenges: &Challenges<Value<F>>, + current_offset: &mut usize, + rpi_bytes: &mut [u8], + zero_cell: AssignedCell<F, F>, ) -> Result<(), Error> { - let tx_id = F::from(tx_id as u64); // tx_id_inv = (tag - CallDataLength)^(-1) let tx_id_inv = if tag != TxFieldTag::CallDataLength { let x = F::from(tag as u64) - F::from(TxFieldTag::CallDataLength as u64); @@ -642,78 +672,92 @@ impl<F: Field> PiCircuitConfig<F> { F::ZERO }; let tag = F::from(tag as u64); - let index = F::from(index as u64); - let tx_value = tx_value; - let tx_value_inv = tx_value.invert().unwrap_or(F::ZERO); + let tx_value = Word::new([ + from_bytes::value( + &tx_value_bytes_le[..min(N_BYTES_HALF_WORD, tx_value_bytes_le.len())], + ), + if tx_value_bytes_le.len() > N_BYTES_HALF_WORD { + from_bytes::value(&tx_value_bytes_le[N_BYTES_HALF_WORD..]) + } else { + F::ZERO + }, + ]) + .into_value(); + let tx_value_inv = tx_value.map(|t| t.map(|x| x.invert().unwrap_or(F::ZERO))); self.q_tx_table.enable(region, offset)?; // Assign vals to Tx_table - region.assign_advice( + let tx_id_assignedcell = region.assign_advice( || "tx_id", self.tx_table.tx_id, offset, - || Value::known(tx_id), + || Value::known(F::from(tx_id)), )?; region.assign_fixed(|| "tag", self.tx_table.tag, offset, || Value::known(tag))?; - region.assign_advice( + + let tx_index_assignedcell = region.assign_advice( || "index", self.tx_table.index, offset, - || Value::known(index), + || Value::known(F::from(index)), )?; - region.assign_advice( - || "tx_value", - self.tx_table.value, - offset, - || Value::known(tx_value), + + let tx_value_assignedcell = + tx_value.assign_advice(region, || "tx_value", self.tx_table.value, offset)?; + + // tx_id + let (_, raw_tx_id) = self.assign_raw_bytes( + region, + &tx_id.to_le_bytes(), + rpi_bytes_keccakrlc, + rpi_bytes, + current_offset, + challenges, + zero_cell.clone(), + )?; + region.constrain_equal(tx_id_assignedcell.cell(), raw_tx_id.lo().cell())?; + + // index + let (_, raw_tx_index) = self.assign_raw_bytes( + region, + &index.to_le_bytes(), + rpi_bytes_keccakrlc, + rpi_bytes, + current_offset, + challenges, + zero_cell.clone(), )?; + region.constrain_equal(tx_index_assignedcell.cell(), raw_tx_index.lo().cell())?; + + // tx value + let (_, raw_tx_value) = self.assign_raw_bytes( + region, + tx_value_bytes_le, + rpi_bytes_keccakrlc, + rpi_bytes, + current_offset, + challenges, + zero_cell, + )?; + region.constrain_equal(tx_value_assignedcell.lo().cell(), raw_tx_value.lo().cell())?; + region.constrain_equal(tx_value_assignedcell.hi().cell(), raw_tx_value.hi().cell())?; + + // derived inverse not belong to TxTable so do not need copy constraints region.assign_advice( || "tx_id_inv", self.tx_id_inv, offset, || Value::known(tx_id_inv), )?; + // tx_value_lo_inv have no use in tx table non-calldata row region.assign_advice( - || "tx_value_inverse", - self.tx_value_inv, + || "tx_value_lo_inv", + self.tx_value_lo_inv, offset, - || Value::known(tx_value_inv), - )?; - - // Assign vals to raw_public_inputs column - let tx_table_len = TX_LEN * self.max_txs + 1; - - let id_offset = BLOCK_LEN + 1 + EXTRA_LEN; - let index_offset = id_offset + tx_table_len; - let value_offset = index_offset + tx_table_len; - - region.assign_advice( - || "raw_pi.tx_id", - self.raw_public_inputs, - offset + id_offset, - || Value::known(tx_id), + || tx_value_inv.lo(), )?; - region.assign_advice( - || "raw_pi.tx_index", - self.raw_public_inputs, - offset + index_offset, - || Value::known(index), - )?; - - region.assign_advice( - || "raw_pi.tx_value", - self.raw_public_inputs, - offset + value_offset, - || Value::known(tx_value), - )?; - - // Add copy to vec - raw_pi_vals[offset + id_offset] = tx_id; - raw_pi_vals[offset + index_offset] = index; - raw_pi_vals[offset + value_offset] = tx_value; - Ok(()) } @@ -726,376 +770,510 @@ impl<F: Field> PiCircuitConfig<F> { tx_id: usize, tx_id_next: usize, index: usize, - tx_value: F, + tx_value_byte: u8, + rpi_bytes_keccakrlc: &mut Value<F>, + challenges: &Challenges<Value<F>>, + current_offset: &mut usize, + rpi_bytes: &mut [u8], is_final: bool, gas_cost: F, - raw_pi_vals: &mut [F], - ) -> Result<(), Error> { + zero_cell: AssignedCell<F, F>, + ) -> Result<AssignedCell<F, F>, Error> { let tx_id = F::from(tx_id as u64); let tx_id_inv = tx_id.invert().unwrap_or(F::ZERO); let tx_id_diff = F::from(tx_id_next as u64) - tx_id; let tx_id_diff_inv = tx_id_diff.invert().unwrap_or(F::ZERO); let tag = F::from(TxFieldTag::CallData as u64); let index = F::from(index as u64); - let tx_value = tx_value; - let tx_value_inv = tx_value.invert().unwrap_or(F::ZERO); + let tx_value: Word<Value<F>> = Word::from(tx_value_byte).into_value(); + let tx_value_inv = tx_value.map(|t| t.map(|x| x.invert().unwrap_or(F::ZERO))); let is_final = if is_final { F::ONE } else { F::ZERO }; - // Assign vals to raw_public_inputs column - let tx_table_len = TX_LEN * self.max_txs + 1; - let calldata_offset = tx_table_len + offset; - - self.q_tx_calldata.enable(region, calldata_offset)?; + self.q_tx_calldata.enable(region, offset)?; // Assign vals to Tx_table region.assign_advice( || "tx_id", self.tx_table.tx_id, - calldata_offset, + offset, || Value::known(tx_id), )?; region.assign_advice( || "tx_id_inv", self.tx_id_inv, - calldata_offset, + offset, || Value::known(tx_id_inv), )?; - region.assign_fixed( - || "tag", - self.tx_table.tag, - calldata_offset, - || Value::known(tag), - )?; + region.assign_fixed(|| "tag", self.tx_table.tag, offset, || Value::known(tag))?; region.assign_advice( || "index", self.tx_table.index, - calldata_offset, + offset, || Value::known(index), )?; + + let tx_value_cell = + tx_value.assign_advice(region, || "tx_value", self.tx_table.value, offset)?; + region.assign_advice( - || "tx_value", - self.tx_table.value, - calldata_offset, - || Value::known(tx_value), - )?; - region.assign_advice( - || "tx_value_inv", - self.tx_value_inv, - calldata_offset, - || Value::known(tx_value_inv), + || "tx_value_lo_inv", + self.tx_value_lo_inv, + offset, + || tx_value_inv.lo(), )?; region.assign_advice( || "tx_id_diff_inv", self.tx_id_diff_inv, - calldata_offset, + offset, || Value::known(tx_id_diff_inv), )?; region.assign_advice( || "is_final", self.is_final, - calldata_offset, + offset, || Value::known(is_final), )?; region.assign_advice( || "gas_cost", self.calldata_gas_cost, - calldata_offset, + offset, || Value::known(gas_cost), )?; - let value_offset = BLOCK_LEN + 1 + EXTRA_LEN + 3 * tx_table_len; - - region.assign_advice( - || "raw_pi.tx_value", - self.raw_public_inputs, - offset + value_offset, - || Value::known(tx_value), + let (rpi_bytes_keccakrlc_cell, rpi_value_lc_cell) = self.assign_raw_bytes( + region, + &[tx_value_byte], + rpi_bytes_keccakrlc, + rpi_bytes, + current_offset, + challenges, + zero_cell, )?; - // Add copy to vec - raw_pi_vals[offset + value_offset] = tx_value; + // constrain `value` field in calldata match with public input lc cell + // tx_id and index constrains will be on tx circuit + region.constrain_equal(rpi_value_lc_cell.lo().cell(), tx_value_cell.lo().cell())?; + region.constrain_equal(rpi_value_lc_cell.hi().cell(), tx_value_cell.hi().cell())?; - Ok(()) + Ok(rpi_bytes_keccakrlc_cell) + } + + /// assign raw bytes + #[allow(clippy::too_many_arguments)] + fn assign_raw_bytes( + &self, + region: &mut Region<'_, F>, + value_bytes_le: &[u8], + rpi_bytes_keccakrlc: &mut Value<F>, + rpi_bytes: &mut [u8], + current_offset: &mut usize, + challenges: &Challenges<Value<F>>, + zero_cell: AssignedCell<F, F>, + ) -> Result<AssignedByteCells<F>, Error> { + assert!(!value_bytes_le.is_empty()); + assert!(value_bytes_le.len() <= N_BYTES_WORD); + + let keccak_rand = challenges.keccak_input(); + + let mut rpi_value_lc_cells: Vec<AssignedCell<F, F>> = vec![]; + let mut rpi_bytes_keccakrlc_cells: Vec<AssignedCell<F, F>> = vec![]; + let start_offset = *current_offset; + + let value_bytes_be: Vec<u8> = value_bytes_le.iter().rev().copied().collect_vec(); + let value_bytes_chunk: Vec<Vec<u8>> = value_bytes_be + .rchunks(N_BYTES_HALF_WORD) + // chunks will go from right to left first, here we reverse the order to assure left to + // right + .rev() + .map(|x| x.to_vec()) + .collect(); + + *current_offset = value_bytes_chunk.iter().try_fold( + // after rchunk + start_offset, + |mut offset, bytes| -> Result<usize, Error> { + bytes.iter().enumerate().try_fold( + Value::known(F::ZERO), + |rpi_value_lc, (i, byte)| -> Result<Value<F>, Error> { + // assign q_rpi_value_start when index match beginning of chunk size + region.assign_fixed( + || "q_rpi_value_start", + self.q_rpi_value_start, + offset, + || Value::known(if i == 0 { F::ONE } else { F::ZERO }), + )?; + + let rpi_value_lc = if i == 0 { + Value::known(F::ZERO) + } else { + rpi_value_lc + } + .zip(Value::known(F::from(BYTE_POW_BASE))) + .and_then(|(acc, rand)| Value::known(acc * rand + F::from(*byte as u64))); + + // assign rpi_value_lc + let rpi_value_lc_cell = region.assign_advice( + || "rpi_value_lc", + self.rpi_value_lc, + offset, + || rpi_value_lc, + )?; + + // for rpi_value_lc_cell, it accumulated per N_BYTES_HALF_WORD chunk size, + // and the remains + if i == bytes.len() - 1 { + rpi_value_lc_cells.push(rpi_value_lc_cell); + } + + rpi_bytes[offset] = *byte; + + // this is mutable for accumulated across value + *rpi_bytes_keccakrlc = + rpi_bytes_keccakrlc + .zip(keccak_rand) + .and_then(|(acc, rand)| { + Value::known(acc * rand + F::from(*byte as u64)) + }); + + // enable + self.q_rpi_byte_enable.enable(region, offset)?; + + // assign rpi bytes + region.assign_advice( + || "rpi_bytes", + self.rpi_bytes, + offset, + || Value::known(F::from(*byte as u64)), + )?; + + // assign rpi_bytes_keccakrlc + let rpi_bytes_keccakrlc_cell = region.assign_advice( + || "rpi_bytes_keccakrlc", + self.rpi_bytes_keccakrlc, + offset, + || *rpi_bytes_keccakrlc, + )?; + + if start_offset - offset == value_bytes_le.len() - 1 { + rpi_bytes_keccakrlc_cells.push(rpi_bytes_keccakrlc_cell); + } + + offset = offset.saturating_sub(1); + + Ok(rpi_value_lc) + }, + )?; + Ok(offset) + }, + )?; + + assert!(rpi_value_lc_cells.len() <= 2); // at most hi, lo 2 cells + rpi_value_lc_cells.reverse(); // reverse to lo, hi order + assert!(rpi_bytes_keccakrlc_cells.len() == 1); // keccak rlc only 1 cell + + Ok(( + rpi_bytes_keccakrlc_cells[0].clone(), + Word::new( + (0..2) // padding rpi_value_lc_cells to 2 limbs if less then 2 + .map(|i| rpi_value_lc_cells.get(i).unwrap_or(&zero_cell).clone()) + .collect_vec() + .try_into() + .unwrap(), + ), + )) } /// Assigns the values for block table in the block_table column - /// and in the raw_public_inputs column. A copy is also stored in - /// a vector for computing RLC(raw_public_inputs) + /// and rpi_bytes columns. Copy constraints will be enable + /// to assure block_table value cell equal with respective rpi_byte_rlc cell + #[allow(clippy::too_many_arguments)] fn assign_block_table( &self, region: &mut Region<'_, F>, + block_table_offset: &mut usize, block_values: BlockValues, - randomness: F, - raw_pi_vals: &mut [F], - ) -> Result<AssignedCell<F, F>, Error> { - let mut offset = 0; - for i in 0..BLOCK_LEN + 1 { - self.q_block_table.enable(region, offset + i)?; - } - - // zero row - region.assign_advice( - || "zero", - self.block_table.value, - offset, - || Value::known(F::ZERO), - )?; - region.assign_advice( - || "zero", - self.raw_public_inputs, - offset, - || Value::known(F::ZERO), - )?; - raw_pi_vals[offset] = F::ZERO; - offset += 1; + rpi_bytes_keccakrlc: &mut Value<F>, + challenges: &Challenges<Value<F>>, + current_offset: &mut usize, + rpi_bytes: &mut [u8], + zero_cell: AssignedCell<F, F>, + ) -> Result<(), Error> { + let mut block_copy_cells = vec![]; // coinbase - let coinbase = block_values.coinbase.to_scalar().unwrap(); - region.assign_advice( - || "coinbase", - self.block_table.value, - offset, - || Value::known(coinbase), - )?; - region.assign_advice( - || "coinbase", - self.raw_public_inputs, - offset, - || Value::known(coinbase), + let block_value = Word::from(block_values.coinbase) + .into_value() + .assign_advice( + region, + || "coinbase", + self.block_table.value, + *block_table_offset, + )?; + let (_, word) = self.assign_raw_bytes( + region, + &block_values + .coinbase + .to_fixed_bytes() + .iter() + .rev() + .copied() + .collect_vec(), + rpi_bytes_keccakrlc, + rpi_bytes, + current_offset, + challenges, + zero_cell.clone(), )?; - raw_pi_vals[offset] = coinbase; - offset += 1; + block_copy_cells.push((block_value, word)); + *block_table_offset += 1; // gas_limit - let gas_limit = F::from(block_values.gas_limit); - region.assign_advice( - || "gas_limit", - self.block_table.value, - offset, - || Value::known(gas_limit), - )?; - region.assign_advice( - || "gas_limit", - self.raw_public_inputs, - offset, - || Value::known(gas_limit), + let block_value = Word::from(block_values.gas_limit) + .into_value() + .assign_advice( + region, + || "gas_limit", + self.block_table.value, + *block_table_offset, + )?; + let (_, word) = self.assign_raw_bytes( + region, + &block_values.gas_limit.to_le_bytes(), + rpi_bytes_keccakrlc, + rpi_bytes, + current_offset, + challenges, + zero_cell.clone(), )?; - raw_pi_vals[offset] = gas_limit; - offset += 1; + block_copy_cells.push((block_value, word)); + *block_table_offset += 1; // number - let number = F::from(block_values.number); - region.assign_advice( + let block_value = Word::from(block_values.number).into_value().assign_advice( + region, || "number", self.block_table.value, - offset, - || Value::known(number), + *block_table_offset, )?; - region.assign_advice( - || "number", - self.raw_public_inputs, - offset, - || Value::known(number), + let (_, word) = self.assign_raw_bytes( + region, + &block_values.number.to_le_bytes(), + rpi_bytes_keccakrlc, + rpi_bytes, + current_offset, + challenges, + zero_cell.clone(), )?; - raw_pi_vals[offset] = number; - offset += 1; + block_copy_cells.push((block_value, word)); + *block_table_offset += 1; // timestamp - let timestamp = F::from(block_values.timestamp); - region.assign_advice( - || "timestamp", - self.block_table.value, - offset, - || Value::known(timestamp), - )?; - region.assign_advice( - || "timestamp", - self.raw_public_inputs, - offset, - || Value::known(timestamp), + let block_value = Word::from(block_values.timestamp) + .into_value() + .assign_advice( + region, + || "timestamp", + self.block_table.value, + *block_table_offset, + )?; + let (_, word) = self.assign_raw_bytes( + region, + &block_values.timestamp.to_le_bytes(), + rpi_bytes_keccakrlc, + rpi_bytes, + current_offset, + challenges, + zero_cell.clone(), )?; - raw_pi_vals[offset] = timestamp; - offset += 1; + block_copy_cells.push((block_value, word)); + *block_table_offset += 1; // difficulty - let difficulty = rlc(block_values.difficulty.to_le_bytes(), randomness); - region.assign_advice( - || "difficulty", - self.block_table.value, - offset, - || Value::known(difficulty), - )?; - region.assign_advice( - || "difficulty", - self.raw_public_inputs, - offset, - || Value::known(difficulty), + let block_value = Word::from(block_values.difficulty) + .into_value() + .assign_advice( + region, + || "difficulty", + self.block_table.value, + *block_table_offset, + )?; + let (_, word) = self.assign_raw_bytes( + region, + &block_values.difficulty.to_le_bytes(), + rpi_bytes_keccakrlc, + rpi_bytes, + current_offset, + challenges, + zero_cell.clone(), )?; - raw_pi_vals[offset] = difficulty; - offset += 1; + block_copy_cells.push((block_value, word)); + *block_table_offset += 1; // base_fee - let base_fee = rlc(block_values.base_fee.to_le_bytes(), randomness); - region.assign_advice( - || "base_fee", - self.block_table.value, - offset, - || Value::known(base_fee), - )?; - region.assign_advice( - || "base_fee", - self.raw_public_inputs, - offset, - || Value::known(base_fee), + let block_value = Word::from(block_values.base_fee) + .into_value() + .assign_advice( + region, + || "base_fee", + self.block_table.value, + *block_table_offset, + )?; + let (_, word) = self.assign_raw_bytes( + region, + &block_values.base_fee.to_le_bytes(), + rpi_bytes_keccakrlc, + rpi_bytes, + current_offset, + challenges, + zero_cell.clone(), )?; - raw_pi_vals[offset] = base_fee; - offset += 1; + block_copy_cells.push((block_value, word)); + *block_table_offset += 1; // chain_id - let chain_id = F::from(block_values.chain_id); - region.assign_advice( - || "chain_id", - self.block_table.value, - offset, - || Value::known(chain_id), - )?; - let chain_id_cell = region.assign_advice( - || "chain_id", - self.raw_public_inputs, - offset, - || Value::known(chain_id), + let block_value = Word::from(block_values.chain_id) + .into_value() + .assign_advice( + region, + || "chain_id", + self.block_table.value, + *block_table_offset, + )?; + let (_, word) = self.assign_raw_bytes( + region, + &block_values.chain_id.to_le_bytes(), + rpi_bytes_keccakrlc, + rpi_bytes, + current_offset, + challenges, + zero_cell.clone(), )?; - raw_pi_vals[offset] = chain_id; - offset += 1; + block_copy_cells.push((block_value, word)); + *block_table_offset += 1; for prev_hash in block_values.history_hashes { - let prev_hash = rlc(prev_hash.to_fixed_bytes(), randomness); - region.assign_advice( + let block_value = Word::from(prev_hash).into_value().assign_advice( + region, || "prev_hash", self.block_table.value, - offset, - || Value::known(prev_hash), + *block_table_offset, )?; - region.assign_advice( - || "prev_hash", - self.raw_public_inputs, - offset, - || Value::known(prev_hash), + let (_, word) = self.assign_raw_bytes( + region, + &prev_hash + .to_fixed_bytes() + .iter() + .rev() + .copied() + .collect_vec(), + rpi_bytes_keccakrlc, + rpi_bytes, + current_offset, + challenges, + zero_cell.clone(), )?; - raw_pi_vals[offset] = prev_hash; - offset += 1; + block_copy_cells.push((block_value, word)); + *block_table_offset += 1; } - Ok(chain_id_cell) + block_copy_cells.iter().try_for_each(|(left, right)| { + region.constrain_equal(left.lo().cell(), right.lo().cell())?; + region.constrain_equal(left.hi().cell(), right.hi().cell())?; + Ok::<(), Error>(()) + })?; + + Ok(()) } /// Assigns the extra fields (not in block or tx tables): + /// - block hash /// - state root /// - previous block state root - /// to the raw_public_inputs column and stores a copy in a - /// vector for computing RLC(raw_public_inputs). + /// to the rpi_byte column + #[allow(clippy::too_many_arguments)] fn assign_extra_fields( &self, region: &mut Region<'_, F>, extra: ExtraValues, - randomness: F, - raw_pi_vals: &mut [F], - ) -> Result<[AssignedCell<F, F>; 2], Error> { - let mut offset = BLOCK_LEN + 1; + rpi_bytes_keccakrlc: &mut Value<F>, + challenges: &Challenges<Value<F>>, + current_offset: &mut usize, + rpi_bytes: &mut [u8], + zero_cell: AssignedCell<F, F>, + ) -> Result<(), Error> { // block hash - // let block_hash = rlc(extra.block_hash.to_fixed_bytes(), randomness); - // region.assign_advice( - // || "block.hash", - // self.raw_public_inputs, - // offset, - // || Ok(block_hash), - // )?; - // raw_pi_vals[offset] = block_hash; - // offset += 1; + self.assign_raw_bytes( + region, + &extra + .block_hash + .to_fixed_bytes() + .iter() + .copied() + .rev() + .collect_vec(), + rpi_bytes_keccakrlc, + rpi_bytes, + current_offset, + challenges, + zero_cell.clone(), + )?; // block state root - let state_root = rlc(extra.state_root.to_fixed_bytes(), randomness); - let state_root_cell = region.assign_advice( - || "state.root", - self.raw_public_inputs, - offset, - || Value::known(state_root), + self.assign_raw_bytes( + region, + &extra + .state_root + .to_fixed_bytes() + .iter() + .copied() + .rev() + .collect_vec(), + rpi_bytes_keccakrlc, + rpi_bytes, + current_offset, + challenges, + zero_cell.clone(), )?; - raw_pi_vals[offset] = state_root; - offset += 1; // previous block state root - let prev_state_root = rlc(extra.prev_state_root.to_fixed_bytes(), randomness); - let prev_state_root_cell = region.assign_advice( - || "parent_block.hash", - self.raw_public_inputs, - offset, - || Value::known(prev_state_root), + self.assign_raw_bytes( + region, + &extra + .prev_state_root + .to_fixed_bytes() + .iter() + .copied() + .rev() + .collect_vec(), + rpi_bytes_keccakrlc, + rpi_bytes, + current_offset, + challenges, + zero_cell, )?; - raw_pi_vals[offset] = prev_state_root; - Ok([state_root_cell, prev_state_root_cell]) + + Ok(()) } - /// Assign `rpi_rlc_acc` and `rand_rpi` columns - #[allow(clippy::type_complexity)] - fn assign_rlc_pi( + /// Assign digest word + fn assign_rpi_digest_word( &self, region: &mut Region<'_, F>, - rand_rpi: F, - raw_pi_vals: Vec<F>, - ) -> Result<(AssignedCell<F, F>, AssignedCell<F, F>), Error> { - let circuit_len = self.circuit_len(); - assert_eq!(circuit_len, raw_pi_vals.len()); - - // Last row - let offset = circuit_len - 1; - let mut rpi_rlc_acc = raw_pi_vals[offset]; - region.assign_advice( - || "rpi_rlc_acc", - self.rpi_rlc_acc, - offset, - || Value::known(rpi_rlc_acc), - )?; - region.assign_advice( - || "rand_rpi", - self.rand_rpi, - offset, - || Value::known(rand_rpi), - )?; - self.q_end.enable(region, offset)?; - - // Next rows - for offset in (1..circuit_len - 1).rev() { - rpi_rlc_acc *= rand_rpi; - rpi_rlc_acc += raw_pi_vals[offset]; - region.assign_advice( - || "rpi_rlc_acc", - self.rpi_rlc_acc, - offset, - || Value::known(rpi_rlc_acc), - )?; - region.assign_advice( - || "rand_rpi", - self.rand_rpi, - offset, - || Value::known(rand_rpi), - )?; - self.q_not_end.enable(region, offset)?; - } - - // First row - rpi_rlc_acc *= rand_rpi; - rpi_rlc_acc += raw_pi_vals[0]; - let rpi_rlc = region.assign_advice( - || "rpi_rlc_acc", - self.rpi_rlc_acc, + digest_word: Word<F>, + ) -> Result<Word<AssignedCell<F, F>>, Error> { + let lo_assigned_cell = region.assign_advice( + || "rpi_digest_bytes_limbs_lo", + self.rpi_digest_bytes_limbs, 0, - || Value::known(rpi_rlc_acc), + || digest_word.into_value().lo(), + )?; + let hi_assigned_cell = region.assign_advice( + || "rpi_digest_bytes_limbs_hi", + self.rpi_digest_bytes_limbs, + 1, + || digest_word.into_value().hi(), )?; - let rpi_rand = - region.assign_advice(|| "rand_rpi", self.rand_rpi, 0, || Value::known(rand_rpi))?; - self.q_not_end.enable(region, 0)?; - Ok((rpi_rand, rpi_rlc)) + Ok(Word::new([lo_assigned_cell, hi_assigned_cell])) } } @@ -1104,29 +1282,19 @@ impl<F: Field> PiCircuitConfig<F> { pub struct PiCircuit<F: Field> { max_txs: usize, max_calldata: usize, - /// Randomness for RLC encdoing - pub randomness: F, - /// Randomness for PI encoding - pub rand_rpi: F, /// PublicInputs data known by the verifier pub public_data: PublicData, + _marker: PhantomData<F>, } impl<F: Field> PiCircuit<F> { /// Creates a new PiCircuit - pub fn new( - max_txs: usize, - max_calldata: usize, - randomness: impl Into<F>, - rand_rpi: impl Into<F>, - public_data: PublicData, - ) -> Self { + pub fn new(max_txs: usize, max_calldata: usize, public_data: PublicData) -> Self { Self { max_txs, max_calldata, - randomness: randomness.into(), - rand_rpi: rand_rpi.into(), public_data, + _marker: PhantomData, } } } @@ -1135,55 +1303,26 @@ impl<F: Field> SubCircuit<F> for PiCircuit<F> { type Config = PiCircuitConfig<F>; fn unusable_rows() -> usize { - // Column raw_public_inputs is queried at 4 distinct rotations at - // - Rotation::cur() - // - Rotation(BLOCK_LEN + 1 + EXTRA_LEN) - // - Rotation(BLOCK_LEN + 1 + EXTRA_LEN + max_txs * TX_LEN + 1) - // - Rotation(BLOCK_LEN + 1 + EXTRA_LEN + 2 * (max_txs * TX_LEN + 1)) - // so returns 7 unusable rows. - 7 + // No column queried at more than 3 distinct rotations, so returns 6 as + // minimum unusable rows. + 6 } fn new_from_block(block: &witness::Block<F>) -> Self { - let public_data = PublicData { - chain_id: block.context.chain_id, - history_hashes: block.context.history_hashes.clone(), - transactions: block.eth_block.transactions.clone(), - state_root: block.eth_block.state_root, - prev_state_root: H256::from_uint(&block.prev_state_root), - block_constants: BlockConstants { - coinbase: block.context.coinbase, - timestamp: block.context.timestamp, - number: block.context.number.as_u64().into(), - difficulty: block.context.difficulty, - gas_limit: block.context.gas_limit.into(), - base_fee: block.context.base_fee, - }, - }; - let rand_rpi = gen_rand_rpi::<F>( - block.circuits_params.max_txs, - block.circuits_params.max_calldata, - &public_data, - block.randomness, - ); + let public_data = public_data_convert(block); PiCircuit::new( block.circuits_params.max_txs, block.circuits_params.max_calldata, - block.randomness, - rand_rpi, public_data, ) } /// Return the minimum number of rows required to prove the block fn min_num_rows_block(block: &witness::Block<F>) -> (usize, usize) { - let row_num = |tx_num, calldata_len| { - BLOCK_LEN + 1 + EXTRA_LEN + 3 * (TX_LEN * tx_num + 1) + calldata_len - }; let calldata_len = block.txs.iter().map(|tx| tx.call_data.len()).sum(); ( - row_num(block.txs.len(), calldata_len), - row_num( + Self::Config::circuit_len_by_txs_calldata(block.txs.len(), calldata_len), + Self::Config::circuit_len_by_txs_calldata( block.circuits_params.max_txs, block.circuits_params.max_calldata, ), @@ -1192,50 +1331,18 @@ impl<F: Field> SubCircuit<F> for PiCircuit<F> { /// Compute the public inputs for this circuit. fn instance(&self) -> Vec<Vec<F>> { - let rlc_rpi_col = raw_public_inputs_col::<F>( - self.max_txs, - self.max_calldata, - &self.public_data, - self.randomness, - ); - assert_eq!( - rlc_rpi_col.len(), - BLOCK_LEN + 1 + EXTRA_LEN + 3 * (TX_LEN * self.max_txs + 1) + self.max_calldata - ); - - // Computation of raw_pulic_inputs - let rlc_rpi = rlc_rpi_col - .iter() - .rev() - .fold(F::ZERO, |acc, val| acc * self.rand_rpi + val); - - // let block_hash = public_data - // .eth_block - // .hash - // .unwrap_or_else(H256::zero) - // .to_fixed_bytes(); - let public_inputs = vec![ - self.rand_rpi, - rlc_rpi, - F::from(self.public_data.chain_id.as_u64()), - rlc( - self.public_data.state_root.to_fixed_bytes(), - self.randomness, - ), - rlc( - self.public_data.prev_state_root.to_fixed_bytes(), - self.randomness, - ), - ]; + let rpi_digest_byte_field = self + .public_data + .get_rpi_digest_word(self.max_txs, self.max_calldata); - vec![public_inputs] + vec![vec![rpi_digest_byte_field.lo(), rpi_digest_byte_field.hi()]] } /// Make the assignments to the PiCircuit fn synthesize_sub( &self, config: &Self::Config, - _challenges: &Challenges<Value<F>>, + challenges: &Challenges<Value<F>>, layouter: &mut impl Layouter<F>, ) -> Result<(), Error> { layouter.assign_region( @@ -1253,116 +1360,206 @@ impl<F: Field> SubCircuit<F> for PiCircuit<F> { Ok(()) }, )?; - let pi_cells = layouter.assign_region( + let digest_word_assigned = layouter.assign_region( || "region 0", |mut region| { // Annotate columns config.tx_table.annotate_columns_in_region(&mut region); config.block_table.annotate_columns_in_region(&mut region); - - region.name_column(|| "raw_public_inputs", config.raw_public_inputs); + config.keccak_table.annotate_columns_in_region(&mut region); + + region.name_column(|| "q_rpi_value_start", config.q_rpi_value_start); + region.name_column(|| "rpi_bytes", config.rpi_bytes); + region.name_column(|| "rpi_bytes_keccakrlc", config.rpi_bytes_keccakrlc); + region.name_column(|| "rpi_value_lc", config.rpi_value_lc); + region.name_column(|| "q_digest_value_start", config.q_digest_value_start); + region.name_column(|| "rpi_digest_bytes", config.rpi_digest_bytes); + region.name_column(|| "rpi_digest_bytes_lc", config.rpi_digest_bytes_limbs); region.name_column(|| "tx_id_inv", config.tx_id_inv); - region.name_column(|| "tx_value_inv", config.tx_value_inv); + region.name_column(|| "tx_value_lo_inv", config.tx_value_lo_inv); region.name_column(|| "tx_id_diff_inv", config.tx_id_diff_inv); region.name_column(|| "fixed_u16", config.fixed_u16); region.name_column(|| "calldata_gas_cost", config.calldata_gas_cost); region.name_column(|| "is_final", config.is_final); - region.name_column(|| "rpi_rlc_acc", config.rpi_rlc_acc); - region.name_column(|| "rand_rpi", config.rand_rpi); - - region.name_column(|| "Public_Inputs", config.pi); + region.name_column(|| "Public_Inputs", config.pi_instance); let circuit_len = config.circuit_len(); - let mut raw_pi_vals = vec![F::ZERO; circuit_len]; + let mut rpi_bytes = vec![0u8; circuit_len]; + + let mut rpi_bytes_keccakrlc = Value::known(F::ZERO); + + // traverse reversely of the region + let mut current_offset: usize = circuit_len - 1; + let start_offset = current_offset; + + config.q_digest_last.enable(&mut region, N_BYTES_WORD - 1)?; // digest is 32 bytes + config.q_bytes_last.enable(&mut region, start_offset)?; + + // assign last + 1 to 0 to as wordaround to skip CellNotAssigned Error from + // Mock_prover + config.reset_rpi_bytes_row(&mut region, start_offset + 1)?; + config.reset_rpi_digest_row(&mut region, N_BYTES_WORD)?; // Assign block table let block_values = self.public_data.get_block_table_values(); - let chain_id = config.assign_block_table( + let mut block_table_offset = 0; + + // assign empty row in block table + let zero_word = Word::default().into_value().assign_advice( + &mut region, + || "zero", + config.block_table.value, + block_table_offset, + )?; + let zero_cell = zero_word.hi(); + let (_, _) = config.assign_raw_bytes( + &mut region, + &0u8.to_le_bytes(), + &mut rpi_bytes_keccakrlc, + &mut rpi_bytes, + &mut current_offset, + challenges, + zero_cell.clone(), + )?; + block_table_offset += 1; + config.assign_block_table( &mut region, + &mut block_table_offset, block_values, - self.randomness, - &mut raw_pi_vals, + &mut rpi_bytes_keccakrlc, + challenges, + &mut current_offset, + &mut rpi_bytes, + zero_cell.clone(), )?; + assert_eq!(start_offset - current_offset, N_BYTES_ONE + N_BYTES_BLOCK); // Assign extra fields let extra_vals = self.public_data.get_extra_values(); - let [state_root, prev_state_root] = config.assign_extra_fields( + config.assign_extra_fields( &mut region, extra_vals, - self.randomness, - &mut raw_pi_vals, + &mut rpi_bytes_keccakrlc, + challenges, + &mut current_offset, + &mut rpi_bytes, + zero_cell, )?; + assert_eq!( + start_offset - current_offset, + N_BYTES_ONE + N_BYTES_BLOCK + N_BYTES_EXTRA_VALUE + ); - let mut offset = 0; + let mut tx_table_offset = 0; // Assign Tx table let txs = self.public_data.get_tx_table_values(); assert!(txs.len() <= config.max_txs); let tx_default = TxValues::default(); // Add empty row + // assign first tx_value empty row, and to obtain zero cell via hi() part. + // we use hi() part to copy-constrains other tx_table value `hi` cells. + let zero_cell = Word::default() + .into_value() + .assign_advice(&mut region, || "tx_value", config.tx_table.value, 0)? + .hi(); config.assign_tx_row( &mut region, - offset, - 0, + tx_table_offset, + 0u64, TxFieldTag::Null, - 0, - F::ZERO, - &mut raw_pi_vals, + 0u64, + &[0u8; 1], + &mut rpi_bytes_keccakrlc, + challenges, + &mut current_offset, + &mut rpi_bytes, + zero_cell.clone(), )?; - offset += 1; - - for i in 0..config.max_txs { - let tx = if i < txs.len() { &txs[i] } else { &tx_default }; - - for (tag, value) in &[ - (TxFieldTag::Nonce, F::from(tx.nonce)), - (TxFieldTag::Gas, F::from(tx.gas)), - ( - TxFieldTag::GasPrice, - rlc(tx.gas_price.to_le_bytes(), self.randomness), - ), - ( - TxFieldTag::CallerAddress, - tx.from_addr.to_scalar().expect("tx.from too big"), - ), - ( - TxFieldTag::CalleeAddress, - tx.to_addr.to_scalar().expect("tx.to too big"), - ), - (TxFieldTag::IsCreate, F::from(tx.is_create as u64)), - ( - TxFieldTag::Value, - rlc(tx.value.to_le_bytes(), self.randomness), - ), - (TxFieldTag::CallDataLength, F::from(tx.call_data_len)), - (TxFieldTag::CallDataGasCost, F::from(tx.call_data_gas_cost)), - ( - TxFieldTag::TxSignHash, - rlc(tx.tx_sign_hash, self.randomness), - ), - ] { - config.assign_tx_row( - &mut region, - offset, - i + 1, - *tag, - 0, - *value, - &mut raw_pi_vals, - )?; - offset += 1; - } - } + tx_table_offset += 1; + + iter::empty() + .chain(&txs) + .chain((0..(config.max_txs - txs.len())).map(|_| &tx_default)) + .enumerate() + .try_for_each(|(i, tx)| -> Result<(), Error> { + for (tag, value_bytes) in &[ + (TxFieldTag::Nonce, tx.nonce.to_le_bytes().to_vec()), + (TxFieldTag::Gas, tx.gas_limit.to_le_bytes().to_vec()), + (TxFieldTag::GasPrice, tx.gas_price.to_le_bytes().to_vec()), + ( + TxFieldTag::CallerAddress, + tx.from_addr + .as_fixed_bytes() + .iter() + .copied() + .rev() + .collect_vec(), + ), + ( + TxFieldTag::CalleeAddress, + tx.to_addr + .as_fixed_bytes() + .iter() + .copied() + .rev() + .collect_vec(), + ), + (TxFieldTag::IsCreate, tx.is_create.to_le_bytes().to_vec()), + (TxFieldTag::Value, tx.value.to_le_bytes().to_vec()), + ( + TxFieldTag::CallDataLength, + tx.call_data_len.to_le_bytes().to_vec(), + ), + ( + TxFieldTag::CallDataGasCost, + tx.call_data_gas_cost.to_le_bytes().to_vec(), + ), + // TODO witness tx.tx_sign_hash + (TxFieldTag::TxSignHash, tx.tx_sign_hash.to_vec()), + ] { + let i: u64 = i.try_into().unwrap(); + // assign tx field + config.assign_tx_row( + &mut region, + tx_table_offset, + i + 1, + *tag, + 0, + value_bytes, + &mut rpi_bytes_keccakrlc, + challenges, + &mut current_offset, + &mut rpi_bytes, + zero_cell.clone(), + )?; + tx_table_offset += 1; + } + Ok(()) + })?; + assert_eq!( + start_offset - current_offset, + N_BYTES_ONE + + N_BYTES_BLOCK + + N_BYTES_EXTRA_VALUE + + Self::Config::circuit_len_tx_id(config.max_txs) + + Self::Config::circuit_len_tx_index(config.max_txs) + + Self::Config::circuit_len_tx_values(config.max_txs) + ); + // Tx Table CallData let mut calldata_count = 0; - config.q_calldata_start.enable(&mut region, offset)?; - // the call data bytes assignment starts at offset 0 - offset = 0; - let txs = self.public_data.txs(); - for (i, tx) in self.public_data.txs().iter().enumerate() { + config + .q_calldata_start + .enable(&mut region, tx_table_offset)?; + + let mut call_data_offset = TX_LEN * self.max_txs + EMPTY_TX_ROW_COUNT; + + let txs = self.public_data.transactions.clone(); + for (i, tx) in self.public_data.transactions.iter().enumerate() { let call_data_length = tx.call_data.0.len(); let mut gas_cost = F::ZERO; for (index, byte) in tx.call_data.0.iter().enumerate() { @@ -1389,185 +1586,68 @@ impl<F: Field> SubCircuit<F> for PiCircuit<F> { config.assign_tx_calldata_row( &mut region, - offset, + call_data_offset, i + 1, tx_id_next, index, - F::from(*byte as u64), + *byte, + &mut rpi_bytes_keccakrlc, + challenges, + &mut current_offset, + &mut rpi_bytes, is_final, gas_cost, - &mut raw_pi_vals, + zero_cell.clone(), )?; - offset += 1; + call_data_offset += 1; calldata_count += 1; } } + for _ in calldata_count..config.max_calldata { config.assign_tx_calldata_row( &mut region, - offset, + call_data_offset, 0, // tx_id 0, 0, - F::ZERO, + 0u8, + &mut rpi_bytes_keccakrlc, + challenges, + &mut current_offset, + &mut rpi_bytes, false, F::ZERO, - &mut raw_pi_vals, + zero_cell.clone(), )?; - offset += 1; + call_data_offset += 1; } - // NOTE: we add this empty row so as to pass mock prover's check - // otherwise it will emit CellNotAssigned Error - let tx_table_len = TX_LEN * self.max_txs + 1; - config.assign_tx_empty_row(&mut region, tx_table_len + offset)?; - - // rpi_rlc and rand_rpi cols - let (rpi_rand, rpi_rlc) = - config.assign_rlc_pi(&mut region, self.rand_rpi, raw_pi_vals)?; - - Ok(vec![ - rpi_rand, - rpi_rlc, - chain_id, - state_root, - prev_state_root, - ]) - }, - )?; + assert_eq!(current_offset, 0); - // Constrain raw_public_input cells to public inputs - for (i, pi_cell) in pi_cells.iter().enumerate() { - layouter.constrain_instance(pi_cell.cell(), config.pi, i)?; - } + // assign keccak digest + let digest_word = self + .public_data + .get_rpi_digest_word::<F>(config.max_txs, config.max_calldata); - Ok(()) - } -} + let digest_word_assigned = + config.assign_rpi_digest_word(&mut region, digest_word)?; -/// Compute the raw_public_inputs column from the verifier's perspective. -fn raw_public_inputs_col<F: Field>( - max_txs: usize, - max_calldata: usize, - public_data: &PublicData, - randomness: F, // For RLC encoding -) -> Vec<F> { - let block = public_data.get_block_table_values(); - let extra = public_data.get_extra_values(); - let txs = public_data.get_tx_table_values(); - - let mut offset = 0; - let mut result = - vec![F::ZERO; BLOCK_LEN + 1 + EXTRA_LEN + 3 * (TX_LEN * max_txs + 1) + max_calldata]; - - // Insert Block Values - // zero row - result[offset] = F::ZERO; - offset += 1; - // coinbase - result[offset] = block.coinbase.to_scalar().unwrap(); - offset += 1; - // gas_limit - result[offset] = F::from(block.gas_limit); - offset += 1; - // number - result[offset] = F::from(block.number); - offset += 1; - // timestamp - result[offset] = F::from(block.timestamp); - offset += 1; - // difficulty - result[offset] = rlc(block.difficulty.to_le_bytes(), randomness); - offset += 1; - // base_fee - result[offset] = rlc(block.base_fee.to_le_bytes(), randomness); - offset += 1; - // chain_id - result[offset] = F::from(block.chain_id); - offset += 1; - // Previous block hashes - for prev_hash in block.history_hashes { - result[offset] = rlc(prev_hash.to_fixed_bytes(), randomness); - offset += 1; - } + // lookup assignment + // also assign empty to last of TxTable + config.assign_empty_txtable_row(&mut region, call_data_offset)?; - // Insert Extra Values - // block Root - result[BLOCK_LEN + 1] = rlc(extra.state_root.to_fixed_bytes(), randomness); - // parent block hash - result[BLOCK_LEN + 2] = rlc(extra.prev_state_root.to_fixed_bytes(), randomness); - - // Insert Tx table - offset = 0; - assert!(txs.len() <= max_txs); - let tx_default = TxValues::default(); - - let tx_table_len = TX_LEN * max_txs + 1; - - let id_offset = BLOCK_LEN + 1 + EXTRA_LEN; - let index_offset = id_offset + tx_table_len; - let value_offset = index_offset + tx_table_len; - - // Insert zero row - result[id_offset + offset] = F::ZERO; - result[index_offset + offset] = F::ZERO; - result[value_offset + offset] = F::ZERO; - - offset += 1; - - for i in 0..max_txs { - let tx = if i < txs.len() { &txs[i] } else { &tx_default }; - - for val in &[ - F::from(tx.nonce), - F::from(tx.gas), - rlc(tx.gas_price.to_le_bytes(), randomness), - tx.from_addr.to_scalar().expect("tx.from too big"), - tx.to_addr.to_scalar().expect("tx.to too big"), - F::from(tx.is_create as u64), - rlc(tx.value.to_le_bytes(), randomness), - F::from(tx.call_data_len), - F::from(tx.call_data_gas_cost), - rlc(tx.tx_sign_hash, randomness), - ] { - result[id_offset + offset] = F::from((i + 1) as u64); - result[index_offset + offset] = F::ZERO; - result[value_offset + offset] = *val; - - offset += 1; - } - } - // Tx Table CallData - let mut calldata_count = 0; - for (_i, tx) in public_data.txs().iter().enumerate() { - for (_index, byte) in tx.call_data.0.iter().enumerate() { - assert!(calldata_count < max_calldata); - result[value_offset + offset] = F::from(*byte as u64); - offset += 1; - calldata_count += 1; - } - } - for _ in calldata_count..max_calldata { - result[value_offset + offset] = F::ZERO; - offset += 1; - } + // keccak lookup occur on offset 0 + config.q_rpi_keccak_lookup.enable(&mut region, 0)?; - result -} + Ok(digest_word_assigned) + }, + )?; -/// Computes `rand_rpi` - a commitment to the `raw_public_inputs_col` values. -pub fn gen_rand_rpi<F: Field>( - max_txs: usize, - max_calldata: usize, - public_data: &PublicData, - randomness: F, -) -> F { - let rlc_rpi_col = raw_public_inputs_col::<F>(max_txs, max_calldata, public_data, randomness); - let mut keccak = Keccak::default(); - for value in rlc_rpi_col.iter() { - let mut tmp = value.to_repr(); - tmp.reverse(); - keccak.update(&tmp); + // Constrain raw_public_input cells to public inputs + + layouter.constrain_instance(digest_word_assigned.lo().cell(), config.pi_instance, 0)?; + layouter.constrain_instance(digest_word_assigned.hi().cell(), config.pi_instance, 1)?; + + Ok(()) } - let rand_rpi = Word::from(keccak.digest().as_slice()) % F::MODULUS; - rand_rpi.to_scalar().expect("rand_rpi.to_scalar") } diff --git a/zkevm-circuits/src/pi_circuit/dev.rs b/zkevm-circuits/src/pi_circuit/dev.rs index 2ca0345ecb..ad6ae3d1fc 100644 --- a/zkevm-circuits/src/pi_circuit/dev.rs +++ b/zkevm-circuits/src/pi_circuit/dev.rs @@ -1,5 +1,15 @@ -pub use super::PiCircuit; -use super::*; +use super::{PiCircuit, PiCircuitConfig, PiCircuitConfigArgs}; + +use eth_types::{self, Field}; + +use crate::{ + table::{BlockTable, KeccakTable, TxTable}, + util::{Challenges, SubCircuit, SubCircuitConfig}, +}; +use halo2_proofs::{ + circuit::{Layouter, SimpleFloorPlanner}, + plonk::{Circuit, ConstraintSystem, Error}, +}; /// Public Input Circuit configuration parameters #[derive(Default)] @@ -29,6 +39,9 @@ impl<F: Field> Circuit<F> for PiCircuit<F> { fn configure_with_params(meta: &mut ConstraintSystem<F>, params: Self::Params) -> Self::Config { let block_table = BlockTable::construct(meta); let tx_table = TxTable::construct(meta); + let keccak_table = KeccakTable::construct(meta); + let challenges = Challenges::construct(meta); + let challenge_exprs = challenges.exprs(meta); ( PiCircuitConfig::new( meta, @@ -37,9 +50,11 @@ impl<F: Field> Circuit<F> for PiCircuit<F> { max_calldata: params.max_calldata, block_table, tx_table, + keccak_table, + challenges: challenge_exprs, }, ), - Challenges::construct(meta), + challenges, ) } @@ -53,6 +68,14 @@ impl<F: Field> Circuit<F> for PiCircuit<F> { mut layouter: impl Layouter<F>, ) -> Result<(), Error> { let challenges = challenges.values(&mut layouter); + // assign keccak table + let rpi_bytes = self + .public_data + .get_pi_bytes(config.max_txs, config.max_calldata); + config + .keccak_table + .dev_load(&mut layouter, vec![&rpi_bytes], &challenges)?; + self.synthesize_sub(&config, &challenges, &mut layouter) } } diff --git a/zkevm-circuits/src/pi_circuit/param.rs b/zkevm-circuits/src/pi_circuit/param.rs index 8c05677fdd..fff7391e76 100644 --- a/zkevm-circuits/src/pi_circuit/param.rs +++ b/zkevm-circuits/src/pi_circuit/param.rs @@ -1,5 +1,10 @@ +use halo2_proofs::circuit::AssignedCell; + +use crate::util::word::Word; + /// Fixed by the spec -pub(super) const BLOCK_LEN: usize = 7 + 256; -pub(super) const EXTRA_LEN: usize = 2; -pub(super) const ZERO_BYTE_GAS_COST: u64 = 4; -pub(super) const NONZERO_BYTE_GAS_COST: u64 = 16; +pub(super) const BYTE_POW_BASE: u64 = 256; +pub(super) const EMPTY_TX_ROW_COUNT: usize = 1; +pub(super) const N_BYTES_ONE: usize = 1; + +pub(super) type AssignedByteCells<F> = (AssignedCell<F, F>, Word<AssignedCell<F, F>>); diff --git a/zkevm-circuits/src/pi_circuit/test.rs b/zkevm-circuits/src/pi_circuit/test.rs index 5b6db6499b..88c0c6b7f7 100644 --- a/zkevm-circuits/src/pi_circuit/test.rs +++ b/zkevm-circuits/src/pi_circuit/test.rs @@ -1,13 +1,18 @@ -#![allow(unused_imports)] -use super::{dev::*, *}; -use crate::util::unusable_rows; +use std::collections::HashMap; + +use crate::{pi_circuit::dev::PiCircuitParams, util::unusable_rows, witness::block_convert}; + +use super::*; +use bus_mapping::{circuit_input_builder::FixedCParams, mock::BlockData}; +use eth_types::{bytecode, geth_types::GethData, Word, H160}; +use ethers_signers::{LocalWallet, Signer}; use halo2_proofs::{ dev::{MockProver, VerifyFailure}, halo2curves::bn256::Fr, }; -use mock::{CORRECT_MOCK_TXS, MOCK_CHAIN_ID}; +use mock::{eth, TestContext, CORRECT_MOCK_TXS, MOCK_ACCOUNTS, MOCK_CHAIN_ID}; use rand::SeedableRng; -use rand_chacha::ChaCha20Rng; +use rand_chacha::ChaChaRng; #[test] fn pi_circuit_unusable_rows() { @@ -26,13 +31,11 @@ fn run<F: Field>( max_calldata: usize, public_data: PublicData, ) -> Result<(), Vec<VerifyFailure>> { - let mut rng = ChaCha20Rng::seed_from_u64(2); - let randomness = F::random(&mut rng); - let rand_rpi = F::random(&mut rng); let mut public_data = public_data; public_data.chain_id = *MOCK_CHAIN_ID; - let circuit = PiCircuit::<F>::new(max_txs, max_calldata, randomness, rand_rpi, public_data); + let circuit = PiCircuit::<F>::new(max_txs, max_calldata, public_data); + let public_inputs = circuit.instance(); let prover = match MockProver::run(k, &circuit, public_inputs) { @@ -59,6 +62,7 @@ fn test_simple_pi() { let mut public_data = PublicData::default(); + public_data.block_constants.coinbase = H160([1u8; 20]); let n_tx = 4; for i in 0..n_tx { public_data @@ -70,28 +74,78 @@ fn test_simple_pi() { assert_eq!(run::<Fr>(k, max_txs, max_calldata, public_data), Ok(())); } +#[test] +fn test_1tx_1maxtx() { + const MAX_TXS: usize = 1; + const MAX_CALLDATA: usize = 32; + let mut rng = ChaChaRng::seed_from_u64(2); + let wallet_a = LocalWallet::new(&mut rng).with_chain_id(MOCK_CHAIN_ID.as_u64()); + + let addr_a = wallet_a.address(); + let addr_b = MOCK_ACCOUNTS[0]; + + let degree = 17; + let calldata = vec![]; + let code = bytecode! { + PUSH4(0x1000) // size + PUSH2(0x00) // offset + RETURN + }; + let test_ctx = TestContext::<2, 1>::new( + Some(vec![Word::from("0xdeadbeef")]), + |accs| { + accs[0].address(addr_b).balance(eth(10)).code(code); + accs[1].address(addr_a).balance(eth(10)); + }, + |mut txs, accs| { + txs[0] + .from(accs[1].address) + .to(accs[0].address) + .input(calldata.into()) + .gas((1e16 as u64).into()); + }, + |block, _txs| block.number(0xcafeu64).chain_id(*MOCK_CHAIN_ID), + ) + .unwrap(); + let mut wallets = HashMap::new(); + wallets.insert(wallet_a.address(), wallet_a); + + let mut block: GethData = test_ctx.into(); + let mut builder = BlockData::new_from_geth_data_with_params( + block.clone(), + FixedCParams { + max_txs: MAX_TXS, + max_calldata: MAX_CALLDATA, + max_rws: 1 << (degree - 1), + ..Default::default() + }, + ) + .new_circuit_input_builder(); + + block.sign(&wallets); + + builder + .handle_block(&block.eth_block, &block.geth_traces) + .unwrap(); + + let block = block_convert(&builder).unwrap(); + // MAX_TXS, MAX_TXS align with `CircuitsParams` + let circuit = PiCircuit::<Fr>::new_from_block(&block); + let public_inputs = circuit.instance(); + + let prover = match MockProver::run(degree, &circuit, public_inputs) { + Ok(prover) => prover, + Err(e) => panic!("{:#?}", e), + }; + assert_eq!(prover.verify(), Ok(())); +} + fn run_size_check<F: Field>(max_txs: usize, max_calldata: usize, public_data: [PublicData; 2]) { - let mut rng = ChaCha20Rng::seed_from_u64(2); - let randomness = F::random(&mut rng); - let rand_rpi = F::random(&mut rng); - - let circuit = PiCircuit::<F>::new( - max_txs, - max_calldata, - randomness, - rand_rpi, - public_data[0].clone(), - ); + let circuit = PiCircuit::<F>::new(max_txs, max_calldata, public_data[0].clone()); let public_inputs = circuit.instance(); let prover1 = MockProver::run(20, &circuit, public_inputs).unwrap(); - let circuit2 = PiCircuit::new( - max_txs, - max_calldata, - randomness, - rand_rpi, - public_data[1].clone(), - ); + let circuit2 = PiCircuit::<F>::new(max_txs, max_calldata, public_data[1].clone()); let public_inputs = circuit2.instance(); let prover2 = MockProver::run(20, &circuit, public_inputs).unwrap(); diff --git a/zkevm-circuits/src/root_circuit.rs b/zkevm-circuits/src/root_circuit.rs index ec51a01ccd..4badf32e87 100644 --- a/zkevm-circuits/src/root_circuit.rs +++ b/zkevm-circuits/src/root_circuit.rs @@ -23,11 +23,16 @@ use std::{iter, marker::PhantomData, rc::Rc}; mod aggregation; -#[cfg(any(feature = "test", test))] +#[cfg(any(test, feature = "test-circuits"))] +mod dev; +#[cfg(test)] mod test; -#[cfg(any(feature = "test", test, feature = "test-circuits"))] +#[cfg(feature = "test-circuits")] pub use self::RootCircuit as TestRootCircuit; +#[cfg(any(feature = "test-circuits", test))] +pub use dev::TestAggregationCircuit; + pub use aggregation::{ aggregate, AggregationConfig, EccChip, Gwc, Halo2Loader, KzgDk, KzgSvk, PlonkSuccinctVerifier, PlonkVerifier, PoseidonTranscript, Shplonk, Snark, SnarkWitness, BITS, LIMBS, @@ -37,9 +42,6 @@ pub use snark_verifier::{ system::halo2::{compile, transcript::evm::EvmTranscript, Config}, }; -#[cfg(any(feature = "test", test))] -pub use aggregation::TestAggregationCircuit; - /// RootCircuit for aggregating SuperCircuit into a much smaller proof. #[derive(Clone)] pub struct RootCircuit<'a, M: MultiMillerLoop, As> { diff --git a/zkevm-circuits/src/root_circuit/aggregation.rs b/zkevm-circuits/src/root_circuit/aggregation.rs index ff2d558998..2c078013e3 100644 --- a/zkevm-circuits/src/root_circuit/aggregation.rs +++ b/zkevm-circuits/src/root_circuit/aggregation.rs @@ -1,11 +1,10 @@ use eth_types::Field; use halo2_proofs::{ - circuit::{AssignedCell, Layouter, SimpleFloorPlanner, Value}, + circuit::{AssignedCell, Layouter, Value}, halo2curves::{ - ff::Field as Halo2Field, group::prime::PrimeCurveAffine, pairing::Engine, - serde::SerdeObject, CurveAffine, + group::prime::PrimeCurveAffine, pairing::Engine, serde::SerdeObject, CurveAffine, }, - plonk::{Circuit, ConstraintSystem, Error}, + plonk::{ConstraintSystem, Error}, poly::{commitment::ParamsProver, kzg::commitment::ParamsKZG}, }; use itertools::Itertools; @@ -27,7 +26,7 @@ use snark_verifier::{ util::arithmetic::{fe_to_limbs, MultiMillerLoop}, verifier::{self, plonk::PlonkProtocol, SnarkVerifier}, }; -use std::{io, iter, marker::PhantomData, rc::Rc}; +use std::{io, iter, rc::Rc}; /// Number of limbs to decompose a elliptic curve base field element into. pub const LIMBS: usize = 4; @@ -65,7 +64,7 @@ pub type PoseidonTranscript<C, S> = #[derive(Clone, Copy)] pub struct Snark<'a, C: CurveAffine> { protocol: &'a PlonkProtocol<C>, - instances: &'a Vec<Vec<C::Scalar>>, + pub(crate) instances: &'a Vec<Vec<C::Scalar>>, proof: &'a [u8], } @@ -407,141 +406,6 @@ where Ok(accumulator_limbs) } -/// Aggregation circuit for testing purpose. -#[derive(Clone)] -pub struct TestAggregationCircuit<'a, M: MultiMillerLoop, As> { - svk: KzgSvk<M>, - snarks: Vec<SnarkWitness<'a, M::G1Affine>>, - instances: Vec<M::Scalar>, - _marker: PhantomData<As>, -} - -impl<'a, M: MultiMillerLoop, As> TestAggregationCircuit<'a, M, As> -where - M::G1Affine: SerdeObject, - M::G2Affine: SerdeObject, - M::Scalar: Field, - for<'b> As: PolynomialCommitmentScheme< - M::G1Affine, - NativeLoader, - VerifyingKey = KzgSvk<M>, - Output = KzgAccumulator<M::G1Affine, NativeLoader>, - > + AccumulationSchemeProver< - M::G1Affine, - Accumulator = KzgAccumulator<M::G1Affine, NativeLoader>, - ProvingKey = KzgAsProvingKey<M::G1Affine>, - > + AccumulationDecider<M::G1Affine, NativeLoader, DecidingKey = KzgDecidingKey<M>>, -{ - /// Create an Aggregation circuit with aggregated accumulator computed. - /// Returns `None` if any given snark is invalid. - pub fn new( - params: &ParamsKZG<M>, - snarks: impl IntoIterator<Item = Snark<'a, M::G1Affine>>, - ) -> Result<Self, snark_verifier::Error> { - let snarks = snarks.into_iter().collect_vec(); - - let accumulator_limbs = aggregate::<M, As>(params, snarks.clone())?; - let instances = iter::empty() - // Propagate aggregated snarks' instances - .chain( - snarks - .iter() - .flat_map(|snark| snark.instances.clone()) - .flatten(), - ) - // Output aggregated accumulator - .chain(accumulator_limbs) - .collect_vec(); - - Ok(Self { - svk: KzgSvk::<M>::new(params.get_g()[0]), - snarks: snarks.into_iter().map_into().collect(), - instances, - _marker: PhantomData, - }) - } - - /// Returns accumulator indices in instance columns, which will be in - /// the last 4 * LIMBS rows of MainGate's instance column. - pub fn accumulator_indices(&self) -> Vec<(usize, usize)> { - (self.instances.len() - 4 * LIMBS..) - .map(|idx| (0, idx)) - .take(4 * LIMBS) - .collect() - } - - /// Returns number of instance - pub fn num_instance(&self) -> Vec<usize> { - vec![self.instances.len()] - } - - /// Returns instances - pub fn instances(&self) -> Vec<Vec<M::Scalar>> { - vec![self.instances.clone()] - } -} - -impl<'a, M: MultiMillerLoop, As> Circuit<M::Scalar> for TestAggregationCircuit<'a, M, As> -where - M::Scalar: Field, - for<'b> As: PolynomialCommitmentScheme< - M::G1Affine, - Rc<Halo2Loader<'b, M::G1Affine>>, - VerifyingKey = KzgSvk<M>, - Output = KzgAccumulator<M::G1Affine, Rc<Halo2Loader<'b, M::G1Affine>>>, - > + AccumulationScheme< - M::G1Affine, - Rc<Halo2Loader<'b, M::G1Affine>>, - Accumulator = KzgAccumulator<M::G1Affine, Rc<Halo2Loader<'b, M::G1Affine>>>, - VerifyingKey = KzgAsVerifyingKey, - >, -{ - type Config = AggregationConfig; - type FloorPlanner = SimpleFloorPlanner; - type Params = (); - - fn without_witnesses(&self) -> Self { - Self { - svk: self.svk, - snarks: self - .snarks - .iter() - .map(SnarkWitness::without_witnesses) - .collect(), - instances: vec![M::Scalar::ZERO; self.instances.len()], - _marker: PhantomData, - } - } - - fn configure(meta: &mut ConstraintSystem<M::Scalar>) -> Self::Config { - AggregationConfig::configure::<M::G1Affine>(meta) - } - - fn synthesize( - &self, - config: Self::Config, - mut layouter: impl Layouter<M::Scalar>, - ) -> Result<(), Error> { - config.load_table(&mut layouter)?; - let (instances, accumulator_limbs) = - config.aggregate::<M, As>(&mut layouter, &self.svk, self.snarks.clone())?; - - // Constrain equality to instance values - let main_gate = config.main_gate(); - for (row, limb) in instances - .into_iter() - .flatten() - .flatten() - .chain(accumulator_limbs) - .enumerate() - { - main_gate.expose_public(layouter.namespace(|| ""), limb, row)?; - } - - Ok(()) - } -} - /// Contains TestAggregationCircuit to test whether aggregation is working for /// any given inputs. #[cfg(test)] diff --git a/zkevm-circuits/src/root_circuit/dev.rs b/zkevm-circuits/src/root_circuit/dev.rs new file mode 100644 index 0000000000..c3a8d778d1 --- /dev/null +++ b/zkevm-circuits/src/root_circuit/dev.rs @@ -0,0 +1,154 @@ +use super::{aggregate, AggregationConfig, Halo2Loader, KzgSvk, Snark, SnarkWitness, LIMBS}; +use eth_types::Field; +use halo2_proofs::{ + circuit::{Layouter, SimpleFloorPlanner}, + halo2curves::{ff::Field as Halo2Field, serde::SerdeObject}, + plonk::{Circuit, ConstraintSystem, Error}, + poly::{commitment::ParamsProver, kzg::commitment::ParamsKZG}, +}; +use itertools::Itertools; +use maingate::MainGateInstructions; +use snark_verifier::{ + loader::native::NativeLoader, + pcs::{ + kzg::*, AccumulationDecider, AccumulationScheme, AccumulationSchemeProver, + PolynomialCommitmentScheme, + }, + util::arithmetic::MultiMillerLoop, +}; +use std::{iter, marker::PhantomData, rc::Rc}; + +/// Aggregation circuit for testing purpose. +#[derive(Clone)] +pub struct TestAggregationCircuit<'a, M: MultiMillerLoop, As> { + svk: KzgSvk<M>, + snarks: Vec<SnarkWitness<'a, M::G1Affine>>, + instances: Vec<M::Scalar>, + _marker: PhantomData<As>, +} + +impl<'a, M: MultiMillerLoop, As> TestAggregationCircuit<'a, M, As> +where + M::G1Affine: SerdeObject, + M::G2Affine: SerdeObject, + M::Scalar: Field, + for<'b> As: PolynomialCommitmentScheme< + M::G1Affine, + NativeLoader, + VerifyingKey = KzgSvk<M>, + Output = KzgAccumulator<M::G1Affine, NativeLoader>, + > + AccumulationSchemeProver< + M::G1Affine, + Accumulator = KzgAccumulator<M::G1Affine, NativeLoader>, + ProvingKey = KzgAsProvingKey<M::G1Affine>, + > + AccumulationDecider<M::G1Affine, NativeLoader, DecidingKey = KzgDecidingKey<M>>, +{ + /// Create an Aggregation circuit with aggregated accumulator computed. + /// Returns `None` if any given snark is invalid. + pub fn new( + params: &ParamsKZG<M>, + snarks: impl IntoIterator<Item = Snark<'a, M::G1Affine>>, + ) -> Result<Self, snark_verifier::Error> { + let snarks = snarks.into_iter().collect_vec(); + + let accumulator_limbs = aggregate::<M, As>(params, snarks.clone())?; + let instances = iter::empty() + // Propagate aggregated snarks' instances + .chain( + snarks + .iter() + .flat_map(|snark| snark.instances.clone()) + .flatten(), + ) + // Output aggregated accumulator + .chain(accumulator_limbs) + .collect_vec(); + + Ok(Self { + svk: KzgSvk::<M>::new(params.get_g()[0]), + snarks: snarks.into_iter().map_into().collect(), + instances, + _marker: PhantomData, + }) + } + + /// Returns accumulator indices in instance columns, which will be in + /// the last 4 * LIMBS rows of MainGate's instance column. + pub fn accumulator_indices(&self) -> Vec<(usize, usize)> { + (self.instances.len() - 4 * LIMBS..) + .map(|idx| (0, idx)) + .take(4 * LIMBS) + .collect() + } + + /// Returns number of instance + pub fn num_instance(&self) -> Vec<usize> { + vec![self.instances.len()] + } + + /// Returns instances + pub fn instances(&self) -> Vec<Vec<M::Scalar>> { + vec![self.instances.clone()] + } +} + +impl<'a, M: MultiMillerLoop, As> Circuit<M::Scalar> for TestAggregationCircuit<'a, M, As> +where + M::Scalar: Field, + for<'b> As: PolynomialCommitmentScheme< + M::G1Affine, + Rc<Halo2Loader<'b, M::G1Affine>>, + VerifyingKey = KzgSvk<M>, + Output = KzgAccumulator<M::G1Affine, Rc<Halo2Loader<'b, M::G1Affine>>>, + > + AccumulationScheme< + M::G1Affine, + Rc<Halo2Loader<'b, M::G1Affine>>, + Accumulator = KzgAccumulator<M::G1Affine, Rc<Halo2Loader<'b, M::G1Affine>>>, + VerifyingKey = KzgAsVerifyingKey, + >, +{ + type Config = AggregationConfig; + type FloorPlanner = SimpleFloorPlanner; + type Params = (); + + fn without_witnesses(&self) -> Self { + Self { + svk: self.svk, + snarks: self + .snarks + .iter() + .map(SnarkWitness::without_witnesses) + .collect(), + instances: vec![M::Scalar::ZERO; self.instances.len()], + _marker: PhantomData, + } + } + + fn configure(meta: &mut ConstraintSystem<M::Scalar>) -> Self::Config { + AggregationConfig::configure::<M::G1Affine>(meta) + } + + fn synthesize( + &self, + config: Self::Config, + mut layouter: impl Layouter<M::Scalar>, + ) -> Result<(), Error> { + config.load_table(&mut layouter)?; + let (instances, accumulator_limbs) = + config.aggregate::<M, As>(&mut layouter, &self.svk, self.snarks.clone())?; + + // Constrain equality to instance values + let main_gate = config.main_gate(); + for (row, limb) in instances + .into_iter() + .flatten() + .flatten() + .chain(accumulator_limbs) + .enumerate() + { + main_gate.expose_public(layouter.namespace(|| ""), limb, row)?; + } + + Ok(()) + } +} diff --git a/zkevm-circuits/src/root_circuit/test.rs b/zkevm-circuits/src/root_circuit/test.rs index 544fa5c92d..70a11bbf34 100644 --- a/zkevm-circuits/src/root_circuit/test.rs +++ b/zkevm-circuits/src/root_circuit/test.rs @@ -1,4 +1,3 @@ -#![allow(unused_imports)] use crate::{ root_circuit::{compile, Config, Gwc, PoseidonTranscript, RootCircuit}, super_circuit::{test::block_1tx, SuperCircuit}, diff --git a/zkevm-circuits/src/state_circuit.rs b/zkevm-circuits/src/state_circuit.rs index 224822114b..d48d836b77 100644 --- a/zkevm-circuits/src/state_circuit.rs +++ b/zkevm-circuits/src/state_circuit.rs @@ -4,14 +4,13 @@ mod lexicographic_ordering; mod lookups; mod multiple_precision_integer; mod param; -mod random_linear_combination; -#[cfg(any(feature = "test", test, feature = "test-circuits"))] +#[cfg(any(test, feature = "test-circuits"))] mod dev; -#[cfg(any(feature = "test", test))] +#[cfg(test)] mod test; use bus_mapping::operation::Target; -#[cfg(any(feature = "test", test, feature = "test-circuits"))] +#[cfg(feature = "test-circuits")] pub use dev::StateCircuit as TestStateCircuit; use self::{ @@ -19,13 +18,12 @@ use self::{ lexicographic_ordering::LimbIndex, }; use crate::{ - evm_circuit::{param::N_BYTES_WORD, util::rlc}, - table::{AccountFieldTag, LookupTable, MPTProofType, MptTable, RwTable}, - util::{Challenges, Expr, SubCircuit, SubCircuitConfig}, + table::{AccountFieldTag, LookupTable, MPTProofType, MptTable, RwTable, UXTable}, + util::{word, Challenges, Expr, SubCircuit, SubCircuitConfig}, witness::{self, MptUpdates, Rw, RwMap}, }; use constraint_builder::{ConstraintBuilder, Queries}; -use eth_types::{Address, Field, ToLittleEndian}; +use eth_types::{Address, Field, Word}; use gadgets::{ batched_is_zero::{BatchedIsZeroChip, BatchedIsZeroConfig}, binary_number::{BinaryNumberChip, BinaryNumberConfig}, @@ -33,7 +31,8 @@ use gadgets::{ use halo2_proofs::{ circuit::{Layouter, Region, Value}, plonk::{ - Advice, Column, ConstraintSystem, Error, Expression, Fixed, SecondPhase, VirtualCells, + Advice, Column, ConstraintSystem, Error, Expression, FirstPhase, Fixed, SecondPhase, + VirtualCells, }, poly::Rotation, }; @@ -41,10 +40,9 @@ use lexicographic_ordering::Config as LexicographicOrderingConfig; use lookups::{Chip as LookupsChip, Config as LookupsConfig, Queries as LookupsQueries}; use multiple_precision_integer::{Chip as MpiChip, Config as MpiConfig, Queries as MpiQueries}; use param::*; -use random_linear_combination::{Chip as RlcChip, Config as RlcConfig, Queries as RlcQueries}; use std::marker::PhantomData; -#[cfg(any(feature = "test", test, feature = "test-circuits"))] +#[cfg(test)] use std::collections::HashMap; /// Config for StateCircuit @@ -58,20 +56,20 @@ pub struct StateCircuitConfig<F> { // Assigned value at the start of the block. For Rw::Account and // Rw::AccountStorage rows this is the committed value in the MPT, for // others, it is 0. - initial_value: Column<Advice>, + initial_value: word::Word<Column<Advice>>, // For Rw::AccountStorage, identify non-existing if both committed value and - // new value are zero. Will do lookup for MPTProofType::NonExistingStorageProof if - // non-existing, otherwise do lookup for MPTProofType::StorageMod. + // new value are zero. Will do lookup for MPTProofType::StorageDoesNotExist if + // non-existing, otherwise do lookup for MPTProofType::StorageChanged. is_non_exist: BatchedIsZeroConfig, // Intermediary witness used to reduce mpt lookup expression degree mpt_proof_type: Column<Advice>, - state_root: Column<Advice>, + state_root: word::Word<Column<Advice>>, lexicographic_ordering: LexicographicOrderingConfig, not_first_access: Column<Advice>, lookups: LookupsConfig, - power_of_randomness: [Expression<F>; N_BYTES_WORD - 1], // External tables mpt_table: MptTable, + _marker: PhantomData<F>, } /// Circuit configuration arguments @@ -80,6 +78,12 @@ pub struct StateCircuitConfigArgs<F: Field> { pub rw_table: RwTable, /// MptTable pub mpt_table: MptTable, + /// U8Table + pub u8_table: UXTable<8>, + /// U10Table + pub u10_table: UXTable<10>, + /// U16Table + pub u16_table: UXTable<16>, /// Challenges pub challenges: Challenges<Expression<F>>, } @@ -93,40 +97,44 @@ impl<F: Field> SubCircuitConfig<F> for StateCircuitConfig<F> { Self::ConfigArgs { rw_table, mpt_table, + u8_table, + u10_table, + u16_table, challenges, }: Self::ConfigArgs, ) -> Self { let selector = meta.fixed_column(); - let lookups = LookupsChip::configure(meta); - let power_of_randomness: [Expression<F>; 31] = challenges.evm_word_powers_of_randomness(); + let lookups = LookupsChip::configure(meta, u8_table, u10_table, u16_table); - let rw_counter = MpiChip::configure(meta, selector, rw_table.rw_counter, lookups); + let rw_counter = MpiChip::configure(meta, selector, [rw_table.rw_counter], lookups); let tag = BinaryNumberChip::configure(meta, selector, Some(rw_table.tag)); - let id = MpiChip::configure(meta, selector, rw_table.id, lookups); - let address = MpiChip::configure(meta, selector, rw_table.address, lookups); + let id = MpiChip::configure(meta, selector, [rw_table.id], lookups); + + let address = MpiChip::configure(meta, selector, [rw_table.address], lookups); - let storage_key = RlcChip::configure( + let storage_key = MpiChip::configure( meta, selector, - rw_table.storage_key, + [rw_table.storage_key.lo(), rw_table.storage_key.hi()], lookups, - challenges.evm_word(), ); + let initial_value = word::Word::new([meta.advice_column(), meta.advice_column()]); - let initial_value = meta.advice_column_in(SecondPhase); let is_non_exist = BatchedIsZeroChip::configure( meta, - (SecondPhase, SecondPhase), + (FirstPhase, FirstPhase), |meta| meta.query_fixed(selector, Rotation::cur()), |meta| { [ - meta.query_advice(initial_value, Rotation::cur()), - meta.query_advice(rw_table.value, Rotation::cur()), + meta.query_advice(initial_value.lo(), Rotation::cur()), + meta.query_advice(initial_value.hi(), Rotation::cur()), + meta.query_advice(rw_table.value.lo(), Rotation::cur()), + meta.query_advice(rw_table.value.hi(), Rotation::cur()), ] }, ); let mpt_proof_type = meta.advice_column_in(SecondPhase); - let state_root = meta.advice_column_in(SecondPhase); + let state_root = word::Word::new([meta.advice_column(), meta.advice_column()]); let sort_keys = SortKeysConfig { tag, @@ -137,16 +145,16 @@ impl<F: Field> SubCircuitConfig<F> for StateCircuitConfig<F> { rw_counter, }; - let lexicographic_ordering = LexicographicOrderingConfig::configure( - meta, - sort_keys, - lookups, - power_of_randomness.clone(), - ); + let power_of_randomness: [Expression<F>; 31] = challenges.keccak_powers_of_randomness(); + let lexicographic_ordering = + LexicographicOrderingConfig::configure(meta, sort_keys, lookups, power_of_randomness); // annotate columns rw_table.annotate_columns(meta); mpt_table.annotate_columns(meta); + u8_table.annotate_columns(meta); + u10_table.annotate_columns(meta); + u16_table.annotate_columns(meta); let config = Self { selector, @@ -158,9 +166,9 @@ impl<F: Field> SubCircuitConfig<F> for StateCircuitConfig<F> { lexicographic_ordering, not_first_access: meta.advice_column(), lookups, - power_of_randomness, rw_table, mpt_table, + _marker: PhantomData::default(), }; let mut constraint_builder = ConstraintBuilder::new(); @@ -189,14 +197,11 @@ impl<F: Field> StateCircuitConfig<F> { layouter: &mut impl Layouter<F>, rows: &[Rw], n_rows: usize, // 0 means dynamically calculated from `rows`. - challenges: &Challenges<Value<F>>, ) -> Result<(), Error> { let updates = MptUpdates::mock_from(rows); layouter.assign_region( || "state circuit", - |mut region| { - self.assign_with_region(&mut region, rows, &updates, n_rows, challenges.evm_word()) - }, + |mut region| self.assign_with_region(&mut region, rows, &updates, n_rows), ) } @@ -206,15 +211,13 @@ impl<F: Field> StateCircuitConfig<F> { rows: &[Rw], updates: &MptUpdates, n_rows: usize, // 0 means dynamically calculated from `rows`. - randomness: Value<F>, ) -> Result<(), Error> { let tag_chip = BinaryNumberChip::construct(self.sort_keys.tag); let (rows, padding_length) = RwMap::table_assignments_prepad(rows, n_rows); let rows_len = rows.len(); - let mut state_root = - randomness.map(|randomness| rlc::value(&updates.old_root().to_le_bytes(), randomness)); + let mut state_root = updates.old_root(); // annotate columns self.annotate_circuit_in_region(region); @@ -248,7 +251,7 @@ impl<F: Field> StateCircuitConfig<F> { if let Some(storage_key) = row.storage_key() { self.sort_keys .storage_key - .assign(region, offset, randomness, storage_key)?; + .assign(region, offset, storage_key)?; } if offset > 0 { @@ -268,107 +271,106 @@ impl<F: Field> StateCircuitConfig<F> { if is_first_access { // If previous row was a last access, we need to update the state root. - state_root = randomness - .zip(state_root) - .map(|(randomness, mut state_root)| { - if let Some(update) = updates.get(prev_row) { - let (new_root, old_root) = update.root_assignments(randomness); - assert_eq!(state_root, old_root); - state_root = new_root; - } - if matches!(row.tag(), Target::CallContext) && !row.is_write() { - assert_eq!(row.value_assignment(randomness), F::ZERO, "{:?}", row); - } - state_root - }); + if let Some(update) = updates.get(prev_row) { + let (new_root, old_root) = update.root_assignments(); + assert_eq!(state_root, old_root); + state_root = new_root; + } + if matches!(row.tag(), Target::CallContext) && !row.is_write() { + assert_eq!(row.value_assignment(), 0.into(), "{:?}", row); + } } } // The initial value can be determined from the mpt updates or is 0. - let initial_value = randomness.map(|randomness| { + let initial_value = word::Word::<F>::from( updates .get(row) - .map(|u| u.value_assignments(randomness).1) - .unwrap_or_default() - }); - region.assign_advice( + .map(|u| u.value_assignments().1) + .unwrap_or_default(), + ); + + initial_value.into_value().assign_advice( + region, || "initial_value", self.initial_value, offset, - || initial_value, )?; // Identify non-existing if both committed value and new value are zero. - let committed_value_value = randomness.map(|randomness| { + let (committed_value, value) = { let (_, committed_value) = updates .get(row) - .map(|u| u.value_assignments(randomness)) + .map(|u| u.value_assignments()) .unwrap_or_default(); - let value = row.value_assignment(randomness); - [committed_value, value] - }); + let value = row.value_assignment(); + ( + word::Word::<F>::from(committed_value), + word::Word::<F>::from(value), + ) + }; + BatchedIsZeroChip::construct(self.is_non_exist.clone()).assign( region, offset, - committed_value_value, + Value::known([ + committed_value.lo(), + committed_value.hi(), + value.lo(), + value.hi(), + ]), )?; - let mpt_proof_type = committed_value_value.map(|pair| { - F::from(match row { - Rw::AccountStorage { .. } => { - if pair[0].is_zero_vartime() && pair[1].is_zero_vartime() { - MPTProofType::NonExistingStorageProof as u64 - } else { - MPTProofType::StorageMod as u64 - } + + let mpt_proof_type = match row { + Rw::AccountStorage { .. } => { + if committed_value.is_zero_vartime() && value.is_zero_vartime() { + MPTProofType::StorageDoesNotExist as u64 + } else { + MPTProofType::StorageChanged as u64 } - Rw::Account { field_tag, .. } => { - if pair[0].is_zero_vartime() - && pair[1].is_zero_vartime() - && matches!(field_tag, AccountFieldTag::CodeHash) - { - MPTProofType::NonExistingAccountProof as u64 - } else { - *field_tag as u64 - } + } + Rw::Account { field_tag, .. } => { + if committed_value.is_zero_vartime() + && value.is_zero_vartime() + && matches!(field_tag, AccountFieldTag::CodeHash) + { + MPTProofType::AccountDoesNotExist as u64 + } else { + *field_tag as u64 } - _ => 0, - }) - }); + } + _ => 0, + }; + region.assign_advice( || "mpt_proof_type", self.mpt_proof_type, offset, - || mpt_proof_type, + || Value::known(F::from(mpt_proof_type)), )?; // TODO: Switch from Rw::Start -> Rw::Padding to simplify this logic. // State root assignment is at previous row (offset - 1) because the state root // changes on the last access row. if offset != 0 { - region.assign_advice( - || "state_root", - self.state_root, - offset - 1, - || state_root, - )?; + word::Word::<F>::from(state_root) + .into_value() + .assign_advice(region, || "state root", self.state_root, offset - 1)?; } if offset == rows_len - 1 { // The last row is always a last access, so we need to handle the case where the // state root changes because of an mpt lookup on the last row. if let Some(update) = updates.get(row) { - state_root = randomness.zip(state_root).map(|(randomness, state_root)| { - let (new_root, old_root) = update.root_assignments(randomness); + state_root = { + let (new_root, old_root) = update.root_assignments(); assert_eq!(state_root, old_root); new_root - }); + }; } - region.assign_advice( - || "last row state_root", - self.state_root, - offset, - || state_root, - )?; + word::Word::<F>::from(state_root) + .into_value() + .assign_advice(region, || "last row state_root", self.state_root, offset)?; } } @@ -385,9 +387,11 @@ impl<F: Field> StateCircuitConfig<F> { self.sort_keys.annotate_columns_in_region(region, "STATE"); region.name_column(|| "STATE_selector", self.selector); region.name_column(|| "STATE_not_first_access", self.not_first_access); - region.name_column(|| "STATE_phase2_initial_value", self.initial_value); - region.name_column(|| "STATE_phase2_mpt_proof_type", self.mpt_proof_type); - region.name_column(|| "STATE_phase2_state_root", self.state_root); + region.name_column(|| "STATE_initial_value lo", self.initial_value.lo()); + region.name_column(|| "STATE_initial_value hi", self.initial_value.hi()); + region.name_column(|| "STATE_mpt_proof_type", self.mpt_proof_type); + region.name_column(|| "STATE_state_root lo", self.state_root.lo()); + region.name_column(|| "STATE_state_root hi", self.state_root.hi()); } } @@ -398,7 +402,7 @@ pub struct SortKeysConfig { id: MpiConfig<u32, N_LIMBS_ID>, address: MpiConfig<Address, N_LIMBS_ACCOUNT_ADDRESS>, field_tag: Column<Advice>, - storage_key: RlcConfig<N_BYTES_WORD>, + storage_key: MpiConfig<Word, N_LIMBS_WORD>, rw_counter: MpiConfig<u32, N_LIMBS_RW_COUNTER>, } @@ -414,8 +418,6 @@ impl SortKeysConfig { } } -type Lookup<F> = (&'static str, Expression<F>, Expression<F>); - /// State Circuit for proving RwTable is valid #[derive(Default, Clone, Debug)] pub struct StateCircuit<F> { @@ -423,7 +425,7 @@ pub struct StateCircuit<F> { pub rows: Vec<Rw>, updates: MptUpdates, pub(crate) n_rows: usize, - #[cfg(any(feature = "test", test, feature = "test-circuits"))] + #[cfg(test)] overrides: HashMap<(dev::AdviceColumn, isize), F>, _marker: PhantomData<F>, } @@ -437,7 +439,7 @@ impl<F: Field> StateCircuit<F> { rows, updates, n_rows, - #[cfg(any(feature = "test", test, feature = "test-circuits"))] + #[cfg(test)] overrides: HashMap::new(), _marker: PhantomData::default(), } @@ -469,41 +471,36 @@ impl<F: Field> SubCircuit<F> for StateCircuit<F> { fn synthesize_sub( &self, config: &Self::Config, - challenges: &Challenges<Value<F>>, + _challenges: &Challenges<Value<F>>, layouter: &mut impl Layouter<F>, ) -> Result<(), Error> { config.load_aux_tables(layouter)?; - let randomness = challenges.evm_word(); - // Assigning to same columns in different regions should be avoided. // Here we use one single region to assign `overrides` to both rw table and // other parts. layouter.assign_region( || "state circuit", |mut region| { - config.rw_table.load_with_region( - &mut region, - &self.rows, - self.n_rows, - randomness, - )?; + config + .rw_table + .load_with_region(&mut region, &self.rows, self.n_rows)?; - config.assign_with_region( - &mut region, - &self.rows, - &self.updates, - self.n_rows, - randomness, - )?; - #[cfg(any(feature = "test", test, feature = "test-circuits"))] + config.assign_with_region(&mut region, &self.rows, &self.updates, self.n_rows)?; + #[cfg(test)] { - let padding_length = RwMap::padding_len(self.rows.len(), self.n_rows); + let first_non_padding_index = if self.rows.len() < self.n_rows { + RwMap::padding_len(self.rows.len(), self.n_rows) + } else { + 1 // at least 1 StartOp padding in idx 0, so idx 1 is first non-padding row + }; + for ((column, row_offset), &f) in &self.overrides { let advice_column = column.value(config); - let offset = - usize::try_from(isize::try_from(padding_length).unwrap() + *row_offset) - .unwrap(); + let offset = usize::try_from( + isize::try_from(first_non_padding_index).unwrap() + *row_offset, + ) + .unwrap(); region.assign_advice( || "override", advice_column, @@ -529,6 +526,15 @@ fn queries<F: Field>(meta: &mut VirtualCells<'_, F>, c: &StateCircuitConfig<F>) let final_bits_sum = meta.query_advice(first_different_limb.bits[3], Rotation::cur()) + meta.query_advice(first_different_limb.bits[4], Rotation::cur()); let mpt_update_table_expressions = c.mpt_table.table_exprs(meta); + assert_eq!(mpt_update_table_expressions.len(), 12); + + let meta_query_word = + |metap: &mut VirtualCells<'_, F>, word_column: word::Word<Column<Advice>>, at: Rotation| { + word::Word::new([ + metap.query_advice(word_column.lo(), at), + metap.query_advice(word_column.hi(), at), + ]) + }; Queries { selector: meta.query_fixed(c.selector, Rotation::cur()), @@ -543,20 +549,35 @@ fn queries<F: Field>(meta: &mut VirtualCells<'_, F>, c: &StateCircuitConfig<F>) address: meta.query_advice(c.rw_table.address, Rotation::cur()), prev_address: meta.query_advice(c.rw_table.address, Rotation::prev()), field_tag: meta.query_advice(c.rw_table.field_tag, Rotation::cur()), - storage_key: meta.query_advice(c.rw_table.storage_key, Rotation::cur()), - value: meta.query_advice(c.rw_table.value, Rotation::cur()), - value_prev: meta.query_advice(c.rw_table.value, Rotation::prev()), - value_prev_column: meta.query_advice(c.rw_table.value_prev, Rotation::cur()), + storage_key: meta_query_word(meta, c.rw_table.storage_key, Rotation::cur()), + value: meta_query_word(meta, c.rw_table.value, Rotation::cur()), + value_prev: meta_query_word(meta, c.rw_table.value, Rotation::prev()), + value_prev_column: meta_query_word(meta, c.rw_table.value_prev, Rotation::cur()), }, // TODO: clean this up mpt_update_table: MptUpdateTableQueries { address: mpt_update_table_expressions[0].clone(), - storage_key: mpt_update_table_expressions[1].clone(), - proof_type: mpt_update_table_expressions[2].clone(), - new_root: mpt_update_table_expressions[3].clone(), - old_root: mpt_update_table_expressions[4].clone(), - new_value: mpt_update_table_expressions[5].clone(), - old_value: mpt_update_table_expressions[6].clone(), + storage_key: word::Word::new([ + mpt_update_table_expressions[1].clone(), + mpt_update_table_expressions[2].clone(), + ]), + proof_type: mpt_update_table_expressions[3].clone(), + new_root: word::Word::new([ + mpt_update_table_expressions[4].clone(), + mpt_update_table_expressions[5].clone(), + ]), + old_root: word::Word::new([ + mpt_update_table_expressions[6].clone(), + mpt_update_table_expressions[7].clone(), + ]), + new_value: word::Word::new([ + mpt_update_table_expressions[8].clone(), + mpt_update_table_expressions[9].clone(), + ]), + old_value: word::Word::new([ + mpt_update_table_expressions[10].clone(), + mpt_update_table_expressions[11].clone(), + ]), }, lexicographic_ordering_selector: meta .query_fixed(c.lexicographic_ordering.selector, Rotation::cur()), @@ -577,18 +598,17 @@ fn queries<F: Field>(meta: &mut VirtualCells<'_, F>, c: &StateCircuitConfig<F>) + meta.query_advice(first_different_limb.bits[2], Rotation::cur())) + final_bits_sum.clone() * (1.expr() - final_bits_sum), address: MpiQueries::new(meta, c.sort_keys.address), - storage_key: RlcQueries::new(meta, c.sort_keys.storage_key), - initial_value: meta.query_advice(c.initial_value, Rotation::cur()), - initial_value_prev: meta.query_advice(c.initial_value, Rotation::prev()), + storage_key: MpiQueries::new(meta, c.sort_keys.storage_key), + initial_value: meta_query_word(meta, c.initial_value, Rotation::cur()), + initial_value_prev: meta_query_word(meta, c.initial_value, Rotation::prev()), is_non_exist: meta.query_advice(c.is_non_exist.is_zero, Rotation::cur()), mpt_proof_type: meta.query_advice(c.mpt_proof_type, Rotation::cur()), lookups: LookupsQueries::new(meta, c.lookups), - power_of_randomness: c.power_of_randomness.clone(), first_different_limb: [0, 1, 2, 3] .map(|idx| meta.query_advice(first_different_limb.bits[idx], Rotation::cur())), not_first_access: meta.query_advice(c.not_first_access, Rotation::cur()), last_access: 1.expr() - meta.query_advice(c.not_first_access, Rotation::next()), - state_root: meta.query_advice(c.state_root, Rotation::cur()), - state_root_prev: meta.query_advice(c.state_root, Rotation::prev()), + state_root: meta_query_word(meta, c.state_root, Rotation::cur()), + state_root_prev: meta_query_word(meta, c.state_root, Rotation::prev()), } } diff --git a/zkevm-circuits/src/state_circuit/constraint_builder.rs b/zkevm-circuits/src/state_circuit/constraint_builder.rs index 4c73e0b542..1fb866cc0e 100644 --- a/zkevm-circuits/src/state_circuit/constraint_builder.rs +++ b/zkevm-circuits/src/state_circuit/constraint_builder.rs @@ -1,14 +1,10 @@ use super::{ - lookups::Queries as LookupsQueries, multiple_precision_integer::Queries as MpiQueries, - param::*, random_linear_combination::Queries as RlcQueries, + lookups::Queries as LookupsQueries, multiple_precision_integer::Queries as MpiQueries, param::*, }; use crate::{ - evm_circuit::{ - param::N_BYTES_WORD, - util::{math_gadget::generate_lagrange_base_polynomial, not}, - }, + evm_circuit::util::{math_gadget::generate_lagrange_base_polynomial, not}, table::{AccountFieldTag, MPTProofType}, - util::Expr, + util::{word, Expr}, }; use bus_mapping::operation::Target; use eth_types::Field; @@ -27,22 +23,21 @@ pub struct RwTableQueries<F: Field> { pub address: Expression<F>, pub prev_address: Expression<F>, pub field_tag: Expression<F>, - pub storage_key: Expression<F>, - pub value: Expression<F>, - pub value_prev: Expression<F>, // meta.query(value, Rotation::prev()) - pub value_prev_column: Expression<F>, /* meta.query(prev_value, Rotation::cur()) - * TODO: aux1 and aux2 */ + pub storage_key: word::Word<Expression<F>>, + pub value: word::Word<Expression<F>>, + pub value_prev: word::Word<Expression<F>>, // meta.query(value, Rotation::prev()) + pub value_prev_column: word::Word<Expression<F>>, // meta.query(prev_value, Rotation::cur()) } #[derive(Clone)] pub struct MptUpdateTableQueries<F: Field> { pub address: Expression<F>, - pub storage_key: Expression<F>, + pub storage_key: word::Word<Expression<F>>, pub proof_type: Expression<F>, - pub new_root: Expression<F>, - pub old_root: Expression<F>, - pub new_value: Expression<F>, - pub old_value: Expression<F>, + pub new_root: word::Word<Expression<F>>, + pub old_root: word::Word<Expression<F>>, + pub new_value: word::Word<Expression<F>>, + pub old_value: word::Word<Expression<F>>, } #[derive(Clone)] @@ -56,18 +51,17 @@ pub struct Queries<F: Field> { pub id: MpiQueries<F, N_LIMBS_ID>, pub is_tag_and_id_unchanged: Expression<F>, pub address: MpiQueries<F, N_LIMBS_ACCOUNT_ADDRESS>, - pub storage_key: RlcQueries<F, N_BYTES_WORD>, - pub initial_value: Expression<F>, - pub initial_value_prev: Expression<F>, + pub storage_key: MpiQueries<F, N_LIMBS_WORD>, + pub initial_value: word::Word<Expression<F>>, + pub initial_value_prev: word::Word<Expression<F>>, pub is_non_exist: Expression<F>, pub mpt_proof_type: Expression<F>, pub lookups: LookupsQueries<F>, - pub power_of_randomness: [Expression<F>; N_BYTES_WORD - 1], pub first_different_limb: [Expression<F>; 4], pub not_first_access: Expression<F>, pub last_access: Expression<F>, - pub state_root: Expression<F>, - pub state_root_prev: Expression<F>, + pub state_root: word::Word<Expression<F>>, + pub state_root_prev: word::Word<Expression<F>>, } type Constraint<F> = (&'static str, Expression<F>); @@ -79,6 +73,25 @@ pub struct ConstraintBuilder<F: Field> { condition: Expression<F>, } +struct LookupBuilder<F>(Vec<(Expression<F>, Expression<F>)>); +impl<F: Field> LookupBuilder<F> { + fn new() -> Self { + Self(vec![]) + } + fn add(mut self, e1: &Expression<F>, e2: &Expression<F>) -> Self { + self.0.push((e1.clone(), e2.clone())); + self + } + fn add_word(mut self, e1: &word::Word<Expression<F>>, e2: &word::Word<Expression<F>>) -> Self { + self.0.push((e1.lo(), e2.lo())); + self.0.push((e1.hi(), e2.hi())); + self + } + fn build(self) -> Vec<(Expression<F>, Expression<F>)> { + self.0 + } +} + impl<F: Field> ConstraintBuilder<F> { pub fn new() -> Self { Self { @@ -153,10 +166,14 @@ impl<F: Field> ConstraintBuilder<F> { // in the current row differs from the previous row. self.condition(q.first_access(), |cb| { cb.require_zero( - "first access reads don't change value", - q.is_read() * (q.rw_table.value.clone() - q.initial_value()), + "first access reads don't change value (hi)", + q.is_read() * (q.rw_table.value.hi() - q.initial_value().hi()), + ); + cb.require_zero( + "first access reads don't change value (lo)", + q.is_read() * (q.rw_table.value.lo() - q.initial_value().lo()), ); - cb.require_equal( + cb.require_word_equal( "value_prev column is initial_value for first access", q.value_prev_column(), q.initial_value.clone(), @@ -166,12 +183,20 @@ impl<F: Field> ConstraintBuilder<F> { // When all the keys in the current row and previous row are equal. self.condition(q.not_first_access.clone(), |cb| { cb.require_zero( - "non-first access reads don't change value", - q.is_read() * (q.rw_table.value.clone() - q.rw_table.value_prev.clone()), + "non-first access reads don't change value (hi)", + q.is_read() * (q.rw_table.value.hi() - q.rw_table.value_prev.hi()), ); cb.require_zero( - "initial value doesn't change in an access group", - q.initial_value.clone() - q.initial_value_prev(), + "non-first access reads don't change value (lo)", + q.is_read() * (q.rw_table.value.lo() - q.rw_table.value_prev.lo()), + ); + cb.require_zero( + "initial value doesn't change in an access group (hi)", + q.initial_value.hi() - q.initial_value_prev().hi(), + ); + cb.require_zero( + "initial value doesn't change in an access group (lo)", + q.initial_value.lo() - q.initial_value_prev().lo(), ); }); } @@ -181,39 +206,41 @@ impl<F: Field> ConstraintBuilder<F> { self.require_zero("field_tag is 0 for Start", q.field_tag()); self.require_zero("address is 0 for Start", q.rw_table.address.clone()); self.require_zero("id is 0 for Start", q.id()); - self.require_zero("storage_key is 0 for Start", q.rw_table.storage_key.clone()); + self.require_word_zero("storage_key is 0 for Start", q.rw_table.storage_key.clone()); // 1.1. rw_counter increases by 1 for every non-first row self.require_zero( "rw_counter increases by 1 for every non-first row", q.lexicographic_ordering_selector.clone() * (q.rw_counter_change() - 1.expr()), ); // 1.2. Start value is 0 - self.require_zero("Start value is 0", q.value()); + self.require_word_zero("Start value is 0", q.value()); // 1.3. Start initial value is 0 - self.require_zero("Start initial_value is 0", q.initial_value()); + self.require_word_zero("Start initial_value is 0", q.initial_value()); // 1.4. state_root is unchanged for every non-first row self.condition(q.lexicographic_ordering_selector.clone(), |cb| { - cb.require_equal( + cb.require_word_equal( "state_root is unchanged for Start", q.state_root(), q.state_root_prev(), ) }); - self.require_zero("value_prev column is 0 for Start", q.value_prev_column()); + self.require_word_zero("value_prev column is 0 for Start", q.value_prev_column()); } fn build_memory_constraints(&mut self, q: &Queries<F>) { // 2.0. Unused keys are 0 self.require_zero("field_tag is 0 for Memory", q.field_tag()); - self.require_zero( + self.require_word_zero( "storage_key is 0 for Memory", q.rw_table.storage_key.clone(), ); // 2.1. First access for a set of all keys are 0 if READ - self.require_zero( - "first access for a set of all keys are 0 if READ", - q.first_access() * q.is_read() * q.value(), - ); + self.condition(q.first_access() * q.is_read(), |cb| { + cb.require_word_zero( + "first access for a set of all keys are 0 if READ", + q.value(), + ); + }); // could do this more efficiently by just asserting address = limb0 + 2^16 * // limb1? // 2.2. mem_addr in range @@ -222,18 +249,19 @@ impl<F: Field> ConstraintBuilder<F> { } // 2.3. value is a byte self.add_lookup( - "memory value is a byte", - vec![(q.rw_table.value.clone(), q.lookups.u8.clone())], + "memory value is a byte (lo is u8)", + vec![(q.rw_table.value.lo(), q.lookups.u8.clone())], ); + self.require_zero("memory value is a byte (hi is 0)", q.rw_table.value.hi()); // 2.4. Start initial value is 0 - self.require_zero("initial Memory value is 0", q.initial_value()); + self.require_word_zero("initial Memory value is 0", q.initial_value()); // 2.5. state root does not change - self.require_equal( + self.require_word_equal( "state_root is unchanged for Memory", q.state_root(), q.state_root_prev(), ); - self.require_equal( + self.require_word_equal( "value_prev column equals initial_value for Memory", q.value_prev_column(), q.initial_value(), @@ -243,7 +271,7 @@ impl<F: Field> ConstraintBuilder<F> { fn build_stack_constraints(&mut self, q: &Queries<F>) { // 3.0. Unused keys are 0 self.require_zero("field_tag is 0 for Stack", q.field_tag()); - self.require_zero("storage_key is 0 for Stack", q.rw_table.storage_key.clone()); + self.require_word_zero("storage_key is 0 for Stack", q.rw_table.storage_key.clone()); // 3.1. First access for a set of all keys self.require_zero( "first access to new stack address is a write", @@ -262,14 +290,14 @@ impl<F: Field> ConstraintBuilder<F> { ) }); // 3.4. Stack initial value is 0 - self.require_zero("initial Stack value is 0", q.initial_value.clone()); + self.require_word_zero("initial Stack value is 0", q.initial_value.clone()); // 3.5 state root does not change - self.require_equal( + self.require_word_equal( "state_root is unchanged for Stack", q.state_root(), q.state_root_prev(), ); - self.require_equal( + self.require_word_equal( "value_prev column equals initial_value for Stack", q.value_prev_column(), q.initial_value(), @@ -287,34 +315,28 @@ impl<F: Field> ConstraintBuilder<F> { self.require_equal( "mpt_proof_type is field_tag or NonExistingStorageProof", q.mpt_proof_type(), - is_non_exist.expr() * MPTProofType::NonExistingStorageProof.expr() - + (1.expr() - is_non_exist) * MPTProofType::StorageMod.expr(), + is_non_exist.expr() * MPTProofType::StorageDoesNotExist.expr() + + (1.expr() - is_non_exist) * MPTProofType::StorageChanged.expr(), ); // ref. spec 4.1. MPT lookup for last access to (address, storage_key) self.condition(q.last_access(), |cb| { cb.add_lookup( "mpt_update exists in mpt circuit for AccountStorage last access", - vec![ - ( - q.rw_table.address.clone(), - q.mpt_update_table.address.clone(), - ), - ( - q.rw_table.storage_key.clone(), - q.mpt_update_table.storage_key.clone(), - ), - (q.mpt_proof_type(), q.mpt_update_table.proof_type.clone()), - (q.state_root(), q.mpt_update_table.new_root.clone()), - (q.state_root_prev(), q.mpt_update_table.old_root.clone()), - (q.value(), q.mpt_update_table.new_value.clone()), - (q.initial_value(), q.mpt_update_table.old_value.clone()), - ], + LookupBuilder::new() + .add(&q.rw_table.address, &q.mpt_update_table.address) + .add_word(&q.rw_table.storage_key, &q.mpt_update_table.storage_key) + .add(&q.mpt_proof_type(), &q.mpt_update_table.proof_type) + .add_word(&q.state_root(), &q.mpt_update_table.new_root) + .add_word(&q.state_root_prev(), &q.mpt_update_table.old_root) + .add_word(&q.value(), &q.mpt_update_table.new_value) + .add_word(&q.initial_value(), &q.mpt_update_table.old_value) + .build(), ); }); self.condition(q.not_first_access.clone(), |cb| { - cb.require_equal( + cb.require_word_equal( "value column at Rotation::prev() equals value_prev at Rotation::cur()", q.rw_table.value_prev.clone(), q.value_prev_column(), @@ -324,24 +346,24 @@ impl<F: Field> ConstraintBuilder<F> { fn build_tx_access_list_account_constraints(&mut self, q: &Queries<F>) { self.require_zero("field_tag is 0 for TxAccessListAccount", q.field_tag()); - self.require_zero( + self.require_word_zero( "storage_key is 0 for TxAccessListAccount", q.rw_table.storage_key.clone(), ); - self.require_boolean("TxAccessListAccount value is boolean", q.value()); - self.require_zero( + self.require_word_boolean("TxAccessListAccount value is boolean", q.value()); + self.require_word_zero( "initial TxAccessListAccount value is false", q.initial_value(), ); - self.require_equal( + self.require_word_equal( "state_root is unchanged for TxAccessListAccount", q.state_root(), q.state_root_prev(), ); self.condition(q.not_first_access.clone(), |cb| { - cb.require_equal( + cb.require_word_equal( "value column at Rotation::prev() equals value_prev at Rotation::cur()", q.rw_table.value_prev.clone(), q.value_prev_column(), @@ -354,20 +376,20 @@ impl<F: Field> ConstraintBuilder<F> { "field_tag is 0 for TxAccessListAccountStorage", q.field_tag(), ); - self.require_boolean("TxAccessListAccountStorage value is boolean", q.value()); - self.require_zero( + self.require_word_boolean("TxAccessListAccountStorage value is boolean", q.value()); + self.require_word_zero( "initial TxAccessListAccountStorage value is false", q.initial_value(), ); - self.require_equal( + self.require_word_equal( "state_root is unchanged for TxAccessListAccountStorage", q.state_root(), q.state_root_prev(), ); self.condition(q.not_first_access.clone(), |cb| { - cb.require_equal( + cb.require_word_equal( "value column at Rotation::prev() equals value_prev at Rotation::cur()", q.rw_table.value_prev.clone(), q.value_prev_column(), @@ -379,32 +401,32 @@ impl<F: Field> ConstraintBuilder<F> { // 7.0. `address`, `field_tag` and `storage_key` are 0 self.require_zero("address is 0 for TxRefund", q.rw_table.address.clone()); self.require_zero("field_tag is 0 for TxRefund", q.field_tag()); - self.require_zero( + self.require_word_zero( "storage_key is 0 for TxRefund", q.rw_table.storage_key.clone(), ); // 7.1. `state root` is not changed - self.require_equal( + self.require_word_equal( "state_root is unchanged for TxRefund", q.state_root(), q.state_root_prev(), ); self.condition(q.not_first_access.clone(), |cb| { - cb.require_equal( + cb.require_word_equal( "value column at Rotation::prev() equals value_prev at Rotation::cur()", q.rw_table.value_prev.clone(), q.value_prev_column(), ); }); // 7.2. `initial value` is 0 - self.require_zero("initial TxRefund value is 0", q.initial_value()); + self.require_word_zero("initial TxRefund value is 0", q.initial_value()); } fn build_account_constraints(&mut self, q: &Queries<F>) { // ref. spec 6.0. Unused keys are 0 self.require_zero("id is 0 for Account", q.id()); - self.require_zero( + self.require_word_zero( "storage_key is 0 for Account", q.rw_table.storage_key.clone(), ); @@ -432,10 +454,10 @@ impl<F: Field> ConstraintBuilder<F> { .map(|t| *t as usize), ); self.require_equal( - "mpt_proof_type is field_tag or NonExistingAccountProofs", + "mpt_proof_type is field_tag or AccountDoesNotExist", q.mpt_proof_type(), // degree = max(4, 4 + 1) = 5 - is_non_exist.expr() * MPTProofType::NonExistingAccountProof.expr() + is_non_exist.expr() * MPTProofType::AccountDoesNotExist.expr() + (1.expr() - is_non_exist) * q.field_tag(), ); @@ -443,26 +465,20 @@ impl<F: Field> ConstraintBuilder<F> { self.condition(q.last_access(), |cb| { cb.add_lookup( "mpt_update exists in mpt circuit for Account last access", - vec![ - ( - q.rw_table.address.clone(), - q.mpt_update_table.address.clone(), - ), - ( - q.rw_table.storage_key.clone(), - q.mpt_update_table.storage_key.clone(), - ), - (q.mpt_proof_type(), q.mpt_update_table.proof_type.clone()), - (q.state_root(), q.mpt_update_table.new_root.clone()), - (q.state_root_prev(), q.mpt_update_table.old_root.clone()), - (q.value(), q.mpt_update_table.new_value.clone()), - (q.initial_value(), q.mpt_update_table.old_value.clone()), - ], + LookupBuilder::new() + .add(&q.rw_table.address, &q.mpt_update_table.address) + .add_word(&q.rw_table.storage_key, &q.mpt_update_table.storage_key) + .add(&q.mpt_proof_type(), &q.mpt_update_table.proof_type) + .add_word(&q.state_root(), &q.mpt_update_table.new_root) + .add_word(&q.state_root_prev(), &q.mpt_update_table.old_root) + .add_word(&q.value(), &q.mpt_update_table.new_value) + .add_word(&q.initial_value(), &q.mpt_update_table.old_value) + .build(), ); }); self.condition(q.not_first_access.clone(), |cb| { - cb.require_equal( + cb.require_word_equal( "value column at Rotation::prev() equals value_prev at Rotation::cur()", q.rw_table.value_prev.clone(), q.value_prev_column(), @@ -472,7 +488,7 @@ impl<F: Field> ConstraintBuilder<F> { fn build_call_context_constraints(&mut self, q: &Queries<F>) { self.require_zero("address is 0 for CallContext", q.rw_table.address.clone()); - self.require_zero( + self.require_word_zero( "storage_key is 0 for CallContext", q.rw_table.storage_key.clone(), ); @@ -480,13 +496,13 @@ impl<F: Field> ConstraintBuilder<F> { "field_tag in CallContextFieldTag range", vec![(q.field_tag(), q.lookups.call_context_field_tag.clone())], ); - self.require_zero("initial CallContext value is 0", q.initial_value()); - self.require_equal( + self.require_word_zero("initial CallContext value is 0", q.initial_value()); + self.require_word_equal( "state_root is unchanged for CallContext", q.state_root(), q.state_root_prev(), ); - self.require_zero( + self.require_word_zero( "value_prev column is 0 for CallContext", q.value_prev_column(), ); @@ -498,47 +514,56 @@ impl<F: Field> ConstraintBuilder<F> { q.rw_table.is_write.clone(), 1.expr(), ); - self.require_zero("initial TxLog value is 0", q.initial_value()); + self.require_word_zero("initial TxLog value is 0", q.initial_value()); - self.require_equal( + self.require_word_equal( "state_root is unchanged for TxLog", q.state_root(), q.state_root_prev(), ); - self.require_equal( + self.require_word_equal( "value_prev column equals initial_value for TxLog", q.value_prev_column(), q.initial_value(), ); } - fn build_tx_receipt_constraints(&mut self, q: &Queries<F>) { - // TODO: implement TxReceipt constraints - self.require_equal("TxReceipt rows not implemented", 1.expr(), 0.expr()); - - self.require_equal( - "state_root is unchanged for TxReceipt", - q.state_root(), - q.state_root_prev(), - ); - self.require_zero( - "value_prev_column is 0 for TxReceipt", - q.value_prev_column(), - ); - } - fn require_zero(&mut self, name: &'static str, e: Expression<F>) { self.constraints.push((name, self.condition.clone() * e)); } + fn require_word_zero(&mut self, name: &'static str, e: word::Word<Expression<F>>) { + let (lo, hi) = e.into_lo_hi(); + self.constraints.push((name, self.condition.clone() * hi)); + self.constraints.push((name, self.condition.clone() * lo)); + } + fn require_equal(&mut self, name: &'static str, left: Expression<F>, right: Expression<F>) { self.require_zero(name, left - right) } + fn require_word_equal( + &mut self, + name: &'static str, + left: word::Word<Expression<F>>, + right: word::Word<Expression<F>>, + ) { + let (left_lo, left_hi) = left.into_lo_hi(); + let (right_lo, right_hi) = right.into_lo_hi(); + self.require_zero(name, left_hi - right_hi); + self.require_zero(name, left_lo - right_lo); + } + fn require_boolean(&mut self, name: &'static str, e: Expression<F>) { self.require_zero(name, e.clone() * (1.expr() - e)) } + fn require_word_boolean(&mut self, name: &'static str, e: word::Word<Expression<F>>) { + let (lo, hi) = e.into_lo_hi(); + self.require_zero(name, hi); + self.require_zero(name, lo.clone() * (1.expr() - lo)); + } + fn require_in_set(&mut self, name: &'static str, item: Expression<F>, set: Vec<Expression<F>>) { self.require_zero( name, @@ -565,10 +590,6 @@ impl<F: Field> ConstraintBuilder<F> { } impl<F: Field> Queries<F> { - fn selector(&self) -> Expression<F> { - self.selector.clone() - } - fn is_write(&self) -> Expression<F> { self.rw_table.is_write.clone() } @@ -577,35 +598,23 @@ impl<F: Field> Queries<F> { not::expr(self.is_write()) } - fn tag(&self) -> Expression<F> { - self.rw_table.tag.clone() - } - fn id(&self) -> Expression<F> { self.rw_table.id.clone() } - fn id_change(&self) -> Expression<F> { - self.id() - self.rw_table.prev_id.clone() - } - fn field_tag(&self) -> Expression<F> { self.rw_table.field_tag.clone() } - fn value(&self) -> Expression<F> { + fn value(&self) -> word::Word<Expression<F>> { self.rw_table.value.clone() } - fn value_prev(&self) -> Expression<F> { - self.rw_table.value_prev.clone() - } - - fn initial_value(&self) -> Expression<F> { + fn initial_value(&self) -> word::Word<Expression<F>> { self.initial_value.clone() } - fn initial_value_prev(&self) -> Expression<F> { + fn initial_value_prev(&self) -> word::Word<Expression<F>> { self.initial_value_prev.clone() } @@ -633,48 +642,23 @@ impl<F: Field> Queries<F> { self.rw_table.rw_counter.clone() - self.rw_table.prev_rw_counter.clone() } - fn tx_log_index(&self) -> Expression<F> { - from_digits(&self.address.limbs[0..2], (1u64 << 16).expr()) - } - - fn tx_log_index_prev(&self) -> Expression<F> { - from_digits(&self.address.limbs_prev[0..2], (1u64 << 16).expr()) - } - - fn tx_log_id(&self) -> Expression<F> { - from_digits(&self.address.limbs[3..5], (1u64 << 16).expr()) - } - - fn tx_log_id_prev(&self) -> Expression<F> { - from_digits(&self.address.limbs_prev[3..5], (1u64 << 16).expr()) - } - fn last_access(&self) -> Expression<F> { self.last_access.clone() } - fn state_root(&self) -> Expression<F> { + fn state_root(&self) -> word::Word<Expression<F>> { self.state_root.clone() } - fn state_root_prev(&self) -> Expression<F> { + fn state_root_prev(&self) -> word::Word<Expression<F>> { self.state_root_prev.clone() } - fn value_prev_column(&self) -> Expression<F> { + fn value_prev_column(&self) -> word::Word<Expression<F>> { self.rw_table.value_prev_column.clone() } } -fn from_digits<F: Field>(digits: &[Expression<F>], base: Expression<F>) -> Expression<F> { - digits - .iter() - .rev() - .fold(Expression::Constant(F::ZERO), |result, digit| { - digit.clone() + result * base.clone() - }) -} - fn set<F: Field, T: IntoEnumIterator + Expr<F>>() -> Vec<Expression<F>> { T::iter().map(|x| x.expr()).collect() // you don't need this collect if you // can figure out the return type diff --git a/zkevm-circuits/src/state_circuit/dev.rs b/zkevm-circuits/src/state_circuit/dev.rs index 83769a9057..193cf2e52c 100644 --- a/zkevm-circuits/src/state_circuit/dev.rs +++ b/zkevm-circuits/src/state_circuit/dev.rs @@ -2,13 +2,13 @@ pub use super::StateCircuit; use crate::{ state_circuit::{StateCircuitConfig, StateCircuitConfigArgs}, - table::{MptTable, RwTable}, + table::{MptTable, RwTable, UXTable}, util::{Challenges, SubCircuit, SubCircuitConfig}, }; use eth_types::Field; use halo2_proofs::{ circuit::{Layouter, SimpleFloorPlanner}, - plonk::{Advice, Circuit, Column, ConstraintSystem, Error}, + plonk::{Circuit, ConstraintSystem, Error}, }; impl<F: Field> Circuit<F> for StateCircuit<F> @@ -27,6 +27,9 @@ where let rw_table = RwTable::construct(meta); let mpt_table = MptTable::construct(meta); let challenges = Challenges::construct(meta); + let u8_table = UXTable::construct(meta); + let u10_table = UXTable::construct(meta); + let u16_table = UXTable::construct(meta); let config = { let challenges = challenges.exprs(meta); @@ -35,6 +38,9 @@ where StateCircuitConfigArgs { rw_table, mpt_table, + u8_table, + u10_table, + u16_table, challenges, }, ) @@ -49,70 +55,81 @@ where mut layouter: impl Layouter<F>, ) -> Result<(), Error> { let challenges = challenges.values(&mut layouter); - config - .mpt_table - .load(&mut layouter, &self.updates, challenges.evm_word())?; + config.mpt_table.load(&mut layouter, &self.updates)?; self.synthesize_sub(&config, &challenges, &mut layouter) } } +#[cfg(test)] +use halo2_proofs::plonk::{Advice, Column}; + +#[cfg(test)] #[derive(Hash, Eq, PartialEq, Clone, Debug)] -pub enum AdviceColumn { +pub(crate) enum AdviceColumn { IsWrite, - Address, + _Address, AddressLimb0, AddressLimb1, - StorageKey, - StorageKeyByte0, - StorageKeyByte1, - Value, - ValuePrev, + _StorageKeyLo, + _StorageKeyHi, + StorageKeyLimb0, + _StorageKeyLimb1, + ValueLo, + ValueHi, + ValuePrevLo, + ValuePrevHi, RwCounter, RwCounterLimb0, - RwCounterLimb1, + _RwCounterLimb1, Tag, TagBit0, TagBit1, TagBit2, TagBit3, - LimbIndexBit0, // most significant bit + _LimbIndexBit0, // most significant bit LimbIndexBit1, LimbIndexBit2, - LimbIndexBit3, - LimbIndexBit4, // least significant bit - InitialValue, + _LimbIndexBit3, + _LimbIndexBit4, // least significant bit + InitialValueLo, + InitialValueHi, IsZero, // committed_value and value are 0 // NonEmptyWitness is the BatchedIsZero chip witness that contains the // inverse of the non-zero value if any in [committed_value, value] NonEmptyWitness, } +#[cfg(test)] impl AdviceColumn { - pub fn value<F: Field>(&self, config: &StateCircuitConfig<F>) -> Column<Advice> { + pub(crate) fn value<F: Field>(&self, config: &StateCircuitConfig<F>) -> Column<Advice> { match self { Self::IsWrite => config.rw_table.is_write, - Self::Address => config.rw_table.address, + Self::_Address => config.rw_table.address, Self::AddressLimb0 => config.sort_keys.address.limbs[0], Self::AddressLimb1 => config.sort_keys.address.limbs[1], - Self::StorageKey => config.rw_table.storage_key, - Self::StorageKeyByte0 => config.sort_keys.storage_key.bytes[0], - Self::StorageKeyByte1 => config.sort_keys.storage_key.bytes[1], - Self::Value => config.rw_table.value, - Self::ValuePrev => config.rw_table.value_prev, + Self::_StorageKeyLo => config.rw_table.storage_key.lo(), + Self::_StorageKeyHi => config.rw_table.storage_key.hi(), + Self::StorageKeyLimb0 => config.sort_keys.storage_key.limbs[0], + Self::_StorageKeyLimb1 => config.sort_keys.storage_key.limbs[1], + Self::ValueLo => config.rw_table.value.lo(), + Self::ValueHi => config.rw_table.value.hi(), + Self::ValuePrevLo => config.rw_table.value_prev.lo(), + Self::ValuePrevHi => config.rw_table.value_prev.hi(), Self::RwCounter => config.rw_table.rw_counter, Self::RwCounterLimb0 => config.sort_keys.rw_counter.limbs[0], - Self::RwCounterLimb1 => config.sort_keys.rw_counter.limbs[1], + Self::_RwCounterLimb1 => config.sort_keys.rw_counter.limbs[1], Self::Tag => config.rw_table.tag, Self::TagBit0 => config.sort_keys.tag.bits[0], Self::TagBit1 => config.sort_keys.tag.bits[1], Self::TagBit2 => config.sort_keys.tag.bits[2], Self::TagBit3 => config.sort_keys.tag.bits[3], - Self::LimbIndexBit0 => config.lexicographic_ordering.first_different_limb.bits[0], + Self::_LimbIndexBit0 => config.lexicographic_ordering.first_different_limb.bits[0], Self::LimbIndexBit1 => config.lexicographic_ordering.first_different_limb.bits[1], Self::LimbIndexBit2 => config.lexicographic_ordering.first_different_limb.bits[2], - Self::LimbIndexBit3 => config.lexicographic_ordering.first_different_limb.bits[3], - Self::LimbIndexBit4 => config.lexicographic_ordering.first_different_limb.bits[4], - Self::InitialValue => config.initial_value, + Self::_LimbIndexBit3 => config.lexicographic_ordering.first_different_limb.bits[3], + Self::_LimbIndexBit4 => config.lexicographic_ordering.first_different_limb.bits[4], + Self::InitialValueLo => config.initial_value.lo(), + Self::InitialValueHi => config.initial_value.hi(), Self::IsZero => config.is_non_exist.is_zero, Self::NonEmptyWitness => config.is_non_exist.nonempty_witness, } diff --git a/zkevm-circuits/src/state_circuit/lexicographic_ordering.rs b/zkevm-circuits/src/state_circuit/lexicographic_ordering.rs index bea63c2d5c..062a85cb00 100644 --- a/zkevm-circuits/src/state_circuit/lexicographic_ordering.rs +++ b/zkevm-circuits/src/state_circuit/lexicographic_ordering.rs @@ -252,7 +252,7 @@ struct Queries<F: Field> { field_tag: Expression<F>, // 8 bits, so we can pack tag + field_tag into one limb. id_limbs: [Expression<F>; N_LIMBS_ID], address_limbs: [Expression<F>; N_LIMBS_ACCOUNT_ADDRESS], - storage_key_bytes: [Expression<F>; N_BYTES_WORD], + storage_key_limbs: [Expression<F>; N_LIMBS_WORD], rw_counter_limbs: [Expression<F>; N_LIMBS_RW_COUNTER], } @@ -265,18 +265,13 @@ impl<F: Field> Queries<F> { id_limbs: keys.id.limbs.map(&mut query_advice), address_limbs: keys.address.limbs.map(&mut query_advice), field_tag: query_advice(keys.field_tag), - storage_key_bytes: keys.storage_key.bytes.map(&mut query_advice), + storage_key_limbs: keys.storage_key.limbs.map(&mut query_advice), rw_counter_limbs: keys.rw_counter.limbs.map(query_advice), } } fn storage_key_be_limbs(&self) -> Vec<Expression<F>> { - self.storage_key_bytes - .iter() - .rev() - .tuples() - .map(|(hi, lo)| (1u64 << 8).expr() * hi.clone() + lo.clone()) - .collect() + self.storage_key_limbs.iter().rev().cloned().collect() } fn be_limbs(&self) -> Vec<Expression<F>> { diff --git a/zkevm-circuits/src/state_circuit/lookups.rs b/zkevm-circuits/src/state_circuit/lookups.rs index 5bea09914d..41b45a3fb1 100644 --- a/zkevm-circuits/src/state_circuit/lookups.rs +++ b/zkevm-circuits/src/state_circuit/lookups.rs @@ -1,10 +1,11 @@ -use crate::table::CallContextFieldTag; +use crate::table::{CallContextFieldTag, LookupTable, UXTable}; use eth_types::Field; use halo2_proofs::{ circuit::{Layouter, Value}, plonk::{Column, ConstraintSystem, Error, Expression, Fixed, VirtualCells}, poly::Rotation, }; +use itertools::Itertools; use std::marker::PhantomData; use strum::IntoEnumIterator; @@ -12,35 +13,13 @@ use strum::IntoEnumIterator; pub struct Config { // Can these be TableColumn's? // https://github.com/zcash/halo2/blob/642efc1536d3ea2566b04814bd60a00c4745ae22/halo2_proofs/src/plonk/circuit.rs#L266 - u8: Column<Fixed>, - u10: Column<Fixed>, - u16: Column<Fixed>, + u8_table: UXTable<8>, + u10_table: UXTable<10>, + u16_table: UXTable<16>, pub call_context_field_tag: Column<Fixed>, } impl Config { - pub fn range_check_u8<F: Field>( - &self, - meta: &mut ConstraintSystem<F>, - msg: &'static str, - exp_fn: impl FnOnce(&mut VirtualCells<'_, F>) -> Expression<F>, - ) { - meta.lookup_any(msg, |meta| { - let exp = exp_fn(meta); - vec![(exp, meta.query_fixed(self.u8, Rotation::cur()))] - }); - } - pub fn range_check_u10<F: Field>( - &self, - meta: &mut ConstraintSystem<F>, - msg: &'static str, - exp_fn: impl FnOnce(&mut VirtualCells<'_, F>) -> Expression<F>, - ) { - meta.lookup_any(msg, |meta| { - let exp = exp_fn(meta); - vec![(exp, meta.query_fixed(self.u10, Rotation::cur()))] - }); - } pub fn range_check_u16<F: Field>( &self, meta: &mut ConstraintSystem<F>, @@ -49,7 +28,11 @@ impl Config { ) { meta.lookup_any(msg, |meta| { let exp = exp_fn(meta); - vec![(exp, meta.query_fixed(self.u16, Rotation::cur()))] + vec![exp] + .into_iter() + .zip_eq(self.u16_table.table_exprs(meta)) + .map(|(exp, table_expr)| (exp, table_expr)) + .collect() }); } } @@ -65,9 +48,9 @@ pub struct Queries<F> { impl<F: Field> Queries<F> { pub fn new(meta: &mut VirtualCells<'_, F>, c: Config) -> Self { Self { - u8: meta.query_fixed(c.u8, Rotation::cur()), - u10: meta.query_fixed(c.u10, Rotation::cur()), - u16: meta.query_fixed(c.u16, Rotation::cur()), + u8: c.u8_table.table_exprs(meta)[0].clone(), + u10: c.u10_table.table_exprs(meta)[0].clone(), + u16: c.u16_table.table_exprs(meta)[0].clone(), call_context_field_tag: meta.query_fixed(c.call_context_field_tag, Rotation::cur()), } } @@ -86,16 +69,18 @@ impl<F: Field> Chip<F> { } } - pub fn configure(meta: &mut ConstraintSystem<F>) -> Config { + pub fn configure( + meta: &mut ConstraintSystem<F>, + u8_table: UXTable<8>, + u10_table: UXTable<10>, + u16_table: UXTable<16>, + ) -> Config { let config = Config { - u8: meta.fixed_column(), - u10: meta.fixed_column(), - u16: meta.fixed_column(), + u8_table, + u10_table, + u16_table, call_context_field_tag: meta.fixed_column(), }; - meta.annotate_lookup_any_column(config.u8, || "LOOKUP_u8"); - meta.annotate_lookup_any_column(config.u10, || "LOOKUP_u10"); - meta.annotate_lookup_any_column(config.u16, || "LOOKUP_u16"); meta.annotate_lookup_any_column(config.call_context_field_tag, || { "LOOKUP_call_context_field_tag" }); @@ -103,26 +88,9 @@ impl<F: Field> Chip<F> { } pub fn load(&self, layouter: &mut impl Layouter<F>) -> Result<(), Error> { - for (column, exponent) in [ - (self.config.u8, 8), - (self.config.u10, 10), - (self.config.u16, 16), - ] { - layouter.assign_region( - || format!("assign u{} fixed column", exponent), - |mut region| { - for i in 0..(1 << exponent) { - region.assign_fixed( - || format!("assign {} in u{} fixed column", i, exponent), - column, - i, - || Value::known(F::from(i as u64)), - )?; - } - Ok(()) - }, - )?; - } + self.config.u8_table.load(layouter)?; + self.config.u10_table.load(layouter)?; + self.config.u16_table.load(layouter)?; layouter.assign_region( || "assign call_context_field_tags fixed column", |mut region| { diff --git a/zkevm-circuits/src/state_circuit/multiple_precision_integer.rs b/zkevm-circuits/src/state_circuit/multiple_precision_integer.rs index 2a8d963baa..89cffa0bee 100644 --- a/zkevm-circuits/src/state_circuit/multiple_precision_integer.rs +++ b/zkevm-circuits/src/state_circuit/multiple_precision_integer.rs @@ -1,8 +1,8 @@ use super::{lookups, param::*}; use crate::util::Expr; -use eth_types::{Address, Field}; +use eth_types::{Address, Field, ToLittleEndian, Word}; use halo2_proofs::{ - circuit::{Layouter, Region, Value}, + circuit::{Region, Value}, plonk::{Advice, Column, ConstraintSystem, Error, Expression, Fixed, VirtualCells}, poly::Rotation, }; @@ -11,22 +11,38 @@ use std::marker::PhantomData; pub trait ToLimbs<const N: usize> { fn to_limbs(&self) -> [u16; N]; + fn annotation() -> &'static str; } impl ToLimbs<N_LIMBS_ACCOUNT_ADDRESS> for Address { - fn to_limbs(&self) -> [u16; 10] { + fn to_limbs(&self) -> [u16; N_LIMBS_ACCOUNT_ADDRESS] { // address bytes are be.... maybe just have everything be later? // you will need this in the future later because it makes the key ordering more // obvious let le_bytes: Vec<_> = self.0.iter().rev().cloned().collect(); le_bytes_to_limbs(&le_bytes).try_into().unwrap() } + fn annotation() -> &'static str { + "Address" + } } impl ToLimbs<N_LIMBS_RW_COUNTER> for u32 { - fn to_limbs(&self) -> [u16; 2] { + fn to_limbs(&self) -> [u16; N_LIMBS_RW_COUNTER] { le_bytes_to_limbs(&self.to_le_bytes()).try_into().unwrap() } + fn annotation() -> &'static str { + "u32" + } +} + +impl ToLimbs<N_LIMBS_WORD> for Word { + fn to_limbs(&self) -> [u16; N_LIMBS_WORD] { + le_bytes_to_limbs(&self.to_le_bytes()).try_into().unwrap() + } + fn annotation() -> &'static str { + "Word" + } } #[derive(Clone, Copy)] @@ -58,47 +74,19 @@ impl<F: Field, const N: usize> Queries<F, N> { } } -impl Config<Address, N_LIMBS_ACCOUNT_ADDRESS> { - pub fn assign<F: Field>( - &self, - region: &mut Region<'_, F>, - offset: usize, - value: Address, - ) -> Result<(), Error> { - for (i, &limb) in value.to_limbs().iter().enumerate() { - region.assign_advice( - || format!("limb[{}] in address mpi", i), - self.limbs[i], - offset, - || Value::known(F::from(limb as u64)), - )?; - } - Ok(()) - } - - /// Annotates columns of this gadget embedded within a circuit region. - pub fn annotate_columns_in_region<F: Field>(&self, region: &mut Region<F>, prefix: &str) { - let mut annotations = Vec::new(); - for (i, _) in self.limbs.iter().enumerate() { - annotations.push(format!("MPI_limbs_address_{}", i)); - } - self.limbs - .iter() - .zip(annotations.iter()) - .for_each(|(col, ann)| region.name_column(|| format!("{}_{}", prefix, ann), *col)); - } -} - -impl Config<u32, N_LIMBS_RW_COUNTER> { +impl<T, const N: usize> Config<T, N> +where + T: ToLimbs<N>, +{ pub fn assign<F: Field>( &self, region: &mut Region<'_, F>, offset: usize, - value: u32, + value: T, ) -> Result<(), Error> { for (i, &limb) in value.to_limbs().iter().enumerate() { region.assign_advice( - || format!("limb[{}] in u32 mpi", i), + || format!("limb[{}] in {} mpi", i, T::annotation()), self.limbs[i], offset, || Value::known(F::from(limb as u64)), @@ -111,7 +99,7 @@ impl Config<u32, N_LIMBS_RW_COUNTER> { pub fn annotate_columns_in_region<F: Field>(&self, region: &mut Region<F>, prefix: &str) { let mut annotations = Vec::new(); for (i, _) in self.limbs.iter().enumerate() { - annotations.push(format!("MPI_limbs_u32_{}", i)); + annotations.push(format!("MPI_limbs_{}_{}", T::annotation(), i)); } self.limbs .iter() @@ -120,54 +108,52 @@ impl Config<u32, N_LIMBS_RW_COUNTER> { } } -pub struct Chip<F: Field, T, const N: usize> +pub struct Chip<F: Field, T, const N_LIMBS: usize, const N_VALUES: usize> where - T: ToLimbs<N>, + T: ToLimbs<N_LIMBS>, { - config: Config<T, N>, + _config: Config<T, N_LIMBS>, _marker: PhantomData<F>, } -impl<F: Field, T, const N: usize> Chip<F, T, N> +impl<F: Field, T, const N_LIMBS: usize, const N_VALUES: usize> Chip<F, T, N_LIMBS, N_VALUES> where - T: ToLimbs<N>, + T: ToLimbs<N_LIMBS>, { - pub fn construct(config: Config<T, N>) -> Self { - Self { - config, - _marker: PhantomData, - } - } - pub fn configure( meta: &mut ConstraintSystem<F>, selector: Column<Fixed>, - value: Column<Advice>, + values: [Column<Advice>; N_VALUES], lookup: lookups::Config, - ) -> Config<T, N> { - let limbs = [0; N].map(|_| meta.advice_column()); + ) -> Config<T, N_LIMBS> { + assert_eq!(N_LIMBS & N_VALUES, 0); + let limbs_per_value = N_LIMBS / N_VALUES; + + let limbs = [0; N_LIMBS].map(|_| meta.advice_column()); for &limb in &limbs { lookup.range_check_u16(meta, "mpi limb fits into u16", |meta| { meta.query_advice(limb, Rotation::cur()) }); } - meta.create_gate("mpi value matches claimed limbs", |meta| { - let selector = meta.query_fixed(selector, Rotation::cur()); - let value = meta.query_advice(value, Rotation::cur()); - let limbs = limbs.map(|limb| meta.query_advice(limb, Rotation::cur())); - vec![selector * (value - value_from_limbs(&limbs))] - }); + + for (n, value) in values.iter().enumerate() { + meta.create_gate("mpi value matches claimed limbs", |meta| { + let selector = meta.query_fixed(selector, Rotation::cur()); + let value_expr = meta.query_advice(*value, Rotation::cur()); + let value_limbs = &limbs[n * limbs_per_value..(n + 1) * limbs_per_value]; + let limbs_expr = value_limbs + .iter() + .map(|limb| meta.query_advice(*limb, Rotation::cur())); + vec![selector * (value_expr - value_from_limbs(&limbs_expr.collect::<Vec<_>>()))] + }); + } Config { limbs, _marker: PhantomData, } } - - pub fn load(&self, _layouter: &mut impl Layouter<F>) -> Result<(), Error> { - Ok(()) - } } fn le_bytes_to_limbs(bytes: &[u8]) -> Vec<u16> { diff --git a/zkevm-circuits/src/state_circuit/param.rs b/zkevm-circuits/src/state_circuit/param.rs index fb30860c12..e80cc0ef25 100644 --- a/zkevm-circuits/src/state_circuit/param.rs +++ b/zkevm-circuits/src/state_circuit/param.rs @@ -1,3 +1,4 @@ pub(super) const N_LIMBS_RW_COUNTER: usize = 2; pub(super) const N_LIMBS_ACCOUNT_ADDRESS: usize = 10; pub(super) const N_LIMBS_ID: usize = 2; +pub(super) const N_LIMBS_WORD: usize = 16; diff --git a/zkevm-circuits/src/state_circuit/random_linear_combination.rs b/zkevm-circuits/src/state_circuit/random_linear_combination.rs deleted file mode 100644 index edeed2688f..0000000000 --- a/zkevm-circuits/src/state_circuit/random_linear_combination.rs +++ /dev/null @@ -1,105 +0,0 @@ -use crate::evm_circuit::util::rlc; -use eth_types::{Field, ToLittleEndian, U256}; -use halo2_proofs::{ - circuit::{Layouter, Region, Value}, - plonk::{Advice, Column, ConstraintSystem, Error, Expression, Fixed, VirtualCells}, - poly::Rotation, -}; -use std::marker::PhantomData; - -use super::lookups; - -#[derive(Clone, Debug, Copy)] -pub struct Config<const N: usize> { - // bytes are little endian - pub bytes: [Column<Advice>; N], -} - -#[derive(Clone)] -pub struct Queries<F: Field, const N: usize> { - pub bytes: [Expression<F>; N], -} - -impl<F: Field, const N: usize> Queries<F, N> { - pub fn new(meta: &mut VirtualCells<'_, F>, c: Config<N>) -> Self { - Self { - bytes: c.bytes.map(|byte| meta.query_advice(byte, Rotation::cur())), - } - } -} - -impl<const N: usize> Config<N> { - pub fn assign<F: Field>( - &self, - region: &mut Region<'_, F>, - offset: usize, - _randomness: Value<F>, // kept for future use - value: U256, - ) -> Result<(), Error> { - let bytes = value.to_le_bytes(); - for (i, &byte) in bytes.iter().enumerate() { - region.assign_advice( - || format!("byte[{}] in rlc", i), - self.bytes[i], - offset, - || Value::known(F::from(byte as u64)), - )?; - } - Ok(()) - } - - /// Annotates columns of this gadget embedded within a circuit region. - pub fn annotate_columns_in_region<F: Field>(&self, region: &mut Region<F>, prefix: &str) { - let mut annotations = Vec::new(); - for (i, _) in self.bytes.iter().enumerate() { - annotations.push(format!("RLC_byte{}", i)); - } - self.bytes - .iter() - .zip(annotations.iter()) - .for_each(|(col, ann)| region.name_column(|| format!("{}_{}", prefix, ann), *col)); - } -} - -pub struct Chip<F: Field, const N: usize> { - config: Config<N>, - _marker: PhantomData<F>, -} - -impl<F: Field, const N: usize> Chip<F, N> { - pub fn construct(config: Config<N>) -> Self { - Self { - config, - _marker: PhantomData, - } - } - - pub fn configure( - meta: &mut ConstraintSystem<F>, - selector: Column<Fixed>, - encoded: Column<Advice>, - lookup: lookups::Config, - randomness: Expression<F>, - ) -> Config<N> { - let bytes = [0; N].map(|_| meta.advice_column()); - - for &byte in &bytes { - lookup.range_check_u8(meta, "rlc bytes fit into u8", |meta| { - meta.query_advice(byte, Rotation::cur()) - }); - } - - meta.create_gate("rlc encoded value matches bytes", |meta| { - let selector = meta.query_fixed(selector, Rotation::cur()); - let encoded = meta.query_advice(encoded, Rotation::cur()); - let bytes = bytes.map(|c| meta.query_advice(c, Rotation::cur())); - vec![selector * (encoded - rlc::expr(&bytes, randomness))] - }); - - Config { bytes } - } - - pub fn load(&self, _layouter: &mut impl Layouter<F>) -> Result<(), Error> { - Ok(()) - } -} diff --git a/zkevm-circuits/src/state_circuit/test.rs b/zkevm-circuits/src/state_circuit/test.rs index 8656bab364..8456d8113e 100644 --- a/zkevm-circuits/src/state_circuit/test.rs +++ b/zkevm-circuits/src/state_circuit/test.rs @@ -1,4 +1,3 @@ -#![allow(unused_imports)] pub use super::{dev::*, *}; use crate::{ table::{AccountFieldTag, CallContextFieldTag, TxLogFieldTag, TxReceiptFieldTag}, @@ -11,15 +10,14 @@ use bus_mapping::operation::{ use eth_types::{ address, evm_types::{MemoryAddress, StackAddress}, - Address, Field, ToAddress, Word, U256, + Address, ToAddress, Word, U256, }; use gadgets::binary_number::AsBits; use halo2_proofs::{ arithmetic::Field as Halo2Field, - circuit::SimpleFloorPlanner, dev::{MockProver, VerifyFailure}, halo2curves::bn256::{Bn256, Fr}, - plonk::{keygen_vk, Advice, Circuit, Column, ConstraintSystem}, + plonk::{keygen_vk, Circuit, ConstraintSystem}, poly::kzg::commitment::ParamsKZG, }; use rand::SeedableRng; @@ -60,7 +58,7 @@ fn test_state_circuit_ok( fn degree() { let mut meta = ConstraintSystem::<Fr>::default(); StateCircuit::<Fr>::configure(&mut meta); - assert_eq!(meta.degree(), 9); + assert_eq!(meta.degree(), 10); } #[test] @@ -281,21 +279,6 @@ fn diff_1_problem_repro() { assert_eq!(verify(rows), Ok(())); } -#[test] -fn storage_key_rlc() { - let rows = vec![Rw::AccountStorage { - rw_counter: 1, - is_write: false, - account_address: Address::default(), - storage_key: U256::from(256), - value: U256::from(300), - value_prev: U256::from(300), - tx_id: 4, - committed_value: U256::from(300), - }]; - assert_eq!(verify(rows), Ok(())); -} - #[test] fn tx_log_ok() { let rows = vec![ @@ -421,38 +404,11 @@ fn storage_key_mismatch() { tx_id: 4, committed_value: U256::from(34), }]; - let overrides = HashMap::from([((AdviceColumn::StorageKeyByte1, 0), Fr::ONE)]); + let overrides = HashMap::from([((AdviceColumn::StorageKeyLimb0, 0), Fr::ONE)]); let result = verify_with_overrides(rows, overrides); - assert_error_matches(result, "rlc encoded value matches bytes"); -} - -#[test] -fn storage_key_byte_out_of_range() { - let rows = vec![Rw::AccountStorage { - rw_counter: 1, - is_write: false, - account_address: Address::default(), - storage_key: U256::from(256), - value: U256::from(500), - value_prev: U256::from(500), - tx_id: 4, - committed_value: U256::from(500), - }]; - let overrides = HashMap::from([ - ((AdviceColumn::StorageKeyByte0, 0), Fr::from(0xcafeu64)), - ((AdviceColumn::StorageKeyByte1, 0), Fr::ZERO), - ]); - - // This will trigger two errors: an RLC encoding error and the "fit into u8", we - // remove the first one - let result = verify_with_overrides(rows, overrides).map_err(|mut err| { - err.remove(0); - err - }); - - assert_error_matches(result, "rlc bytes fit into u8"); + assert_error_matches(result, "mpi value matches claimed limbs"); } #[test] @@ -738,11 +694,14 @@ fn bad_initial_memory_value() { let v = Fr::from(200); let overrides = HashMap::from([ - ((AdviceColumn::Value, 0), v), - ((AdviceColumn::ValuePrev, 0), v), + ((AdviceColumn::ValueLo, 0), v), + ((AdviceColumn::ValueHi, 0), Fr::ZERO), + ((AdviceColumn::ValuePrevLo, 0), v), + ((AdviceColumn::ValuePrevHi, 0), Fr::ZERO), ((AdviceColumn::IsZero, 0), Fr::ZERO), ((AdviceColumn::NonEmptyWitness, 0), v.invert().unwrap()), - ((AdviceColumn::InitialValue, 0), v), + ((AdviceColumn::InitialValueLo, 0), v), + ((AdviceColumn::InitialValueHi, 0), Fr::ZERO), ]); let result = verify_with_overrides(rows, overrides); @@ -761,13 +720,14 @@ fn invalid_memory_value() { }]; let v = Fr::from(256); let overrides = HashMap::from([ - ((AdviceColumn::Value, 0), v), + ((AdviceColumn::ValueHi, 0), Fr::ZERO), + ((AdviceColumn::ValueLo, 0), v), ((AdviceColumn::NonEmptyWitness, 0), v.invert().unwrap()), ]); let result = verify_with_overrides(rows, overrides); - assert_error_matches(result, "memory value is a byte"); + assert_error_matches(result, "memory value is a byte (lo is u8)"); } #[test] @@ -855,8 +815,10 @@ fn bad_initial_stack_value() { }]; let overrides = HashMap::from([ - ((AdviceColumn::InitialValue, 0), Fr::from(10)), - ((AdviceColumn::ValuePrev, 0), Fr::from(10)), + ((AdviceColumn::InitialValueHi, 0), Fr::ZERO), + ((AdviceColumn::InitialValueLo, 0), Fr::from(10)), + ((AdviceColumn::ValuePrevHi, 0), Fr::ZERO), + ((AdviceColumn::ValuePrevLo, 0), Fr::from(10)), ]); assert_error_matches( @@ -877,8 +839,10 @@ fn bad_initial_tx_access_list_account_value() { }]; let overrides = HashMap::from([ - ((AdviceColumn::InitialValue, 0), Fr::from(1)), - ((AdviceColumn::ValuePrev, 0), Fr::from(1)), + ((AdviceColumn::InitialValueHi, 0), Fr::ZERO), + ((AdviceColumn::InitialValueLo, 0), Fr::from(1)), + ((AdviceColumn::ValuePrevHi, 0), Fr::ZERO), + ((AdviceColumn::ValuePrevLo, 0), Fr::from(1)), ]); assert_error_matches( @@ -899,11 +863,14 @@ fn bad_initial_tx_refund_value() { let v = Fr::from(10); let overrides = HashMap::from([ ((AdviceColumn::IsWrite, 0), Fr::from(1)), - ((AdviceColumn::Value, 0), v), - ((AdviceColumn::ValuePrev, 0), v), + ((AdviceColumn::ValueHi, 0), Fr::ZERO), + ((AdviceColumn::ValueLo, 0), v), + ((AdviceColumn::ValuePrevHi, 0), Fr::ZERO), + ((AdviceColumn::ValuePrevLo, 0), v), ((AdviceColumn::IsZero, 0), Fr::ZERO), ((AdviceColumn::NonEmptyWitness, 0), v.invert().unwrap()), - ((AdviceColumn::InitialValue, 0), v), + ((AdviceColumn::InitialValueHi, 0), Fr::ZERO), + ((AdviceColumn::InitialValueLo, 0), v), ]); assert_error_matches( @@ -925,8 +892,10 @@ fn bad_initial_tx_log_value() { }]; let overrides = HashMap::from([ - ((AdviceColumn::InitialValue, 0), Fr::from(10)), - ((AdviceColumn::ValuePrev, 0), Fr::from(10)), + ((AdviceColumn::InitialValueHi, 0), Fr::ZERO), + ((AdviceColumn::InitialValueLo, 0), Fr::from(10)), + ((AdviceColumn::ValuePrevHi, 0), Fr::ZERO), + ((AdviceColumn::ValuePrevLo, 0), Fr::from(10)), ]); assert_error_matches( @@ -1009,8 +978,10 @@ fn bad_initial_tx_receipt_value() { }]; let overrides = HashMap::from([ - ((AdviceColumn::Value, 0), Fr::from(1900)), - ((AdviceColumn::InitialValue, 0), Fr::from(1900)), + ((AdviceColumn::ValueHi, 0), Fr::ZERO), + ((AdviceColumn::ValueLo, 0), Fr::from(1900)), + ((AdviceColumn::InitialValueHi, 0), Fr::ZERO), + ((AdviceColumn::InitialValueLo, 0), Fr::from(1900)), ]); assert_error_matches( diff --git a/zkevm-circuits/src/super_circuit.rs b/zkevm-circuits/src/super_circuit.rs index 2cc0d5a608..35c6357aee 100644 --- a/zkevm-circuits/src/super_circuit.rs +++ b/zkevm-circuits/src/super_circuit.rs @@ -50,7 +50,7 @@ //! - [x] Tx Circuit //! - [ ] MPT Circuit -#[cfg(any(feature = "test", test))] +#[cfg(test)] pub(crate) mod test; use crate::{ @@ -65,6 +65,7 @@ use crate::{ state_circuit::{StateCircuit, StateCircuitConfig, StateCircuitConfigArgs}, table::{ BlockTable, BytecodeTable, CopyTable, ExpTable, KeccakTable, MptTable, RwTable, TxTable, + UXTable, }, tx_circuit::{TxCircuit, TxCircuitConfig, TxCircuitConfigArgs}, util::{log2_ceil, Challenges, SubCircuit, SubCircuitConfig}, @@ -87,6 +88,9 @@ use std::array; pub struct SuperCircuitConfig<F: Field> { block_table: BlockTable, mpt_table: MptTable, + u8_table: UXTable<8>, + u10_table: UXTable<10>, + u16_table: UXTable<16>, evm_circuit: EvmCircuitConfig<F>, state_circuit: StateCircuitConfig<F>, tx_circuit: TxCircuitConfig<F>, @@ -128,6 +132,9 @@ impl<F: Field> SubCircuitConfig<F> for SuperCircuitConfig<F> { let copy_table = CopyTable::construct(meta, q_copy_table); let exp_table = ExpTable::construct(meta); let keccak_table = KeccakTable::construct(meta); + let u8_table = UXTable::construct(meta); + let u10_table = UXTable::construct(meta); + let u16_table = UXTable::construct(meta); // Use a mock randomness instead of the randomness derived from the challange // (either from mock or real prover) to help debugging assignments. @@ -137,7 +144,6 @@ impl<F: Field> SubCircuitConfig<F> for SuperCircuitConfig<F> { let challenges = Challenges::mock( power_of_randomness[0].clone(), power_of_randomness[0].clone(), - power_of_randomness[0].clone(), ); let keccak_circuit = KeccakCircuitConfig::new( @@ -155,6 +161,8 @@ impl<F: Field> SubCircuitConfig<F> for SuperCircuitConfig<F> { max_calldata, block_table: block_table.clone(), tx_table: tx_table.clone(), + keccak_table: keccak_table.clone(), + challenges: challenges.clone(), }, ); let tx_circuit = TxCircuitConfig::new( @@ -189,6 +197,9 @@ impl<F: Field> SubCircuitConfig<F> for SuperCircuitConfig<F> { StateCircuitConfigArgs { rw_table, mpt_table, + u8_table, + u10_table, + u16_table, challenges: challenges.clone(), }, ); @@ -204,12 +215,17 @@ impl<F: Field> SubCircuitConfig<F> for SuperCircuitConfig<F> { copy_table, keccak_table, exp_table, + u8_table, + u16_table, }, ); Self { block_table, mpt_table, + u8_table, + u10_table, + u16_table, evm_circuit, state_circuit, copy_circuit, @@ -412,21 +428,18 @@ impl<F: Field> Circuit<F> for SuperCircuit<F> { let challenges = Challenges::mock( Value::known(block.randomness), Value::known(block.randomness), - Value::known(block.randomness), ); let rws = &self.state_circuit.rows; - config.block_table.load( - &mut layouter, - &block.context, - Value::known(block.randomness), - )?; + config.block_table.load(&mut layouter, &block.context)?; - config.mpt_table.load( - &mut layouter, - &MptUpdates::mock_from(rws), - Value::known(block.randomness), - )?; + config + .mpt_table + .load(&mut layouter, &MptUpdates::mock_from(rws))?; + + config.u8_table.load(&mut layouter)?; + config.u10_table.load(&mut layouter)?; + config.u16_table.load(&mut layouter)?; self.synthesize_sub(&config, &challenges, &mut layouter) } diff --git a/zkevm-circuits/src/super_circuit/test.rs b/zkevm-circuits/src/super_circuit/test.rs index 64961564d6..fa003f040b 100644 --- a/zkevm-circuits/src/super_circuit/test.rs +++ b/zkevm-circuits/src/super_circuit/test.rs @@ -20,7 +20,7 @@ fn super_circuit_degree() { SuperCircuit::configure_with_params(&mut cs, params); log::info!("super circuit degree: {}", cs.degree()); log::info!("super circuit minimum_rows: {}", cs.minimum_rows()); - assert!(cs.degree() <= 9); + assert!(cs.degree() <= 10); } fn test_super_circuit(block: GethData, circuits_params: FixedCParams, mock_randomness: Fr) { diff --git a/zkevm-circuits/src/table.rs b/zkevm-circuits/src/table.rs index 8ae4b2d90a..38ae3ab5f3 100644 --- a/zkevm-circuits/src/table.rs +++ b/zkevm-circuits/src/table.rs @@ -1,17 +1,19 @@ //! Table definitions used cross-circuits use crate::{ - copy_circuit::util::number_or_hash_to_field, + copy_circuit::util::number_or_hash_to_word, evm_circuit::util::rlc, impl_expr, - util::{build_tx_log_address, Challenges}, - witness::{ - Block, BlockContext, Bytecode, MptUpdateRow, MptUpdates, Rw, RwMap, RwRow, Transaction, + util::{ + build_tx_log_address, keccak, + word::{self, Word}, + Challenges, }, + witness::{Block, BlockContext, MptUpdateRow, MptUpdates, Rw, RwMap, RwRow, Transaction}, }; use bus_mapping::circuit_input_builder::{CopyDataType, CopyEvent, CopyStep}; use core::iter::once; -use eth_types::{Field, Keccak, ToLittleEndian, ToScalar, Word, U256}; +use eth_types::{Field, ToScalar, U256}; use gadgets::{ binary_number::{BinaryNumberChip, BinaryNumberConfig}, util::{split_u256, split_u256_limb64}, @@ -41,12 +43,15 @@ pub(crate) mod mpt_table; pub(crate) mod rw_table; /// tx table pub(crate) mod tx_table; +/// ux table +pub(crate) mod ux_table; pub(crate) use block_table::{BlockContextFieldTag, BlockTable}; pub(crate) use bytecode_table::{BytecodeFieldTag, BytecodeTable}; pub(crate) use copy_table::CopyTable; pub(crate) use exp_table::ExpTable; pub(crate) use keccak_table::KeccakTable; +pub(crate) use ux_table::UXTable; pub(crate) use mpt_table::{MPTProofType, MptTable}; pub(crate) use rw_table::RwTable; diff --git a/zkevm-circuits/src/table/block_table.rs b/zkevm-circuits/src/table/block_table.rs index 443e993673..e384a398dd 100644 --- a/zkevm-circuits/src/table/block_table.rs +++ b/zkevm-circuits/src/table/block_table.rs @@ -32,7 +32,7 @@ pub struct BlockTable { /// Index pub index: Column<Advice>, /// Value - pub value: Column<Advice>, + pub value: word::Word<Column<Advice>>, } impl BlockTable { @@ -41,7 +41,7 @@ impl BlockTable { Self { tag: meta.advice_column(), index: meta.advice_column(), - value: meta.advice_column_in(SecondPhase), + value: word::Word::new([meta.advice_column(), meta.advice_column()]), } } @@ -50,7 +50,6 @@ impl BlockTable { &self, layouter: &mut impl Layouter<F>, block: &BlockContext, - randomness: Value<F>, ) -> Result<(), Error> { layouter.assign_region( || "block table", @@ -67,7 +66,7 @@ impl BlockTable { offset += 1; let block_table_columns = <BlockTable as LookupTable<F>>::advice_columns(self); - for row in block.table_assignments(randomness) { + for row in block.table_assignments::<F>() { for (&column, value) in block_table_columns.iter().zip_eq(row) { region.assign_advice( || format!("block table row {}", offset), @@ -87,14 +86,20 @@ impl BlockTable { impl<F: Field> LookupTable<F> for BlockTable { fn columns(&self) -> Vec<Column<Any>> { - vec![self.tag.into(), self.index.into(), self.value.into()] + vec![ + self.tag.into(), + self.index.into(), + self.value.lo().into(), + self.value.hi().into(), + ] } fn annotations(&self) -> Vec<String> { vec![ String::from("tag"), String::from("index"), - String::from("value"), + String::from("value_lo"), + String::from("value_hi"), ] } } diff --git a/zkevm-circuits/src/table/bytecode_table.rs b/zkevm-circuits/src/table/bytecode_table.rs index 2b6a8a5d27..3599180297 100644 --- a/zkevm-circuits/src/table/bytecode_table.rs +++ b/zkevm-circuits/src/table/bytecode_table.rs @@ -1,4 +1,6 @@ use super::*; +use crate::util; +use bus_mapping::state_db::CodeDB; /// Tag to identify the field in a Bytecode Table row #[derive(Clone, Copy, Debug)] @@ -14,7 +16,7 @@ impl_expr!(BytecodeFieldTag); #[derive(Clone, Debug)] pub struct BytecodeTable { /// Code Hash - pub code_hash: Column<Advice>, + pub code_hash: word::Word<Column<Advice>>, /// Tag pub tag: Column<Advice>, /// Index @@ -29,7 +31,7 @@ impl BytecodeTable { /// Construct a new BytecodeTable pub fn construct<F: Field>(meta: &mut ConstraintSystem<F>) -> Self { let [tag, index, is_code, value] = array::from_fn(|_| meta.advice_column()); - let code_hash = meta.advice_column_in(SecondPhase); + let code_hash = word::Word::new([meta.advice_column(), meta.advice_column()]); Self { code_hash, tag, @@ -41,11 +43,10 @@ impl BytecodeTable { /// Assign the `BytecodeTable` from a list of bytecodes, followig the same /// table layout that the Bytecode Circuit uses. - pub fn load<'a, F: Field>( + pub fn load<F: Field>( &self, layouter: &mut impl Layouter<F>, - bytecodes: impl IntoIterator<Item = &'a Bytecode> + Clone, - challenges: &Challenges<Value<F>>, + bytecodes: CodeDB, ) -> Result<(), Error> { layouter.assign_region( || "bytecode table", @@ -63,14 +64,38 @@ impl BytecodeTable { let bytecode_table_columns = <BytecodeTable as LookupTable<F>>::advice_columns(self); - for bytecode in bytecodes.clone() { - for row in bytecode.table_assignments(challenges) { - for (&column, value) in bytecode_table_columns.iter().zip_eq(row) { + for bytecode in bytecodes.clone().into_iter() { + let rows = { + let code_hash = util::word::Word::from(bytecode.hash()); + std::iter::once([ + code_hash.lo(), + code_hash.hi(), + F::from(BytecodeFieldTag::Header as u64), + F::ZERO, + F::ZERO, + F::from(bytecode.codesize() as u64), + ]) + .chain(bytecode.code_vec().iter().enumerate().map( + |(index, &(byte, is_code))| { + [ + code_hash.lo(), + code_hash.hi(), + F::from(BytecodeFieldTag::Byte as u64), + F::from(index as u64), + F::from(is_code.into()), + F::from(byte.into()), + ] + }, + )) + .collect_vec() + }; + for row in rows.iter() { + for (&column, value) in bytecode_table_columns.iter().zip_eq(row.to_vec()) { region.assign_advice( || format!("bytecode table row {}", offset), column, offset, - || value, + || Value::known(value), )?; } offset += 1; @@ -85,7 +110,8 @@ impl BytecodeTable { impl<F: Field> LookupTable<F> for BytecodeTable { fn columns(&self) -> Vec<Column<Any>> { vec![ - self.code_hash.into(), + self.code_hash.lo().into(), + self.code_hash.hi().into(), self.tag.into(), self.index.into(), self.is_code.into(), @@ -95,7 +121,8 @@ impl<F: Field> LookupTable<F> for BytecodeTable { fn annotations(&self) -> Vec<String> { vec![ - String::from("code_hash"), + String::from("code_hash_lo"), + String::from("code_hash_hi"), String::from("tag"), String::from("index"), String::from("is_code"), diff --git a/zkevm-circuits/src/table/copy_table.rs b/zkevm-circuits/src/table/copy_table.rs index a51d48a146..392b916502 100644 --- a/zkevm-circuits/src/table/copy_table.rs +++ b/zkevm-circuits/src/table/copy_table.rs @@ -1,6 +1,6 @@ use super::*; -type CopyTableRow<F> = [(Value<F>, &'static str); 8]; +type CopyTableRow<F> = [(Value<F>, &'static str); 9]; type CopyCircuitRow<F> = [(Value<F>, &'static str); 5]; /// Copy Table, used to verify copies of byte chunks between Memory, Bytecode, @@ -12,9 +12,9 @@ pub struct CopyTable { /// The relevant ID for the read-write row, represented as a random linear /// combination. The ID may be one of the below: /// 1. Call ID/Caller ID for CopyDataType::Memory - /// 2. RLC encoding of bytecode hash for CopyDataType::Bytecode + /// 2. The hi/lo limbs of bytecode hash for CopyDataType::Bytecode /// 3. Transaction ID for CopyDataType::TxCalldata, CopyDataType::TxLog - pub id: Column<Advice>, + pub id: word::Word<Column<Advice>>, /// The source/destination address for this copy step. Can be memory /// address, byte index in the bytecode, tx call data, and tx log data. pub addr: Column<Advice>, @@ -45,7 +45,7 @@ impl CopyTable { pub fn construct<F: Field>(meta: &mut ConstraintSystem<F>, q_enable: Column<Fixed>) -> Self { Self { is_first: meta.advice_column(), - id: meta.advice_column_in(SecondPhase), + id: word::Word::new([meta.advice_column(), meta.advice_column()]), q_enable, tag: BinaryNumberChip::configure(meta, q_enable, None), addr: meta.advice_column(), @@ -110,9 +110,9 @@ impl CopyTable { // id let id = if is_read_step { - number_or_hash_to_field(©_event.src_id, challenges.evm_word()) + number_or_hash_to_word(©_event.src_id) } else { - number_or_hash_to_field(©_event.dst_id, challenges.evm_word()) + number_or_hash_to_word(©_event.dst_id) }; // tag binary bumber chip @@ -164,7 +164,8 @@ impl CopyTable { tag, [ (is_first, "is_first"), - (id, "id"), + (id.lo(), "id_lo"), + (id.hi(), "id_hi"), (addr, "addr"), ( Value::known(F::from(copy_event.src_addr_end)), @@ -259,7 +260,8 @@ impl<F: Field> LookupTable<F> for CopyTable { fn columns(&self) -> Vec<Column<Any>> { vec![ self.is_first.into(), - self.id.into(), + self.id.lo().into(), + self.id.hi().into(), self.addr.into(), self.src_addr_end.into(), self.bytes_left.into(), @@ -272,7 +274,8 @@ impl<F: Field> LookupTable<F> for CopyTable { fn annotations(&self) -> Vec<String> { vec![ String::from("is_first"), - String::from("id"), + String::from("id_lo"), + String::from("id_hi"), String::from("addr"), String::from("src_addr_end"), String::from("bytes_left"), @@ -285,13 +288,15 @@ impl<F: Field> LookupTable<F> for CopyTable { fn table_exprs(&self, meta: &mut VirtualCells<F>) -> Vec<Expression<F>> { vec![ meta.query_advice(self.is_first, Rotation::cur()), - meta.query_advice(self.id, Rotation::cur()), // src_id - self.tag.value(Rotation::cur())(meta), // src_tag - meta.query_advice(self.id, Rotation::next()), // dst_id - self.tag.value(Rotation::next())(meta), // dst_tag - meta.query_advice(self.addr, Rotation::cur()), // src_addr + meta.query_advice(self.id.lo(), Rotation::cur()), // src_id + meta.query_advice(self.id.hi(), Rotation::cur()), // src_id + self.tag.value(Rotation::cur())(meta), // src_tag + meta.query_advice(self.id.lo(), Rotation::next()), // dst_id + meta.query_advice(self.id.hi(), Rotation::next()), // dst_id + self.tag.value(Rotation::next())(meta), // dst_tag + meta.query_advice(self.addr, Rotation::cur()), // src_addr meta.query_advice(self.src_addr_end, Rotation::cur()), // src_addr_end - meta.query_advice(self.addr, Rotation::next()), // dst_addr + meta.query_advice(self.addr, Rotation::next()), // dst_addr meta.query_advice(self.bytes_left, Rotation::cur()), // length meta.query_advice(self.rlc_acc, Rotation::cur()), // rlc_acc meta.query_advice(self.rw_counter, Rotation::cur()), // rw_counter diff --git a/zkevm-circuits/src/table/keccak_table.rs b/zkevm-circuits/src/table/keccak_table.rs index 5eaff3f30d..7f36be98a1 100644 --- a/zkevm-circuits/src/table/keccak_table.rs +++ b/zkevm-circuits/src/table/keccak_table.rs @@ -9,8 +9,8 @@ pub struct KeccakTable { pub input_rlc: Column<Advice>, // RLC of input bytes /// Byte array input length pub input_len: Column<Advice>, - /// RLC of the hash result - pub output_rlc: Column<Advice>, // RLC of hash of input bytes + /// Output hash word + pub output: word::Word<Column<Advice>>, } impl<F: Field> LookupTable<F> for KeccakTable { @@ -19,7 +19,8 @@ impl<F: Field> LookupTable<F> for KeccakTable { self.is_enabled.into(), self.input_rlc.into(), self.input_len.into(), - self.output_rlc.into(), + self.output.lo().into(), + self.output.hi().into(), ] } @@ -28,7 +29,8 @@ impl<F: Field> LookupTable<F> for KeccakTable { String::from("is_enabled"), String::from("input_rlc"), String::from("input_len"), - String::from("output_rlc"), + String::from("output_lo"), + String::from("output_hi"), ] } } @@ -40,7 +42,7 @@ impl KeccakTable { is_enabled: meta.advice_column(), input_rlc: meta.advice_column_in(SecondPhase), input_len: meta.advice_column(), - output_rlc: meta.advice_column_in(SecondPhase), + output: word::Word::new([meta.advice_column(), meta.advice_column()]), } } @@ -48,26 +50,19 @@ impl KeccakTable { pub fn assignments<F: Field>( input: &[u8], challenges: &Challenges<Value<F>>, - ) -> Vec<[Value<F>; 4]> { + ) -> Vec<[Value<F>; 5]> { let input_rlc = challenges .keccak_input() .map(|challenge| rlc::value(input.iter().rev(), challenge)); let input_len = F::from(input.len() as u64); - let mut keccak = Keccak::default(); - keccak.update(input); - let output = keccak.digest(); - let output_rlc = challenges.evm_word().map(|challenge| { - rlc::value( - &Word::from_big_endian(output.as_slice()).to_le_bytes(), - challenge, - ) - }); + let output = word::Word::from(keccak(input)); vec![[ Value::known(F::ONE), input_rlc, Value::known(input_len), - output_rlc, + Value::known(output.lo()), + Value::known(output.hi()), ]] } @@ -76,7 +71,7 @@ impl KeccakTable { &self, region: &mut Region<F>, offset: usize, - values: [Value<F>; 4], + values: [Value<F>; 5], ) -> Result<(), Error> { for (&column, value) in <KeccakTable as LookupTable<F>>::advice_columns(self) .iter() @@ -135,12 +130,13 @@ impl KeccakTable { &self, value_rlc: Column<Advice>, length: Column<Advice>, - code_hash: Column<Advice>, + code_hash: Word<Column<Advice>>, ) -> Vec<(Column<Advice>, Column<Advice>)> { vec![ (value_rlc, self.input_rlc), (length, self.input_len), - (code_hash, self.output_rlc), + (code_hash.lo(), self.output.lo()), + (code_hash.hi(), self.output.hi()), ] } } diff --git a/zkevm-circuits/src/table/mpt_table.rs b/zkevm-circuits/src/table/mpt_table.rs index c62e2968a6..118cbbbb8a 100644 --- a/zkevm-circuits/src/table/mpt_table.rs +++ b/zkevm-circuits/src/table/mpt_table.rs @@ -1,52 +1,99 @@ use super::*; +use crate::{ + circuit, + circuit_tools::{ + cached_region::CachedRegion, cell_manager::CellType, constraint_builder::ConstraintBuilder, + }, +}; +use serde::{Deserialize, Serialize}; /// The types of proofs in the MPT table -#[derive(Clone, Copy, Debug)] +#[derive(Clone, Copy, Debug, Serialize, Deserialize)] pub enum MPTProofType { + /// Disabled + Disabled, /// Nonce updated - NonceMod = AccountFieldTag::Nonce as isize, + NonceChanged = AccountFieldTag::Nonce as isize, /// Balance updated - BalanceMod = AccountFieldTag::Balance as isize, - /// Code hash exists - CodeHashMod = AccountFieldTag::CodeHash as isize, + BalanceChanged = AccountFieldTag::Balance as isize, + /// Code hash updated + CodeHashChanged = AccountFieldTag::CodeHash as isize, + /// Account destroyed + AccountDestructed, /// Account does not exist - NonExistingAccountProof = AccountFieldTag::NonExisting as isize, + AccountDoesNotExist, /// Storage updated - StorageMod, + StorageChanged, /// Storage does not exist - NonExistingStorageProof, + StorageDoesNotExist, } impl_expr!(MPTProofType); impl From<AccountFieldTag> for MPTProofType { fn from(tag: AccountFieldTag) -> Self { match tag { - AccountFieldTag::Nonce => Self::NonceMod, - AccountFieldTag::Balance => Self::BalanceMod, - AccountFieldTag::CodeHash => Self::CodeHashMod, - AccountFieldTag::NonExisting => Self::NonExistingAccountProof, + AccountFieldTag::Nonce => Self::NonceChanged, + AccountFieldTag::Balance => Self::BalanceChanged, + AccountFieldTag::CodeHash => Self::CodeHashChanged, + AccountFieldTag::NonExisting => Self::AccountDoesNotExist, } } } /// The MptTable shared between MPT Circuit and State Circuit #[derive(Clone, Copy, Debug)] -pub struct MptTable([Column<Advice>; 7]); +pub struct MptTable { + /// Account address + pub address: Column<Advice>, + /// Storage address + pub storage_key: word::Word<Column<Advice>>, + /// Proof type + pub proof_type: Column<Advice>, + /// New MPT root + pub new_root: word::Word<Column<Advice>>, + /// Previous MPT root + pub old_root: word::Word<Column<Advice>>, + /// New value + pub new_value: word::Word<Column<Advice>>, + /// Old value + pub old_value: word::Word<Column<Advice>>, +} impl<F: Field> LookupTable<F> for MptTable { fn columns(&self) -> Vec<Column<Any>> { - self.0.iter().map(|&col| col.into()).collect() + vec![ + self.address, + self.storage_key.lo(), + self.storage_key.hi(), + self.proof_type, + self.new_root.lo(), + self.new_root.hi(), + self.old_root.lo(), + self.old_root.hi(), + self.new_value.lo(), + self.new_value.hi(), + self.old_value.lo(), + self.old_value.hi(), + ] + .into_iter() + .map(|col| col.into()) + .collect::<Vec<Column<Any>>>() } fn annotations(&self) -> Vec<String> { vec![ String::from("address"), - String::from("storage_key"), + String::from("storage_key_lo"), + String::from("storage_key_hi"), String::from("proof_type"), - String::from("new_root"), - String::from("old_root"), - String::from("new_value"), - String::from("old_value"), + String::from("new_root_lo"), + String::from("new_root_hi"), + String::from("old_root_lo"), + String::from("old_root_hi"), + String::from("new_value_lo"), + String::from("new_value_hi"), + String::from("old_value_lo"), + String::from("old_value_hi"), ] } } @@ -54,15 +101,39 @@ impl<F: Field> LookupTable<F> for MptTable { impl MptTable { /// Construct a new MptTable pub(crate) fn construct<F: Field>(meta: &mut ConstraintSystem<F>) -> Self { - Self([ - meta.advice_column(), // Address - meta.advice_column_in(SecondPhase), // Storage key - meta.advice_column(), // Proof type - meta.advice_column_in(SecondPhase), // New root - meta.advice_column_in(SecondPhase), // Old root - meta.advice_column_in(SecondPhase), // New value - meta.advice_column_in(SecondPhase), // Old value - ]) + Self { + address: meta.advice_column(), + storage_key: word::Word::new([meta.advice_column(), meta.advice_column()]), + proof_type: meta.advice_column(), + new_root: word::Word::new([meta.advice_column(), meta.advice_column()]), + old_root: word::Word::new([meta.advice_column(), meta.advice_column()]), + new_value: word::Word::new([meta.advice_column(), meta.advice_column()]), + old_value: word::Word::new([meta.advice_column(), meta.advice_column()]), + } + } + + #[allow(clippy::too_many_arguments)] + pub(crate) fn constrain<F: Field, C: CellType>( + &self, + meta: &mut VirtualCells<'_, F>, + cb: &mut ConstraintBuilder<F, C>, + address: Expression<F>, + proof_type: Expression<F>, + storage_key: word::Word<Expression<F>>, + new_root: word::Word<Expression<F>>, + old_root: word::Word<Expression<F>>, + new_value: word::Word<Expression<F>>, + old_value: word::Word<Expression<F>>, + ) { + circuit!([meta, cb], { + require!(a!(self.address) => address); + require!([a!(self.storage_key.lo()), a!(self.storage_key.hi())] => storage_key); + require!(a!(self.proof_type) => proof_type); + require!([a!(self.new_root.lo()), a!(self.new_root.hi())] => new_root); + require!([a!(self.old_root.lo()), a!(self.old_root.hi())] => old_root); + require!([a!(self.new_value.lo()), a!(self.new_value.hi())] => new_value); + require!([a!(self.old_value.lo()), a!(self.old_value.hi())] => old_value); + }) } pub(crate) fn assign<F: Field>( @@ -71,8 +142,26 @@ impl MptTable { offset: usize, row: &MptUpdateRow<Value<F>>, ) -> Result<(), Error> { - for (column, value) in self.0.iter().zip_eq(row.values()) { - region.assign_advice(|| "assign mpt table row value", *column, offset, || *value)?; + for (column, value) in <MptTable as LookupTable<F>>::advice_columns(self) + .iter() + .zip_eq(row.values()) + { + region.assign_advice(|| "assign mpt table row value", *column, offset, || value)?; + } + Ok(()) + } + + pub(crate) fn assign_cached<F: Field>( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + row: &MptUpdateRow<Value<F>>, + ) -> Result<(), Error> { + for (column, value) in <MptTable as LookupTable<F>>::advice_columns(self) + .iter() + .zip_eq(row.values()) + { + region.assign_advice(|| "assign mpt table row value", *column, offset, || value)?; } Ok(()) } @@ -81,11 +170,10 @@ impl MptTable { &self, layouter: &mut impl Layouter<F>, updates: &MptUpdates, - randomness: Value<F>, ) -> Result<(), Error> { layouter.assign_region( || "mpt table", - |mut region| self.load_with_region(&mut region, updates, randomness), + |mut region| self.load_with_region(&mut region, updates), ) } @@ -93,9 +181,8 @@ impl MptTable { &self, region: &mut Region<'_, F>, updates: &MptUpdates, - randomness: Value<F>, ) -> Result<(), Error> { - for (offset, row) in updates.table_assignments(randomness).iter().enumerate() { + for (offset, row) in updates.table_assignments().iter().enumerate() { self.assign(region, offset, row)?; } Ok(()) diff --git a/zkevm-circuits/src/table/rw_table.rs b/zkevm-circuits/src/table/rw_table.rs index ca56b1f89b..6e8ffc4257 100644 --- a/zkevm-circuits/src/table/rw_table.rs +++ b/zkevm-circuits/src/table/rw_table.rs @@ -17,15 +17,13 @@ pub struct RwTable { /// Key3 (FieldTag) pub field_tag: Column<Advice>, /// Key3 (StorageKey) - pub storage_key: Column<Advice>, + pub storage_key: word::Word<Column<Advice>>, /// Value - pub value: Column<Advice>, + pub value: word::Word<Column<Advice>>, /// Value Previous - pub value_prev: Column<Advice>, - /// Aux1 - pub aux1: Column<Advice>, - /// Aux2 (Committed Value) - pub aux2: Column<Advice>, + pub value_prev: word::Word<Column<Advice>>, + /// InitVal (Committed Value) + pub init_val: word::Word<Column<Advice>>, } impl<F: Field> LookupTable<F> for RwTable { @@ -37,11 +35,14 @@ impl<F: Field> LookupTable<F> for RwTable { self.id.into(), self.address.into(), self.field_tag.into(), - self.storage_key.into(), - self.value.into(), - self.value_prev.into(), - self.aux1.into(), - self.aux2.into(), + self.storage_key.lo().into(), + self.storage_key.hi().into(), + self.value.lo().into(), + self.value.hi().into(), + self.value_prev.lo().into(), + self.value_prev.hi().into(), + self.init_val.lo().into(), + self.init_val.hi().into(), ] } @@ -53,11 +54,14 @@ impl<F: Field> LookupTable<F> for RwTable { String::from("id"), String::from("address"), String::from("field_tag"), - String::from("storage_key"), - String::from("value"), - String::from("value_prev"), - String::from("aux1"), - String::from("aux2"), + String::from("storage_key_lo"), + String::from("storage_key_hi"), + String::from("value_lo"), + String::from("value_hi"), + String::from("value_prev_lo"), + String::from("value_prev_hi"), + String::from("init_val_lo"), + String::from("init_val_hi"), ] } } @@ -71,13 +75,10 @@ impl RwTable { id: meta.advice_column(), address: meta.advice_column(), field_tag: meta.advice_column(), - storage_key: meta.advice_column_in(SecondPhase), - value: meta.advice_column_in(SecondPhase), - value_prev: meta.advice_column_in(SecondPhase), - // It seems that aux1 for the moment is not using randomness - // TODO check in a future review - aux1: meta.advice_column_in(SecondPhase), - aux2: meta.advice_column_in(SecondPhase), + storage_key: word::Word::new([meta.advice_column(), meta.advice_column()]), + value: word::Word::new([meta.advice_column(), meta.advice_column()]), + value_prev: word::Word::new([meta.advice_column(), meta.advice_column()]), + init_val: word::Word::new([meta.advice_column(), meta.advice_column()]), } } fn assign<F: Field>( @@ -93,14 +94,18 @@ impl RwTable { (self.id, row.id), (self.address, row.address), (self.field_tag, row.field_tag), + ] { + region.assign_advice(|| "assign rw row on rw table", column, offset, || value)?; + } + for (column, value) in [ (self.storage_key, row.storage_key), (self.value, row.value), (self.value_prev, row.value_prev), - (self.aux1, row.aux1), - (self.aux2, row.aux2), + (self.init_val, row.init_val), ] { - region.assign_advice(|| "assign rw row on rw table", column, offset, || value)?; + value.assign_advice(region, || "assign rw row on rw table", column, offset)?; } + Ok(()) } @@ -111,11 +116,10 @@ impl RwTable { layouter: &mut impl Layouter<F>, rws: &[Rw], n_rows: usize, - challenges: Value<F>, ) -> Result<(), Error> { layouter.assign_region( || "rw table", - |mut region| self.load_with_region(&mut region, rws, n_rows, challenges), + |mut region| self.load_with_region(&mut region, rws, n_rows), ) } @@ -124,11 +128,10 @@ impl RwTable { region: &mut Region<'_, F>, rws: &[Rw], n_rows: usize, - challenges: Value<F>, ) -> Result<(), Error> { let (rows, _) = RwMap::table_assignments_prepad(rws, n_rows); for (offset, row) in rows.iter().enumerate() { - self.assign(region, offset, &row.table_assignment(challenges))?; + self.assign(region, offset, &row.table_assignment())?; } Ok(()) } diff --git a/zkevm-circuits/src/table/tx_table.rs b/zkevm-circuits/src/table/tx_table.rs index 017007a614..dfff34204f 100644 --- a/zkevm-circuits/src/table/tx_table.rs +++ b/zkevm-circuits/src/table/tx_table.rs @@ -69,7 +69,7 @@ pub struct TxTable { /// Index for Tag = CallData pub index: Column<Advice>, /// Value - pub value: Column<Advice>, + pub value: word::Word<Column<Advice>>, } impl TxTable { @@ -79,7 +79,7 @@ impl TxTable { tx_id: meta.advice_column(), tag: meta.fixed_column(), index: meta.advice_column(), - value: meta.advice_column_in(SecondPhase), + value: word::Word::new([meta.advice_column(), meta.advice_column()]), } } @@ -91,7 +91,6 @@ impl TxTable { txs: &[Transaction], max_txs: usize, max_calldata: usize, - challenges: &Challenges<Value<F>>, ) -> Result<(), Error> { assert!( txs.len() <= max_txs, @@ -112,7 +111,7 @@ impl TxTable { offset: usize, advice_columns: &[Column<Advice>], tag: &Column<Fixed>, - row: &[Value<F>; 4], + row: &[Value<F>; 5], msg: &str, ) -> Result<(), Error> { for (index, column) in advice_columns.iter().enumerate() { @@ -136,13 +135,13 @@ impl TxTable { || "tx table", |mut region| { let mut offset = 0; - let advice_columns = [self.tx_id, self.index, self.value]; + let advice_columns = [self.tx_id, self.index, self.value.lo(), self.value.hi()]; assign_row( &mut region, offset, &advice_columns, &self.tag, - &[(); 4].map(|_| Value::known(F::ZERO)), + &[(); 5].map(|_| Value::known(F::ZERO)), "all-zero", )?; offset += 1; @@ -152,16 +151,64 @@ impl TxTable { // region that has a size parametrized by max_calldata with all // the tx calldata. This is required to achieve a constant fixed column tag // regardless of the number of input txs or the calldata size of each tx. - let mut calldata_assignments: Vec<[Value<F>; 4]> = Vec::new(); + let mut calldata_assignments: Vec<[Value<F>; 5]> = Vec::new(); // Assign Tx data (all tx fields except for calldata) let padding_txs: Vec<_> = (txs.len()..max_txs) - .map(|i| Transaction { - id: i + 1, - ..Default::default() - }) + .map(|i| Transaction::padding_tx(i + 1)) .collect(); for tx in txs.iter().chain(padding_txs.iter()) { - let [tx_data, tx_calldata] = tx.table_assignments(*challenges); + let tx_id = Value::known(F::from(tx.id)); + let tx_data = vec![ + ( + TxContextFieldTag::Nonce, + word::Word::from(tx.nonce.as_u64()), + ), + (TxContextFieldTag::Gas, word::Word::from(tx.gas())), + (TxContextFieldTag::GasPrice, word::Word::from(tx.gas_price)), + (TxContextFieldTag::CallerAddress, word::Word::from(tx.from)), + ( + TxContextFieldTag::CalleeAddress, + word::Word::from(tx.to_or_contract_addr()), + ), + ( + TxContextFieldTag::IsCreate, + word::Word::from(tx.is_create()), + ), + (TxContextFieldTag::Value, word::Word::from(tx.value)), + ( + TxContextFieldTag::CallDataLength, + word::Word::from(tx.call_data.len() as u64), + ), + ( + TxContextFieldTag::CallDataGasCost, + word::Word::from(tx.call_data_gas_cost()), + ), + ] + .iter() + .map(|&(tag, word)| { + [ + tx_id, + Value::known(F::from(tag as u64)), + Value::known(F::ZERO), + Value::known(word.lo()), + Value::known(word.hi()), + ] + }) + .collect_vec(); + let tx_calldata = tx + .call_data + .iter() + .enumerate() + .map(|(idx, byte)| { + [ + tx_id, + Value::known(F::from(TxContextFieldTag::CallData as u64)), + Value::known(F::from(idx as u64)), + Value::known(F::from(*byte as u64)), + Value::known(F::ZERO), + ] + }) + .collect_vec(); for row in tx_data { assign_row(&mut region, offset, &advice_columns, &self.tag, &row, "")?; offset += 1; @@ -175,6 +222,7 @@ impl TxTable { Value::known(F::from(TxContextFieldTag::CallData as u64)), Value::known(F::ZERO), Value::known(F::ZERO), + Value::known(F::ZERO), ] }); for row in calldata_assignments.into_iter().chain(padding_calldata) { @@ -193,7 +241,8 @@ impl<F: Field> LookupTable<F> for TxTable { self.tx_id.into(), self.tag.into(), self.index.into(), - self.value.into(), + self.value.lo().into(), + self.value.hi().into(), ] } @@ -202,7 +251,8 @@ impl<F: Field> LookupTable<F> for TxTable { String::from("tx_id"), String::from("tag"), String::from("index"), - String::from("value"), + String::from("value_lo"), + String::from("value_hi"), ] } @@ -211,7 +261,8 @@ impl<F: Field> LookupTable<F> for TxTable { meta.query_advice(self.tx_id, Rotation::cur()), meta.query_fixed(self.tag, Rotation::cur()), meta.query_advice(self.index, Rotation::cur()), - meta.query_advice(self.value, Rotation::cur()), + meta.query_advice(self.value.lo(), Rotation::cur()), + meta.query_advice(self.value.hi(), Rotation::cur()), ] } } diff --git a/zkevm-circuits/src/table/ux_table.rs b/zkevm-circuits/src/table/ux_table.rs new file mode 100644 index 0000000000..11281f3cc1 --- /dev/null +++ b/zkevm-circuits/src/table/ux_table.rs @@ -0,0 +1,49 @@ +use super::*; + +/// Lookup table for max n bits range check +#[derive(Clone, Copy, Debug)] +pub struct UXTable<const N_BITS: usize> { + col: Column<Fixed>, +} + +impl<const N_BITS: usize> UXTable<N_BITS> { + /// Construct the UXTable. + pub fn construct<F: Field>(meta: &mut ConstraintSystem<F>) -> Self { + Self { + col: meta.fixed_column(), + } + } + + /// Load the `UXTable` for range check + pub fn load<F: Field>(&self, layouter: &mut impl Layouter<F>) -> Result<(), Error> { + layouter.assign_region( + || format!("assign u{} fixed column", 8), + |mut region| { + for i in 0..(1 << N_BITS) { + region.assign_fixed( + || format!("assign {} in u{} fixed column", i, N_BITS), + self.col, + i, + || Value::known(F::from(i as u64)), + )?; + } + Ok(()) + }, + )?; + Ok(()) + } +} + +impl<F: Field, const N_BITS: usize> LookupTable<F> for UXTable<N_BITS> { + fn columns(&self) -> Vec<Column<Any>> { + vec![self.col.into()] + } + + fn annotations(&self) -> Vec<String> { + vec![format!("u{}_col", N_BITS)] + } + + fn table_exprs(&self, meta: &mut VirtualCells<F>) -> Vec<Expression<F>> { + vec![meta.query_fixed(self.col, Rotation::cur())] + } +} diff --git a/zkevm-circuits/src/test_util.rs b/zkevm-circuits/src/test_util.rs index 58d88d4971..0cffa92f9a 100644 --- a/zkevm-circuits/src/test_util.rs +++ b/zkevm-circuits/src/test_util.rs @@ -207,7 +207,7 @@ impl<const NACC: usize, const NTX: usize> CircuitTestBuilder<NACC, NTX> { let (active_gate_rows, active_lookup_rows) = EvmCircuit::<Fr>::get_active_rows(&block); - let circuit = EvmCircuitCached::get_test_cicuit_from_block(block.clone()); + let circuit = EvmCircuitCached::get_test_circuit_from_block(block.clone()); let prover = MockProver::<Fr>::run(k, &circuit, vec![]).unwrap(); self.evm_checks.as_ref()(prover, &active_gate_rows, &active_lookup_rows) diff --git a/zkevm-circuits/src/tx_circuit.rs b/zkevm-circuits/src/tx_circuit.rs index ffd60993aa..162d00c5c2 100644 --- a/zkevm-circuits/src/tx_circuit.rs +++ b/zkevm-circuits/src/tx_circuit.rs @@ -6,19 +6,19 @@ pub mod sign_verify; -#[cfg(any(feature = "test", test, feature = "test-circuits"))] +#[cfg(any(test, feature = "test-circuits"))] mod dev; -#[cfg(any(feature = "test", test))] +#[cfg(test)] mod test; -#[cfg(any(feature = "test", test, feature = "test-circuits"))] +#[cfg(feature = "test-circuits")] pub use dev::TxCircuit as TestTxCircuit; use crate::{ table::{KeccakTable, TxFieldTag, TxTable}, - util::{random_linear_combine_word as rlc, Challenges, SubCircuit, SubCircuitConfig}, + util::{word::Word, Challenges, SubCircuit, SubCircuitConfig}, witness, }; -use eth_types::{geth_types::Transaction, sign_types::SignData, Field, ToLittleEndian, ToScalar}; +use eth_types::{geth_types::Transaction, sign_types::SignData, Field}; use halo2_proofs::{ circuit::{AssignedCell, Layouter, Region, Value}, plonk::{Advice, Column, ConstraintSystem, Error, Expression, Fixed}, @@ -26,7 +26,7 @@ use halo2_proofs::{ use itertools::Itertools; use log::error; use sign_verify::{AssignedSignatureVerify, SignVerifyChip, SignVerifyConfig}; -use std::marker::PhantomData; +use std::{marker::PhantomData, ops::Deref}; /// Number of static fields per tx: [nonce, gas, gas_price, /// caller_address, callee_address, is_create, value, call_data_length, @@ -41,11 +41,9 @@ pub struct TxCircuitConfig<F: Field> { tx_id: Column<Advice>, tag: Column<Fixed>, index: Column<Advice>, - value: Column<Advice>, + value: Word<Column<Advice>>, sign_verify: SignVerifyConfig, _marker: PhantomData<F>, - // External tables - keccak_table: KeccakTable, } /// Circuit configuration arguments @@ -74,9 +72,10 @@ impl<F: Field> SubCircuitConfig<F> for TxCircuitConfig<F> { let tag = tx_table.tag; let index = tx_table.index; let value = tx_table.value; - meta.enable_equality(value); + meta.enable_equality(value.lo()); + meta.enable_equality(value.hi()); - let sign_verify = SignVerifyConfig::new(meta, keccak_table.clone(), challenges); + let sign_verify = SignVerifyConfig::new(meta, keccak_table, challenges); Self { tx_id, @@ -84,7 +83,6 @@ impl<F: Field> SubCircuitConfig<F> for TxCircuitConfig<F> { index, value, sign_verify, - keccak_table, _marker: PhantomData, } } @@ -96,7 +94,7 @@ impl<F: Field> TxCircuitConfig<F> { self.sign_verify.load_range(layouter) } - /// Assigns a tx circuit row and returns the assigned cell of the value in + /// Assigns a tx circuit row and returns the assigned cell of the value in `word` in /// the row. fn assign_row( &self, @@ -105,8 +103,8 @@ impl<F: Field> TxCircuitConfig<F> { tx_id: usize, tag: TxFieldTag, index: usize, - value: Value<F>, - ) -> Result<AssignedCell<F, F>, Error> { + value: Word<Value<F>>, + ) -> Result<Word<AssignedCell<F, F>>, Error> { region.assign_advice( || "tx_id", self.tx_id, @@ -125,7 +123,7 @@ impl<F: Field> TxCircuitConfig<F> { offset, || Value::known(F::from(index as u64)), )?; - region.assign_advice(|| "value", self.value, offset, || value) + value.assign_advice(region, || "value", self.value, offset) } /// Get number of rows required. @@ -174,7 +172,6 @@ impl<F: Field> TxCircuit<F> { fn assign_tx_table( &self, config: &TxCircuitConfig<F>, - challenges: &Challenges<Value<F>>, layouter: &mut impl Layouter<F>, assigned_sig_verifs: Vec<AssignedSignatureVerify<F>>, ) -> Result<(), Error> { @@ -189,10 +186,10 @@ impl<F: Field> TxCircuit<F> { 0, TxFieldTag::Null, 0, - Value::known(F::ZERO), + Word::default().into_value(), )?; offset += 1; - // Assign al Tx fields except for call data + // Assign all Tx fields except for call data let tx_default = Transaction::default(); for (i, assigned_sig_verif) in assigned_sig_verifs.iter().enumerate() { let tx = if i < self.txs.len() { @@ -202,46 +199,33 @@ impl<F: Field> TxCircuit<F> { }; for (tag, value) in [ - (TxFieldTag::Nonce, Value::known(F::from(tx.nonce.as_u64()))), - ( - TxFieldTag::Gas, - Value::known(F::from(tx.gas_limit.as_u64())), - ), ( - TxFieldTag::GasPrice, - challenges - .evm_word() - .map(|challenge| rlc(tx.gas_price.to_le_bytes(), challenge)), - ), - ( - TxFieldTag::CallerAddress, - Value::known(tx.from.to_scalar().expect("tx.from too big")), + TxFieldTag::Nonce, + Word::from(tx.nonce.as_u64()).into_value(), ), + (TxFieldTag::Gas, Word::from(tx.gas()).into_value()), + (TxFieldTag::GasPrice, Word::from(tx.gas_price).into_value()), + (TxFieldTag::CallerAddress, Word::from(tx.from).into_value()), ( TxFieldTag::CalleeAddress, - Value::known(tx.to_or_zero().to_scalar().expect("tx.to too big")), + Word::from(tx.to_or_zero()).into_value(), ), ( TxFieldTag::IsCreate, - Value::known(F::from(tx.is_create() as u64)), - ), - ( - TxFieldTag::Value, - challenges - .evm_word() - .map(|challenge| rlc(tx.value.to_le_bytes(), challenge)), + Word::from(tx.is_create() as u64).into_value(), ), + (TxFieldTag::Value, Word::from(tx.value).into_value()), ( TxFieldTag::CallDataLength, - Value::known(F::from(tx.call_data.0.len() as u64)), + Word::from(tx.call_data.0.len() as u64).into_value(), ), ( TxFieldTag::CallDataGasCost, - Value::known(F::from(tx.call_data_gas_cost())), + Word::from(tx.call_data_gas_cost()).into_value(), ), ( TxFieldTag::TxSignHash, - assigned_sig_verif.msg_hash_rlc.value().copied(), + assigned_sig_verif.msg_hash.map(|x| x.value().copied()), ), ] { let assigned_cell = @@ -251,14 +235,26 @@ impl<F: Field> TxCircuit<F> { // Ref. spec 0. Copy constraints using fixed offsets between the tx rows and // the SignVerifyChip match tag { - TxFieldTag::CallerAddress => region.constrain_equal( - assigned_cell.cell(), - assigned_sig_verif.address.cell(), - )?, - TxFieldTag::TxSignHash => region.constrain_equal( - assigned_cell.cell(), - assigned_sig_verif.msg_hash_rlc.cell(), - )?, + TxFieldTag::CallerAddress => { + region.constrain_equal( + assigned_cell.lo().cell(), + assigned_sig_verif.address.lo().cell(), + )?; + region.constrain_equal( + assigned_cell.hi().cell(), + assigned_sig_verif.address.hi().cell(), + )? + } + TxFieldTag::TxSignHash => { + region.constrain_equal( + assigned_cell.lo().cell(), + assigned_sig_verif.msg_hash.lo().cell(), + )?; + region.constrain_equal( + assigned_cell.hi().cell(), + assigned_sig_verif.msg_hash.hi().cell(), + )? + } _ => (), } } @@ -275,7 +271,7 @@ impl<F: Field> TxCircuit<F> { i + 1, // tx_id TxFieldTag::CallData, index, - Value::known(F::from(*byte as u64)), + Word::from(*byte as u64).into_value(), )?; offset += 1; calldata_count += 1; @@ -288,7 +284,7 @@ impl<F: Field> TxCircuit<F> { 0, // tx_id TxFieldTag::CallData, 0, - Value::known(F::ZERO), + Word::default().into_value(), )?; offset += 1; } @@ -312,12 +308,7 @@ impl<F: Field> SubCircuit<F> for TxCircuit<F> { block.circuits_params.max_txs, block.circuits_params.max_calldata, block.context.chain_id.as_u64(), - block - .eth_block - .transactions - .iter() - .map(|tx| tx.into()) - .collect(), + block.txs.iter().map(|tx| tx.deref().clone()).collect_vec(), ) } @@ -358,7 +349,7 @@ impl<F: Field> SubCircuit<F> for TxCircuit<F> { let assigned_sig_verifs = self.sign_verify .assign(&config.sign_verify, layouter, &sign_datas, challenges)?; - self.assign_tx_table(config, challenges, layouter, assigned_sig_verifs)?; + self.assign_tx_table(config, layouter, assigned_sig_verifs)?; Ok(()) } diff --git a/zkevm-circuits/src/tx_circuit/dev.rs b/zkevm-circuits/src/tx_circuit/dev.rs index 38f210ad53..fa4f4e3288 100644 --- a/zkevm-circuits/src/tx_circuit/dev.rs +++ b/zkevm-circuits/src/tx_circuit/dev.rs @@ -14,7 +14,7 @@ use halo2_proofs::{ use log::error; impl<F: Field> Circuit<F> for TxCircuit<F> { - type Config = (TxCircuitConfig<F>, Challenges); + type Config = (TxCircuitConfig<F>, Challenges, KeccakTable); type FloorPlanner = SimpleFloorPlanner; type Params = (); @@ -33,23 +33,23 @@ impl<F: Field> Circuit<F> for TxCircuit<F> { meta, TxCircuitConfigArgs { tx_table, - keccak_table, + keccak_table: keccak_table.clone(), challenges, }, ) }; - (config, challenges) + (config, challenges, keccak_table) } fn synthesize( &self, - (config, challenges): Self::Config, + (config, challenges, keccak_table): Self::Config, mut layouter: impl Layouter<F>, ) -> Result<(), Error> { let challenges = challenges.values(&mut layouter); - config.keccak_table.dev_load( + keccak_table.dev_load( &mut layouter, &keccak_inputs_tx_circuit(&self.txs[..], self.chain_id).map_err(|e| { error!("keccak_inputs_tx_circuit error: {:?}", e); diff --git a/zkevm-circuits/src/tx_circuit/sign_verify.rs b/zkevm-circuits/src/tx_circuit/sign_verify.rs index 0683ee998f..2e9be76297 100644 --- a/zkevm-circuits/src/tx_circuit/sign_verify.rs +++ b/zkevm-circuits/src/tx_circuit/sign_verify.rs @@ -5,9 +5,12 @@ // - *_le: Little-Endian bytes use crate::{ - evm_circuit::util::{not, rlc}, + evm_circuit::{ + param::N_BYTES_ACCOUNT_ADDRESS, + util::{from_bytes, not, rlc}, + }, table::KeccakTable, - util::{Challenges, Expr}, + util::{word::Word, Challenges, Expr}, }; use ecc::{maingate, EccConfig, GeneralEccChip}; use ecdsa::ecdsa::{AssignedEcdsaSig, AssignedPublicKey, EcdsaChip}; @@ -28,7 +31,7 @@ use halo2_proofs::{ plonk::{Advice, Column, ConstraintSystem, Error, Expression, SecondPhase, Selector}, poly::Rotation, }; -use integer::{AssignedInteger, IntegerChip, IntegerConfig, IntegerInstructions, Range}; +use integer::{AssignedInteger, IntegerChip, IntegerInstructions, Range}; use rand::SeedableRng; use rand_chacha::ChaCha20Rng; @@ -59,7 +62,7 @@ impl<F: Field> SignVerifyChip<F> { /// Return a new SignVerifyChip pub fn new(max_verif: usize) -> Self { // TODO: Investigate if it is safe to use a random point as aux generator that - // is choosen by the prover. If this is unsafe, we will need to update the + // is chosen by the prover. If this is unsafe, we will need to update the // EccChip to calculate an aux generator using the challange API. // https://github.com/privacy-scaling-explorations/halo2wrong/issues/53 let mut rng = ChaCha20Rng::seed_from_u64(0); @@ -81,7 +84,7 @@ impl<F: Field> SignVerifyChip<F> { // the tx circuit with max_txs=1. For example: // `RUST_LOG=debug RUST_BACKTRACE=1 cargo test tx_circuit_1tx_1max_tx --release // --all-features -- --nocapture` - // The value rows_range_chip_table has been optained by patching the halo2 + // The value rows_range_chip_table has been obtained by patching the halo2 // library to report the number of rows used in the range chip table // region. TODO: Figure out a way to get these numbers automatically. let rows_range_chip_table = 295188; @@ -118,12 +121,11 @@ pub(crate) struct SignVerifyConfig { main_gate_config: MainGateConfig, range_config: RangeConfig, // RLC - q_rlc_evm_word: Selector, q_rlc_keccak_input: Selector, rlc: Column<Advice>, // Keccak q_keccak: Selector, - keccak_table: KeccakTable, + _keccak_table: KeccakTable, } impl SignVerifyConfig { @@ -144,19 +146,10 @@ impl SignVerifyConfig { ); // RLC - let q_rlc_evm_word = meta.selector(); let q_rlc_keccak_input = meta.selector(); let rlc = meta.advice_column_in(SecondPhase); meta.enable_equality(rlc); - Self::configure_rlc( - meta, - "evm_word_rlc", - main_gate_config.clone(), - q_rlc_evm_word, - rlc, - challenges.evm_word(), - ); Self::configure_rlc( meta, "keccak_input_rlc", @@ -172,28 +165,29 @@ impl SignVerifyConfig { let q_keccak = meta.complex_selector(); meta.lookup_any("keccak", |meta| { // When address is 0, we disable the signature verification by using a dummy pk, - // msg_hash and signature which is not constrainted to match msg_hash_rlc nor - // the address. + // msg_hash and signature which is not constrained to match msg_hash nor the address. // Layout: - // | q_keccak | a | rlc | - // | -------- | --------------- | ----------- | - // | 1 | is_address_zero | pk_rlc | - // | | | pk_hash_rlc | + // | q_keccak | a | b | c | rlc | + // | -------- | --------------- |--------- | --------- | ------- | + // | 1 | is_addr_zero | word_lo | word_hi | pk_rlc | let q_keccak = meta.query_selector(q_keccak); let is_address_zero = meta.query_advice(main_gate_config.advices()[0], Rotation::cur()); let is_enable = q_keccak * not::expr(is_address_zero); - + let word_lo = meta.query_advice(main_gate_config.advices()[1], Rotation::cur()); + let word_hi = meta.query_advice(main_gate_config.advices()[2], Rotation::cur()); let input = [ is_enable.clone(), is_enable.clone() * meta.query_advice(rlc, Rotation::cur()), is_enable.clone() * 64usize.expr(), - is_enable * meta.query_advice(rlc, Rotation::next()), + is_enable.clone() * word_lo, + is_enable * word_hi, ]; let table = [ keccak_table.is_enabled, keccak_table.input_rlc, keccak_table.input_len, - keccak_table.output_rlc, + keccak_table.output.lo(), + keccak_table.output.hi(), ] .map(|column| meta.query_advice(column, Rotation::cur())); @@ -203,11 +197,10 @@ impl SignVerifyConfig { Self { range_config, main_gate_config, - keccak_table, - q_rlc_evm_word, q_rlc_keccak_input, rlc, q_keccak, + _keccak_table: keccak_table.clone(), } } @@ -255,10 +248,6 @@ impl SignVerifyConfig { pub(crate) fn ecc_chip_config(&self) -> EccConfig { EccConfig::new(self.range_config.clone(), self.main_gate_config.clone()) } - - pub(crate) fn integer_chip_config(&self) -> IntegerConfig { - IntegerConfig::new(self.range_config.clone(), self.main_gate_config.clone()) - } } /// Term provides a wrapper of possible assigned cell with value or unassigned @@ -272,7 +261,7 @@ impl SignVerifyConfig { #[derive(Clone, Debug)] pub(crate) enum Term<F> { Assigned(Cell, Value<F>), - Unassigned(Value<F>), + _Unassigned(Value<F>), } impl<F: Field> Term<F> { @@ -280,21 +269,17 @@ impl<F: Field> Term<F> { Self::Assigned(cell, value) } - fn unassigned(value: Value<F>) -> Self { - Self::Unassigned(value) - } - fn cell(&self) -> Option<Cell> { match self { Self::Assigned(cell, _) => Some(*cell), - Self::Unassigned(_) => None, + Self::_Unassigned(_) => None, } } fn value(&self) -> Value<F> { match self { Self::Assigned(_, value) => *value, - Self::Unassigned(value) => *value, + Self::_Unassigned(value) => *value, } } } @@ -307,8 +292,8 @@ pub(crate) struct AssignedECDSA<F: Field> { #[derive(Debug)] pub(crate) struct AssignedSignatureVerify<F: Field> { - pub(crate) address: AssignedValue<F>, - pub(crate) msg_hash_rlc: AssignedValue<F>, + pub(crate) address: Word<AssignedValue<F>>, + pub(crate) msg_hash: Word<AssignedValue<F>>, } // Return an array of bytes that corresponds to the little endian representation @@ -336,7 +321,7 @@ fn integer_to_bytes_le<F: Field, FE: PrimeField>( } /// Helper structure pass around references to all the chips required for an -/// ECDSA veficication. +/// ECDSA verification. struct ChipsRef<'a, F: Field, const NUMBER_OF_LIMBS: usize, const BIT_LEN_LIMB: usize> { main_gate: &'a MainGate<F>, range_chip: &'a RangeChip<F>, @@ -466,7 +451,7 @@ impl<F: Field> SignVerifyChip<F> { ctx: &mut RegionCtx<F>, is_address_zero: &AssignedCell<F, F>, pk_rlc: &AssignedCell<F, F>, - pk_hash_rlc: &AssignedCell<F, F>, + pk_hash: &Word<AssignedCell<F, F>>, ) -> Result<(), Error> { let copy = |ctx: &mut RegionCtx<F>, name, column, assigned: &AssignedCell<F, F>| { let copied = ctx.assign_advice(|| name, column, assigned.value().copied())?; @@ -474,12 +459,26 @@ impl<F: Field> SignVerifyChip<F> { Ok::<_, Error>(()) }; - let a = config.main_gate_config.advices()[0]; ctx.enable(config.q_keccak)?; - copy(ctx, "is_address_zero", a, is_address_zero)?; + copy( + ctx, + "is_address_zero", + config.main_gate_config.advices()[0], + is_address_zero, + )?; copy(ctx, "pk_rlc", config.rlc, pk_rlc)?; - ctx.next(); - copy(ctx, "pk_hash_rlc", config.rlc, pk_hash_rlc)?; + copy( + ctx, + "pk_hash_lo", + config.main_gate_config.advices()[1], + &pk_hash.lo(), + )?; + copy( + ctx, + "pk_hash_hi", + config.main_gate_config.advices()[2], + &pk_hash.hi(), + )?; ctx.next(); Ok(()) @@ -496,6 +495,7 @@ impl<F: Field> SignVerifyChip<F> { challenges: &Challenges<Value<F>>, ) -> Result<AssignedSignatureVerify<F>, Error> { let main_gate = chips.main_gate; + let range_chip = chips.range_chip; let (padding, sign_data) = match sign_data { Some(sign_data) => (false, sign_data.clone()), @@ -504,60 +504,97 @@ impl<F: Field> SignVerifyChip<F> { let pk_le = pk_bytes_le(&sign_data.pk); let pk_be = pk_bytes_swap_endianness(&pk_le); - let pk_hash = (!padding) - .then(|| keccak256(&pk_be)) - .unwrap_or_default() - .map(|byte| Value::known(F::from(byte as u64))); - let pk_hash_hi = pk_hash[..12].to_vec(); + let mut pk_hash = (!padding).then(|| keccak256(&pk_be)).unwrap_or_default(); + pk_hash.reverse(); + + let powers_of_256 = iter::successors(Some(F::ONE), |coeff| Some(F::from(256) * coeff)) + .take(16) + .collect_vec(); + // Ref. spec SignVerifyChip 2. Verify that the first 20 bytes of the // pub_key_hash equal the address - let (address, pk_hash_lo) = { - let powers_of_256 = iter::successors(Some(F::ONE), |coeff| Some(F::from(256) * coeff)) - .take(20) - .collect_vec(); - let terms = pk_hash[12..] - .iter() - .zip(powers_of_256.into_iter().rev()) - .map(|(byte, coeff)| maingate::Term::Unassigned(*byte, coeff)) - .collect_vec(); - let (address, pk_hash_lo) = main_gate.decompose(ctx, &terms, F::ZERO, |_, _| Ok(()))?; + let (address_cells, pk_hash_cells) = { + // Diagram of byte decomposition of little-endian pk_hash, and how address is built + // from it: + // + // byte 0 15 16 20 21 32 + // [ address_lo ] [ address_hi ] [ ] + // [ pk_hash_lo ] [ pk_hash_hi ] + + let pk_hash_lo_bytes = &pk_hash[..16]; + let pk_hash_hi_bytes = &pk_hash[16..]; + let pk_hash_lo = from_bytes::value::<F>(pk_hash_lo_bytes); + let pk_hash_hi = from_bytes::value::<F>(pk_hash_hi_bytes); + // Assign all bytes of pk_hash to cells which are range constrained to be 8 bits. Then + // constrain the lower 16 cell bytes to build the lo cell, and the higher 16 bytes to + // build the hi cell. + let (pk_hash_cell_lo, pk_hash_lo_cell_bytes) = + range_chip.decompose(ctx, Value::known(pk_hash_lo), 8, 128)?; + let (pk_hash_cell_hi, pk_hash_hi_cell_bytes) = + range_chip.decompose(ctx, Value::known(pk_hash_hi), 8, 128)?; + + // Take the 20 lowest assigned byte cells of pk_hash and constrain them to build + // address. From the lower 16 build the lo cell, and from the higher 4 build the hi + // cell. + let (address_cell_lo, _) = main_gate.decompose( + ctx, + &pk_hash_lo_cell_bytes + .iter() + .zip_eq(&powers_of_256) + .map(|(cell, coeff)| maingate::Term::Assigned(cell, *coeff)) + .collect_vec(), + F::ZERO, + |_, _| Ok(()), + )?; + let (address_cell_hi, _) = main_gate.decompose( + ctx, + &pk_hash_hi_cell_bytes + .iter() + .take(N_BYTES_ACCOUNT_ADDRESS - 16) + .zip(&powers_of_256) + .map(|(cell, coeff)| maingate::Term::Assigned(cell, *coeff)) + .collect_vec(), + F::ZERO, + |_, _| Ok(()), + )?; ( - address, - pk_hash_lo - .into_iter() - .zip(pk_hash[12..].iter()) - .map(|(assigned, byte)| Term::assigned(assigned.cell(), *byte)) - .collect_vec(), + Word::new([address_cell_lo, address_cell_hi]), + Word::new([pk_hash_cell_lo, pk_hash_cell_hi]), ) }; - let is_address_zero = main_gate.is_zero(ctx, &address)?; + + let iz_zero_hi = main_gate.is_zero(ctx, &address_cells.hi())?; + let iz_zero_lo = main_gate.is_zero(ctx, &address_cells.lo())?; + let is_address_zero = main_gate.and(ctx, &iz_zero_lo, &iz_zero_hi)?; // Ref. spec SignVerifyChip 3. Verify that the signed message in the ecdsa_chip - // with RLC encoding corresponds to msg_hash_rlc - let msg_hash_rlc = { - let zero = main_gate.assign_constant(ctx, F::ZERO)?; - let assigned_msg_hash_le = assigned_ecdsa - .msg_hash_le - .iter() - .map(|byte| main_gate.select(ctx, &zero, byte, &is_address_zero)) - .collect::<Result<Vec<_>, _>>()?; - let msg_hash_le = (!padding) - .then(|| sign_data.msg_hash.to_bytes()) - .unwrap_or_default() - .map(|byte| Value::known(F::from(byte as u64))); - self.assign_rlc_le( - config, + // corresponds to msg_hash + let msg_hash_cells = { + let msg_hash_lo_cell_bytes = &assigned_ecdsa.msg_hash_le[..16]; + let msg_hash_hi_cell_bytes = &assigned_ecdsa.msg_hash_le[16..]; + let (msg_hash_cell_lo, _) = main_gate.decompose( ctx, - chips, - "msg_hash", - config.q_rlc_evm_word, - challenges.evm_word(), - assigned_msg_hash_le + &msg_hash_lo_cell_bytes .iter() - .zip(msg_hash_le) - .map(|(assigned, byte)| Term::assigned(assigned.cell(), byte)), - )? + .zip_eq(&powers_of_256) + .map(|(cell, coeff)| maingate::Term::Assigned(cell, *coeff)) + .collect_vec(), + F::ZERO, + |_, _| Ok(()), + )?; + let (msg_hash_cell_hi, _) = main_gate.decompose( + ctx, + &msg_hash_hi_cell_bytes + .iter() + .zip_eq(&powers_of_256) + .map(|(cell, coeff)| maingate::Term::Assigned(cell, *coeff)) + .collect_vec(), + F::ZERO, + |_, _| Ok(()), + )?; + + Word::new([msg_hash_cell_lo, msg_hash_cell_hi]) }; let pk_rlc = { @@ -581,23 +618,10 @@ impl<F: Field> SignVerifyChip<F> { )? }; - let pk_hash_rlc = self.assign_rlc_le( - config, - ctx, - chips, - "pk_hash_rlc", - config.q_rlc_evm_word, - challenges.evm_word(), - iter::empty() - .chain(pk_hash_lo.into_iter().rev()) - .chain(pk_hash_hi.into_iter().rev().map(Term::unassigned)), - )?; - - self.enable_keccak_lookup(config, ctx, &is_address_zero, &pk_rlc, &pk_hash_rlc)?; - + self.enable_keccak_lookup(config, ctx, &is_address_zero, &pk_rlc, &pk_hash_cells)?; Ok(AssignedSignatureVerify { - address, - msg_hash_rlc, + address: address_cells, + msg_hash: msg_hash_cells, }) } @@ -688,12 +712,6 @@ impl<F: Field> SignVerifyChip<F> { } } -fn pub_key_hash_to_address<F: Field>(pk_hash: &[u8]) -> F { - pk_hash[32 - 20..] - .iter() - .fold(F::ZERO, |acc, b| acc * F::from(256) + F::from(*b as u64)) -} - #[cfg(test)] mod sign_verify_tests { use super::*; @@ -711,7 +729,6 @@ mod sign_verify_tests { }, plonk::Circuit, }; - use pretty_assertions::assert_eq; use rand::{RngCore, SeedableRng}; use rand_xorshift::XorShiftRng; @@ -770,7 +787,7 @@ mod sign_verify_tests { &self.signatures, &challenges, )?; - config.sign_verify.keccak_table.dev_load( + config.sign_verify._keccak_table.dev_load( &mut layouter, &keccak_inputs_sign_verify(&self.signatures), &challenges, @@ -800,7 +817,7 @@ mod sign_verify_tests { Ok(prover) => prover, Err(e) => panic!("{:#?}", e), }; - assert_eq!(prover.verify(), Ok(())); + prover.assert_satisfied_par(); } // Generate a test key pair diff --git a/zkevm-circuits/src/tx_circuit/test.rs b/zkevm-circuits/src/tx_circuit/test.rs index 102b32c11d..ba8bf70682 100644 --- a/zkevm-circuits/src/tx_circuit/test.rs +++ b/zkevm-circuits/src/tx_circuit/test.rs @@ -1,4 +1,3 @@ -#![allow(unused_imports)] use super::*; use crate::util::{log2_ceil, unusable_rows}; use eth_types::address; diff --git a/zkevm-circuits/src/util.rs b/zkevm-circuits/src/util.rs index 8614a58c2d..e8da067cff 100644 --- a/zkevm-circuits/src/util.rs +++ b/zkevm-circuits/src/util.rs @@ -1,24 +1,27 @@ //! Common utility traits and functions. +pub mod int_decomposition; +pub mod word; + use bus_mapping::evm::OpcodeId; use halo2_proofs::{ circuit::{Layouter, Value}, plonk::{ - Challenge, Circuit, ConstraintSystem, Error, Expression, FirstPhase, SecondPhase, - VirtualCells, + Challenge, ConstraintSystem, Error, Expression, FirstPhase, SecondPhase, VirtualCells, }, }; -use crate::{evm_circuit::util::rlc, table::TxLogFieldTag, witness}; +use crate::{table::TxLogFieldTag, witness}; use eth_types::{keccak256, Field, ToAddress, Word}; pub use ethers_core::types::{Address, U256}; pub use gadgets::util::Expr; /// Cell Manager pub mod cell_manager; -/// Cell Manager strategies -pub mod cell_manager_strategy; +/// Cell Placement strategies +pub mod cell_placement_strategy; -pub(crate) fn query_expression<F: Field, T>( +/// Steal the expression from gate +pub fn query_expression<F: Field, T>( meta: &mut ConstraintSystem<F>, mut f: impl FnMut(&mut VirtualCells<F>) -> T, ) -> T { @@ -30,14 +33,9 @@ pub(crate) fn query_expression<F: Field, T>( expr.unwrap() } -pub(crate) fn random_linear_combine_word<F: Field>(bytes: [u8; 32], randomness: F) -> F { - rlc::value(&bytes, randomness) -} - /// All challenges used in `SuperCircuit`. #[derive(Default, Clone, Copy, Debug)] pub struct Challenges<T = Challenge> { - evm_word: T, keccak_input: T, lookup_input: T, } @@ -45,15 +43,14 @@ pub struct Challenges<T = Challenge> { impl Challenges { /// Construct `Challenges` by allocating challenges in specific phases. pub fn construct<F: Field>(meta: &mut ConstraintSystem<F>) -> Self { - #[cfg(any(feature = "test", test, feature = "test-circuits"))] - let _dummy_cols = [ - meta.advice_column(), - meta.advice_column_in(SecondPhase), - meta.advice_column_in(halo2_proofs::plonk::ThirdPhase), - ]; + // Dummy columns are required in the test circuits + // In some tests there might be no advice columns before the phase, so Halo2 will panic with + // "No Column<Advice> is used in phase Phase(1) while allocating a new 'Challenge usable + // after phase Phase(1)'" + #[cfg(any(test, feature = "test-circuits"))] + let _dummy_cols = [meta.advice_column(), meta.advice_column_in(SecondPhase)]; Self { - evm_word: meta.challenge_usable_after(FirstPhase), keccak_input: meta.challenge_usable_after(FirstPhase), lookup_input: meta.challenge_usable_after(SecondPhase), } @@ -61,12 +58,10 @@ impl Challenges { /// Returns `Expression` of challenges from `ConstraintSystem`. pub fn exprs<F: Field>(&self, meta: &mut ConstraintSystem<F>) -> Challenges<Expression<F>> { - let [evm_word, keccak_input, lookup_input] = query_expression(meta, |meta| { - [self.evm_word, self.keccak_input, self.lookup_input] - .map(|challenge| meta.query_challenge(challenge)) + let [keccak_input, lookup_input] = query_expression(meta, |meta| { + [self.keccak_input, self.lookup_input].map(|challenge| meta.query_challenge(challenge)) }); Challenges { - evm_word, keccak_input, lookup_input, } @@ -75,7 +70,6 @@ impl Challenges { /// Returns `Value` of challenges from `Layouter`. pub fn values<F: Field>(&self, layouter: &mut impl Layouter<F>) -> Challenges<Value<F>> { Challenges { - evm_word: layouter.get_challenge(self.evm_word), keccak_input: layouter.get_challenge(self.keccak_input), lookup_input: layouter.get_challenge(self.lookup_input), } @@ -83,11 +77,6 @@ impl Challenges { } impl<T: Clone> Challenges<T> { - /// Returns challenge of `evm_word`. - pub fn evm_word(&self) -> T { - self.evm_word.clone() - } - /// Returns challenge of `keccak_input`. pub fn keccak_input(&self) -> T { self.keccak_input.clone() @@ -99,13 +88,12 @@ impl<T: Clone> Challenges<T> { } /// Returns the challenges indexed by the challenge index - pub fn indexed(&self) -> [&T; 3] { - [&self.evm_word, &self.keccak_input, &self.lookup_input] + pub fn indexed(&self) -> [&T; 2] { + [&self.keccak_input, &self.lookup_input] } - pub(crate) fn mock(evm_word: T, keccak_input: T, lookup_input: T) -> Self { + pub(crate) fn mock(keccak_input: T, lookup_input: T) -> Self { Self { - evm_word, keccak_input, lookup_input, } @@ -124,11 +112,6 @@ impl<F: Field> Challenges<Expression<F>> { .unwrap() } - /// Returns powers of randomness for word RLC encoding - pub fn evm_word_powers_of_randomness<const S: usize>(&self) -> [Expression<F>; S] { - Self::powers_of(self.evm_word.clone()) - } - /// Returns powers of randomness for keccak circuit's input pub fn keccak_powers_of_randomness<const S: usize>(&self) -> [Expression<F>; S] { Self::powers_of(self.keccak_input.clone()) @@ -207,18 +190,22 @@ pub(crate) fn keccak(msg: &[u8]) -> Word { Word::from_big_endian(keccak256(msg).as_slice()) } -pub(crate) fn is_push(byte: u8) -> bool { - OpcodeId::from(byte).is_push() +pub(crate) fn is_push_with_data(byte: u8) -> bool { + OpcodeId::from(byte).is_push_with_data() } pub(crate) fn get_push_size(byte: u8) -> u64 { - if is_push(byte) { - byte as u64 - OpcodeId::PUSH1.as_u64() + 1 + if is_push_with_data(byte) { + byte as u64 - OpcodeId::PUSH0.as_u64() } else { 0u64 } } +#[cfg(test)] +use halo2_proofs::plonk::Circuit; + +#[cfg(test)] /// Returns number of unusable rows of the Circuit. /// The minimum unusable rows of a circuit is currently 6, where /// - 3 comes from minimum number of distinct queries to permutation argument witness column diff --git a/zkevm-circuits/src/util/cell_manager.rs b/zkevm-circuits/src/util/cell_manager.rs index 5f5778a539..574301ea78 100644 --- a/zkevm-circuits/src/util/cell_manager.rs +++ b/zkevm-circuits/src/util/cell_manager.rs @@ -13,7 +13,7 @@ use crate::{ util::query_expression, }; -pub(crate) use super::cell_manager_strategy::*; +pub(crate) use super::cell_placement_strategy::*; #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] /// CellType represent a category of cell (and column). @@ -21,7 +21,6 @@ pub(crate) enum CellType { StoragePhase1, StoragePhase2, StoragePermutation, - LookupByte, Lookup(Table), } @@ -55,12 +54,11 @@ impl CellType { #[derive(Clone, Debug)] /// Cell is a (column, rotation) pair that has been placed and queried by the Cell Manager. -pub(crate) struct Cell<F> { - pub(crate) expression: Expression<F>, - pub(crate) column_expression: Expression<F>, - pub(crate) column: Column<Advice>, - pub(crate) column_idx: usize, - pub(crate) rotation: usize, +pub struct Cell<F> { + expression: Option<Expression<F>>, + column: Option<Column<Advice>>, + column_idx: usize, + rotation: usize, } impl<F: Field> Cell<F> { @@ -72,15 +70,14 @@ impl<F: Field> Cell<F> { rotation: usize, ) -> Cell<F> { Cell { - expression: meta.query_advice(column, Rotation(rotation as i32)), - column_expression: meta.query_advice(column, Rotation::cur()), - column, + expression: Some(meta.query_advice(column, Rotation(rotation as i32))), + column: Some(column), column_idx, rotation, } } - // Creates a Cell from ConstraintSystem. + /// Creates a Cell from ConstraintSystem. pub fn new_from_cs( meta: &mut ConstraintSystem<F>, column: Column<Advice>, @@ -104,22 +101,54 @@ impl<F: Field> Cell<F> { self.column, self.rotation ) }, - self.column, + self.column.expect("wrong operation on value only cell"), offset + self.rotation, || value, ) } + + pub(crate) fn at_offset(&self, meta: &mut ConstraintSystem<F>, offset: i32) -> Self { + Self::new_from_cs( + meta, + self.column.expect("wrong operation on value only cell"), + self.column_idx, + (self.rotation as i32 + offset) as usize, + ) + } +} + +impl<F> Cell<F> { + pub(crate) fn new_value(column_idx: usize, rotation: usize) -> Self { + Self { + expression: None, + column: None, + column_idx, + rotation, + } + } + + pub(crate) fn get_column_idx(&self) -> usize { + self.column_idx + } + + pub(crate) fn get_rotation(&self) -> usize { + self.rotation + } } impl<F: Field> Expr<F> for Cell<F> { fn expr(&self) -> Expression<F> { - self.expression.clone() + self.expression + .clone() + .expect("wrong operation on value only cell") } } impl<F: Field> Expr<F> for &Cell<F> { fn expr(&self) -> Expression<F> { - self.expression.clone() + self.expression + .clone() + .expect("wrong operation on value only cell") } } @@ -132,7 +161,7 @@ pub(crate) struct CellColumn { } impl CellColumn { - // Creates a CellColumn from a Column and Cell Type. + /// Creates a CellColumn from a Column and Cell Type. pub fn new(advice: Column<Advice>, cell_type: CellType, idx: usize) -> CellColumn { CellColumn { advice, @@ -145,23 +174,70 @@ impl CellColumn { pub fn expr<F: Field>(&self, meta: &mut ConstraintSystem<F>) -> Expression<F> { query_expression(meta, |meta| meta.query_advice(self.advice, Rotation::cur())) } + + pub fn expr_vc<F: Field>(&self, meta: &mut VirtualCells<F>) -> Expression<F> { + meta.query_advice(self.advice, Rotation::cur()) + } +} + +pub(crate) struct CellPlacement { + pub column: CellColumn, + pub rotation: usize, } -/// CellManagerStrategy is a strategy to place cells by the Cell Manager. -pub(crate) trait CellManagerStrategy { +pub(crate) struct CellPlacementValue { + pub column_idx: usize, + pub rotation: usize, +} + +/// CellPlacementStrategy is a strategy to place cells by the Cell Manager. +pub(crate) trait CellPlacementStrategy { + /// Stats is the type of the returned statistics. type Stats; + /// Affinity is used as extra information when querying cells that is used for their correct + /// placement. + type Affinity; + /// The cell manager will call on_creation when built, so the columns can be set up by the /// strategy. fn on_creation(&mut self, columns: &mut CellManagerColumns); /// Queries a cell from the strategy. - fn query_cell<F: Field>( + fn place_cell<F: Field>( &mut self, columns: &mut CellManagerColumns, meta: &mut ConstraintSystem<F>, cell_type: CellType, - ) -> Cell<F>; + ) -> CellPlacement; + + /// Queries a cell from the strategy, using an affinity attribute. + fn place_cell_with_affinity<F: Field>( + &mut self, + columns: &mut CellManagerColumns, + meta: &mut ConstraintSystem<F>, + cell_type: CellType, + affinity: Self::Affinity, + ) -> CellPlacement; + + /// Queries a cell from the strategy returning CellValueOnly, which does not require + /// ConstraintSystem. This is useful when assigning values. + /// Deprecated: share cells between configure and synthesize instead. + fn place_cell_value( + &mut self, + columns: &mut CellManagerColumns, + cell_type: CellType, + ) -> CellPlacementValue; + + /// Queries a cell from the strategy returning CellValueOnly, which does not require + /// ConstraintSystem. This is useful when assigning values. Also, using an affinity attribute. + /// Deprecated: share cells between configure and synthesize instead. + fn place_cell_value_with_affinity( + &mut self, + columns: &mut CellManagerColumns, + cell_type: CellType, + affinity: Self::Affinity, + ) -> CellPlacementValue; /// Gets the current height of the cell manager, the max rotation of any cell (without /// considering offset). @@ -215,6 +291,7 @@ impl CellManagerColumns { self.columns_list.clone() } + #[allow(dead_code, reason = "under active development")] /// Returns the number of columns. pub fn get_width(&self) -> usize { self.columns_list.len() @@ -223,12 +300,12 @@ impl CellManagerColumns { /// CellManager places and return cells in an area of the plonkish table given a strategy. #[derive(Clone, Debug)] -pub(crate) struct CellManager<S: CellManagerStrategy> { +pub(crate) struct CellManager<S: CellPlacementStrategy> { columns: CellManagerColumns, strategy: S, } -impl<Stats, S: CellManagerStrategy<Stats = Stats>> CellManager<S> { +impl<Stats, S: CellPlacementStrategy<Stats = Stats>> CellManager<S> { /// Creates a Cell Manager with a given strategy. pub fn new(mut strategy: S) -> CellManager<S> { let mut columns = CellManagerColumns::default(); @@ -244,7 +321,32 @@ impl<Stats, S: CellManagerStrategy<Stats = Stats>> CellManager<S> { meta: &mut ConstraintSystem<F>, cell_type: CellType, ) -> Cell<F> { - self.strategy.query_cell(&mut self.columns, meta, cell_type) + let placement = self.strategy.place_cell(&mut self.columns, meta, cell_type); + + Cell::new_from_cs( + meta, + placement.column.advice, + placement.column.idx, + placement.rotation, + ) + } + + pub fn query_cell_with_affinity<F: Field>( + &mut self, + meta: &mut ConstraintSystem<F>, + cell_type: CellType, + affinity: S::Affinity, + ) -> Cell<F> { + let placement = + self.strategy + .place_cell_with_affinity(&mut self.columns, meta, cell_type, affinity); + + Cell::new_from_cs( + meta, + placement.column.advice, + placement.column.idx, + placement.rotation, + ) } /// Places, and returns `count` Cells for a given cell type following the strategy. @@ -259,6 +361,26 @@ impl<Stats, S: CellManagerStrategy<Stats = Stats>> CellManager<S> { .collect() } + /// Deprecated: share cells between configure and synthesize instead. + pub fn query_cell_value<F>(&mut self, cell_type: CellType) -> Cell<F> { + let placement = self.strategy.place_cell_value(&mut self.columns, cell_type); + + Cell::new_value(placement.column_idx, placement.rotation) + } + + /// Deprecated: share cells between configure and synthesize instead. + pub fn query_cell_value_with_affinity<F>( + &mut self, + cell_type: CellType, + affinity: S::Affinity, + ) -> Cell<F> { + let placement = + self.strategy + .place_cell_value_with_affinity(&mut self.columns, cell_type, affinity); + + Cell::new_value(placement.column_idx, placement.rotation) + } + /// Gets the current height of the cell manager, the max rotation of any cell (without /// considering offset). pub fn get_height(&self) -> usize { @@ -270,6 +392,7 @@ impl<Stats, S: CellManagerStrategy<Stats = Stats>> CellManager<S> { self.columns.columns() } + #[allow(dead_code, reason = "under active development")] /// Returns the number of columns managed by this Cell Manager. pub fn get_width(&self) -> usize { self.columns.get_width() @@ -279,4 +402,8 @@ impl<Stats, S: CellManagerStrategy<Stats = Stats>> CellManager<S> { pub fn get_stats(&self) -> Stats { self.strategy.get_stats(&self.columns) } + + pub fn get_strategy(&mut self) -> &mut S { + &mut self.strategy + } } diff --git a/zkevm-circuits/src/util/cell_manager_strategy.rs b/zkevm-circuits/src/util/cell_placement_strategy.rs similarity index 56% rename from zkevm-circuits/src/util/cell_manager_strategy.rs rename to zkevm-circuits/src/util/cell_placement_strategy.rs index 506845b1df..88e0ff0511 100644 --- a/zkevm-circuits/src/util/cell_manager_strategy.rs +++ b/zkevm-circuits/src/util/cell_placement_strategy.rs @@ -3,7 +3,9 @@ use std::collections::{BTreeMap, HashMap}; use eth_types::Field; use halo2_proofs::plonk::{Advice, Column, ConstraintSystem}; -use super::cell_manager::{Cell, CellManagerColumns, CellManagerStrategy, CellType}; +use super::cell_manager::{ + CellManagerColumns, CellPlacement, CellPlacementStrategy, CellPlacementValue, CellType, +}; #[derive(Clone, Debug, Default)] pub(crate) struct CMFixedWidthStrategyDistribution(HashMap<CellType, Vec<Column<Advice>>>); @@ -16,9 +18,14 @@ impl CMFixedWidthStrategyDistribution { self.0.insert(cell_type, vec![advice]); } } + + #[allow(dead_code, reason = "this method will be used outside tests")] + pub(crate) fn get(&self, cell_type: CellType) -> Option<&Vec<Column<Advice>>> { + self.0.get(&cell_type) + } } -/// CMFixedWidthStrategy is a Cell Manager strategy that places the cells in the column that has +/// CMFixedWidthStrategy is a Cell Placement strategy that places the cells in the column that has /// less height for a given CellType. /// When a cell is queried for a CellType the strategy will find the column of that Cell Type that /// has a lower height and add it there. @@ -97,8 +104,9 @@ impl CMFixedWidthStrategy { } } -impl CellManagerStrategy for CMFixedWidthStrategy { +impl CellPlacementStrategy for CMFixedWidthStrategy { type Stats = BTreeMap<CellType, (usize, usize, usize)>; + type Affinity = (); fn on_creation(&mut self, columns: &mut CellManagerColumns) { for (cell_type, advices) in self.advices.0.iter() { @@ -108,17 +116,17 @@ impl CellManagerStrategy for CMFixedWidthStrategy { } } - fn query_cell<F: Field>( + fn place_cell<F: Field>( &mut self, columns: &mut CellManagerColumns, meta: &mut ConstraintSystem<F>, cell_type: CellType, - ) -> Cell<F> { + ) -> CellPlacement { let (mut column_idx, mut row) = self.get_next(&cell_type); if self.perm_substitution && cell_type == CellType::StoragePhase1 { let (_, row_perm) = self.get_next(&CellType::StoragePermutation); if row_perm < row { - return self.query_cell(columns, meta, CellType::StoragePermutation); + return self.place_cell(columns, meta, CellType::StoragePermutation); } } @@ -132,8 +140,11 @@ impl CellManagerStrategy for CMFixedWidthStrategy { let column = columns .get_column(cell_type, column_idx) .expect("column not found"); - - let cell = Cell::new_from_cs(meta, column.advice, column.idx, self.height_offset + row); + let rotation = self.height_offset + row; + let placement = CellPlacement { + column: column.clone(), + rotation, + }; column_idx += 1; if column_idx >= columns.get_cell_type_width(cell_type) { @@ -143,7 +154,7 @@ impl CellManagerStrategy for CMFixedWidthStrategy { self.set_next(&cell_type, column_idx, row); - cell + placement } fn get_height(&self) -> usize { @@ -177,95 +188,214 @@ impl CellManagerStrategy for CMFixedWidthStrategy { } data } + + fn place_cell_value( + &mut self, + _columns: &mut CellManagerColumns, + _cell_type: CellType, + ) -> CellPlacementValue { + unimplemented!() + } + + fn place_cell_with_affinity<F: Field>( + &mut self, + _columns: &mut CellManagerColumns, + _meta: &mut ConstraintSystem<F>, + _cell_type: CellType, + _affinity: Self::Affinity, + ) -> CellPlacement { + unimplemented!() + } + + fn place_cell_value_with_affinity( + &mut self, + _columns: &mut CellManagerColumns, + _cell_type: CellType, + _affinity: Self::Affinity, + ) -> CellPlacementValue { + unimplemented!() + } } -// TODO: This strategy is unfinished. -pub(crate) struct CMFixedHeigthStrategy { +#[derive(Debug, Clone)] +pub(crate) struct CMFixedHeightStrategy { row_width: Vec<usize>, cell_type: CellType, + + num_unused_cells: usize, } -impl CMFixedHeigthStrategy { - pub fn new(height: usize, cell_type: CellType) -> CMFixedHeigthStrategy { - CMFixedHeigthStrategy { +impl CMFixedHeightStrategy { + pub(crate) fn new(height: usize, cell_type: CellType) -> CMFixedHeightStrategy { + CMFixedHeightStrategy { row_width: vec![0; height], cell_type, + + num_unused_cells: Default::default(), } } } -impl CellManagerStrategy for CMFixedHeigthStrategy { - fn on_creation(&mut self, _columns: &mut CellManagerColumns) {} +impl CellPlacementStrategy for CMFixedHeightStrategy { + type Affinity = usize; + + fn on_creation(&mut self, _columns: &mut CellManagerColumns) { + // We don't need to do anything as the columns are created on demand + } - fn query_cell<F: Field>( + fn place_cell<F: Field>( &mut self, columns: &mut CellManagerColumns, meta: &mut ConstraintSystem<F>, cell_type: CellType, - ) -> Cell<F> { + ) -> CellPlacement { assert_eq!( cell_type, self.cell_type, - "CMFixedHeigthStrategy can only work with one cell type" + "CMFixedHeightStrategy can only work with one cell type" ); let (row_idx, column_idx) = self.get_next(); - let cell = self.query_cell_at_pos(columns, meta, row_idx, column_idx); + let placement = self.place_cell_at_pos(columns, meta, row_idx, column_idx); self.inc_row_width(row_idx); - cell + placement } fn get_height(&self) -> usize { - todo!() + self.row_width.len() } type Stats = (); fn get_stats(&self, _columns: &CellManagerColumns) -> Self::Stats { - todo!() + // This CM strategy has not statistics. + } + + /// Deprecated: share cells between configure and synthesize instead. + fn place_cell_value( + &mut self, + _columns: &mut CellManagerColumns, + cell_type: CellType, + ) -> CellPlacementValue { + assert_eq!( + cell_type, self.cell_type, + "CMFixedHeightStrategy can only work with one cell type" + ); + + let (row_idx, column_idx) = self.get_next(); + + self.inc_row_width(row_idx); + + CellPlacementValue { + column_idx, + rotation: row_idx, + } + } + + fn place_cell_with_affinity<F: Field>( + &mut self, + columns: &mut CellManagerColumns, + meta: &mut ConstraintSystem<F>, + cell_type: CellType, + affnity: Self::Affinity, + ) -> CellPlacement { + assert_eq!( + cell_type, self.cell_type, + "CMFixedHeightStrategy can only work with one cell type" + ); + + let row_idx = affnity; + let column_idx = self.row_width[row_idx]; + + let placement = self.place_cell_at_pos(columns, meta, row_idx, column_idx); + + self.inc_row_width(row_idx); + + placement + } + + /// Deprecated: share cells between configure and synthesize instead. + fn place_cell_value_with_affinity( + &mut self, + _columns: &mut CellManagerColumns, + cell_type: CellType, + affinity: Self::Affinity, + ) -> CellPlacementValue { + assert_eq!( + cell_type, self.cell_type, + "CMFixedHeightStrategy can only work with one cell type" + ); + + let row_idx = affinity; + let column_idx = self.row_width[row_idx]; + + self.inc_row_width(row_idx); + + CellPlacementValue { + column_idx, + rotation: row_idx, + } } } -impl CMFixedHeigthStrategy { +impl CMFixedHeightStrategy { + pub fn start_region(&mut self) -> usize { + // Make sure all rows start at the same column + let width = *self.row_width.iter().max().unwrap_or(&0usize); + for row in self.row_width.iter_mut() { + self.num_unused_cells += width - *row; + *row = width; + } + width + } + + pub fn get_num_unused_cells(&self) -> usize { + self.num_unused_cells + } + fn get_next(&mut self) -> (usize, usize) { let mut best_row_idx = 0usize; - let mut best_row_pos = 100000usize; // TODO: eliminate this magic number? - for (row_idx, row) in self.row_width.iter().enumerate() { - if *row < best_row_pos { - best_row_pos = *row; + let mut best_row_with = usize::MAX; + for (row_idx, row_width) in self.row_width.iter().enumerate() { + if *row_width < best_row_with { + best_row_with = *row_width; best_row_idx = row_idx; } } - (best_row_idx, best_row_pos) + (best_row_idx, best_row_with) } fn inc_row_width(&mut self, row_idx: usize) { self.row_width[row_idx] += 1; } - fn query_cell_at_pos<F: Field>( + fn place_cell_at_pos<F: Field>( &mut self, columns: &mut CellManagerColumns, meta: &mut ConstraintSystem<F>, row_idx: usize, column_idx: usize, - ) -> Cell<F> { - let advice = if column_idx < columns.get_cell_type_width(self.cell_type) { + ) -> CellPlacement { + let column = if column_idx < columns.get_cell_type_width(self.cell_type) { columns .get_column(self.cell_type, column_idx) .expect("column not found") - .advice } else { let advice = meta.advice_column(); columns.add_column(self.cell_type, advice); - advice + columns + .get_column(self.cell_type, column_idx) + .expect("column not found") }; - Cell::new_from_cs(meta, advice, column_idx, row_idx) + CellPlacement { + column: column.clone(), + rotation: row_idx, + } } } diff --git a/zkevm-circuits/src/util/int_decomposition.rs b/zkevm-circuits/src/util/int_decomposition.rs new file mode 100644 index 0000000000..8f0950537d --- /dev/null +++ b/zkevm-circuits/src/util/int_decomposition.rs @@ -0,0 +1,108 @@ +//! Define IntDecomposition to decompose int into byte limbs +use eth_types::{Field, ToLittleEndian, H160, U256}; +use gadgets::util::{sum, Expr}; +use halo2_proofs::{ + circuit::{AssignedCell, Value}, + plonk::{Error, Expression}, +}; +use itertools::Itertools; + +use crate::evm_circuit::{ + param::{MAX_N_BYTES_INTEGER, N_BYTES_HALF_WORD}, + util::{rlc, CachedRegion, Cell}, +}; + +use super::word::{Word, WordExpr}; + +#[derive(Clone, Debug)] +/// IntDecomposition decompose integer into byte limbs +pub struct IntDecomposition<F, const N_LIMBS: usize> { + /// inner cells in little-endian for synthesis + pub limbs: [Cell<F>; N_LIMBS], +} + +impl<F: Field, const N_LIMBS: usize> IntDecomposition<F, N_LIMBS> { + /// new by cell limbs + pub fn new(limbs: [Cell<F>; N_LIMBS]) -> Self { + Self { limbs } + } + + /// assign bytes to cells + pub fn assign<const N_BYTES: usize>( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + bytes: Option<[u8; N_BYTES]>, + ) -> Result<Vec<AssignedCell<F, F>>, Error> { + assert!(N_BYTES >= N_LIMBS); + if let Some(bytes) = bytes { + if N_BYTES > N_LIMBS { + for byte in &bytes[N_LIMBS..] { + assert_eq!(*byte, 0); + } + } + } + bytes.map_or(Err(Error::Synthesis), |bytes| { + self.limbs + .iter() + .zip(bytes.iter()) + .map(|(cell, byte)| { + cell.assign(region, offset, Value::known(F::from(*byte as u64))) + }) + .collect() + }) + } + + /// assign h160 to cells + pub fn assign_h160( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + h160: H160, + ) -> Result<Vec<AssignedCell<F, F>>, Error> { + let mut bytes = *h160.as_fixed_bytes(); + bytes.reverse(); + self.assign(region, offset, Some(bytes)) + } + + /// assign u256 to cells + pub fn assign_u256( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + u256: U256, + ) -> Result<Vec<AssignedCell<F, F>>, Error> { + self.assign(region, offset, Some(u256.to_le_bytes())) + } + + /// assign all limbs into one expression + pub fn sum_expr(&self) -> Expression<F> { + sum::expr(self.limbs.clone()) + } +} + +impl<F: Field, const N_LIMBS: usize> Expr<F> for IntDecomposition<F, N_LIMBS> { + fn expr(&self) -> Expression<F> { + assert!(N_LIMBS <= MAX_N_BYTES_INTEGER); + rlc::expr(&self.limbs.clone().map(|limb| limb.expr()), 256.expr()) + } +} + +impl<F: Field, const N_LIMBS: usize> WordExpr<F> for IntDecomposition<F, N_LIMBS> { + fn to_word(&self) -> Word<Expression<F>> { + let exprs = self + .limbs + .clone() + .map(|x| x.expr()) + .chunks(N_BYTES_HALF_WORD) + .map(|chunk| rlc::expr(chunk, 256.expr())) + .collect::<Vec<Expression<F>>>(); + Word::new( + (0..2) + .map(|id| exprs.get(id).unwrap_or(&0.expr()).clone()) + .collect_vec() + .try_into() + .unwrap(), + ) + } +} diff --git a/zkevm-circuits/src/util/word.rs b/zkevm-circuits/src/util/word.rs new file mode 100644 index 0000000000..bc70baaecf --- /dev/null +++ b/zkevm-circuits/src/util/word.rs @@ -0,0 +1,453 @@ +//! Define generic Word type with utility functions +// Naming Convesion +// - Limbs: An EVN word is 256 bits. Limbs N means split 256 into N limb. For example, N = 4, each +// limb is 256/4 = 64 bits + +use bus_mapping::state_db::CodeDB; +use eth_types::{Field, ToLittleEndian, H160, H256}; +use gadgets::util::{not, or, Expr}; +use halo2_proofs::{ + circuit::{AssignedCell, Region, Value}, + plonk::{Advice, Column, Error, Expression, VirtualCells}, + poly::Rotation, +}; +use itertools::Itertools; + +use crate::evm_circuit::util::{from_bytes, CachedRegion, Cell}; + +/// evm word 32 bytes, half word 16 bytes +const N_BYTES_HALF_WORD: usize = 16; + +/// The EVM word for witness +#[derive(Clone, Debug, Copy)] +pub struct WordLimbs<T, const N: usize> { + /// The limbs of this word. + pub limbs: [T; N], +} + +pub(crate) type Word2<T> = WordLimbs<T, 2>; + +pub(crate) type Word4<T> = WordLimbs<T, 4>; + +pub(crate) type Word32<T> = WordLimbs<T, 32>; + +pub(crate) type WordCell<F> = Word<Cell<F>>; + +pub(crate) type Word32Cell<F> = Word32<Cell<F>>; + +impl<T, const N: usize> WordLimbs<T, N> { + /// Constructor + pub fn new(limbs: [T; N]) -> Self { + Self { limbs } + } + /// The number of limbs + pub fn n() -> usize { + N + } +} + +impl<const N: usize> WordLimbs<Column<Advice>, N> { + /// Query advice of WordLibs of columns advice + pub fn query_advice<F: Field>( + &self, + meta: &mut VirtualCells<F>, + at: Rotation, + ) -> WordLimbs<Expression<F>, N> { + WordLimbs::new(self.limbs.map(|column| meta.query_advice(column, at))) + } +} + +impl<const N: usize> WordLimbs<u8, N> { + /// Convert WordLimbs of u8 to WordLimbs of expressions + pub fn to_expr<F: Field>(&self) -> WordLimbs<Expression<F>, N> { + WordLimbs::new(self.limbs.map(|v| Expression::Constant(F::from(v as u64)))) + } +} + +impl<T: Default, const N: usize> Default for WordLimbs<T, N> { + fn default() -> Self { + Self { + limbs: [(); N].map(|_| T::default()), + } + } +} + +/// Get the word expression +pub trait WordExpr<F> { + /// Get the word expression + fn to_word(&self) -> Word<Expression<F>>; +} + +impl<F: Field, const N: usize> WordLimbs<Cell<F>, N> { + /// assign bytes to wordlimbs first half/second half respectively + // N_LO, N_HI are number of bytes to assign to first half and second half of size N limbs, + // respectively N_LO and N_HI can be different size, the only requirement is N_LO % (N/2) + // and N_HI % (N/2) [N/2] limbs will be assigned separately. + // E.g. N_LO = 4 => [nl1, nl2, nl3, nl4] + // N_HI = 2 => [nh1, nh2] + // N = 2 => [l1, l2] + // it equivalent l1.assign(nl1.expr() + nl2.expr() * 256 + nl3.expr() * 256^2 + nl3.expr() * + // 256^3) and l2.assign(nh1.expr() + nh2.expr() * 256) + fn assign_lo_hi<const N_LO: usize, const N_HI: usize>( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + bytes_lo_le: [u8; N_LO], + bytes_hi_le: Option<[u8; N_HI]>, + ) -> Result<Vec<AssignedCell<F, F>>, Error> { + assert_eq!(N % 2, 0); // TODO use static_assertion instead + assert_eq!(N_LO % (N / 2), 0); + assert_eq!(N_HI % (N / 2), 0); + let half_limb_size = N / 2; + + // assign lo + let bytes_lo_assigned = bytes_lo_le + .chunks(N_LO / half_limb_size) // chunk in little endian + .map(|chunk| from_bytes::value(chunk)) + .zip_eq(self.limbs[0..half_limb_size].iter()) + .map(|(value, cell)| cell.assign(region, offset, Value::known(value))) + .collect::<Result<Vec<AssignedCell<F, F>>, _>>()?; + + // assign hi + let bytes_hi_assigned = bytes_hi_le.map(|bytes| { + bytes + .chunks(N_HI / half_limb_size) // chunk in little endian + .map(|chunk| from_bytes::value(chunk)) + .zip_eq(self.limbs[half_limb_size..].iter()) + .map(|(value, cell)| cell.assign(region, offset, Value::known(value))) + .collect::<Result<Vec<AssignedCell<F, F>>, _>>() + }); + + Ok([ + bytes_lo_assigned.to_vec(), + match bytes_hi_assigned { + Some(hi_assigned) => hi_assigned?.to_vec(), + None => vec![], + }, + ] + .concat()) + } + + /// assign u256 to wordlimbs + pub fn assign_u256( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + word: eth_types::Word, + ) -> Result<Vec<AssignedCell<F, F>>, Error> { + self.assign_lo_hi::<N_BYTES_HALF_WORD, N_BYTES_HALF_WORD>( + region, + offset, + word.to_le_bytes()[0..N_BYTES_HALF_WORD].try_into().unwrap(), + word.to_le_bytes()[N_BYTES_HALF_WORD..].try_into().ok(), + ) + } + + /// assign h160 to wordlimbs + pub fn assign_h160( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + h160: H160, + ) -> Result<Vec<AssignedCell<F, F>>, Error> { + let mut bytes = *h160.as_fixed_bytes(); + bytes.reverse(); + self.assign_lo_hi::<N_BYTES_HALF_WORD, 4>( + region, + offset, + bytes[0..N_BYTES_HALF_WORD].try_into().unwrap(), + bytes[N_BYTES_HALF_WORD..].try_into().ok(), + ) + } + + /// assign u64 to wordlimbs + pub fn assign_u64( + &self, + region: &mut CachedRegion<'_, '_, F>, + offset: usize, + value: u64, + ) -> Result<Vec<AssignedCell<F, F>>, Error> { + self.assign_lo_hi(region, offset, value.to_le_bytes(), Option::<[u8; 0]>::None) + } + + /// word expr + fn word_expr(&self) -> WordLimbs<Expression<F>, N> { + WordLimbs::new(self.limbs.clone().map(|cell| cell.expr())) + } + + /// convert from N cells to N2 expressions limbs + pub fn to_word_n<const N2: usize>(&self) -> WordLimbs<Expression<F>, N2> { + self.word_expr().to_word_n() + } +} + +impl<F: Field, const N: usize> WordExpr<F> for WordLimbs<Cell<F>, N> { + fn to_word(&self) -> Word<Expression<F>> { + Word(self.word_expr().to_word_n()) + } +} + +impl<F: Field, const N: usize> WordLimbs<F, N> { + /// Check if zero + pub fn is_zero_vartime(&self) -> bool { + self.limbs.iter().all(|limb| limb.is_zero_vartime()) + } +} + +/// `Word`, special alias for Word2. +#[derive(Clone, Debug, Copy, Default)] +pub struct Word<T>(Word2<T>); + +impl<T: Clone> Word<T> { + /// Construct the word from 2 limbs + pub fn new(limbs: [T; 2]) -> Self { + Self(WordLimbs::<T, 2>::new(limbs)) + } + /// The high 128 bits limb + pub fn hi(&self) -> T { + self.0.limbs[1].clone() + } + /// the low 128 bits limb + pub fn lo(&self) -> T { + self.0.limbs[0].clone() + } + /// number of limbs + pub fn n() -> usize { + 2 + } + /// word to low and high 128 bits + pub fn to_lo_hi(&self) -> (T, T) { + (self.0.limbs[0].clone(), self.0.limbs[1].clone()) + } + + /// Extract (move) lo and hi values + pub fn into_lo_hi(self) -> (T, T) { + let [lo, hi] = self.0.limbs; + (lo, hi) + } + + /// Wrap `Word` into `Word<Value>` + pub fn into_value(self) -> Word<Value<T>> { + let [lo, hi] = self.0.limbs; + Word::new([Value::known(lo), Value::known(hi)]) + } + + /// Map the word to other types + pub fn map<T2: Clone>(&self, mut func: impl FnMut(T) -> T2) -> Word<T2> { + Word(WordLimbs::<T2, 2>::new([func(self.lo()), func(self.hi())])) + } +} + +impl<T> std::ops::Deref for Word<T> { + type Target = WordLimbs<T, 2>; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +impl<T: Clone + PartialEq> PartialEq for Word<T> { + fn eq(&self, other: &Self) -> bool { + self.lo() == other.lo() && self.hi() == other.hi() + } +} + +impl<F: Field> From<eth_types::Word> for Word<F> { + /// Construct the word from u256 + fn from(value: eth_types::Word) -> Self { + let bytes = value.to_le_bytes(); + Word::new([ + from_bytes::value(&bytes[..N_BYTES_HALF_WORD]), + from_bytes::value(&bytes[N_BYTES_HALF_WORD..]), + ]) + } +} + +impl<F: Field> From<H256> for Word<F> { + /// Construct the word from H256 + fn from(h: H256) -> Self { + let le_bytes = { + let mut b = h.to_fixed_bytes(); + b.reverse(); + b + }; + Word::new([ + from_bytes::value(&le_bytes[..N_BYTES_HALF_WORD]), + from_bytes::value(&le_bytes[N_BYTES_HALF_WORD..]), + ]) + } +} + +impl<F: Field> From<u64> for Word<F> { + /// Construct the word from u64 + fn from(value: u64) -> Self { + let bytes = value.to_le_bytes(); + Word::new([from_bytes::value(&bytes), F::from(0)]) + } +} + +impl<F: Field> From<u8> for Word<F> { + /// Construct the word from u8 + fn from(value: u8) -> Self { + Word::new([F::from(value as u64), F::from(0)]) + } +} + +impl<F: Field> From<bool> for Word<F> { + fn from(value: bool) -> Self { + Word::new([F::from(value as u64), F::from(0)]) + } +} + +impl<F: Field> From<H160> for Word<F> { + /// Construct the word from h160 + fn from(value: H160) -> Self { + let mut bytes = *value.as_fixed_bytes(); + bytes.reverse(); + Word::new([ + from_bytes::value(&bytes[..N_BYTES_HALF_WORD]), + from_bytes::value(&bytes[N_BYTES_HALF_WORD..]), + ]) + } +} + +impl<F: Field> Word<Value<F>> { + /// Assign advice + pub fn assign_advice<A, AR>( + &self, + region: &mut Region<'_, F>, + annotation: A, + column: Word<Column<Advice>>, + offset: usize, + ) -> Result<Word<AssignedCell<F, F>>, Error> + where + A: Fn() -> AR, + AR: Into<String>, + { + let annotation: String = annotation().into(); + let lo = region.assign_advice(|| &annotation, column.lo(), offset, || self.lo())?; + let hi = region.assign_advice(|| &annotation, column.hi(), offset, || self.hi())?; + + Ok(Word::new([lo, hi])) + } +} + +impl Word<Column<Advice>> { + /// Query advice of Word of columns advice + pub fn query_advice<F: Field>( + &self, + meta: &mut VirtualCells<F>, + at: Rotation, + ) -> Word<Expression<F>> { + self.0.query_advice(meta, at).to_word() + } +} + +impl<F: Field> WordExpr<F> for Word<Cell<F>> { + fn to_word(&self) -> Word<Expression<F>> { + self.word_expr().to_word() + } +} + +impl<F: Field> Word<Expression<F>> { + /// create word from lo limb with hi limb as 0. caller need to guaranteed to be 128 bits. + pub fn from_lo_unchecked(lo: Expression<F>) -> Self { + Self(WordLimbs::<Expression<F>, 2>::new([lo, 0.expr()])) + } + /// zero word + pub fn zero() -> Self { + Self(WordLimbs::<Expression<F>, 2>::new([0.expr(), 0.expr()])) + } + + /// one word + pub fn one() -> Self { + Self(WordLimbs::<Expression<F>, 2>::new([1.expr(), 0.expr()])) + } + + /// select based on selector. Here assume selector is 1/0 therefore no overflow check + pub fn select<T: Expr<F> + Clone>( + selector: T, + when_true: Word<T>, + when_false: Word<T>, + ) -> Word<Expression<F>> { + let (true_lo, true_hi) = when_true.to_lo_hi(); + + let (false_lo, false_hi) = when_false.to_lo_hi(); + Word::new([ + selector.expr() * true_lo.expr() + (1.expr() - selector.expr()) * false_lo.expr(), + selector.expr() * true_hi.expr() + (1.expr() - selector.expr()) * false_hi.expr(), + ]) + } + + /// Assume selector is 1/0 therefore no overflow check + pub fn mul_selector(&self, selector: Expression<F>) -> Self { + Word::new([self.lo() * selector.clone(), self.hi() * selector]) + } + + /// No overflow check on lo/hi limbs + pub fn add_unchecked(self, rhs: Self) -> Self { + Word::new([self.lo() + rhs.lo(), self.hi() + rhs.hi()]) + } + + /// No underflow check on lo/hi limbs + pub fn sub_unchecked(self, rhs: Self) -> Self { + Word::new([self.lo() - rhs.lo(), self.hi() - rhs.hi()]) + } + + /// No overflow check on lo/hi limbs + pub fn mul_unchecked(self, rhs: Self) -> Self { + Word::new([self.lo() * rhs.lo(), self.hi() * rhs.hi()]) + } +} + +impl<F: Field> WordExpr<F> for Word<Expression<F>> { + fn to_word(&self) -> Word<Expression<F>> { + self.clone() + } +} + +impl<F: Field, const N1: usize> WordLimbs<Expression<F>, N1> { + /// to_wordlimbs will aggregate nested expressions, which implies during expression evaluation + /// it need more recursive call. if the converted limbs word will be used in many places, + /// consider create new low limbs word, have equality constrain, then finally use low limbs + /// elsewhere. + // TODO static assertion. wordaround https://github.com/nvzqz/static-assertions-rs/issues/40 + pub fn to_word_n<const N2: usize>(&self) -> WordLimbs<Expression<F>, N2> { + assert_eq!(N1 % N2, 0); + let limbs = self + .limbs + .chunks(N1 / N2) + .map(|chunk| from_bytes::expr(chunk)) + .collect_vec() + .try_into() + .unwrap(); + WordLimbs::<Expression<F>, N2>::new(limbs) + } + + /// Equality expression + // TODO static assertion. wordaround https://github.com/nvzqz/static-assertions-rs/issues/40 + pub fn eq<const N2: usize>(&self, others: &WordLimbs<Expression<F>, N2>) -> Expression<F> { + assert_eq!(N1 % N2, 0); + not::expr(or::expr( + self.limbs + .chunks(N1 / N2) + .map(|chunk| from_bytes::expr(chunk)) + .zip(others.limbs.clone()) + .map(|(expr1, expr2)| expr1 - expr2) + .collect_vec(), + )) + } +} + +impl<F: Field, const N1: usize> WordExpr<F> for WordLimbs<Expression<F>, N1> { + fn to_word(&self) -> Word<Expression<F>> { + Word(self.to_word_n()) + } +} + +/// Return the hash of the empty code as a Word<Value<F>> in little-endian. +pub fn empty_code_hash_word_value<F: Field>() -> Word<Value<F>> { + Word::from(CodeDB::empty_code_hash()).into_value() +} + +// TODO unittest diff --git a/zkevm-circuits/src/witness.rs b/zkevm-circuits/src/witness.rs index dde790dd39..bcf731dd6a 100644 --- a/zkevm-circuits/src/witness.rs +++ b/zkevm-circuits/src/witness.rs @@ -4,13 +4,8 @@ mod block; pub use block::{block_convert, Block, BlockContext}; -mod bytecode; -pub use bytecode::Bytecode; mod mpt; pub use mpt::{MptUpdate, MptUpdateRow, MptUpdates}; mod rw; -pub use bus_mapping::circuit_input_builder::ExecStep; +pub use bus_mapping::circuit_input_builder::{Call, ExecStep, Transaction}; pub use rw::{Rw, RwMap, RwRow}; -mod tx; -pub use bus_mapping::circuit_input_builder::Call; -pub use tx::Transaction; diff --git a/zkevm-circuits/src/witness/block.rs b/zkevm-circuits/src/witness/block.rs index 6114fdba1f..ff790740f2 100644 --- a/zkevm-circuits/src/witness/block.rs +++ b/zkevm-circuits/src/witness/block.rs @@ -1,20 +1,19 @@ -use std::collections::HashMap; - +use super::{ExecStep, Rw, RwMap, Transaction}; use crate::{ - evm_circuit::{detect_fixed_table_tags, util::rlc, EvmCircuit}, + evm_circuit::{detect_fixed_table_tags, EvmCircuit}, exp_circuit::param::OFFSET_INCREMENT, + instance::public_data_convert, table::BlockContextFieldTag, - util::{log2_ceil, SubCircuit}, + util::{log2_ceil, word, SubCircuit}, }; use bus_mapping::{ circuit_input_builder::{self, CopyEvent, ExpEvent, FixedCParams}, + state_db::CodeDB, Error, }; -use eth_types::{Address, Field, ToLittleEndian, ToScalar, Word}; +use eth_types::{Address, Field, ToScalar, Word}; use halo2_proofs::circuit::Value; -use super::{tx::tx_convert, Bytecode, ExecStep, Rw, RwMap, Transaction}; - // TODO: Remove fields that are duplicated in`eth_block` /// Block is the struct used by all circuits, which contains all the needed /// data for witness generation. @@ -32,7 +31,7 @@ pub struct Block<F> { /// Read write events in the RwTable pub rws: RwMap, /// Bytecode used in the block - pub bytecodes: HashMap<Word, Bytecode>, + pub bytecodes: CodeDB, /// The block context pub context: BlockContext, /// Copy events for the copy circuit's table. @@ -56,13 +55,16 @@ pub struct Block<F> { impl<F: Field> Block<F> { /// For each tx, for each step, print the rwc at the beginning of the step, /// and all the rw operations of the step. + #[allow(dead_code, reason = "useful debug function")] pub(crate) fn debug_print_txs_steps_rw_ops(&self) { for (tx_idx, tx) in self.txs.iter().enumerate() { println!("tx {}", tx_idx); - for step in &tx.steps { - println!(" step {:?} rwc: {}", step.exec_state, step.rwc.0); + for step in tx.steps() { + println!("> Step {:?}", step.exec_state); for rw_idx in 0..step.bus_mapping_instance.len() { - println!(" - {:?}", self.get_rws(step, rw_idx)); + let rw = self.get_rws(step, rw_idx); + let rw_str = if rw.is_write() { "READ" } else { "WRIT" }; + println!(" {} {} {:?}", rw.rw_counter(), rw_str, rw); } } } @@ -84,11 +86,8 @@ impl<F: Field> Block<F> { .iter() .map(|tag| tag.build::<F>().count()) .sum(); - let num_rows_required_for_bytecode_table: usize = self - .bytecodes - .values() - .map(|bytecode| bytecode.bytes.len() + 1) - .sum(); + let num_rows_required_for_bytecode_table = + self.bytecodes.num_rows_required_for_bytecode_table(); let num_rows_required_for_copy_table: usize = self.copy_events.iter().map(|c| c.bytes.len() * 2).sum(); let num_rows_required_for_keccak_table: usize = self.keccak_inputs.len(); @@ -109,6 +108,7 @@ impl<F: Field> Block<F> { num_rows_required_for_keccak_table, num_rows_required_for_tx_table, num_rows_required_for_exp_table, + 1 << 16, // u16 range lookup ]) .unwrap(); @@ -152,46 +152,50 @@ pub struct BlockContext { impl BlockContext { /// Assignments for block table - pub fn table_assignments<F: Field>(&self, randomness: Value<F>) -> Vec<[Value<F>; 3]> { + pub fn table_assignments<F: Field>(&self) -> Vec<[Value<F>; 4]> { [ vec![ [ Value::known(F::from(BlockContextFieldTag::Coinbase as u64)), Value::known(F::ZERO), - Value::known(self.coinbase.to_scalar().unwrap()), + Value::known(word::Word::from(self.coinbase).lo()), + Value::known(word::Word::from(self.coinbase).hi()), ], [ Value::known(F::from(BlockContextFieldTag::Timestamp as u64)), Value::known(F::ZERO), Value::known(self.timestamp.to_scalar().unwrap()), + Value::known(F::ZERO), ], [ Value::known(F::from(BlockContextFieldTag::Number as u64)), Value::known(F::ZERO), Value::known(self.number.to_scalar().unwrap()), + Value::known(F::ZERO), ], [ Value::known(F::from(BlockContextFieldTag::Difficulty as u64)), Value::known(F::ZERO), - randomness - .map(|randomness| rlc::value(&self.difficulty.to_le_bytes(), randomness)), + Value::known(word::Word::from(self.difficulty).lo()), + Value::known(word::Word::from(self.difficulty).hi()), ], [ Value::known(F::from(BlockContextFieldTag::GasLimit as u64)), Value::known(F::ZERO), Value::known(F::from(self.gas_limit)), + Value::known(F::ZERO), ], [ Value::known(F::from(BlockContextFieldTag::BaseFee as u64)), Value::known(F::ZERO), - randomness - .map(|randomness| rlc::value(&self.base_fee.to_le_bytes(), randomness)), + Value::known(word::Word::from(self.base_fee).lo()), + Value::known(word::Word::from(self.base_fee).hi()), ], [ Value::known(F::from(BlockContextFieldTag::ChainId as u64)), Value::known(F::ZERO), - randomness - .map(|randomness| rlc::value(&self.chain_id.to_le_bytes(), randomness)), + Value::known(word::Word::from(self.chain_id).lo()), + Value::known(word::Word::from(self.chain_id).hi()), ], ], { @@ -203,8 +207,8 @@ impl BlockContext { [ Value::known(F::from(BlockContextFieldTag::BlockHash as u64)), Value::known((self.number - len_history + idx).to_scalar().unwrap()), - randomness - .map(|randomness| rlc::value(&hash.to_le_bytes(), randomness)), + Value::known(word::Word::from(*hash).lo()), + Value::known(word::Word::from(*hash).hi()), ] }) .collect() @@ -237,27 +241,15 @@ pub fn block_convert<F: Field>( let code_db = &builder.code_db; let rws = RwMap::from(&block.container); rws.check_value(); - Ok(Block { + let mut block = Block { // randomness: F::from(0x100), // Special value to reveal elements after RLC randomness: F::from(0xcafeu64), context: block.into(), rws, - txs: block - .txs() - .iter() - .enumerate() - .map(|(idx, tx)| tx_convert(tx, idx + 1)) - .collect(), + txs: block.txs().to_vec(), end_block_not_last: block.block_steps.end_block_not_last.clone(), end_block_last: block.block_steps.end_block_last.clone(), - bytecodes: code_db - .0 - .values() - .map(|v| { - let bytecode = Bytecode::new(v.clone()); - (bytecode.hash, bytecode) - }) - .collect(), + bytecodes: code_db.clone(), copy_events: block.copy_events.clone(), exp_events: block.exp_events.clone(), sha3_inputs: block.sha3_inputs.clone(), @@ -266,5 +258,13 @@ pub fn block_convert<F: Field>( prev_state_root: block.prev_state_root, keccak_inputs: circuit_input_builder::keccak_inputs(block, code_db)?, eth_block: block.eth_block.clone(), - }) + }; + let public_data = public_data_convert(&block); + let rpi_bytes = public_data.get_pi_bytes( + block.circuits_params.max_txs, + block.circuits_params.max_calldata, + ); + // PI Circuit + block.keccak_inputs.extend_from_slice(&[rpi_bytes]); + Ok(block) } diff --git a/zkevm-circuits/src/witness/bytecode.rs b/zkevm-circuits/src/witness/bytecode.rs deleted file mode 100644 index 4e945dc380..0000000000 --- a/zkevm-circuits/src/witness/bytecode.rs +++ /dev/null @@ -1,91 +0,0 @@ -use bus_mapping::evm::OpcodeId; -use eth_types::{Field, ToLittleEndian, Word}; -use halo2_proofs::circuit::Value; -use sha3::{Digest, Keccak256}; - -use crate::{evm_circuit::util::rlc, table::BytecodeFieldTag, util::Challenges}; - -/// Bytecode -#[derive(Clone, Debug)] -pub struct Bytecode { - /// Hash of bytecode - pub hash: Word, - /// Raw bytes - pub bytes: Vec<u8>, -} - -impl Bytecode { - /// Construct from bytecode bytes - pub fn new(bytes: Vec<u8>) -> Self { - let hash = Word::from_big_endian(Keccak256::digest(&bytes).as_slice()); - Self { hash, bytes } - } - - /// Assignments for bytecode table - pub fn table_assignments<F: Field>( - &self, - challenges: &Challenges<Value<F>>, - ) -> Vec<[Value<F>; 5]> { - let n = 1 + self.bytes.len(); - let mut rows = Vec::with_capacity(n); - let hash = challenges - .evm_word() - .map(|challenge| rlc::value(&self.hash.to_le_bytes(), challenge)); - - rows.push([ - hash, - Value::known(F::from(BytecodeFieldTag::Header as u64)), - Value::known(F::ZERO), - Value::known(F::ZERO), - Value::known(F::from(self.bytes.len() as u64)), - ]); - - let mut push_data_left = 0; - for (idx, byte) in self.bytes.iter().enumerate() { - let is_code = push_data_left == 0; - - push_data_left = if is_code { - // push_data_left will be > 0 only if it is a push opcode - OpcodeId::from(*byte).data_len() - } else { - push_data_left - 1 - }; - - rows.push([ - hash, - Value::known(F::from(BytecodeFieldTag::Byte as u64)), - Value::known(F::from(idx as u64)), - Value::known(F::from(is_code as u64)), - Value::known(F::from(*byte as u64)), - ]) - } - rows - } - - /// get byte value and is_code pair - pub fn get(&self, dest: usize) -> [u8; 2] { - let mut push_data_left = 0; - for (idx, byte) in self.bytes.iter().enumerate() { - let mut is_code = true; - if push_data_left > 0 { - is_code = false; - push_data_left -= 1; - } else if (OpcodeId::PUSH1.as_u8()..=OpcodeId::PUSH32.as_u8()).contains(byte) { - push_data_left = *byte as usize - (OpcodeId::PUSH1.as_u8() - 1) as usize; - } - - if idx == dest { - return [*byte, is_code as u8]; - } - } - - // here dest > bytecodes len - panic!("can not find byte in the bytecodes list") - } -} - -impl From<ð_types::bytecode::Bytecode> for Bytecode { - fn from(b: ð_types::bytecode::Bytecode) -> Self { - Bytecode::new(b.to_vec()) - } -} diff --git a/zkevm-circuits/src/witness/mpt.rs b/zkevm-circuits/src/witness/mpt.rs index c415feb419..df7b1ddebb 100644 --- a/zkevm-circuits/src/witness/mpt.rs +++ b/zkevm-circuits/src/witness/mpt.rs @@ -1,8 +1,9 @@ use crate::{ - evm_circuit::{util::rlc, witness::Rw}, + evm_circuit::witness::Rw, table::{AccountFieldTag, MPTProofType}, + util::word, }; -use eth_types::{Address, Field, ToLittleEndian, ToScalar, Word}; +use eth_types::{Address, Field, ToScalar, Word}; use halo2_proofs::circuit::Value; use itertools::Itertools; use std::collections::BTreeMap; @@ -22,9 +23,9 @@ impl MptUpdate { let proof_type = match self.key { Key::AccountStorage { .. } => { if self.old_value.is_zero() && self.new_value.is_zero() { - MPTProofType::NonExistingStorageProof + MPTProofType::StorageDoesNotExist } else { - MPTProofType::StorageMod + MPTProofType::StorageChanged } } Key::Account { field_tag, .. } => field_tag.into(), @@ -41,8 +42,16 @@ pub struct MptUpdates { } /// The field element encoding of an MPT update, which is used by the MptTable -#[derive(Debug, Clone, Copy)] -pub struct MptUpdateRow<F>(pub(crate) [F; 7]); +#[derive(Default, Clone, Copy, Debug)] +pub struct MptUpdateRow<F: Clone> { + pub(crate) address: F, + pub(crate) storage_key: word::Word<F>, + pub(crate) proof_type: F, + pub(crate) new_root: word::Word<F>, + pub(crate) old_root: word::Word<F>, + pub(crate) new_value: word::Word<F>, + pub(crate) old_value: word::Word<F>, +} impl MptUpdates { pub(crate) fn old_root(&self) -> Word { @@ -84,51 +93,32 @@ impl MptUpdates { } } - pub(crate) fn table_assignments<F: Field>( - &self, - randomness: Value<F>, - ) -> Vec<MptUpdateRow<Value<F>>> { + pub(crate) fn table_assignments<F: Field>(&self) -> Vec<MptUpdateRow<Value<F>>> { self.updates .values() .map(|update| { - let (new_root, old_root) = randomness - .map(|randomness| update.root_assignments(randomness)) - .unzip(); - let (new_value, old_value) = randomness - .map(|randomness| update.value_assignments(randomness)) - .unzip(); - MptUpdateRow([ - Value::known(update.key.address()), - randomness.map(|randomness| update.key.storage_key(randomness)), - Value::known(update.proof_type()), - new_root, - old_root, - new_value, - old_value, - ]) + let (new_root, old_root) = update.root_assignments(); + let (new_value, old_value) = update.value_assignments(); + MptUpdateRow { + address: Value::known(update.key.address().to_scalar().unwrap()), + storage_key: word::Word::<F>::from(update.key.storage_key()).into_value(), + proof_type: Value::known(update.proof_type()), + new_root: word::Word::<F>::from(new_root).into_value(), + old_root: word::Word::<F>::from(old_root).into_value(), + new_value: word::Word::<F>::from(new_value).into_value(), + old_value: word::Word::<F>::from(old_value).into_value(), + } }) .collect() } } impl MptUpdate { - pub(crate) fn value_assignments<F: Field>(&self, word_randomness: F) -> (F, F) { - let assign = |x: Word| match self.key { - Key::Account { - field_tag: AccountFieldTag::Nonce | AccountFieldTag::NonExisting, - .. - } => x.to_scalar().unwrap(), - _ => rlc::value(&x.to_le_bytes(), word_randomness), - }; - - (assign(self.new_value), assign(self.old_value)) + pub(crate) fn value_assignments(&self) -> (Word, Word) { + (self.new_value, self.old_value) } - - pub(crate) fn root_assignments<F: Field>(&self, word_randomness: F) -> (F, F) { - ( - rlc::value(&self.new_root.to_le_bytes(), word_randomness), - rlc::value(&self.old_root.to_le_bytes(), word_randomness), - ) + pub(crate) fn root_assignments(&self) -> (Word, Word) { + (self.new_root, self.old_root) } } @@ -179,28 +169,37 @@ impl Key { self } } - fn address<F: Field>(&self) -> F { + fn address(&self) -> Address { match self { - Self::Account { address, .. } | Self::AccountStorage { address, .. } => { - address.to_scalar().unwrap() - } + Self::Account { address, .. } | Self::AccountStorage { address, .. } => *address, } } - fn storage_key<F: Field>(&self, randomness: F) -> F { + fn storage_key(&self) -> Word { match self { - Self::Account { .. } => F::ZERO, - Self::AccountStorage { storage_key, .. } => { - rlc::value(&storage_key.to_le_bytes(), randomness) - } + Self::Account { .. } => Word::zero(), + Self::AccountStorage { storage_key, .. } => *storage_key, } } } -impl<F> MptUpdateRow<F> { +impl<F: Clone> MptUpdateRow<F> { /// The individual values of the row, in the column order used by the /// MptTable - pub fn values(&self) -> impl Iterator<Item = &F> { - self.0.iter() + pub fn values(&self) -> [F; 12] { + [ + self.address.clone(), + self.storage_key.lo(), + self.storage_key.hi(), + self.proof_type.clone(), + self.new_root.lo(), + self.new_root.hi(), + self.old_root.lo(), + self.old_root.hi(), + self.new_value.lo(), + self.new_value.hi(), + self.old_value.lo(), + self.old_value.hi(), + ] } } diff --git a/zkevm-circuits/src/witness/rw.rs b/zkevm-circuits/src/witness/rw.rs index a01bf1e7ea..6b850648e5 100644 --- a/zkevm-circuits/src/witness/rw.rs +++ b/zkevm-circuits/src/witness/rw.rs @@ -1,18 +1,17 @@ -#![allow(missing_docs)] +//! The Read-Write table related structs use std::collections::HashMap; use bus_mapping::{ exec_trace::OperationRef, operation::{self, AccountField, CallContextField, Target, TxLogField, TxReceiptField}, }; -use eth_types::{Address, Field, ToAddress, ToLittleEndian, ToScalar, Word, U256}; -use halo2_proofs::{circuit::Value, halo2curves::bn256::Fr}; +use eth_types::{Address, Field, ToAddress, ToScalar, Word, U256}; +use halo2_proofs::circuit::Value; use itertools::Itertools; use crate::{ - evm_circuit::util::rlc, table::{AccountFieldTag, CallContextFieldTag, TxLogFieldTag, TxReceiptFieldTag}, - util::build_tx_log_address, + util::{build_tx_log_address, word}, }; use super::MptUpdates; @@ -54,7 +53,6 @@ impl RwMap { } /// Check value in the same way like StateCircuit pub fn check_value(&self) { - let mock_rand = Fr::from(0x1000u64); let err_msg_first = "first access reads don't change value"; let err_msg_non_first = "non-first access reads don't change value"; let rows = self.table_assignments(); @@ -76,19 +74,19 @@ impl RwMap { key(prev_row) != key(row) }; if !row.is_write() { - let value = row.value_assignment::<Fr>(mock_rand); + let value = row.value_assignment(); if is_first { // value == init_value let init_value = updates .get(row) - .map(|u| u.value_assignments(mock_rand).1) + .map(|u| u.value_assignments().1) .unwrap_or_default(); if value != init_value { errs.push((idx, err_msg_first, *row, *prev_row)); } } else { // value == prev_value - let prev_value = prev_row.value_assignment::<Fr>(mock_rand); + let prev_value = prev_row.value_assignment(); if value != prev_value { errs.push((idx, err_msg_non_first, *row, *prev_row)); @@ -117,10 +115,9 @@ impl RwMap { target_len - rows_len } else { if target_len != 0 { - log::error!( + panic!( "RwMap::padding_len overflow, target_len: {}, rows_len: {}", - target_len, - rows_len + target_len, rows_len ); } 1 @@ -155,6 +152,10 @@ impl RwMap { } } +#[allow( + missing_docs, + reason = "Some of the docs are tedious and can be found at https://github.com/privacy-scaling-explorations/zkevm-specs/blob/master/specs/tables.md" +)] /// Read-write records in execution. Rws are used for connecting evm circuit and /// state circuits. #[derive(Clone, Copy, Debug)] @@ -239,11 +240,12 @@ pub enum Rw { tx_id: usize, log_id: u64, // pack this can index together into address? field_tag: TxLogFieldTag, - // topic index (0..4) if field_tag is TxLogFieldTag:Topic - // byte index if field_tag is TxLogFieldTag:Data - // 0 for other field tags + /// index has 3 usages depends on [`crate::table::TxLogFieldTag`] + /// - topic index (0..4) if field_tag is TxLogFieldTag::Topic + /// - byte index if field_tag is TxLogFieldTag:Data + /// - 0 for other field tags index: usize, - // when it is topic field, value can be word type + /// when it is topic field, value can be word type value: Word, }, /// TxReceipt @@ -265,15 +267,14 @@ pub struct RwRow<F> { pub(crate) id: F, pub(crate) address: F, pub(crate) field_tag: F, - pub(crate) storage_key: F, - pub(crate) value: F, - pub(crate) value_prev: F, - pub(crate) aux1: F, - pub(crate) aux2: F, + pub(crate) storage_key: word::Word<F>, + pub(crate) value: word::Word<F>, + pub(crate) value_prev: word::Word<F>, + pub(crate) init_val: word::Word<F>, } impl<F: Field> RwRow<F> { - pub(crate) fn values(&self) -> [F; 11] { + pub(crate) fn values(&self) -> [F; 14] { [ self.rw_counter, self.is_write, @@ -281,13 +282,17 @@ impl<F: Field> RwRow<F> { self.id, self.address, self.field_tag, - self.storage_key, - self.value, - self.value_prev, - self.aux1, - self.aux2, + self.storage_key.lo(), + self.storage_key.hi(), + self.value.lo(), + self.value.hi(), + self.value_prev.lo(), + self.value_prev.hi(), + self.init_val.lo(), + self.init_val.hi(), ] } + pub(crate) fn rlc(&self, randomness: F) -> F { let values = self.values(); values @@ -295,9 +300,34 @@ impl<F: Field> RwRow<F> { .rev() .fold(F::ZERO, |acc, value| acc * randomness + value) } +} + +impl<F: Field> RwRow<Value<F>> { + pub(crate) fn unwrap(self) -> RwRow<F> { + let unwrap_f = |f: Value<F>| { + let mut inner = None; + _ = f.map(|v| { + inner = Some(v); + }); + inner.unwrap() + }; + let unwrap_w = |f: word::Word<Value<F>>| { + let (lo, hi) = f.into_lo_hi(); + word::Word::new([unwrap_f(lo), unwrap_f(hi)]) + }; - pub(crate) fn rlc_value(&self, randomness: Value<F>) -> Value<F> { - randomness.map(|randomness| self.rlc(randomness)) + RwRow { + rw_counter: unwrap_f(self.rw_counter), + is_write: unwrap_f(self.is_write), + tag: unwrap_f(self.tag), + id: unwrap_f(self.id), + address: unwrap_f(self.address), + field_tag: unwrap_f(self.field_tag), + storage_key: unwrap_w(self.storage_key), + value: unwrap_w(self.value), + value_prev: unwrap_w(self.value_prev), + init_val: unwrap_w(self.init_val), + } } } @@ -327,11 +357,47 @@ impl Rw { } } - pub(crate) fn account_value_pair(&self) -> (Word, Word) { + pub(crate) fn account_balance_pair(&self) -> (Word, Word) { match self { Self::Account { - value, value_prev, .. - } => (*value, *value_prev), + value, + value_prev, + field_tag, + .. + } => { + debug_assert_eq!(field_tag, &AccountFieldTag::Balance); + (*value, *value_prev) + } + _ => unreachable!(), + } + } + + pub(crate) fn account_nonce_pair(&self) -> (Word, Word) { + match self { + Self::Account { + value, + value_prev, + field_tag, + .. + } => { + debug_assert_eq!(field_tag, &AccountFieldTag::Nonce); + (*value, *value_prev) + } + _ => unreachable!(), + } + } + + pub(crate) fn account_codehash_pair(&self) -> (Word, Word) { + match self { + Self::Account { + value, + value_prev, + field_tag, + .. + } => { + debug_assert_eq!(field_tag, &AccountFieldTag::CodeHash); + (*value, *value_prev) + } _ => unreachable!(), } } @@ -374,13 +440,6 @@ impl Rw { } } - pub(crate) fn log_value(&self) -> Word { - match self { - Self::TxLog { value, .. } => *value, - _ => unreachable!(), - } - } - pub(crate) fn receipt_value(&self) -> u64 { match self { Self::TxReceipt { value, .. } => *value, @@ -395,30 +454,7 @@ impl Rw { } } - // At this moment is a helper for the EVM circuit until EVM challange API is - // applied - pub(crate) fn table_assignment_aux<F: Field>(&self, randomness: F) -> RwRow<F> { - RwRow { - rw_counter: F::from(self.rw_counter() as u64), - is_write: F::from(self.is_write() as u64), - tag: F::from(self.tag() as u64), - id: F::from(self.id().unwrap_or_default() as u64), - address: self.address().unwrap_or_default().to_scalar().unwrap(), - field_tag: F::from(self.field_tag().unwrap_or_default()), - storage_key: rlc::value( - &self.storage_key().unwrap_or_default().to_le_bytes(), - randomness, - ), - value: self.value_assignment(randomness), - value_prev: self.value_prev_assignment(randomness).unwrap_or_default(), - aux1: F::ZERO, // only used for AccountStorage::tx_id, which moved to key1. - aux2: self - .committed_value_assignment(randomness) - .unwrap_or_default(), - } - } - - pub(crate) fn table_assignment<F: Field>(&self, randomness: Value<F>) -> RwRow<Value<F>> { + pub(crate) fn table_assignment<F: Field>(&self) -> RwRow<Value<F>> { RwRow { rw_counter: Value::known(F::from(self.rw_counter() as u64)), is_write: Value::known(F::from(self.is_write() as u64)), @@ -426,21 +462,12 @@ impl Rw { id: Value::known(F::from(self.id().unwrap_or_default() as u64)), address: Value::known(self.address().unwrap_or_default().to_scalar().unwrap()), field_tag: Value::known(F::from(self.field_tag().unwrap_or_default())), - storage_key: randomness.map(|randomness| { - rlc::value( - &self.storage_key().unwrap_or_default().to_le_bytes(), - randomness, - ) - }), - value: randomness.map(|randomness| self.value_assignment(randomness)), - value_prev: randomness - .map(|randomness| self.value_prev_assignment(randomness).unwrap_or_default()), - aux1: Value::known(F::ZERO), /* only used for AccountStorage::tx_id, which moved to - * key1. */ - aux2: randomness.map(|randomness| { - self.committed_value_assignment(randomness) - .unwrap_or_default() - }), + storage_key: word::Word::from(self.storage_key().unwrap_or_default()).into_value(), + value: word::Word::from(self.value_assignment()).into_value(), + value_prev: word::Word::from(self.value_prev_assignment().unwrap_or_default()) + .into_value(), + init_val: word::Word::from(self.committed_value_assignment().unwrap_or_default()) + .into_value(), } } @@ -573,69 +600,31 @@ impl Rw { } } - pub(crate) fn value_assignment<F: Field>(&self, randomness: F) -> F { + pub(crate) fn value_assignment(&self) -> Word { match self { - Self::Start { .. } => F::ZERO, - Self::CallContext { - field_tag, value, .. - } => { - match field_tag { - // Only these two tags have values that may not fit into a scalar, so we need to - // RLC. - CallContextFieldTag::CodeHash | CallContextFieldTag::Value => { - rlc::value(&value.to_le_bytes(), randomness) - } - _ => value.to_scalar().unwrap(), - } - } - Self::Account { - value, field_tag, .. - } => match field_tag { - AccountFieldTag::CodeHash | AccountFieldTag::Balance => { - rlc::value(&value.to_le_bytes(), randomness) - } - AccountFieldTag::Nonce | AccountFieldTag::NonExisting => value.to_scalar().unwrap(), - }, - Self::AccountStorage { value, .. } | Self::Stack { value, .. } => { - rlc::value(&value.to_le_bytes(), randomness) - } - - Self::TxLog { - field_tag, value, .. - } => match field_tag { - TxLogFieldTag::Topic => rlc::value(&value.to_le_bytes(), randomness), - _ => value.to_scalar().unwrap(), - }, - + Self::Start { .. } => U256::zero(), + Self::CallContext { value, .. } + | Self::Account { value, .. } + | Self::AccountStorage { value, .. } + | Self::Stack { value, .. } + | Self::TxLog { value, .. } => *value, Self::TxAccessListAccount { is_warm, .. } - | Self::TxAccessListAccountStorage { is_warm, .. } => F::from(*is_warm as u64), - Self::Memory { byte, .. } => F::from(u64::from(*byte)), - Self::TxRefund { value, .. } | Self::TxReceipt { value, .. } => F::from(*value), + | Self::TxAccessListAccountStorage { is_warm, .. } => U256::from(*is_warm as u64), + Self::Memory { byte, .. } => U256::from(u64::from(*byte)), + Self::TxRefund { value, .. } | Self::TxReceipt { value, .. } => U256::from(*value), } } - pub(crate) fn value_prev_assignment<F: Field>(&self, randomness: F) -> Option<F> { + pub(crate) fn value_prev_assignment(&self) -> Option<Word> { match self { - Self::Account { - value_prev, - field_tag, - .. - } => Some(match field_tag { - AccountFieldTag::CodeHash | AccountFieldTag::Balance => { - rlc::value(&value_prev.to_le_bytes(), randomness) - } - AccountFieldTag::Nonce | AccountFieldTag::NonExisting => { - value_prev.to_scalar().unwrap() - } - }), - Self::AccountStorage { value_prev, .. } => { - Some(rlc::value(&value_prev.to_le_bytes(), randomness)) + Self::Account { value_prev, .. } | Self::AccountStorage { value_prev, .. } => { + Some(*value_prev) } Self::TxAccessListAccount { is_warm_prev, .. } | Self::TxAccessListAccountStorage { is_warm_prev, .. } => { - Some(F::from(*is_warm_prev as u64)) + Some(U256::from(*is_warm_prev as u64)) } - Self::TxRefund { value_prev, .. } => Some(F::from(*value_prev)), + Self::TxRefund { value_prev, .. } => Some(U256::from(*value_prev)), Self::Start { .. } | Self::Stack { .. } | Self::Memory { .. } @@ -645,11 +634,11 @@ impl Rw { } } - fn committed_value_assignment<F: Field>(&self, randomness: F) -> Option<F> { + fn committed_value_assignment(&self) -> Option<Word> { match self { Self::AccountStorage { committed_value, .. - } => Some(rlc::value(&committed_value.to_le_bytes(), randomness)), + } => Some(*committed_value), _ => None, } } diff --git a/zkevm-circuits/src/witness/tx.rs b/zkevm-circuits/src/witness/tx.rs deleted file mode 100644 index 38be201d3f..0000000000 --- a/zkevm-circuits/src/witness/tx.rs +++ /dev/null @@ -1,140 +0,0 @@ -use bus_mapping::circuit_input_builder; -use eth_types::{Address, Field, ToLittleEndian, ToScalar, Word}; -use halo2_proofs::circuit::Value; - -use crate::{evm_circuit::util::rlc, table::TxContextFieldTag, util::Challenges}; - -use super::{Call, ExecStep}; - -/// Transaction in a witness block -#[derive(Debug, Default, Clone)] -pub struct Transaction { - /// The transaction identifier in the block - pub id: usize, - /// The sender account nonce of the transaction - pub nonce: u64, - /// The gas limit of the transaction - pub gas: u64, - /// The gas price - pub gas_price: Word, - /// The caller address - pub caller_address: Address, - /// The callee address - pub callee_address: Address, - /// Whether it's a create transaction - pub is_create: bool, - /// The ether amount of the transaction - pub value: Word, - /// The call data - pub call_data: Vec<u8>, - /// The call data length - pub call_data_length: usize, - /// The gas cost for transaction call data - pub call_data_gas_cost: u64, - /// The calls made in the transaction - pub calls: Vec<Call>, - /// The steps executioned in the transaction - pub steps: Vec<ExecStep>, -} - -impl Transaction { - /// Assignments for tx table, split into tx_data (all fields except - /// calldata) and tx_calldata - pub fn table_assignments<F: Field>( - &self, - challenges: Challenges<Value<F>>, - ) -> [Vec<[Value<F>; 4]>; 2] { - let tx_data = vec![ - [ - Value::known(F::from(self.id as u64)), - Value::known(F::from(TxContextFieldTag::Nonce as u64)), - Value::known(F::ZERO), - Value::known(F::from(self.nonce)), - ], - [ - Value::known(F::from(self.id as u64)), - Value::known(F::from(TxContextFieldTag::Gas as u64)), - Value::known(F::ZERO), - Value::known(F::from(self.gas)), - ], - [ - Value::known(F::from(self.id as u64)), - Value::known(F::from(TxContextFieldTag::GasPrice as u64)), - Value::known(F::ZERO), - challenges - .evm_word() - .map(|challenge| rlc::value(&self.gas_price.to_le_bytes(), challenge)), - ], - [ - Value::known(F::from(self.id as u64)), - Value::known(F::from(TxContextFieldTag::CallerAddress as u64)), - Value::known(F::ZERO), - Value::known(self.caller_address.to_scalar().unwrap()), - ], - [ - Value::known(F::from(self.id as u64)), - Value::known(F::from(TxContextFieldTag::CalleeAddress as u64)), - Value::known(F::ZERO), - Value::known(self.callee_address.to_scalar().unwrap()), - ], - [ - Value::known(F::from(self.id as u64)), - Value::known(F::from(TxContextFieldTag::IsCreate as u64)), - Value::known(F::ZERO), - Value::known(F::from(self.is_create as u64)), - ], - [ - Value::known(F::from(self.id as u64)), - Value::known(F::from(TxContextFieldTag::Value as u64)), - Value::known(F::ZERO), - challenges - .evm_word() - .map(|challenge| rlc::value(&self.value.to_le_bytes(), challenge)), - ], - [ - Value::known(F::from(self.id as u64)), - Value::known(F::from(TxContextFieldTag::CallDataLength as u64)), - Value::known(F::ZERO), - Value::known(F::from(self.call_data_length as u64)), - ], - [ - Value::known(F::from(self.id as u64)), - Value::known(F::from(TxContextFieldTag::CallDataGasCost as u64)), - Value::known(F::ZERO), - Value::known(F::from(self.call_data_gas_cost)), - ], - ]; - let tx_calldata = self - .call_data - .iter() - .enumerate() - .map(|(idx, byte)| { - [ - Value::known(F::from(self.id as u64)), - Value::known(F::from(TxContextFieldTag::CallData as u64)), - Value::known(F::from(idx as u64)), - Value::known(F::from(*byte as u64)), - ] - }) - .collect(); - [tx_data, tx_calldata] - } -} - -pub(super) fn tx_convert(tx: &circuit_input_builder::Transaction, id: usize) -> Transaction { - Transaction { - id, - nonce: tx.tx.nonce.as_u64(), - gas: tx.gas(), - gas_price: tx.tx.gas_price, - caller_address: tx.tx.from, - callee_address: tx.tx.to_or_contract_addr(), - is_create: tx.is_create(), - value: tx.tx.value, - call_data: tx.tx.call_data.to_vec(), - call_data_length: tx.tx.call_data.len(), - call_data_gas_cost: tx.tx.call_data_gas_cost(), - calls: tx.calls().to_vec(), - steps: tx.steps().to_vec(), - } -}