mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-27 15:16:43 +00:00
Merge tag 'v1.15.1' into firehose-fh3.0
This commit is contained in:
commit
4664464ff8
534 changed files with 20045 additions and 10511 deletions
39
.github/CODEOWNERS
vendored
39
.github/CODEOWNERS
vendored
|
|
@ -1,25 +1,36 @@
|
||||||
# Lines starting with '#' are comments.
|
# Lines starting with '#' are comments.
|
||||||
# Each line is a file pattern followed by one or more owners.
|
# Each line is a file pattern followed by one or more owners.
|
||||||
|
|
||||||
accounts/usbwallet @karalabe
|
accounts/usbwallet/ @gballet
|
||||||
accounts/scwallet @gballet
|
accounts/scwallet/ @gballet
|
||||||
accounts/abi @gballet @MariusVanDerWijden
|
accounts/abi/ @gballet @MariusVanDerWijden
|
||||||
beacon/engine @lightclient
|
beacon/engine/ @MariusVanDerWijden @lightclient @fjl
|
||||||
cmd/clef @holiman
|
beacon/light/ @zsfelfoldi
|
||||||
cmd/evm @holiman @MariusVanDerWijden @lightclient
|
beacon/merkle/ @zsfelfoldi
|
||||||
consensus @karalabe
|
beacon/types/ @zsfelfoldi @fjl
|
||||||
core/ @karalabe @holiman @rjl493456442
|
beacon/params/ @zsfelfoldi @fjl
|
||||||
eth/ @karalabe @holiman @rjl493456442
|
cmd/clef/ @holiman
|
||||||
eth/catalyst/ @gballet @lightclient
|
cmd/evm/ @holiman @MariusVanDerWijden @lightclient
|
||||||
|
core/state/ @rjl493456442 @holiman
|
||||||
|
crypto/ @gballet @jwasinger @holiman @fjl
|
||||||
|
core/ @holiman @rjl493456442
|
||||||
|
eth/ @holiman @rjl493456442
|
||||||
|
eth/catalyst/ @MariusVanDerWijden @lightclient @fjl @jwasinger
|
||||||
eth/tracers/ @s1na
|
eth/tracers/ @s1na
|
||||||
|
ethclient/ @fjl
|
||||||
|
ethdb/ @rjl493456442
|
||||||
|
event/ @fjl
|
||||||
|
trie/ @rjl493456442
|
||||||
|
triedb/ @rjl493456442
|
||||||
core/tracing/ @s1na
|
core/tracing/ @s1na
|
||||||
graphql/ @s1na
|
graphql/ @s1na
|
||||||
internal/ethapi @lightclient
|
internal/ethapi/ @fjl @s1na @lightclient
|
||||||
internal/era @lightclient
|
internal/era/ @lightclient
|
||||||
les/ @zsfelfoldi @rjl493456442
|
metrics/ @holiman
|
||||||
light/ @zsfelfoldi @rjl493456442
|
miner/ @MariusVanDerWijden @holiman @fjl @rjl493456442
|
||||||
node/ @fjl
|
node/ @fjl
|
||||||
p2p/ @fjl @zsfelfoldi
|
p2p/ @fjl @zsfelfoldi
|
||||||
|
rlp/ @fjl
|
||||||
params/ @fjl @holiman @karalabe @gballet @rjl493456442 @zsfelfoldi
|
params/ @fjl @holiman @karalabe @gballet @rjl493456442 @zsfelfoldi
|
||||||
rpc/ @fjl @holiman
|
rpc/ @fjl @holiman
|
||||||
signer/ @holiman
|
signer/ @holiman
|
||||||
|
|
|
||||||
24
.github/workflows/go.yml
vendored
24
.github/workflows/go.yml
vendored
|
|
@ -8,6 +8,30 @@ on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
lint:
|
||||||
|
name: Lint
|
||||||
|
runs-on: self-hosted
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
# Cache build tools to avoid downloading them each time
|
||||||
|
- uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: build/cache
|
||||||
|
key: ${{ runner.os }}-build-tools-cache-${{ hashFiles('build/checksums.txt') }}
|
||||||
|
|
||||||
|
- name: Set up Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: 1.23.0
|
||||||
|
cache: false
|
||||||
|
|
||||||
|
- name: Run linters
|
||||||
|
run: |
|
||||||
|
go run build/ci.go lint
|
||||||
|
go run build/ci.go check_tidy
|
||||||
|
go run build/ci.go check_baddeps
|
||||||
|
|
||||||
build:
|
build:
|
||||||
runs-on: self-hosted
|
runs-on: self-hosted
|
||||||
steps:
|
steps:
|
||||||
|
|
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -37,6 +37,7 @@ profile.cov
|
||||||
|
|
||||||
# IdeaIDE
|
# IdeaIDE
|
||||||
.idea
|
.idea
|
||||||
|
*.iml
|
||||||
|
|
||||||
# VS Code
|
# VS Code
|
||||||
.vscode
|
.vscode
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,6 @@
|
||||||
run:
|
run:
|
||||||
timeout: 20m
|
timeout: 20m
|
||||||
tests: true
|
tests: true
|
||||||
# default is true. Enables skipping of directories:
|
|
||||||
# vendor$, third_party$, testdata$, examples$, Godeps$, builtin$
|
|
||||||
skip-dirs-use-default: true
|
|
||||||
|
|
||||||
linters:
|
linters:
|
||||||
disable-all: true
|
disable-all: true
|
||||||
|
|
@ -54,6 +51,9 @@ linters-settings:
|
||||||
exclude: [""]
|
exclude: [""]
|
||||||
|
|
||||||
issues:
|
issues:
|
||||||
|
# default is true. Enables skipping of directories:
|
||||||
|
# vendor$, third_party$, testdata$, examples$, Godeps$, builtin$
|
||||||
|
exclude-dirs-use-default: true
|
||||||
exclude-files:
|
exclude-files:
|
||||||
- core/genesis_alloc.go
|
- core/genesis_alloc.go
|
||||||
exclude-rules:
|
exclude-rules:
|
||||||
|
|
|
||||||
89
.mailmap
89
.mailmap
|
|
@ -5,6 +5,9 @@ Aaron Kumavis <kumavis@users.noreply.github.com>
|
||||||
Abel Nieto <abel.nieto90@gmail.com>
|
Abel Nieto <abel.nieto90@gmail.com>
|
||||||
Abel Nieto <abel.nieto90@gmail.com> <anietoro@uwaterloo.ca>
|
Abel Nieto <abel.nieto90@gmail.com> <anietoro@uwaterloo.ca>
|
||||||
|
|
||||||
|
Adrian Sutton <adrian@oplabs.co>
|
||||||
|
Adrian Sutton <adrian@oplabs.co> <adrian@symphonious.net>
|
||||||
|
|
||||||
Afri Schoedon <58883403+q9f@users.noreply.github.com>
|
Afri Schoedon <58883403+q9f@users.noreply.github.com>
|
||||||
Afri Schoedon <5chdn@users.noreply.github.com> <58883403+q9f@users.noreply.github.com>
|
Afri Schoedon <5chdn@users.noreply.github.com> <58883403+q9f@users.noreply.github.com>
|
||||||
|
|
||||||
|
|
@ -22,6 +25,9 @@ Alexey Akhunov <akhounov@gmail.com>
|
||||||
|
|
||||||
Alon Muroch <alonmuroch@gmail.com>
|
Alon Muroch <alonmuroch@gmail.com>
|
||||||
|
|
||||||
|
Andrei Silviu Dragnea <andreidragnea.dev@gmail.com>
|
||||||
|
Andrei Silviu Dragnea <andreidragnea.dev@gmail.com> <andreisilviudragnea@gmail.com>
|
||||||
|
|
||||||
Andrey Petrov <shazow@gmail.com>
|
Andrey Petrov <shazow@gmail.com>
|
||||||
Andrey Petrov <shazow@gmail.com> <andrey.petrov@shazow.net>
|
Andrey Petrov <shazow@gmail.com> <andrey.petrov@shazow.net>
|
||||||
|
|
||||||
|
|
@ -51,11 +57,17 @@ Chris Ziogas <ziogaschr@gmail.com> <ziogas_chr@hotmail.com>
|
||||||
|
|
||||||
Christoph Jentzsch <jentzsch.software@gmail.com>
|
Christoph Jentzsch <jentzsch.software@gmail.com>
|
||||||
|
|
||||||
|
Daniel Liu <liudaniel@qq.com>
|
||||||
|
Daniel Liu <liudaniel@qq.com> <139250065@qq.com>
|
||||||
|
|
||||||
Diederik Loerakker <proto@protolambda.com>
|
Diederik Loerakker <proto@protolambda.com>
|
||||||
|
|
||||||
Dimitry Khokhlov <winsvega@mail.ru>
|
Dimitry Khokhlov <winsvega@mail.ru>
|
||||||
|
|
||||||
|
Ha ĐANG <dvietha@gmail.com>
|
||||||
|
|
||||||
Domino Valdano <dominoplural@gmail.com>
|
Domino Valdano <dominoplural@gmail.com>
|
||||||
|
Domino Valdano <dominoplural@gmail.com> <jeff@okcupid.com>
|
||||||
|
|
||||||
Edgar Aroutiounian <edgar.factorial@gmail.com>
|
Edgar Aroutiounian <edgar.factorial@gmail.com>
|
||||||
|
|
||||||
|
|
@ -82,6 +94,9 @@ Gavin Wood <i@gavwood.com>
|
||||||
|
|
||||||
Gregg Dourgarian <greggd@tempworks.com>
|
Gregg Dourgarian <greggd@tempworks.com>
|
||||||
|
|
||||||
|
guangwu <guoguangwu@magic-shield.com>
|
||||||
|
guangwu <guoguangwu@magic-shield.com> <guoguangwug@gmail.com>
|
||||||
|
|
||||||
Guillaume Ballet <gballet@gmail.com>
|
Guillaume Ballet <gballet@gmail.com>
|
||||||
Guillaume Ballet <gballet@gmail.com> <3272758+gballet@users.noreply.github.com>
|
Guillaume Ballet <gballet@gmail.com> <3272758+gballet@users.noreply.github.com>
|
||||||
|
|
||||||
|
|
@ -95,13 +110,21 @@ Heiko Hees <heiko@heiko.org>
|
||||||
Henning Diedrich <hd@eonblast.com>
|
Henning Diedrich <hd@eonblast.com>
|
||||||
Henning Diedrich <hd@eonblast.com> Drake Burroughs <wildfyre@hotmail.com>
|
Henning Diedrich <hd@eonblast.com> Drake Burroughs <wildfyre@hotmail.com>
|
||||||
|
|
||||||
|
henridf <henri@dubfer.com>
|
||||||
|
henridf <henri@dubfer.com> <henridf@gmail.com>
|
||||||
|
|
||||||
Hwanjo Heo <34005989+hwanjo@users.noreply.github.com>
|
Hwanjo Heo <34005989+hwanjo@users.noreply.github.com>
|
||||||
|
|
||||||
|
Ikko Eltociear Ashimine <eltociear@gmail.com>
|
||||||
|
|
||||||
Iskander (Alex) Sharipov <quasilyte@gmail.com>
|
Iskander (Alex) Sharipov <quasilyte@gmail.com>
|
||||||
Iskander (Alex) Sharipov <quasilyte@gmail.com> <i.sharipov@corp.vk.com>
|
Iskander (Alex) Sharipov <quasilyte@gmail.com> <i.sharipov@corp.vk.com>
|
||||||
|
|
||||||
Jae Kwon <jkwon.work@gmail.com>
|
Jae Kwon <jkwon.work@gmail.com>
|
||||||
|
|
||||||
|
James Prestwich <james@prestwi.ch>
|
||||||
|
James Prestwich <james@prestwi.ch> <10149425+prestwich@users.noreply.github.com>
|
||||||
|
|
||||||
Janoš Guljaš <janos@resenje.org> <janos@users.noreply.github.com>
|
Janoš Guljaš <janos@resenje.org> <janos@users.noreply.github.com>
|
||||||
Janoš Guljaš <janos@resenje.org> Janos Guljas <janos@resenje.org>
|
Janoš Guljaš <janos@resenje.org> Janos Guljas <janos@resenje.org>
|
||||||
|
|
||||||
|
|
@ -120,23 +143,38 @@ Jeffrey Wilcke <jeffrey@ethereum.org> <obscuren@users.noreply.github.com>
|
||||||
|
|
||||||
Jens Agerberg <github@agerberg.me>
|
Jens Agerberg <github@agerberg.me>
|
||||||
|
|
||||||
|
Jeremy Schlatter <jeremy.schlatter@gmail.com>
|
||||||
|
Jeremy Schlatter <jeremy.schlatter@gmail.com> <jeremy@jeremyschlatter.com>
|
||||||
|
|
||||||
|
John Chase <68833933+joohhnnn@users.noreply.github.com>
|
||||||
|
|
||||||
Joseph Chow <ethereum@outlook.com>
|
Joseph Chow <ethereum@outlook.com>
|
||||||
Joseph Chow <ethereum@outlook.com> ethers <TODO>
|
Joseph Chow <ethereum@outlook.com> ethers <TODO>
|
||||||
|
|
||||||
|
|
||||||
Joseph Goulden <joegoulden@gmail.com>
|
Joseph Goulden <joegoulden@gmail.com>
|
||||||
|
|
||||||
Justin Drake <drakefjustin@gmail.com>
|
Justin Drake <drakefjustin@gmail.com>
|
||||||
|
|
||||||
|
Karl Bartel <karl.bartel@clabs.co>
|
||||||
|
Karl Bartel <karl.bartel@clabs.co> <karl@karl.berlin>
|
||||||
|
|
||||||
Kenso Trabing <ktrabing@acm.org>
|
Kenso Trabing <ktrabing@acm.org>
|
||||||
Kenso Trabing <ktrabing@acm.org> <kenso.trabing@bloomwebsite.com>
|
Kenso Trabing <ktrabing@acm.org> <kenso.trabing@bloomwebsite.com>
|
||||||
|
|
||||||
|
Liyi Guo <102356659+colinlyguo@users.noreply.github.com>
|
||||||
|
|
||||||
|
lmittmann <3458786+lmittmann@users.noreply.github.com>
|
||||||
|
lmittmann <3458786+lmittmann@users.noreply.github.com> <lmittmann@users.noreply.github.com>
|
||||||
|
|
||||||
Liang Ma <liangma@liangbit.com>
|
Liang Ma <liangma@liangbit.com>
|
||||||
Liang Ma <liangma@liangbit.com> <liangma.ul@gmail.com>
|
Liang Ma <liangma@liangbit.com> <liangma.ul@gmail.com>
|
||||||
|
|
||||||
Louis Holbrook <dev@holbrook.no>
|
Louis Holbrook <dev@holbrook.no>
|
||||||
Louis Holbrook <dev@holbrook.no> <nolash@users.noreply.github.com>
|
Louis Holbrook <dev@holbrook.no> <nolash@users.noreply.github.com>
|
||||||
|
|
||||||
|
makcandrov <makcandrov@proton.me>
|
||||||
|
makcandrov <makcandrov@proton.me> <108467407+makcandrov@users.noreply.github.com>
|
||||||
|
|
||||||
Maran Hidskes <maran.hidskes@gmail.com>
|
Maran Hidskes <maran.hidskes@gmail.com>
|
||||||
|
|
||||||
Marian Oancea <contact@siteshop.ro>
|
Marian Oancea <contact@siteshop.ro>
|
||||||
|
|
@ -144,17 +182,33 @@ Marian Oancea <contact@siteshop.ro>
|
||||||
Martin Becze <mjbecze@gmail.com>
|
Martin Becze <mjbecze@gmail.com>
|
||||||
Martin Becze <mjbecze@gmail.com> <wanderer@users.noreply.github.com>
|
Martin Becze <mjbecze@gmail.com> <wanderer@users.noreply.github.com>
|
||||||
|
|
||||||
|
Martin Holst Swende <martin@swende.se>
|
||||||
|
|
||||||
Martin Lundfall <martin.lundfall@protonmail.com>
|
Martin Lundfall <martin.lundfall@protonmail.com>
|
||||||
|
|
||||||
Matt Garnett <14004106+lightclient@users.noreply.github.com>
|
Marius van der Wijden <m.vanderwijden@live.de>
|
||||||
|
Marius van der Wijden <m.vanderwijden@live.de> <115323661+vdwijden@users.noreply.github.com>
|
||||||
|
|
||||||
|
Matt Garnett <lightclient@protonmail.com>
|
||||||
|
Matt Garnett <lightclient@protonmail.com> <14004106+lightclient@users.noreply.github.com>
|
||||||
|
|
||||||
Matthew Halpern <matthalp@gmail.com>
|
Matthew Halpern <matthalp@gmail.com>
|
||||||
Matthew Halpern <matthalp@gmail.com> <matthalp@google.com>
|
Matthew Halpern <matthalp@gmail.com> <matthalp@google.com>
|
||||||
|
|
||||||
|
meowsbits <b5c6@protonmail.com>
|
||||||
|
meowsbits <b5c6@protonmail.com> <45600330+meowsbits@users.noreply.github.com>
|
||||||
|
|
||||||
Michael Riabzev <michael@starkware.co>
|
Michael Riabzev <michael@starkware.co>
|
||||||
|
|
||||||
|
Michael de Hoog <michael.dehoog@gmail.com>
|
||||||
|
Michael de Hoog <michael.dehoog@gmail.com> <michael.dehoog@coinbase.com>
|
||||||
|
|
||||||
Nchinda Nchinda <nchinda2@gmail.com>
|
Nchinda Nchinda <nchinda2@gmail.com>
|
||||||
|
|
||||||
|
Nebojsa Urosevic <nebojsa94@users.noreply.github.com>
|
||||||
|
|
||||||
|
nedifi <103940716+nedifi@users.noreply.github.com>
|
||||||
|
|
||||||
Nick Dodson <silentcicero@outlook.com>
|
Nick Dodson <silentcicero@outlook.com>
|
||||||
|
|
||||||
Nick Johnson <arachnid@notdot.net>
|
Nick Johnson <arachnid@notdot.net>
|
||||||
|
|
@ -169,6 +223,9 @@ Olivier Hervieu <olivier.hervieu@gmail.com>
|
||||||
Pascal Dierich <pascal@merkleplant.xyz>
|
Pascal Dierich <pascal@merkleplant.xyz>
|
||||||
Pascal Dierich <pascal@merkleplant.xyz> <pascal@pascaldierich.com>
|
Pascal Dierich <pascal@merkleplant.xyz> <pascal@pascaldierich.com>
|
||||||
|
|
||||||
|
Paweł Bylica <chfast@gmail.com>
|
||||||
|
Paweł Bylica <chfast@gmail.com> <pawel@ethereum.org>
|
||||||
|
|
||||||
RJ Catalano <catalanor0220@gmail.com>
|
RJ Catalano <catalanor0220@gmail.com>
|
||||||
RJ Catalano <catalanor0220@gmail.com> <rj@erisindustries.com>
|
RJ Catalano <catalanor0220@gmail.com> <rj@erisindustries.com>
|
||||||
|
|
||||||
|
|
@ -179,8 +236,22 @@ Rene Lubov <41963722+renaynay@users.noreply.github.com>
|
||||||
Robert Zaremba <robert@zaremba.ch>
|
Robert Zaremba <robert@zaremba.ch>
|
||||||
Robert Zaremba <robert@zaremba.ch> <robert.zaremba@scale-it.pl>
|
Robert Zaremba <robert@zaremba.ch> <robert.zaremba@scale-it.pl>
|
||||||
|
|
||||||
|
Roberto Bayardo <bayardo@alum.mit.edu>
|
||||||
|
Roberto Bayardo <bayardo@alum.mit.edu> <roberto.bayardo@coinbase.com>
|
||||||
|
|
||||||
Roman Mandeleil <roman.mandeleil@gmail.com>
|
Roman Mandeleil <roman.mandeleil@gmail.com>
|
||||||
|
|
||||||
|
Sebastian Stammler <seb@oplabs.co>
|
||||||
|
Sebastian Stammler <seb@oplabs.co> <stammler.s@gmail.com>
|
||||||
|
|
||||||
|
Seungbae Yu <dbadoy4874@gmail.com>
|
||||||
|
Seungbae Yu <dbadoy4874@gmail.com> <72970043+dbadoy@users.noreply.github.com>
|
||||||
|
|
||||||
|
Sina Mahmoodi <1591639+s1na@users.noreply.github.com>
|
||||||
|
|
||||||
|
Steve Milk <wangpeculiar@gmail.com>
|
||||||
|
Steve Milk <wangpeculiar@gmail.com> <915337710@qq.com>
|
||||||
|
|
||||||
Sorin Neacsu <sorin.neacsu@gmail.com>
|
Sorin Neacsu <sorin.neacsu@gmail.com>
|
||||||
Sorin Neacsu <sorin.neacsu@gmail.com> <sorin@users.noreply.github.com>
|
Sorin Neacsu <sorin.neacsu@gmail.com> <sorin@users.noreply.github.com>
|
||||||
|
|
||||||
|
|
@ -191,8 +262,14 @@ Taylor Gerring <taylor.gerring@gmail.com> <taylor.gerring@ethereum.org>
|
||||||
|
|
||||||
Thomas Bocek <tom@tomp2p.net>
|
Thomas Bocek <tom@tomp2p.net>
|
||||||
|
|
||||||
|
tianyeyouyou <tianyeyouyou@gmail.com>
|
||||||
|
tianyeyouyou <tianyeyouyou@gmail.com> <150894831+tianyeyouyou@users.noreply.github.com>
|
||||||
|
|
||||||
Tim Cooijmans <timcooijmans@gmail.com>
|
Tim Cooijmans <timcooijmans@gmail.com>
|
||||||
|
|
||||||
|
ucwong <ethereum2k@gmail.com>
|
||||||
|
ucwong <ethereum2k@gmail.com> <ucwong@126.com>
|
||||||
|
|
||||||
Valentin Wüstholz <wuestholz@gmail.com>
|
Valentin Wüstholz <wuestholz@gmail.com>
|
||||||
Valentin Wüstholz <wuestholz@gmail.com> <wuestholz@users.noreply.github.com>
|
Valentin Wüstholz <wuestholz@gmail.com> <wuestholz@users.noreply.github.com>
|
||||||
|
|
||||||
|
|
@ -221,6 +298,9 @@ Xudong Liu <33193253+r1cs@users.noreply.github.com>
|
||||||
|
|
||||||
Yohann Léon <sybiload@gmail.com>
|
Yohann Léon <sybiload@gmail.com>
|
||||||
|
|
||||||
|
yzb <335357057@qq.com>
|
||||||
|
yzb <335357057@qq.com> <flyingyzb@gmail.com>
|
||||||
|
|
||||||
Zachinquarantine <Zachinquarantine@protonmail.com>
|
Zachinquarantine <Zachinquarantine@protonmail.com>
|
||||||
Zachinquarantine <Zachinquarantine@protonmail.com> <zachinquarantine@yahoo.com>
|
Zachinquarantine <Zachinquarantine@protonmail.com> <zachinquarantine@yahoo.com>
|
||||||
|
|
||||||
|
|
@ -228,9 +308,4 @@ Ziyuan Zhong <zzy.albert@163.com>
|
||||||
|
|
||||||
Zsolt Felföldi <zsfelfoldi@gmail.com>
|
Zsolt Felföldi <zsfelfoldi@gmail.com>
|
||||||
|
|
||||||
meowsbits <b5c6@protonmail.com>
|
|
||||||
meowsbits <b5c6@protonmail.com> <45600330+meowsbits@users.noreply.github.com>
|
|
||||||
|
|
||||||
nedifi <103940716+nedifi@users.noreply.github.com>
|
|
||||||
|
|
||||||
Максим Чусовлянов <mchusovlianov@gmail.com>
|
Максим Чусовлянов <mchusovlianov@gmail.com>
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ jobs:
|
||||||
before_install:
|
before_install:
|
||||||
- export DOCKER_CLI_EXPERIMENTAL=enabled
|
- export DOCKER_CLI_EXPERIMENTAL=enabled
|
||||||
script:
|
script:
|
||||||
- go run build/ci.go dockerx -platform "linux/amd64,linux/arm64,linux/riscv64" -upload ethereum/client-go
|
- go run build/ci.go dockerx -platform "linux/amd64,linux/arm64,linux/riscv64" -hub ethereum/client-go -upload
|
||||||
|
|
||||||
# This builder does the Linux Azure uploads
|
# This builder does the Linux Azure uploads
|
||||||
- stage: build
|
- stage: build
|
||||||
|
|
|
||||||
300
AUTHORS
300
AUTHORS
|
|
@ -1,52 +1,81 @@
|
||||||
# This is the official list of go-ethereum authors for copyright purposes.
|
# This is the official list of go-ethereum authors for copyright purposes.
|
||||||
|
|
||||||
|
0xbeny <55846654+0xbeny@users.noreply.github.com>
|
||||||
|
0xbstn <bastien-bouge@hotmail.fr>
|
||||||
|
0xe3b0c4 <110295932+0xe3b0c4@users.noreply.github.com>
|
||||||
6543 <6543@obermui.de>
|
6543 <6543@obermui.de>
|
||||||
|
6xiaowu9 <736518585@qq.com>
|
||||||
a e r t h <aerth@users.noreply.github.com>
|
a e r t h <aerth@users.noreply.github.com>
|
||||||
Aaron Buchwald <aaron.buchwald56@gmail.com>
|
Aaron Buchwald <aaron.buchwald56@gmail.com>
|
||||||
|
Aaron Chen <aaronchen.lisp@gmail.com>
|
||||||
|
Aaron Kumavis <kumavis@users.noreply.github.com>
|
||||||
|
Aayush Rajasekaran <arajasek94@gmail.com>
|
||||||
Abel Nieto <abel.nieto90@gmail.com>
|
Abel Nieto <abel.nieto90@gmail.com>
|
||||||
|
Abirdcfly <fp544037857@gmail.com>
|
||||||
Adam Babik <a.babik@designfortress.com>
|
Adam Babik <a.babik@designfortress.com>
|
||||||
Adam Schmideg <adamschmideg@users.noreply.github.com>
|
Adam Schmideg <adamschmideg@users.noreply.github.com>
|
||||||
Aditya <adityasripal@gmail.com>
|
Aditya <adityasripal@gmail.com>
|
||||||
Aditya Arora <arora.aditya520@gmail.com>
|
Aditya Arora <arora.aditya520@gmail.com>
|
||||||
|
Adrian Sutton <adrian@oplabs.co>
|
||||||
Adrià Cidre <adria.cidre@gmail.com>
|
Adrià Cidre <adria.cidre@gmail.com>
|
||||||
Afanasii Kurakin <afanasy@users.noreply.github.com>
|
Afanasii Kurakin <afanasy@users.noreply.github.com>
|
||||||
Afri Schoedon <5chdn@users.noreply.github.com>
|
Afri Schoedon <5chdn@users.noreply.github.com>
|
||||||
Agustin Armellini Fischer <armellini13@gmail.com>
|
Agustin Armellini Fischer <armellini13@gmail.com>
|
||||||
|
Ahmet Avci <ahmetabdullahavci07@gmail.com>
|
||||||
Ahyun <urbanart2251@gmail.com>
|
Ahyun <urbanart2251@gmail.com>
|
||||||
Airead <fgh1987168@gmail.com>
|
Airead <fgh1987168@gmail.com>
|
||||||
Alan Chen <alanchchen@users.noreply.github.com>
|
Alan Chen <alanchchen@users.noreply.github.com>
|
||||||
Alejandro Isaza <alejandro.isaza@gmail.com>
|
Alejandro Isaza <alejandro.isaza@gmail.com>
|
||||||
Aleksey Smyrnov <i@soar.name>
|
Aleksey Smyrnov <i@soar.name>
|
||||||
Ales Katona <ales@coinbase.com>
|
Ales Katona <ales@coinbase.com>
|
||||||
|
alex <152680487+bodhi-crypo@users.noreply.github.com>
|
||||||
Alex Beregszaszi <alex@rtfs.hu>
|
Alex Beregszaszi <alex@rtfs.hu>
|
||||||
|
Alex Gartner <github@agartner.com>
|
||||||
Alex Leverington <alex@ethdev.com>
|
Alex Leverington <alex@ethdev.com>
|
||||||
Alex Mazalov <mazalov@gmail.com>
|
Alex Mazalov <mazalov@gmail.com>
|
||||||
|
Alex Mylonas <alex.a.mylonas@gmail.com>
|
||||||
Alex Pozhilenkov <alex_pozhilenkov@adoriasoft.com>
|
Alex Pozhilenkov <alex_pozhilenkov@adoriasoft.com>
|
||||||
Alex Prut <1648497+alexprut@users.noreply.github.com>
|
Alex Prut <1648497+alexprut@users.noreply.github.com>
|
||||||
|
Alex Stokes <r.alex.stokes@gmail.com>
|
||||||
Alex Wu <wuyiding@gmail.com>
|
Alex Wu <wuyiding@gmail.com>
|
||||||
|
Alexander Mint <webinfo.alexander@gmail.com>
|
||||||
Alexander van der Meij <alexandervdm@users.noreply.github.com>
|
Alexander van der Meij <alexandervdm@users.noreply.github.com>
|
||||||
Alexander Yastrebov <yastrebov.alex@gmail.com>
|
Alexander Yastrebov <yastrebov.alex@gmail.com>
|
||||||
Alexandre Van de Sande <alex.vandesande@ethdev.com>
|
Alexandre Van de Sande <alex.vandesande@ethdev.com>
|
||||||
Alexey Akhunov <akhounov@gmail.com>
|
Alexey Akhunov <akhounov@gmail.com>
|
||||||
Alexey Shekhirin <a.shekhirin@gmail.com>
|
Alexey Shekhirin <a.shekhirin@gmail.com>
|
||||||
alexwang <39109351+dipingxian2@users.noreply.github.com>
|
alexwang <39109351+dipingxian2@users.noreply.github.com>
|
||||||
|
Alfie John <alfiedotwtf@users.noreply.github.com>
|
||||||
Ali Atiia <42751398+aliatiia@users.noreply.github.com>
|
Ali Atiia <42751398+aliatiia@users.noreply.github.com>
|
||||||
Ali Hajimirza <Ali92hm@users.noreply.github.com>
|
Ali Hajimirza <Ali92hm@users.noreply.github.com>
|
||||||
|
Alvaro Sevilla <alvarosevilla95@gmail.com>
|
||||||
am2rican5 <am2rican5@gmail.com>
|
am2rican5 <am2rican5@gmail.com>
|
||||||
|
Amin Talebi <talebi242@gmail.com>
|
||||||
|
AMIR <31338382+amiremohamadi@users.noreply.github.com>
|
||||||
AmitBRD <60668103+AmitBRD@users.noreply.github.com>
|
AmitBRD <60668103+AmitBRD@users.noreply.github.com>
|
||||||
Anatole <62328077+a2br@users.noreply.github.com>
|
Anatole <62328077+a2br@users.noreply.github.com>
|
||||||
|
Andre Patta <andre_luis@outlook.com>
|
||||||
Andrea Franz <andrea@gravityblast.com>
|
Andrea Franz <andrea@gravityblast.com>
|
||||||
|
Andrei Kostakov <bps@dzen.ws>
|
||||||
Andrei Maiboroda <andrei@ethereum.org>
|
Andrei Maiboroda <andrei@ethereum.org>
|
||||||
|
Andrei Silviu Dragnea <andreidragnea.dev@gmail.com>
|
||||||
|
Andrew Ashikhmin <34320705+yperbasis@users.noreply.github.com>
|
||||||
Andrey Petrov <shazow@gmail.com>
|
Andrey Petrov <shazow@gmail.com>
|
||||||
|
Andryanau Kanstantsin <andrianov.dev@yandex.by>
|
||||||
ANOTHEL <anothel1@naver.com>
|
ANOTHEL <anothel1@naver.com>
|
||||||
Antoine Rondelet <rondelet.antoine@gmail.com>
|
Antoine Rondelet <rondelet.antoine@gmail.com>
|
||||||
Antoine Toulme <atoulme@users.noreply.github.com>
|
Antoine Toulme <atoulme@users.noreply.github.com>
|
||||||
Anton Evangelatov <anton.evangelatov@gmail.com>
|
Anton Evangelatov <anton.evangelatov@gmail.com>
|
||||||
Antonio Salazar Cardozo <savedfastcool@gmail.com>
|
Antonio Salazar Cardozo <savedfastcool@gmail.com>
|
||||||
|
Antony Denyer <email@antonydenyer.co.uk>
|
||||||
|
Anusha <63559942+anusha-ctrl@users.noreply.github.com>
|
||||||
Arba Sasmoyo <arba.sasmoyo@gmail.com>
|
Arba Sasmoyo <arba.sasmoyo@gmail.com>
|
||||||
Armani Ferrante <armaniferrante@berkeley.edu>
|
Armani Ferrante <armaniferrante@berkeley.edu>
|
||||||
Armin Braun <me@obrown.io>
|
Armin Braun <me@obrown.io>
|
||||||
Aron Fischer <github@aron.guru>
|
Aron Fischer <github@aron.guru>
|
||||||
|
Arran Schlosberg <519948+ARR4N@users.noreply.github.com>
|
||||||
|
ArtificialPB <matej.berger@hotmail.com>
|
||||||
|
Artyom Aminov <artjoma@users.noreply.github.com>
|
||||||
atsushi-ishibashi <atsushi.ishibashi@finatext.com>
|
atsushi-ishibashi <atsushi.ishibashi@finatext.com>
|
||||||
Austin Roberts <code@ausiv.com>
|
Austin Roberts <code@ausiv.com>
|
||||||
ayeowch <ayeowch@gmail.com>
|
ayeowch <ayeowch@gmail.com>
|
||||||
|
|
@ -54,83 +83,135 @@ b00ris <b00ris@mail.ru>
|
||||||
b1ackd0t <blackd0t@protonmail.com>
|
b1ackd0t <blackd0t@protonmail.com>
|
||||||
bailantaotao <Edwin@maicoin.com>
|
bailantaotao <Edwin@maicoin.com>
|
||||||
baizhenxuan <nkbai@163.com>
|
baizhenxuan <nkbai@163.com>
|
||||||
|
Bala Murali Krishna Komatireddy <krishna192reddy@gmail.com>
|
||||||
Balaji Shetty Pachai <32358081+balajipachai@users.noreply.github.com>
|
Balaji Shetty Pachai <32358081+balajipachai@users.noreply.github.com>
|
||||||
Balint Gabor <balint.g@gmail.com>
|
Balint Gabor <balint.g@gmail.com>
|
||||||
baptiste-b-pegasys <85155432+baptiste-b-pegasys@users.noreply.github.com>
|
baptiste-b-pegasys <85155432+baptiste-b-pegasys@users.noreply.github.com>
|
||||||
Bas van Kervel <bas@ethdev.com>
|
Bas van Kervel <bas@ethdev.com>
|
||||||
Benjamin Brent <benjamin@benjaminbrent.com>
|
Benjamin Brent <benjamin@benjaminbrent.com>
|
||||||
|
Benjamin Prosnitz <bprosnitz@gmail.com>
|
||||||
benma <mbencun@gmail.com>
|
benma <mbencun@gmail.com>
|
||||||
Benoit Verkindt <benoit.verkindt@gmail.com>
|
Benoit Verkindt <benoit.verkindt@gmail.com>
|
||||||
|
Bin <49082129+songzhibin97@users.noreply.github.com>
|
||||||
Binacs <bin646891055@gmail.com>
|
Binacs <bin646891055@gmail.com>
|
||||||
|
bitcoin-lightning <153181187+AtomicInnovation321@users.noreply.github.com>
|
||||||
|
bk <5810624+bkellerman@users.noreply.github.com>
|
||||||
bloonfield <bloonfield@163.com>
|
bloonfield <bloonfield@163.com>
|
||||||
|
bnovil <lzqcn2000@126.com>
|
||||||
Bo <bohende@gmail.com>
|
Bo <bohende@gmail.com>
|
||||||
Bo Ye <boy.e.computer.1982@outlook.com>
|
Bo Ye <boy.e.computer.1982@outlook.com>
|
||||||
Bob Glickstein <bobg@users.noreply.github.com>
|
Bob Glickstein <bobg@users.noreply.github.com>
|
||||||
Boqin Qin <bobbqqin@bupt.edu.cn>
|
Boqin Qin <bobbqqin@bupt.edu.cn>
|
||||||
|
BorkBorked <107079055+BorkBorked@users.noreply.github.com>
|
||||||
Brandon Harden <b.harden92@gmail.com>
|
Brandon Harden <b.harden92@gmail.com>
|
||||||
|
Brandon Liu <lzqcn2000@126.com>
|
||||||
Brent <bmperrea@gmail.com>
|
Brent <bmperrea@gmail.com>
|
||||||
Brian Schroeder <bts@gmail.com>
|
Brian Schroeder <bts@gmail.com>
|
||||||
|
Brion <4777457+cifer76@users.noreply.github.com>
|
||||||
Bruno Škvorc <bruno@skvorc.me>
|
Bruno Škvorc <bruno@skvorc.me>
|
||||||
|
buddho <galaxystroller@gmail.com>
|
||||||
|
bugmaker9371 <167614621+bugmaker9371@users.noreply.github.com>
|
||||||
C. Brown <hackdom@majoolr.io>
|
C. Brown <hackdom@majoolr.io>
|
||||||
Caesar Chad <BLUE.WEB.GEEK@gmail.com>
|
Caesar Chad <BLUE.WEB.GEEK@gmail.com>
|
||||||
|
cam-schultz <78878559+cam-schultz@users.noreply.github.com>
|
||||||
Casey Detrio <cdetrio@gmail.com>
|
Casey Detrio <cdetrio@gmail.com>
|
||||||
|
caseylove <casey4love@foxmail.com>
|
||||||
CDsigma <cdsigma271@gmail.com>
|
CDsigma <cdsigma271@gmail.com>
|
||||||
|
Cedrick <Cedrickentrep@gmail.com>
|
||||||
Ceelog <chenwei@ceelog.org>
|
Ceelog <chenwei@ceelog.org>
|
||||||
Ceyhun Onur <ceyhun.onur@avalabs.org>
|
Ceyhun Onur <ceyhun.onur@avalabs.org>
|
||||||
chabashilah <doumodoumo@gmail.com>
|
chabashilah <doumodoumo@gmail.com>
|
||||||
changhong <changhong.yu@shanbay.com>
|
changhong <changhong.yu@shanbay.com>
|
||||||
|
Charles Cooper <cooper.charles.m@gmail.com>
|
||||||
Chase Wright <mysticryuujin@gmail.com>
|
Chase Wright <mysticryuujin@gmail.com>
|
||||||
|
Chawin Aiemvaravutigul <nick41746@hotmail.com>
|
||||||
Chen Quan <terasum@163.com>
|
Chen Quan <terasum@163.com>
|
||||||
|
chen4903 <108803001+chen4903@users.noreply.github.com>
|
||||||
Cheng Li <lob4tt@gmail.com>
|
Cheng Li <lob4tt@gmail.com>
|
||||||
chenglin <910372762@qq.com>
|
chenglin <910372762@qq.com>
|
||||||
chenyufeng <yufengcode@gmail.com>
|
chenyufeng <yufengcode@gmail.com>
|
||||||
|
Chirag Garg <38765776+DeVil2O@users.noreply.github.com>
|
||||||
|
chirag-bgh <76247491+chirag-bgh@users.noreply.github.com>
|
||||||
Chris Pacia <ctpacia@gmail.com>
|
Chris Pacia <ctpacia@gmail.com>
|
||||||
Chris Ziogas <ziogaschr@gmail.com>
|
Chris Ziogas <ziogaschr@gmail.com>
|
||||||
Christian Muehlhaeuser <muesli@gmail.com>
|
Christian Muehlhaeuser <muesli@gmail.com>
|
||||||
|
Christina <156356273+cratiu222@users.noreply.github.com>
|
||||||
Christoph Jentzsch <jentzsch.software@gmail.com>
|
Christoph Jentzsch <jentzsch.software@gmail.com>
|
||||||
|
Christopher Harrison <31964100+chrischarlesharrison@users.noreply.github.com>
|
||||||
chuwt <weitaochu@gmail.com>
|
chuwt <weitaochu@gmail.com>
|
||||||
|
cocoyeal <150209682+cocoyeal@users.noreply.github.com>
|
||||||
cong <ackratos@users.noreply.github.com>
|
cong <ackratos@users.noreply.github.com>
|
||||||
Connor Stein <connor.stein@mail.mcgill.ca>
|
Connor Stein <connor.stein@mail.mcgill.ca>
|
||||||
Corey Lin <514971757@qq.com>
|
Corey Lin <514971757@qq.com>
|
||||||
courtier <derinilter@gmail.com>
|
courtier <derinilter@gmail.com>
|
||||||
cpusoft <cpusoft@live.com>
|
cpusoft <cpusoft@live.com>
|
||||||
|
crazeteam <164632007+crazeteam@users.noreply.github.com>
|
||||||
Crispin Flowerday <crispin@bitso.com>
|
Crispin Flowerday <crispin@bitso.com>
|
||||||
croath <croathliu@gmail.com>
|
croath <croathliu@gmail.com>
|
||||||
cui <523516579@qq.com>
|
cui <523516579@qq.com>
|
||||||
|
cui fliter <imcusg@gmail.com>
|
||||||
|
cuinix <65650185+cuinix@users.noreply.github.com>
|
||||||
|
Curith <oiooj@qq.com>
|
||||||
|
cygaar <97691933+cygaar@users.noreply.github.com>
|
||||||
|
Dan Cline <6798349+Rjected@users.noreply.github.com>
|
||||||
Dan DeGreef <dan.degreef@gmail.com>
|
Dan DeGreef <dan.degreef@gmail.com>
|
||||||
Dan Kinsley <dan@joincivil.com>
|
Dan Kinsley <dan@joincivil.com>
|
||||||
|
Dan Laine <daniel.laine@avalabs.org>
|
||||||
Dan Sosedoff <dan.sosedoff@gmail.com>
|
Dan Sosedoff <dan.sosedoff@gmail.com>
|
||||||
|
danceratopz <danceratopz@gmail.com>
|
||||||
Daniel A. Nagy <nagy.da@gmail.com>
|
Daniel A. Nagy <nagy.da@gmail.com>
|
||||||
|
Daniel Fernandes <711733+daferna@users.noreply.github.com>
|
||||||
|
Daniel Katzan <108216499+dkatzan@users.noreply.github.com>
|
||||||
|
Daniel Knopik <107140945+dknopik@users.noreply.github.com>
|
||||||
|
Daniel Liu <liudaniel@qq.com>
|
||||||
Daniel Perez <daniel@perez.sh>
|
Daniel Perez <daniel@perez.sh>
|
||||||
Daniel Sloof <goapsychadelic@gmail.com>
|
Daniel Sloof <goapsychadelic@gmail.com>
|
||||||
|
Danno Ferrin <danno@numisight.com>
|
||||||
|
Danyal Prout <me@dany.al>
|
||||||
Darioush Jalali <darioush.jalali@avalabs.org>
|
Darioush Jalali <darioush.jalali@avalabs.org>
|
||||||
Darrel Herbst <dherbst@gmail.com>
|
Darrel Herbst <dherbst@gmail.com>
|
||||||
|
Darren Kelly <107671032+darrenvechain@users.noreply.github.com>
|
||||||
|
dashangcun <907225865@qq.com>
|
||||||
Dave Appleton <calistralabs@gmail.com>
|
Dave Appleton <calistralabs@gmail.com>
|
||||||
Dave McGregor <dave.s.mcgregor@gmail.com>
|
Dave McGregor <dave.s.mcgregor@gmail.com>
|
||||||
David Cai <davidcai1993@yahoo.com>
|
David Cai <davidcai1993@yahoo.com>
|
||||||
|
David Dzhalaev <72649244+DavidRomanovizc@users.noreply.github.com>
|
||||||
David Huie <dahuie@gmail.com>
|
David Huie <dahuie@gmail.com>
|
||||||
|
David Murdoch <187813+davidmurdoch@users.noreply.github.com>
|
||||||
|
David Theodore <29786815+infosecual@users.noreply.github.com>
|
||||||
|
ddl <ddl196526@163.com>
|
||||||
|
Dean Eigenmann <7621705+decanus@users.noreply.github.com>
|
||||||
|
Delweng <delweng@gmail.com>
|
||||||
Denver <aeharvlee@gmail.com>
|
Denver <aeharvlee@gmail.com>
|
||||||
Derek Chiang <me@derekchiang.com>
|
Derek Chiang <me@derekchiang.com>
|
||||||
Derek Gottfrid <derek@codecubed.com>
|
Derek Gottfrid <derek@codecubed.com>
|
||||||
|
deterclosed <164524498+deterclosed@users.noreply.github.com>
|
||||||
|
Devon Bear <itsdevbear@berachain.com>
|
||||||
Di Peng <pendyaaa@gmail.com>
|
Di Peng <pendyaaa@gmail.com>
|
||||||
Diederik Loerakker <proto@protolambda.com>
|
Diederik Loerakker <proto@protolambda.com>
|
||||||
Diego Siqueira <DiSiqueira@users.noreply.github.com>
|
Diego Siqueira <DiSiqueira@users.noreply.github.com>
|
||||||
Diep Pham <mrfavadi@gmail.com>
|
Diep Pham <mrfavadi@gmail.com>
|
||||||
|
Dimitris Apostolou <dimitris.apostolou@icloud.com>
|
||||||
dipingxian2 <39109351+dipingxian2@users.noreply.github.com>
|
dipingxian2 <39109351+dipingxian2@users.noreply.github.com>
|
||||||
divergencetech <94644849+divergencetech@users.noreply.github.com>
|
divergencetech <94644849+divergencetech@users.noreply.github.com>
|
||||||
|
dknopik <107140945+dknopik@users.noreply.github.com>
|
||||||
dm4 <sunrisedm4@gmail.com>
|
dm4 <sunrisedm4@gmail.com>
|
||||||
Dmitrij Koniajev <dimchansky@gmail.com>
|
Dmitrij Koniajev <dimchansky@gmail.com>
|
||||||
Dmitry Shulyak <yashulyak@gmail.com>
|
Dmitry Shulyak <yashulyak@gmail.com>
|
||||||
Dmitry Zenovich <dzenovich@gmail.com>
|
Dmitry Zenovich <dzenovich@gmail.com>
|
||||||
Domino Valdano <dominoplural@gmail.com>
|
Domino Valdano <dominoplural@gmail.com>
|
||||||
|
DongXi Huang <418498589@qq.com>
|
||||||
Dragan Milic <dragan@netice9.com>
|
Dragan Milic <dragan@netice9.com>
|
||||||
dragonvslinux <35779158+dragononcrypto@users.noreply.github.com>
|
dragonvslinux <35779158+dragononcrypto@users.noreply.github.com>
|
||||||
|
Dylan Vassallo <dylan.vassallo@hotmail.com>
|
||||||
|
easyfold <137396765+easyfold@users.noreply.github.com>
|
||||||
Edgar Aroutiounian <edgar.factorial@gmail.com>
|
Edgar Aroutiounian <edgar.factorial@gmail.com>
|
||||||
Eduard S <eduardsanou@posteo.net>
|
Eduard S <eduardsanou@posteo.net>
|
||||||
Egon Elbre <egonelbre@gmail.com>
|
Egon Elbre <egonelbre@gmail.com>
|
||||||
Elad <theman@elad.im>
|
Elad <theman@elad.im>
|
||||||
Eli <elihanover@yahoo.com>
|
Eli <elihanover@yahoo.com>
|
||||||
Elias Naur <elias.naur@gmail.com>
|
Elias Naur <elias.naur@gmail.com>
|
||||||
|
Elias Rad <146735585+nnsW3@users.noreply.github.com>
|
||||||
Elliot Shepherd <elliot@identitii.com>
|
Elliot Shepherd <elliot@identitii.com>
|
||||||
Emil <mursalimovemeel@gmail.com>
|
Emil <mursalimovemeel@gmail.com>
|
||||||
emile <emile@users.noreply.github.com>
|
emile <emile@users.noreply.github.com>
|
||||||
|
|
@ -151,11 +232,13 @@ Evgeny <awesome.observer@yandex.com>
|
||||||
Evgeny Danilenko <6655321@bk.ru>
|
Evgeny Danilenko <6655321@bk.ru>
|
||||||
evgk <evgeniy.kamyshev@gmail.com>
|
evgk <evgeniy.kamyshev@gmail.com>
|
||||||
Evolution404 <35091674+Evolution404@users.noreply.github.com>
|
Evolution404 <35091674+Evolution404@users.noreply.github.com>
|
||||||
|
Exca-DK <85954505+Exca-DK@users.noreply.github.com>
|
||||||
EXEC <execvy@gmail.com>
|
EXEC <execvy@gmail.com>
|
||||||
Fabian Vogelsteller <fabian@frozeman.de>
|
Fabian Vogelsteller <fabian@frozeman.de>
|
||||||
Fabio Barone <fabio.barone.co@gmail.com>
|
Fabio Barone <fabio.barone.co@gmail.com>
|
||||||
Fabio Berger <fabioberger1991@gmail.com>
|
Fabio Berger <fabioberger1991@gmail.com>
|
||||||
FaceHo <facehoshi@gmail.com>
|
FaceHo <facehoshi@gmail.com>
|
||||||
|
felipe <fselmo2@gmail.com>
|
||||||
Felipe Strozberg <48066928+FelStroz@users.noreply.github.com>
|
Felipe Strozberg <48066928+FelStroz@users.noreply.github.com>
|
||||||
Felix Lange <fjl@twurst.com>
|
Felix Lange <fjl@twurst.com>
|
||||||
Ferenc Szabo <frncmx@gmail.com>
|
Ferenc Szabo <frncmx@gmail.com>
|
||||||
|
|
@ -163,68 +246,102 @@ ferhat elmas <elmas.ferhat@gmail.com>
|
||||||
Ferran Borreguero <ferranbt@protonmail.com>
|
Ferran Borreguero <ferranbt@protonmail.com>
|
||||||
Fiisio <liangcszzu@163.com>
|
Fiisio <liangcszzu@163.com>
|
||||||
Fire Man <55934298+basdevelop@users.noreply.github.com>
|
Fire Man <55934298+basdevelop@users.noreply.github.com>
|
||||||
|
FletcherMan <fanciture@163.com>
|
||||||
flowerofdream <775654398@qq.com>
|
flowerofdream <775654398@qq.com>
|
||||||
fomotrader <82184770+fomotrader@users.noreply.github.com>
|
fomotrader <82184770+fomotrader@users.noreply.github.com>
|
||||||
|
Ford <153042616+guerrierindien@users.noreply.github.com>
|
||||||
ForLina <471133417@qq.com>
|
ForLina <471133417@qq.com>
|
||||||
Frank Szendzielarz <33515470+FrankSzendzielarz@users.noreply.github.com>
|
Frank Szendzielarz <33515470+FrankSzendzielarz@users.noreply.github.com>
|
||||||
Frank Wang <eternnoir@gmail.com>
|
Frank Wang <eternnoir@gmail.com>
|
||||||
Franklin <mr_franklin@126.com>
|
Franklin <mr_franklin@126.com>
|
||||||
|
Freeman Jiang <freeman.jiang.ca@gmail.com>
|
||||||
Furkan KAMACI <furkankamaci@gmail.com>
|
Furkan KAMACI <furkankamaci@gmail.com>
|
||||||
Fuyang Deng <dengfuyang@outlook.com>
|
Fuyang Deng <dengfuyang@outlook.com>
|
||||||
GagziW <leon.stanko@rwth-aachen.de>
|
GagziW <leon.stanko@rwth-aachen.de>
|
||||||
Gary Rong <garyrong0905@gmail.com>
|
Gary Rong <garyrong0905@gmail.com>
|
||||||
Gautam Botrel <gautam.botrel@gmail.com>
|
Gautam Botrel <gautam.botrel@gmail.com>
|
||||||
|
Gealber Morales <48373523+Gealber@users.noreply.github.com>
|
||||||
|
George Ma <164313692+availhang@users.noreply.github.com>
|
||||||
George Ornbo <george@shapeshed.com>
|
George Ornbo <george@shapeshed.com>
|
||||||
|
georgehao <haohongfan@gmail.com>
|
||||||
|
gitglorythegreat <t4juu3@proton.me>
|
||||||
Giuseppe Bertone <bertone.giuseppe@gmail.com>
|
Giuseppe Bertone <bertone.giuseppe@gmail.com>
|
||||||
Greg Colvin <greg@colvin.org>
|
Greg Colvin <greg@colvin.org>
|
||||||
Gregg Dourgarian <greggd@tempworks.com>
|
Gregg Dourgarian <greggd@tempworks.com>
|
||||||
Gregory Markou <16929357+GregTheGreek@users.noreply.github.com>
|
Gregory Markou <16929357+GregTheGreek@users.noreply.github.com>
|
||||||
|
guangwu <guoguangwu@magic-shield.com>
|
||||||
|
Guido Vranken <guidovranken@users.noreply.github.com>
|
||||||
Guifel <toowik@gmail.com>
|
Guifel <toowik@gmail.com>
|
||||||
Guilherme Salgado <gsalgado@gmail.com>
|
Guilherme Salgado <gsalgado@gmail.com>
|
||||||
Guillaume Ballet <gballet@gmail.com>
|
Guillaume Ballet <gballet@gmail.com>
|
||||||
|
Guillaume Michel <guillaumemichel@users.noreply.github.com>
|
||||||
Guillaume Nicolas <guin56@gmail.com>
|
Guillaume Nicolas <guin56@gmail.com>
|
||||||
GuiltyMorishita <morilliantblue@gmail.com>
|
GuiltyMorishita <morilliantblue@gmail.com>
|
||||||
Guruprasad Kamath <48196632+gurukamath@users.noreply.github.com>
|
Guruprasad Kamath <48196632+gurukamath@users.noreply.github.com>
|
||||||
Gus <yo@soygus.com>
|
Gus <yo@soygus.com>
|
||||||
Gustav Simonsson <gustav.simonsson@gmail.com>
|
Gustav Simonsson <gustav.simonsson@gmail.com>
|
||||||
|
Gustavo Silva <GustavoRSSilva@users.noreply.github.com>
|
||||||
Gísli Kristjánsson <gislik@hamstur.is>
|
Gísli Kristjánsson <gislik@hamstur.is>
|
||||||
Ha ĐANG <dvietha@gmail.com>
|
Ha ĐANG <dvietha@gmail.com>
|
||||||
HackyMiner <hackyminer@gmail.com>
|
HackyMiner <hackyminer@gmail.com>
|
||||||
hadv <dvietha@gmail.com>
|
Halimao <1065621723@qq.com>
|
||||||
Hanjiang Yu <delacroix.yu@gmail.com>
|
Hanjiang Yu <delacroix.yu@gmail.com>
|
||||||
Hao Bryan Cheng <haobcheng@gmail.com>
|
Hao Bryan Cheng <haobcheng@gmail.com>
|
||||||
Hao Duan <duanhao0814@gmail.com>
|
Hao Duan <duanhao0814@gmail.com>
|
||||||
|
haoran <159284258+hr98w@users.noreply.github.com>
|
||||||
|
Haotian <51777534+tmelhao@users.noreply.github.com>
|
||||||
HAOYUatHZ <37070449+HAOYUatHZ@users.noreply.github.com>
|
HAOYUatHZ <37070449+HAOYUatHZ@users.noreply.github.com>
|
||||||
Harry Dutton <me@bytejedi.com>
|
Harry Dutton <me@bytejedi.com>
|
||||||
|
Harry Kalodner <harry.kalodner@gmail.com>
|
||||||
haryu703 <34744512+haryu703@users.noreply.github.com>
|
haryu703 <34744512+haryu703@users.noreply.github.com>
|
||||||
|
hattizai <hattizai@gmail.com>
|
||||||
Hendrik Hofstadt <hendrik@nexantic.com>
|
Hendrik Hofstadt <hendrik@nexantic.com>
|
||||||
Henning Diedrich <hd@eonblast.com>
|
Henning Diedrich <hd@eonblast.com>
|
||||||
henopied <13500516+henopied@users.noreply.github.com>
|
henopied <13500516+henopied@users.noreply.github.com>
|
||||||
|
henridf <henri@dubfer.com>
|
||||||
|
Henry <101552941+henry-0@users.noreply.github.com>
|
||||||
hero5512 <lvshuaino@gmail.com>
|
hero5512 <lvshuaino@gmail.com>
|
||||||
holisticode <holistic.computing@gmail.com>
|
holisticode <holistic.computing@gmail.com>
|
||||||
Hongbin Mao <hello2mao@gmail.com>
|
Hongbin Mao <hello2mao@gmail.com>
|
||||||
Hsien-Tang Kao <htkao@pm.me>
|
Hsien-Tang Kao <htkao@pm.me>
|
||||||
hsyodyssey <47173566+hsyodyssey@users.noreply.github.com>
|
hsyodyssey <47173566+hsyodyssey@users.noreply.github.com>
|
||||||
|
Hteev Oli <gethorz@proton.me>
|
||||||
Husam Ibrahim <39692071+HusamIbrahim@users.noreply.github.com>
|
Husam Ibrahim <39692071+HusamIbrahim@users.noreply.github.com>
|
||||||
Hwanjo Heo <34005989+hwanjo@users.noreply.github.com>
|
Hwanjo Heo <34005989+hwanjo@users.noreply.github.com>
|
||||||
hydai <z54981220@gmail.com>
|
hydai <z54981220@gmail.com>
|
||||||
|
hyhnet <cyrusyun@qq.com>
|
||||||
|
hyunchel <3271191+hyunchel@users.noreply.github.com>
|
||||||
Hyung-Kyu Hqueue Choi <hyungkyu.choi@gmail.com>
|
Hyung-Kyu Hqueue Choi <hyungkyu.choi@gmail.com>
|
||||||
|
Hyunsoo Shin (Lake) <hyunsooda@kaist.ac.kr>
|
||||||
|
hzysvilla <ecjgvmhc@gmail.com>
|
||||||
Håvard Anda Estensen <haavard.ae@gmail.com>
|
Håvard Anda Estensen <haavard.ae@gmail.com>
|
||||||
Ian Macalinao <me@ian.pw>
|
Ian Macalinao <me@ian.pw>
|
||||||
Ian Norden <iannordenn@gmail.com>
|
Ian Norden <iannordenn@gmail.com>
|
||||||
|
Icarus Wu <icaruswu66@qq.com>
|
||||||
icodezjb <icodezjb@163.com>
|
icodezjb <icodezjb@163.com>
|
||||||
Ikko Ashimine <eltociear@gmail.com>
|
ids <tonyhaha163@163.com>
|
||||||
|
Ignacio Hagopian <jsign.uy@gmail.com>
|
||||||
|
Ikko Eltociear Ashimine <eltociear@gmail.com>
|
||||||
Ilan Gitter <8359193+gitteri@users.noreply.github.com>
|
Ilan Gitter <8359193+gitteri@users.noreply.github.com>
|
||||||
|
imalasong <55082705+imalasong@users.noreply.github.com>
|
||||||
ImanSharaf <78227895+ImanSharaf@users.noreply.github.com>
|
ImanSharaf <78227895+ImanSharaf@users.noreply.github.com>
|
||||||
|
imulmat4 <117636097+imulmat4@users.noreply.github.com>
|
||||||
|
Inphi <mlaw2501@gmail.com>
|
||||||
|
int88 <106391185+int88@users.noreply.github.com>
|
||||||
Isidoro Ghezzi <isidoro.ghezzi@icloud.com>
|
Isidoro Ghezzi <isidoro.ghezzi@icloud.com>
|
||||||
Iskander (Alex) Sharipov <quasilyte@gmail.com>
|
Iskander (Alex) Sharipov <quasilyte@gmail.com>
|
||||||
|
Ivan Aracki <aracki.ivan@gmail.com>
|
||||||
Ivan Bogatyy <bogatyi@gmail.com>
|
Ivan Bogatyy <bogatyi@gmail.com>
|
||||||
Ivan Daniluk <ivan.daniluk@gmail.com>
|
Ivan Daniluk <ivan.daniluk@gmail.com>
|
||||||
Ivo Georgiev <ivo@strem.io>
|
Ivo Georgiev <ivo@strem.io>
|
||||||
|
j2gg0s <j2gg0s@gmail.com>
|
||||||
jacksoom <lifengliu1994@gmail.com>
|
jacksoom <lifengliu1994@gmail.com>
|
||||||
|
jackyin <648588267@qq.com>
|
||||||
Jae Kwon <jkwon.work@gmail.com>
|
Jae Kwon <jkwon.work@gmail.com>
|
||||||
James Prestwich <10149425+prestwich@users.noreply.github.com>
|
Jakub Freebit <49676311+jakub-freebit@users.noreply.github.com>
|
||||||
|
James Prestwich <james@prestwi.ch>
|
||||||
Jamie Pitts <james.pitts@gmail.com>
|
Jamie Pitts <james.pitts@gmail.com>
|
||||||
|
Janko Simonovic <simonovic86@gmail.com>
|
||||||
Janoš Guljaš <janos@resenje.org>
|
Janoš Guljaš <janos@resenje.org>
|
||||||
Jared Wasinger <j-wasinger@hotmail.com>
|
Jared Wasinger <j-wasinger@hotmail.com>
|
||||||
Jason Carver <jacarver@linkedin.com>
|
Jason Carver <jacarver@linkedin.com>
|
||||||
|
|
@ -239,42 +356,63 @@ Jeff Wentworth <jeff@curvegrid.com>
|
||||||
Jeffery Robert Walsh <rlxrlps@gmail.com>
|
Jeffery Robert Walsh <rlxrlps@gmail.com>
|
||||||
Jeffrey Wilcke <jeffrey@ethereum.org>
|
Jeffrey Wilcke <jeffrey@ethereum.org>
|
||||||
Jens Agerberg <github@agerberg.me>
|
Jens Agerberg <github@agerberg.me>
|
||||||
|
Jens W <8270201+DragonDev1906@users.noreply.github.com>
|
||||||
Jeremy McNevin <jeremy.mcnevin@optum.com>
|
Jeremy McNevin <jeremy.mcnevin@optum.com>
|
||||||
Jeremy Schlatter <jeremy.schlatter@gmail.com>
|
Jeremy Schlatter <jeremy.schlatter@gmail.com>
|
||||||
Jerzy Lasyk <jerzylasyk@gmail.com>
|
Jerzy Lasyk <jerzylasyk@gmail.com>
|
||||||
Jesse Tane <jesse.tane@gmail.com>
|
Jesse Tane <jesse.tane@gmail.com>
|
||||||
Jia Chenhui <jiachenhui1989@gmail.com>
|
Jia Chenhui <jiachenhui1989@gmail.com>
|
||||||
Jim McDonald <Jim@mcdee.net>
|
Jim McDonald <Jim@mcdee.net>
|
||||||
|
jin <35813306+lochjin@users.noreply.github.com>
|
||||||
jk-jeongkyun <45347815+jeongkyun-oh@users.noreply.github.com>
|
jk-jeongkyun <45347815+jeongkyun-oh@users.noreply.github.com>
|
||||||
jkcomment <jkcomment@gmail.com>
|
jkcomment <jkcomment@gmail.com>
|
||||||
|
Joe Netti <joe@netti.dev>
|
||||||
JoeGruffins <34998433+JoeGruffins@users.noreply.github.com>
|
JoeGruffins <34998433+JoeGruffins@users.noreply.github.com>
|
||||||
Joel Burget <joelburget@gmail.com>
|
Joel Burget <joelburget@gmail.com>
|
||||||
John C. Vernaleo <john@netpurgatory.com>
|
John C. Vernaleo <john@netpurgatory.com>
|
||||||
|
John Chase <68833933+joohhnnn@users.noreply.github.com>
|
||||||
John Difool <johndifoolpi@gmail.com>
|
John Difool <johndifoolpi@gmail.com>
|
||||||
|
John Hilliard <jhilliard@polygon.technology>
|
||||||
|
John Xu <dyxushuai@gmail.com>
|
||||||
Johns Beharry <johns@peakshift.com>
|
Johns Beharry <johns@peakshift.com>
|
||||||
|
Jolly Zhao <zhaolei@pm.me>
|
||||||
Jonas <felberj@users.noreply.github.com>
|
Jonas <felberj@users.noreply.github.com>
|
||||||
Jonathan Brown <jbrown@bluedroplet.com>
|
Jonathan Brown <jbrown@bluedroplet.com>
|
||||||
Jonathan Chappelow <chappjc@users.noreply.github.com>
|
Jonathan Chappelow <chappjc@users.noreply.github.com>
|
||||||
Jonathan Gimeno <jgimeno@gmail.com>
|
Jonathan Gimeno <jgimeno@gmail.com>
|
||||||
|
Jonathan Otto <jonathan.otto@gmail.com>
|
||||||
JoranHonig <JoranHonig@users.noreply.github.com>
|
JoranHonig <JoranHonig@users.noreply.github.com>
|
||||||
Jordan Krage <jmank88@gmail.com>
|
Jordan Krage <jmank88@gmail.com>
|
||||||
|
Jorge <jorgeacortes@users.noreply.github.com>
|
||||||
Jorropo <jorropo.pgm@gmail.com>
|
Jorropo <jorropo.pgm@gmail.com>
|
||||||
Joseph Chow <ethereum@outlook.com>
|
Joseph Chow <ethereum@outlook.com>
|
||||||
|
Joseph Cook <33655003+jmcook1186@users.noreply.github.com>
|
||||||
Joshua Colvin <jcolvin@offchainlabs.com>
|
Joshua Colvin <jcolvin@offchainlabs.com>
|
||||||
Joshua Gutow <jbgutow@gmail.com>
|
Joshua Gutow <jbgutow@gmail.com>
|
||||||
jovijovi <mageyul@hotmail.com>
|
jovijovi <mageyul@hotmail.com>
|
||||||
|
jp-imx <109574657+jp-imx@users.noreply.github.com>
|
||||||
jtakalai <juuso.takalainen@streamr.com>
|
jtakalai <juuso.takalainen@streamr.com>
|
||||||
JU HYEONG PARK <dkdkajej@gmail.com>
|
JU HYEONG PARK <dkdkajej@gmail.com>
|
||||||
Julian Y <jyap808@users.noreply.github.com>
|
Julian Y <jyap808@users.noreply.github.com>
|
||||||
Justin Clark-Casey <justincc@justincc.org>
|
Justin Clark-Casey <justincc@justincc.org>
|
||||||
|
Justin Dhillon <justin.singh.dhillon@gmail.com>
|
||||||
Justin Drake <drakefjustin@gmail.com>
|
Justin Drake <drakefjustin@gmail.com>
|
||||||
|
Justin Traglia <95511699+jtraglia@users.noreply.github.com>
|
||||||
Justus <jus@gtsbr.org>
|
Justus <jus@gtsbr.org>
|
||||||
|
KAI <35927054+ThreeAndTwo@users.noreply.github.com>
|
||||||
|
kaliubuntu0206 <139627505+kaliubuntu0206@users.noreply.github.com>
|
||||||
|
Karl Bartel <karl.bartel@clabs.co>
|
||||||
|
Karol Chojnowski <karolchojnowski95@gmail.com>
|
||||||
Kawashima <91420903+sscodereth@users.noreply.github.com>
|
Kawashima <91420903+sscodereth@users.noreply.github.com>
|
||||||
|
kazak <alright-epsilon8h@icloud.com>
|
||||||
ken10100147 <sunhongping@kanjian.com>
|
ken10100147 <sunhongping@kanjian.com>
|
||||||
Kenji Siu <kenji@isuntv.com>
|
Kenji Siu <kenji@isuntv.com>
|
||||||
Kenso Trabing <ktrabing@acm.org>
|
Kenso Trabing <ktrabing@acm.org>
|
||||||
|
Kero <keroroxx520@gmail.com>
|
||||||
|
kevaundray <kevtheappdev@gmail.com>
|
||||||
Kevin <denk.kevin@web.de>
|
Kevin <denk.kevin@web.de>
|
||||||
kevin.xu <cming.xu@gmail.com>
|
kevin.xu <cming.xu@gmail.com>
|
||||||
|
Kiarash Hajian <133909368+kiarash8112@users.noreply.github.com>
|
||||||
KibGzr <kibgzr@gmail.com>
|
KibGzr <kibgzr@gmail.com>
|
||||||
kiel barry <kiel.j.barry@gmail.com>
|
kiel barry <kiel.j.barry@gmail.com>
|
||||||
kilic <onurkilic1004@gmail.com>
|
kilic <onurkilic1004@gmail.com>
|
||||||
|
|
@ -282,8 +420,10 @@ kimmylin <30611210+kimmylin@users.noreply.github.com>
|
||||||
Kitten King <53072918+kittenking@users.noreply.github.com>
|
Kitten King <53072918+kittenking@users.noreply.github.com>
|
||||||
knarfeh <hejun1874@gmail.com>
|
knarfeh <hejun1874@gmail.com>
|
||||||
Kobi Gurkan <kobigurk@gmail.com>
|
Kobi Gurkan <kobigurk@gmail.com>
|
||||||
|
Koichi Shiraishi <zchee.io@gmail.com>
|
||||||
komika <komika@komika.org>
|
komika <komika@komika.org>
|
||||||
Konrad Feldmeier <konrad@brainbot.com>
|
Konrad Feldmeier <konrad@brainbot.com>
|
||||||
|
Kosuke Taniguchi <73885532+TaniguchiKosuke@users.noreply.github.com>
|
||||||
Kris Shinn <raggamuffin.music@gmail.com>
|
Kris Shinn <raggamuffin.music@gmail.com>
|
||||||
Kristofer Peterson <svenski123@users.noreply.github.com>
|
Kristofer Peterson <svenski123@users.noreply.github.com>
|
||||||
Kumar Anirudha <mail@anirudha.dev>
|
Kumar Anirudha <mail@anirudha.dev>
|
||||||
|
|
@ -296,6 +436,8 @@ Lefteris Karapetsas <lefteris@refu.co>
|
||||||
Leif Jurvetson <leijurv@gmail.com>
|
Leif Jurvetson <leijurv@gmail.com>
|
||||||
Leo Shklovskii <leo@thermopylae.net>
|
Leo Shklovskii <leo@thermopylae.net>
|
||||||
LeoLiao <leofantast@gmail.com>
|
LeoLiao <leofantast@gmail.com>
|
||||||
|
Leon <316032931@qq.com>
|
||||||
|
levisyin <150114626+levisyin@users.noreply.github.com>
|
||||||
Lewis Marshall <lewis@lmars.net>
|
Lewis Marshall <lewis@lmars.net>
|
||||||
lhendre <lhendre2@gmail.com>
|
lhendre <lhendre2@gmail.com>
|
||||||
Li Dongwei <lidw1988@126.com>
|
Li Dongwei <lidw1988@126.com>
|
||||||
|
|
@ -305,36 +447,58 @@ libby kent <viskovitzzz@gmail.com>
|
||||||
libotony <liboliqi@gmail.com>
|
libotony <liboliqi@gmail.com>
|
||||||
LieutenantRoger <dijsky_2015@hotmail.com>
|
LieutenantRoger <dijsky_2015@hotmail.com>
|
||||||
ligi <ligi@ligi.de>
|
ligi <ligi@ligi.de>
|
||||||
|
lilasxie <thanklilas@163.com>
|
||||||
|
Lindlof <mikael@lindlof.io>
|
||||||
Lio李欧 <lionello@users.noreply.github.com>
|
Lio李欧 <lionello@users.noreply.github.com>
|
||||||
lmittmann <lmittmann@users.noreply.github.com>
|
Liyi Guo <102356659+colinlyguo@users.noreply.github.com>
|
||||||
|
llkhacquan <3724362+llkhacquan@users.noreply.github.com>
|
||||||
|
lmittmann <3458786+lmittmann@users.noreply.github.com>
|
||||||
|
lorenzo <31852651+lorenzo-dev1@users.noreply.github.com>
|
||||||
Lorenzo Manacorda <lorenzo@kinvolk.io>
|
Lorenzo Manacorda <lorenzo@kinvolk.io>
|
||||||
Louis Holbrook <dev@holbrook.no>
|
Louis Holbrook <dev@holbrook.no>
|
||||||
Luca Zeug <luclu@users.noreply.github.com>
|
Luca Zeug <luclu@users.noreply.github.com>
|
||||||
|
Lucas <lucaslg360@gmail.com>
|
||||||
Lucas Hendren <lhendre2@gmail.com>
|
Lucas Hendren <lhendre2@gmail.com>
|
||||||
|
Luozhu <70309026+LuozhuZhang@users.noreply.github.com>
|
||||||
|
lwh <lwhile521@gmail.com>
|
||||||
lzhfromustc <43191155+lzhfromustc@users.noreply.github.com>
|
lzhfromustc <43191155+lzhfromustc@users.noreply.github.com>
|
||||||
|
Maciej Kulawik <10907694+magicxyyz@users.noreply.github.com>
|
||||||
|
Madhur Shrimal <madhur.shrimal@gmail.com>
|
||||||
Magicking <s@6120.eu>
|
Magicking <s@6120.eu>
|
||||||
|
makcandrov <makcandrov@proton.me>
|
||||||
manlio <manlio.poltronieri@gmail.com>
|
manlio <manlio.poltronieri@gmail.com>
|
||||||
|
Manoj Kumar <mnjkmr398@gmail.com>
|
||||||
Maran Hidskes <maran.hidskes@gmail.com>
|
Maran Hidskes <maran.hidskes@gmail.com>
|
||||||
|
Marcin Sobczak <77129288+marcindsobczak@users.noreply.github.com>
|
||||||
|
Marcus Baldassarre <baldassarremarcus@gmail.com>
|
||||||
Marek Kotewicz <marek.kotewicz@gmail.com>
|
Marek Kotewicz <marek.kotewicz@gmail.com>
|
||||||
Mariano Cortesi <mcortesi@gmail.com>
|
Mariano Cortesi <mcortesi@gmail.com>
|
||||||
|
Mario Vega <marioevz@gmail.com>
|
||||||
|
Marius G <90795310+bearpebble@users.noreply.github.com>
|
||||||
|
Marius Kjærstad <sandakersmann@users.noreply.github.com>
|
||||||
Marius van der Wijden <m.vanderwijden@live.de>
|
Marius van der Wijden <m.vanderwijden@live.de>
|
||||||
Mark <markya0616@gmail.com>
|
Mark <markya0616@gmail.com>
|
||||||
Mark Rushakoff <mark.rushakoff@gmail.com>
|
Mark Rushakoff <mark.rushakoff@gmail.com>
|
||||||
|
Mark Tyneway <mark.tyneway@gmail.com>
|
||||||
mark.lin <mark@maicoin.com>
|
mark.lin <mark@maicoin.com>
|
||||||
|
markus <55011443+mdymalla@users.noreply.github.com>
|
||||||
|
Marquis Shanahan <29431502+9547@users.noreply.github.com>
|
||||||
Martin Alex Philip Dawson <u1356770@gmail.com>
|
Martin Alex Philip Dawson <u1356770@gmail.com>
|
||||||
Martin Holst Swende <martin@swende.se>
|
Martin Holst Swende <martin@swende.se>
|
||||||
Martin Klepsch <martinklepsch@googlemail.com>
|
Martin Klepsch <martinklepsch@googlemail.com>
|
||||||
Martin Lundfall <martin.lundfall@protonmail.com>
|
Martin Lundfall <martin.lundfall@protonmail.com>
|
||||||
Martin Michlmayr <tbm@cyrius.com>
|
Martin Michlmayr <tbm@cyrius.com>
|
||||||
Martin Redmond <21436+reds@users.noreply.github.com>
|
Martin Redmond <21436+reds@users.noreply.github.com>
|
||||||
|
maskpp <maskpp266@gmail.com>
|
||||||
Mason Fischer <mason@kissr.co>
|
Mason Fischer <mason@kissr.co>
|
||||||
Mateusz Morusiewicz <11313015+Ruteri@users.noreply.github.com>
|
Mateusz Morusiewicz <11313015+Ruteri@users.noreply.github.com>
|
||||||
Mats Julian Olsen <mats@plysjbyen.net>
|
Mats Julian Olsen <mats@plysjbyen.net>
|
||||||
Matt Garnett <14004106+lightclient@users.noreply.github.com>
|
Matt Garnett <lightclient@protonmail.com>
|
||||||
Matt K <1036969+mkrump@users.noreply.github.com>
|
Matt K <1036969+mkrump@users.noreply.github.com>
|
||||||
Matthew Di Ferrante <mattdf@users.noreply.github.com>
|
Matthew Di Ferrante <mattdf@users.noreply.github.com>
|
||||||
Matthew Halpern <matthalp@gmail.com>
|
Matthew Halpern <matthalp@gmail.com>
|
||||||
Matthew Wampler-Doty <matthew.wampler.doty@gmail.com>
|
Matthew Wampler-Doty <matthew.wampler.doty@gmail.com>
|
||||||
|
Matthieu Vachon <matt@streamingfast.io>
|
||||||
Max Sistemich <mafrasi2@googlemail.com>
|
Max Sistemich <mafrasi2@googlemail.com>
|
||||||
Maxim Zhiburt <zhiburt@gmail.com>
|
Maxim Zhiburt <zhiburt@gmail.com>
|
||||||
Maximilian Meister <mmeister@suse.de>
|
Maximilian Meister <mmeister@suse.de>
|
||||||
|
|
@ -342,34 +506,55 @@ me020523 <me020523@gmail.com>
|
||||||
Melvin Junhee Woo <melvin.woo@groundx.xyz>
|
Melvin Junhee Woo <melvin.woo@groundx.xyz>
|
||||||
meowsbits <b5c6@protonmail.com>
|
meowsbits <b5c6@protonmail.com>
|
||||||
Micah Zoltu <micah@zoltu.net>
|
Micah Zoltu <micah@zoltu.net>
|
||||||
|
Michael de Hoog <michael.dehoog@gmail.com>
|
||||||
Michael Forney <mforney@mforney.org>
|
Michael Forney <mforney@mforney.org>
|
||||||
Michael Riabzev <michael@starkware.co>
|
Michael Riabzev <michael@starkware.co>
|
||||||
Michael Ruminer <michael.ruminer+github@gmail.com>
|
Michael Ruminer <michael.ruminer+github@gmail.com>
|
||||||
michael1011 <me@michael1011.at>
|
michael1011 <me@michael1011.at>
|
||||||
Miguel Mota <miguelmota2@gmail.com>
|
Miguel Mota <miguelmota2@gmail.com>
|
||||||
Mike Burr <mburr@nightmare.com>
|
Mike Burr <mburr@nightmare.com>
|
||||||
|
Mikel Cortes <45786396+cortze@users.noreply.github.com>
|
||||||
Mikhail Mikheev <mmvsha73@gmail.com>
|
Mikhail Mikheev <mmvsha73@gmail.com>
|
||||||
|
Mikhail Vazhnov <michael.vazhnov@gmail.com>
|
||||||
|
miles <66052478+miles-six@users.noreply.github.com>
|
||||||
|
Miles Chen <fearlesschenc@gmail.com>
|
||||||
milesvant <milesvant@gmail.com>
|
milesvant <milesvant@gmail.com>
|
||||||
|
minh-bq <97180373+minh-bq@users.noreply.github.com>
|
||||||
|
Mio <mshimmeris@gmail.com>
|
||||||
Miro <mirokuratczyk@users.noreply.github.com>
|
Miro <mirokuratczyk@users.noreply.github.com>
|
||||||
Miya Chen <miyatlchen@gmail.com>
|
Miya Chen <miyatlchen@gmail.com>
|
||||||
|
mmsqe <mavis@crypto.com>
|
||||||
|
Mobin Mohanan <47410557+tr1sm0s1n@users.noreply.github.com>
|
||||||
Mohanson <mohanson@outlook.com>
|
Mohanson <mohanson@outlook.com>
|
||||||
|
moomin <67548026+nothingmin@users.noreply.github.com>
|
||||||
mr_franklin <mr_franklin@126.com>
|
mr_franklin <mr_franklin@126.com>
|
||||||
|
Mskxn <118117161+Mskxn@users.noreply.github.com>
|
||||||
Mudit Gupta <guptamudit@ymail.com>
|
Mudit Gupta <guptamudit@ymail.com>
|
||||||
Mymskmkt <1847234666@qq.com>
|
Mymskmkt <1847234666@qq.com>
|
||||||
Nalin Bhardwaj <nalinbhardwaj@nibnalin.me>
|
Nalin Bhardwaj <nalinbhardwaj@nibnalin.me>
|
||||||
|
nand2 <nicolas@deschildre.fr>
|
||||||
|
Nathan <Nathan.l@nodereal.io>
|
||||||
|
Nathan Jo <162083209+qqqeck@users.noreply.github.com>
|
||||||
Natsu Kagami <natsukagami@gmail.com>
|
Natsu Kagami <natsukagami@gmail.com>
|
||||||
|
Naveen <116692862+naveen-imtb@users.noreply.github.com>
|
||||||
Nchinda Nchinda <nchinda2@gmail.com>
|
Nchinda Nchinda <nchinda2@gmail.com>
|
||||||
nebojsa94 <nebojsa94@users.noreply.github.com>
|
Nebojsa Urosevic <nebojsa94@users.noreply.github.com>
|
||||||
necaremus <necaremus@gmail.com>
|
necaremus <necaremus@gmail.com>
|
||||||
nedifi <103940716+nedifi@users.noreply.github.com>
|
nedifi <103940716+nedifi@users.noreply.github.com>
|
||||||
needkane <604476380@qq.com>
|
needkane <604476380@qq.com>
|
||||||
|
Newt6611 <45097780+Newt6611@users.noreply.github.com>
|
||||||
|
Ng Wei Han <47109095+weiihann@users.noreply.github.com>
|
||||||
Nguyen Kien Trung <trung.n.k@gmail.com>
|
Nguyen Kien Trung <trung.n.k@gmail.com>
|
||||||
Nguyen Sy Thanh Son <thanhson1085@gmail.com>
|
Nguyen Sy Thanh Son <thanhson1085@gmail.com>
|
||||||
Nic Jansma <nic@nicj.net>
|
Nic Jansma <nic@nicj.net>
|
||||||
|
Nicholas <nicholas.zhaoyu@gmail.com>
|
||||||
Nick Dodson <silentcicero@outlook.com>
|
Nick Dodson <silentcicero@outlook.com>
|
||||||
Nick Johnson <arachnid@notdot.net>
|
Nick Johnson <arachnid@notdot.net>
|
||||||
|
Nicola Cocchiaro <3538109+ncocchiaro@users.noreply.github.com>
|
||||||
Nicolas Feignon <nfeignon@gmail.com>
|
Nicolas Feignon <nfeignon@gmail.com>
|
||||||
|
Nicolas Gotchac <ngotchac@gmail.com>
|
||||||
Nicolas Guillaume <gunicolas@sqli.com>
|
Nicolas Guillaume <gunicolas@sqli.com>
|
||||||
|
Nikhil Suri <nikhilsuri@comcast.net>
|
||||||
Nikita Kozhemyakin <enginegl.ec@gmail.com>
|
Nikita Kozhemyakin <enginegl.ec@gmail.com>
|
||||||
Nikola Madjarevic <nikola.madjarevic@gmail.com>
|
Nikola Madjarevic <nikola.madjarevic@gmail.com>
|
||||||
Nilesh Trivedi <nilesh@hypertrack.io>
|
Nilesh Trivedi <nilesh@hypertrack.io>
|
||||||
|
|
@ -379,32 +564,47 @@ njupt-moon <1015041018@njupt.edu.cn>
|
||||||
nkbai <nkbai@163.com>
|
nkbai <nkbai@163.com>
|
||||||
noam-alchemy <76969113+noam-alchemy@users.noreply.github.com>
|
noam-alchemy <76969113+noam-alchemy@users.noreply.github.com>
|
||||||
nobody <ddean2009@163.com>
|
nobody <ddean2009@163.com>
|
||||||
|
noel <72006780+0x00Duke@users.noreply.github.com>
|
||||||
Noman <noman@noman.land>
|
Noman <noman@noman.land>
|
||||||
|
norwnd <112318969+norwnd@users.noreply.github.com>
|
||||||
nujabes403 <nujabes403@gmail.com>
|
nujabes403 <nujabes403@gmail.com>
|
||||||
Nye Liu <nyet@nyet.org>
|
Nye Liu <nyet@nyet.org>
|
||||||
|
Obtuse7772 <117080049+Obtuse7772@users.noreply.github.com>
|
||||||
Oleg Kovalov <iamolegkovalov@gmail.com>
|
Oleg Kovalov <iamolegkovalov@gmail.com>
|
||||||
Oli Bye <olibye@users.noreply.github.com>
|
Oli Bye <olibye@users.noreply.github.com>
|
||||||
Oliver Tale-Yazdi <oliver@perun.network>
|
Oliver Tale-Yazdi <oliver@perun.network>
|
||||||
Olivier Hervieu <olivier.hervieu@gmail.com>
|
Olivier Hervieu <olivier.hervieu@gmail.com>
|
||||||
|
openex <openexkevin@gmail.com>
|
||||||
Or Neeman <oneeman@gmail.com>
|
Or Neeman <oneeman@gmail.com>
|
||||||
|
oseau <harbin.kyang@gmail.com>
|
||||||
Osoro Bironga <fanosoro@gmail.com>
|
Osoro Bironga <fanosoro@gmail.com>
|
||||||
Osuke <arget-fee.free.dgm@hotmail.co.jp>
|
Osuke <arget-fee.free.dgm@hotmail.co.jp>
|
||||||
|
panicalways <113693386+panicalways@users.noreply.github.com>
|
||||||
Pantelis Peslis <pespantelis@gmail.com>
|
Pantelis Peslis <pespantelis@gmail.com>
|
||||||
|
Parithosh Jayanthi <parithosh@indenwolken.xyz>
|
||||||
|
Park Changwan <pcw109550@gmail.com>
|
||||||
Pascal Dierich <pascal@merkleplant.xyz>
|
Pascal Dierich <pascal@merkleplant.xyz>
|
||||||
Patrick O'Grady <prohb125@gmail.com>
|
Patrick O'Grady <prohb125@gmail.com>
|
||||||
Pau <pau@dabax.net>
|
Pau <pau@dabax.net>
|
||||||
|
Paul <41552663+molecula451@users.noreply.github.com>
|
||||||
Paul Berg <hello@paulrberg.com>
|
Paul Berg <hello@paulrberg.com>
|
||||||
|
Paul Lange <palango@users.noreply.github.com>
|
||||||
Paul Litvak <litvakpol@012.net.il>
|
Paul Litvak <litvakpol@012.net.il>
|
||||||
Paul-Armand Verhaegen <paularmand.verhaegen@gmail.com>
|
Paul-Armand Verhaegen <paularmand.verhaegen@gmail.com>
|
||||||
Paulo L F Casaretto <pcasaretto@gmail.com>
|
Paulo L F Casaretto <pcasaretto@gmail.com>
|
||||||
|
Pawan Dhananjay <pawandhananjay@gmail.com>
|
||||||
Paweł Bylica <chfast@gmail.com>
|
Paweł Bylica <chfast@gmail.com>
|
||||||
Pedro Gomes <otherview@gmail.com>
|
Pedro Gomes <otherview@gmail.com>
|
||||||
Pedro Pombeiro <PombeirP@users.noreply.github.com>
|
Pedro Pombeiro <PombeirP@users.noreply.github.com>
|
||||||
|
persmor <166146971+persmor@users.noreply.github.com>
|
||||||
|
Peter (bitfly) <1674920+peterbitfly@users.noreply.github.com>
|
||||||
Peter Broadhurst <peter@themumbles.net>
|
Peter Broadhurst <peter@themumbles.net>
|
||||||
peter cresswell <pcresswell@gmail.com>
|
peter cresswell <pcresswell@gmail.com>
|
||||||
Peter Pratscher <pratscher@gmail.com>
|
Peter Pratscher <pratscher@gmail.com>
|
||||||
Peter Simard <petesimard56@gmail.com>
|
Peter Simard <petesimard56@gmail.com>
|
||||||
|
Peter Straus <153843855+krauspt@users.noreply.github.com>
|
||||||
Petr Mikusek <petr@mikusek.info>
|
Petr Mikusek <petr@mikusek.info>
|
||||||
|
phenix3443 <phenix3443@gmail.com>
|
||||||
Philip Schlump <pschlump@gmail.com>
|
Philip Schlump <pschlump@gmail.com>
|
||||||
Pierre Neter <pierreneter@gmail.com>
|
Pierre Neter <pierreneter@gmail.com>
|
||||||
Pierre R <p.rousset@gmail.com>
|
Pierre R <p.rousset@gmail.com>
|
||||||
|
|
@ -412,15 +612,24 @@ piersy <pierspowlesland@gmail.com>
|
||||||
PilkyuJung <anothel1@naver.com>
|
PilkyuJung <anothel1@naver.com>
|
||||||
Piotr Dyraga <piotr.dyraga@keep.network>
|
Piotr Dyraga <piotr.dyraga@keep.network>
|
||||||
ploui <64719999+ploui@users.noreply.github.com>
|
ploui <64719999+ploui@users.noreply.github.com>
|
||||||
|
PolyMa <151764357+polymaer@users.noreply.github.com>
|
||||||
Preston Van Loon <preston@prysmaticlabs.com>
|
Preston Van Loon <preston@prysmaticlabs.com>
|
||||||
Prince Sinha <sinhaprince013@gmail.com>
|
Prince Sinha <sinhaprince013@gmail.com>
|
||||||
|
psogv0308 <psogv0308@gmail.com>
|
||||||
|
puhtaytow <18026645+puhtaytow@users.noreply.github.com>
|
||||||
Péter Szilágyi <peterke@gmail.com>
|
Péter Szilágyi <peterke@gmail.com>
|
||||||
|
qcrao <qcrao91@gmail.com>
|
||||||
qd-ethan <31876119+qdgogogo@users.noreply.github.com>
|
qd-ethan <31876119+qdgogogo@users.noreply.github.com>
|
||||||
Qian Bin <cola.tin.com@gmail.com>
|
Qian Bin <cola.tin.com@gmail.com>
|
||||||
|
qiuhaohao <trouserrr@gmail.com>
|
||||||
|
Qt <golang.chen@gmail.com>
|
||||||
|
Quentin McGaw <quentin.mcgaw@gmail.com>
|
||||||
Quest Henkart <qhenkart@gmail.com>
|
Quest Henkart <qhenkart@gmail.com>
|
||||||
|
Rachel Bousfield <nfranks@protonmail.com>
|
||||||
Rachel Franks <nfranks@protonmail.com>
|
Rachel Franks <nfranks@protonmail.com>
|
||||||
Rafael Matias <rafael@skyle.net>
|
Rafael Matias <rafael@skyle.net>
|
||||||
Raghav Sood <raghavsood@gmail.com>
|
Raghav Sood <raghavsood@gmail.com>
|
||||||
|
Rajaram Gaunker <zimbabao@gmail.com>
|
||||||
Ralph Caraveo <deckarep@gmail.com>
|
Ralph Caraveo <deckarep@gmail.com>
|
||||||
Ramesh Nair <ram@hiddentao.com>
|
Ramesh Nair <ram@hiddentao.com>
|
||||||
rangzen <public@l-homme.com>
|
rangzen <public@l-homme.com>
|
||||||
|
|
@ -430,45 +639,65 @@ rhaps107 <dod-source@yandex.ru>
|
||||||
Ricardo Catalinas Jiménez <r@untroubled.be>
|
Ricardo Catalinas Jiménez <r@untroubled.be>
|
||||||
Ricardo Domingos <ricardohsd@gmail.com>
|
Ricardo Domingos <ricardohsd@gmail.com>
|
||||||
Richard Hart <richardhart92@gmail.com>
|
Richard Hart <richardhart92@gmail.com>
|
||||||
|
RichΛrd <info@richardramos.me>
|
||||||
Rick <rick.no@groundx.xyz>
|
Rick <rick.no@groundx.xyz>
|
||||||
RJ Catalano <catalanor0220@gmail.com>
|
RJ Catalano <catalanor0220@gmail.com>
|
||||||
Rob <robert@rojotek.com>
|
Rob <robert@rojotek.com>
|
||||||
Rob Mulholand <rmulholand@8thlight.com>
|
Rob Mulholand <rmulholand@8thlight.com>
|
||||||
Robert Zaremba <robert@zaremba.ch>
|
Robert Zaremba <robert@zaremba.ch>
|
||||||
|
Roberto Bayardo <bayardo@alum.mit.edu>
|
||||||
Roc Yu <rociiu0112@gmail.com>
|
Roc Yu <rociiu0112@gmail.com>
|
||||||
|
Roman Krasiuk <rokrassyuk@gmail.com>
|
||||||
Roman Mazalov <83914728+gopherxyz@users.noreply.github.com>
|
Roman Mazalov <83914728+gopherxyz@users.noreply.github.com>
|
||||||
Ross <9055337+Chadsr@users.noreply.github.com>
|
Ross <9055337+Chadsr@users.noreply.github.com>
|
||||||
|
Rossen Krastev <rosen4obg@gmail.com>
|
||||||
|
Roy Crihfield <roy@manteia.ltd>
|
||||||
Runchao Han <elvisage941102@gmail.com>
|
Runchao Han <elvisage941102@gmail.com>
|
||||||
|
Ruohui Wang <nomaru@outlook.com>
|
||||||
Russ Cox <rsc@golang.org>
|
Russ Cox <rsc@golang.org>
|
||||||
Ryan Schneider <ryanleeschneider@gmail.com>
|
Ryan Schneider <ryanleeschneider@gmail.com>
|
||||||
|
Ryan Tinianov <tinianov@live.com>
|
||||||
ryanc414 <ryan@tokencard.io>
|
ryanc414 <ryan@tokencard.io>
|
||||||
Rémy Roy <remyroy@remyroy.com>
|
Rémy Roy <remyroy@remyroy.com>
|
||||||
S. Matthew English <s-matthew-english@users.noreply.github.com>
|
S. Matthew English <s-matthew-english@users.noreply.github.com>
|
||||||
salanfe <salanfe@users.noreply.github.com>
|
salanfe <salanfe@users.noreply.github.com>
|
||||||
Sam <39165351+Xia-Sam@users.noreply.github.com>
|
Sam <39165351+Xia-Sam@users.noreply.github.com>
|
||||||
|
Saman H. Pasha <51169592+saman-pasha@users.noreply.github.com>
|
||||||
Sammy Libre <7374093+sammy007@users.noreply.github.com>
|
Sammy Libre <7374093+sammy007@users.noreply.github.com>
|
||||||
Samuel Marks <samuelmarks@gmail.com>
|
Samuel Marks <samuelmarks@gmail.com>
|
||||||
|
Sanghee Choi <32831939+pengin7384@users.noreply.github.com>
|
||||||
|
SangIlMo <156392700+SangIlMo@users.noreply.github.com>
|
||||||
sanskarkhare <sanskarkhare47@gmail.com>
|
sanskarkhare <sanskarkhare47@gmail.com>
|
||||||
|
SanYe <kumakichi@users.noreply.github.com>
|
||||||
Sarlor <kinsleer@outlook.com>
|
Sarlor <kinsleer@outlook.com>
|
||||||
Sasuke1964 <neilperry1964@gmail.com>
|
Sasuke1964 <neilperry1964@gmail.com>
|
||||||
Satpal <28562234+SatpalSandhu61@users.noreply.github.com>
|
Satpal <28562234+SatpalSandhu61@users.noreply.github.com>
|
||||||
Saulius Grigaitis <saulius@necolt.com>
|
Saulius Grigaitis <saulius@necolt.com>
|
||||||
Sean <darcys22@gmail.com>
|
Sean <darcys22@gmail.com>
|
||||||
|
seayyyy <163325936+seay404@users.noreply.github.com>
|
||||||
|
Sebastian Stammler <seb@oplabs.co>
|
||||||
Serhat Şevki Dinçer <jfcgauss@gmail.com>
|
Serhat Şevki Dinçer <jfcgauss@gmail.com>
|
||||||
|
Seungbae Yu <dbadoy4874@gmail.com>
|
||||||
|
Seungmin Kim <a7965344@gmail.com>
|
||||||
Shane Bammel <sjb933@gmail.com>
|
Shane Bammel <sjb933@gmail.com>
|
||||||
shawn <36943337+lxex@users.noreply.github.com>
|
shawn <36943337+lxex@users.noreply.github.com>
|
||||||
shigeyuki azuchi <azuchi@chaintope.com>
|
shigeyuki azuchi <azuchi@chaintope.com>
|
||||||
Shihao Xia <charlesxsh@hotmail.com>
|
Shihao Xia <charlesxsh@hotmail.com>
|
||||||
Shiming <codingmylife@gmail.com>
|
Shiming <codingmylife@gmail.com>
|
||||||
|
Shiming Zhang <wzshiming@hotmail.com>
|
||||||
Shintaro Kaneko <kaneshin0120@gmail.com>
|
Shintaro Kaneko <kaneshin0120@gmail.com>
|
||||||
shiqinfeng1 <150627601@qq.com>
|
shiqinfeng1 <150627601@qq.com>
|
||||||
|
Shivam Sandbhor <shivam.sandbhor@gmail.com>
|
||||||
|
shivhg <shivhg@gmail.com>
|
||||||
Shuai Qi <qishuai231@gmail.com>
|
Shuai Qi <qishuai231@gmail.com>
|
||||||
Shude Li <islishude@gmail.com>
|
Shude Li <islishude@gmail.com>
|
||||||
Shunsuke Watanabe <ww.shunsuke@gmail.com>
|
Shunsuke Watanabe <ww.shunsuke@gmail.com>
|
||||||
|
shuo <shuoli84@gmail.com>
|
||||||
silence <wangsai.silence@qq.com>
|
silence <wangsai.silence@qq.com>
|
||||||
Simon Jentzsch <simon@slock.it>
|
Simon Jentzsch <simon@slock.it>
|
||||||
Sina Mahmoodi <1591639+s1na@users.noreply.github.com>
|
Sina Mahmoodi <1591639+s1na@users.noreply.github.com>
|
||||||
sixdays <lj491685571@126.com>
|
sixdays <lj491685571@126.com>
|
||||||
|
sjlee1125 <47561537+sjlee1125@users.noreply.github.com>
|
||||||
SjonHortensius <SjonHortensius@users.noreply.github.com>
|
SjonHortensius <SjonHortensius@users.noreply.github.com>
|
||||||
Slava Karpenko <slavikus@gmail.com>
|
Slava Karpenko <slavikus@gmail.com>
|
||||||
slumber1122 <slumber1122@gmail.com>
|
slumber1122 <slumber1122@gmail.com>
|
||||||
|
|
@ -477,17 +706,29 @@ soc1c <soc1c@users.noreply.github.com>
|
||||||
Sorin Neacsu <sorin.neacsu@gmail.com>
|
Sorin Neacsu <sorin.neacsu@gmail.com>
|
||||||
Sparty <vignesh.crysis@gmail.com>
|
Sparty <vignesh.crysis@gmail.com>
|
||||||
Stein Dekker <dekker.stein@gmail.com>
|
Stein Dekker <dekker.stein@gmail.com>
|
||||||
|
Stephen Flynn <ssflynn@gmail.com>
|
||||||
|
Stephen Guo <stephen.fire@gmail.com>
|
||||||
Steve Gattuso <steve@stevegattuso.me>
|
Steve Gattuso <steve@stevegattuso.me>
|
||||||
|
Steve Milk <wangpeculiar@gmail.com>
|
||||||
Steve Ruckdashel <steve.ruckdashel@gmail.com>
|
Steve Ruckdashel <steve.ruckdashel@gmail.com>
|
||||||
Steve Waldman <swaldman@mchange.com>
|
Steve Waldman <swaldman@mchange.com>
|
||||||
Steven E. Harris <seh@panix.com>
|
Steven E. Harris <seh@panix.com>
|
||||||
Steven Roose <stevenroose@gmail.com>
|
Steven Roose <stevenroose@gmail.com>
|
||||||
stompesi <stompesi@gmail.com>
|
stompesi <stompesi@gmail.com>
|
||||||
stormpang <jialinpeng@vip.qq.com>
|
stormpang <jialinpeng@vip.qq.com>
|
||||||
|
storyicon <storyicon@foxmail.com>
|
||||||
|
strykerin <dacosta.pereirafabio@gmail.com>
|
||||||
|
sudeep <sudeepdino008@gmail.com>
|
||||||
|
SuiYuan <165623542+suiyuan1314@users.noreply.github.com>
|
||||||
|
Sungwoo Kim <git@sung-woo.kim>
|
||||||
sunxiaojun2014 <sunxiaojun-xy@360.cn>
|
sunxiaojun2014 <sunxiaojun-xy@360.cn>
|
||||||
Suriyaa Sundararuban <isc.suriyaa@gmail.com>
|
Suriyaa Sundararuban <isc.suriyaa@gmail.com>
|
||||||
Sylvain Laurent <s@6120.eu>
|
Sylvain Laurent <s@6120.eu>
|
||||||
|
Szupingwang <cara4bear@gmail.com>
|
||||||
|
tactical_retreat <tactical0retreat@gmail.com>
|
||||||
|
Taeguk Kwon <xornrbboy@gmail.com>
|
||||||
Taeik Lim <sibera21@gmail.com>
|
Taeik Lim <sibera21@gmail.com>
|
||||||
|
taiking <c.tsujiyan727@gmail.com>
|
||||||
tamirms <tamir@trello.com>
|
tamirms <tamir@trello.com>
|
||||||
Tangui Clairet <tangui.clairet@gmail.com>
|
Tangui Clairet <tangui.clairet@gmail.com>
|
||||||
Tatsuya Shimoda <tacoo@users.noreply.github.com>
|
Tatsuya Shimoda <tacoo@users.noreply.github.com>
|
||||||
|
|
@ -495,21 +736,35 @@ Taylor Gerring <taylor.gerring@gmail.com>
|
||||||
TColl <38299499+TColl@users.noreply.github.com>
|
TColl <38299499+TColl@users.noreply.github.com>
|
||||||
terasum <terasum@163.com>
|
terasum <terasum@163.com>
|
||||||
tgyKomgo <52910426+tgyKomgo@users.noreply.github.com>
|
tgyKomgo <52910426+tgyKomgo@users.noreply.github.com>
|
||||||
|
Thabokani <149070269+Thabokani@users.noreply.github.com>
|
||||||
Thad Guidry <thadguidry@gmail.com>
|
Thad Guidry <thadguidry@gmail.com>
|
||||||
|
therainisme <therainisme@qq.com>
|
||||||
Thomas Bocek <tom@tomp2p.net>
|
Thomas Bocek <tom@tomp2p.net>
|
||||||
thomasmodeneis <thomas.modeneis@gmail.com>
|
thomasmodeneis <thomas.modeneis@gmail.com>
|
||||||
thumb8432 <thumb8432@gmail.com>
|
thumb8432 <thumb8432@gmail.com>
|
||||||
Ti Zhou <tizhou1986@gmail.com>
|
Ti Zhou <tizhou1986@gmail.com>
|
||||||
tia-99 <67107070+tia-99@users.noreply.github.com>
|
tia-99 <67107070+tia-99@users.noreply.github.com>
|
||||||
|
tianyeyouyou <tianyeyouyou@gmail.com>
|
||||||
|
Tien Nguyen <116023870+htiennv@users.noreply.github.com>
|
||||||
Tim Cooijmans <timcooijmans@gmail.com>
|
Tim Cooijmans <timcooijmans@gmail.com>
|
||||||
|
TinyFoxy <tiny.fox@foxmail.com>
|
||||||
Tobias Hildebrandt <79341166+tobias-hildebrandt@users.noreply.github.com>
|
Tobias Hildebrandt <79341166+tobias-hildebrandt@users.noreply.github.com>
|
||||||
|
tokikuch <msmania@users.noreply.github.com>
|
||||||
|
Tom <45168162+tomdever@users.noreply.github.com>
|
||||||
Tosh Camille <tochecamille@gmail.com>
|
Tosh Camille <tochecamille@gmail.com>
|
||||||
|
trillo <trillo8652@gmail.com>
|
||||||
|
Tristan-Wilson <87238672+Tristan-Wilson@users.noreply.github.com>
|
||||||
|
trocher <trooocher@proton.me>
|
||||||
tsarpaul <Litvakpol@012.net.il>
|
tsarpaul <Litvakpol@012.net.il>
|
||||||
|
TY <45994721+tylerK1294@users.noreply.github.com>
|
||||||
Tyler Chambers <2775339+tylerchambers@users.noreply.github.com>
|
Tyler Chambers <2775339+tylerchambers@users.noreply.github.com>
|
||||||
|
tylerni7 <tylerni7@gmail.com>
|
||||||
tzapu <alex@tzapu.com>
|
tzapu <alex@tzapu.com>
|
||||||
ucwong <ucwong@126.com>
|
ucwong <ethereum2k@gmail.com>
|
||||||
uji <49834542+uji@users.noreply.github.com>
|
uji <49834542+uji@users.noreply.github.com>
|
||||||
ult-bobonovski <alex@ultiledger.io>
|
ult-bobonovski <alex@ultiledger.io>
|
||||||
|
Undefinedor <wanghao@imwh.net>
|
||||||
|
Ursulafe <152976968+Ursulafe@users.noreply.github.com>
|
||||||
Valentin Trinqué <ValentinTrinque@users.noreply.github.com>
|
Valentin Trinqué <ValentinTrinque@users.noreply.github.com>
|
||||||
Valentin Wüstholz <wuestholz@gmail.com>
|
Valentin Wüstholz <wuestholz@gmail.com>
|
||||||
Vedhavyas Singareddi <vedhavyas.singareddi@gmail.com>
|
Vedhavyas Singareddi <vedhavyas.singareddi@gmail.com>
|
||||||
|
|
@ -528,39 +783,60 @@ Vitaly V <vvelikodny@gmail.com>
|
||||||
Vivek Anand <vivekanand1101@users.noreply.github.com>
|
Vivek Anand <vivekanand1101@users.noreply.github.com>
|
||||||
Vlad Bokov <razum2um@mail.ru>
|
Vlad Bokov <razum2um@mail.ru>
|
||||||
Vlad Gluhovsky <gluk256@gmail.com>
|
Vlad Gluhovsky <gluk256@gmail.com>
|
||||||
|
VM <112189277+sysvm@users.noreply.github.com>
|
||||||
|
vuittont60 <81072379+vuittont60@users.noreply.github.com>
|
||||||
|
wangjingcun <wangjingcun@aliyun.com>
|
||||||
|
wangyifan <wangyifan@uchicago.edu>
|
||||||
Ward Bradt <wardbradt5@gmail.com>
|
Ward Bradt <wardbradt5@gmail.com>
|
||||||
Water <44689567+codeoneline@users.noreply.github.com>
|
Water <44689567+codeoneline@users.noreply.github.com>
|
||||||
wbt <wbt@users.noreply.github.com>
|
wbt <wbt@users.noreply.github.com>
|
||||||
|
Wei Tang <acc@pacna.org>
|
||||||
weimumu <934657014@qq.com>
|
weimumu <934657014@qq.com>
|
||||||
Wenbiao Zheng <delweng@gmail.com>
|
Wenbiao Zheng <delweng@gmail.com>
|
||||||
Wenshao Zhong <wzhong20@uic.edu>
|
Wenshao Zhong <wzhong20@uic.edu>
|
||||||
|
Wihan de Beer <debeerwihan@gmail.com>
|
||||||
Will Villanueva <hello@willvillanueva.com>
|
Will Villanueva <hello@willvillanueva.com>
|
||||||
William Morriss <wjmelements@gmail.com>
|
William Morriss <wjmelements@gmail.com>
|
||||||
William Setzer <bootstrapsetzer@gmail.com>
|
William Setzer <bootstrapsetzer@gmail.com>
|
||||||
williambannas <wrschwartz@wpi.edu>
|
williambannas <wrschwartz@wpi.edu>
|
||||||
|
willian.eth <willian@ufpa.br>
|
||||||
|
winniehere <winnie050812@qq.com>
|
||||||
|
winterjihwan <113398351+winterjihwan@users.noreply.github.com>
|
||||||
wuff1996 <33193253+wuff1996@users.noreply.github.com>
|
wuff1996 <33193253+wuff1996@users.noreply.github.com>
|
||||||
Wuxiang <wuxiangzhou2010@gmail.com>
|
Wuxiang <wuxiangzhou2010@gmail.com>
|
||||||
Xiaobing Jiang <s7v7nislands@gmail.com>
|
Xiaobing Jiang <s7v7nislands@gmail.com>
|
||||||
|
xiaodong <81516175+javaandfly@users.noreply.github.com>
|
||||||
xiekeyang <xiekeyang@users.noreply.github.com>
|
xiekeyang <xiekeyang@users.noreply.github.com>
|
||||||
|
xinbenlv <zzn@zzn.im>
|
||||||
xincaosu <xincaosu@126.com>
|
xincaosu <xincaosu@126.com>
|
||||||
xinluyin <31590468+xinluyin@users.noreply.github.com>
|
xinluyin <31590468+xinluyin@users.noreply.github.com>
|
||||||
|
xiyang <90125263+JBossBC@users.noreply.github.com>
|
||||||
Xudong Liu <33193253+r1cs@users.noreply.github.com>
|
Xudong Liu <33193253+r1cs@users.noreply.github.com>
|
||||||
xwjack <XWJACK@users.noreply.github.com>
|
xwjack <XWJACK@users.noreply.github.com>
|
||||||
yahtoo <yahtoo.ma@gmail.com>
|
yahtoo <yahtoo.ma@gmail.com>
|
||||||
Yang Hau <vulxj0j8j8@gmail.com>
|
Yang Hau <vulxj0j8j8@gmail.com>
|
||||||
YaoZengzeng <yaozengzeng@zju.edu.cn>
|
YaoZengzeng <yaozengzeng@zju.edu.cn>
|
||||||
|
ycyraum <ycyraum@fastmail.com>
|
||||||
YH-Zhou <yanhong.zhou05@gmail.com>
|
YH-Zhou <yanhong.zhou05@gmail.com>
|
||||||
|
Yier <90763233+yierx@users.noreply.github.com>
|
||||||
Yihau Chen <a122092487@gmail.com>
|
Yihau Chen <a122092487@gmail.com>
|
||||||
|
yihuang <huang@crypto.com>
|
||||||
Yohann Léon <sybiload@gmail.com>
|
Yohann Léon <sybiload@gmail.com>
|
||||||
Yoichi Hirai <i@yoichihirai.com>
|
Yoichi Hirai <i@yoichihirai.com>
|
||||||
Yole <007yuyue@gmail.com>
|
Yole <007yuyue@gmail.com>
|
||||||
Yondon Fu <yondon.fu@gmail.com>
|
Yondon Fu <yondon.fu@gmail.com>
|
||||||
|
yong <33920876+yzhaoyu@users.noreply.github.com>
|
||||||
YOSHIDA Masanori <masanori.yoshida@gmail.com>
|
YOSHIDA Masanori <masanori.yoshida@gmail.com>
|
||||||
yoza <yoza.is12s@gmail.com>
|
yoza <yoza.is12s@gmail.com>
|
||||||
|
ysh0566 <ysh0566@qq.com>
|
||||||
|
yudrywet <166895665+yudrywet@users.noreply.github.com>
|
||||||
|
yujinpark <petere123123@gmail.com>
|
||||||
|
yukionfire <yukionfire@qq.com>
|
||||||
yumiel yoomee1313 <yumiel.ko@groundx.xyz>
|
yumiel yoomee1313 <yumiel.ko@groundx.xyz>
|
||||||
Yusup <awklsgrep@gmail.com>
|
Yusup <awklsgrep@gmail.com>
|
||||||
yutianwu <wzxingbupt@gmail.com>
|
yutianwu <wzxingbupt@gmail.com>
|
||||||
ywzqwwt <39263032+ywzqwwt@users.noreply.github.com>
|
ywzqwwt <39263032+ywzqwwt@users.noreply.github.com>
|
||||||
|
yzb <335357057@qq.com>
|
||||||
zaccoding <zaccoding725@gmail.com>
|
zaccoding <zaccoding725@gmail.com>
|
||||||
Zach <zach.ramsay@gmail.com>
|
Zach <zach.ramsay@gmail.com>
|
||||||
Zachinquarantine <Zachinquarantine@protonmail.com>
|
Zachinquarantine <Zachinquarantine@protonmail.com>
|
||||||
|
|
@ -568,24 +844,34 @@ zah <zahary@gmail.com>
|
||||||
Zahoor Mohamed <zahoor@zahoor.in>
|
Zahoor Mohamed <zahoor@zahoor.in>
|
||||||
Zak Cole <zak@beattiecole.com>
|
Zak Cole <zak@beattiecole.com>
|
||||||
zcheng9 <zcheng9@hawk.iit.edu>
|
zcheng9 <zcheng9@hawk.iit.edu>
|
||||||
|
zeim839 <50573884+zeim839@users.noreply.github.com>
|
||||||
zer0to0ne <36526113+zer0to0ne@users.noreply.github.com>
|
zer0to0ne <36526113+zer0to0ne@users.noreply.github.com>
|
||||||
zgfzgf <48779939+zgfzgf@users.noreply.github.com>
|
zgfzgf <48779939+zgfzgf@users.noreply.github.com>
|
||||||
Zhang Zhuo <mycinbrin@gmail.com>
|
Zhang Zhuo <mycinbrin@gmail.com>
|
||||||
zhangsoledad <787953403@qq.com>
|
zhangsoledad <787953403@qq.com>
|
||||||
zhaochonghe <41711151+zhaochonghe@users.noreply.github.com>
|
zhaochonghe <41711151+zhaochonghe@users.noreply.github.com>
|
||||||
|
zhen peng <505380967@qq.com>
|
||||||
Zhenguo Niu <Niu.ZGlinux@gmail.com>
|
Zhenguo Niu <Niu.ZGlinux@gmail.com>
|
||||||
|
Zheyuan He <ecjgvmhc@gmail.com>
|
||||||
|
Zhihao Lin <3955922+kkqy@users.noreply.github.com>
|
||||||
zhiqiangxu <652732310@qq.com>
|
zhiqiangxu <652732310@qq.com>
|
||||||
Zhou Zhiyao <ZHOU0250@e.ntu.edu.sg>
|
Zhou Zhiyao <ZHOU0250@e.ntu.edu.sg>
|
||||||
Ziyuan Zhong <zzy.albert@163.com>
|
Ziyuan Zhong <zzy.albert@163.com>
|
||||||
Zoe Nolan <github@zoenolan.org>
|
Zoe Nolan <github@zoenolan.org>
|
||||||
|
zoereco <158379334+zoereco@users.noreply.github.com>
|
||||||
|
Zoo <zoosilence@gmail.com>
|
||||||
|
Zoro <40222601+BabyHalimao@users.noreply.github.com>
|
||||||
Zou Guangxian <zouguangxian@gmail.com>
|
Zou Guangxian <zouguangxian@gmail.com>
|
||||||
Zsolt Felföldi <zsfelfoldi@gmail.com>
|
Zsolt Felföldi <zsfelfoldi@gmail.com>
|
||||||
Łukasz Kurowski <crackcomm@users.noreply.github.com>
|
Łukasz Kurowski <crackcomm@users.noreply.github.com>
|
||||||
Łukasz Zimnoch <lukaszzimnoch1994@gmail.com>
|
Łukasz Zimnoch <lukaszzimnoch1994@gmail.com>
|
||||||
ΞTHΞЯSPHΞЯΞ <{viktor.tron,nagydani,zsfelfoldi}@gmail.com>
|
ΞTHΞЯSPHΞЯΞ <{viktor.tron,nagydani,zsfelfoldi}@gmail.com>
|
||||||
Максим Чусовлянов <mchusovlianov@gmail.com>
|
Максим Чусовлянов <mchusovlianov@gmail.com>
|
||||||
|
かげ <47621124+ronething-bot@users.noreply.github.com>
|
||||||
|
スパイク <1311798+spkjp@users.noreply.github.com>
|
||||||
大彬 <hz_stb@163.com>
|
大彬 <hz_stb@163.com>
|
||||||
沉风 <myself659@users.noreply.github.com>
|
沉风 <myself659@users.noreply.github.com>
|
||||||
|
牛晓婕 <30611384+niuxiaojie81@users.noreply.github.com>
|
||||||
贺鹏飞 <hpf@hackerful.cn>
|
贺鹏飞 <hpf@hackerful.cn>
|
||||||
陈佳 <chenjiablog@gmail.com>
|
陈佳 <chenjiablog@gmail.com>
|
||||||
유용환 <33824408+eric-yoo@users.noreply.github.com>
|
유용환 <33824408+eric-yoo@users.noreply.github.com>
|
||||||
|
|
|
||||||
123
README.md
123
README.md
|
|
@ -40,7 +40,6 @@ directory.
|
||||||
| `clef` | Stand-alone signing tool, which can be used as a backend signer for `geth`. |
|
| `clef` | Stand-alone signing tool, which can be used as a backend signer for `geth`. |
|
||||||
| `devp2p` | Utilities to interact with nodes on the networking layer, without running a full blockchain. |
|
| `devp2p` | Utilities to interact with nodes on the networking layer, without running a full blockchain. |
|
||||||
| `abigen` | Source code generator to convert Ethereum contract definitions into easy-to-use, compile-time type-safe Go packages. It operates on plain [Ethereum contract ABIs](https://docs.soliditylang.org/en/develop/abi-spec.html) with expanded functionality if the contract bytecode is also available. However, it also accepts Solidity source files, making development much more streamlined. Please see our [Native DApps](https://geth.ethereum.org/docs/developers/dapp-developer/native-bindings) page for details. |
|
| `abigen` | Source code generator to convert Ethereum contract definitions into easy-to-use, compile-time type-safe Go packages. It operates on plain [Ethereum contract ABIs](https://docs.soliditylang.org/en/develop/abi-spec.html) with expanded functionality if the contract bytecode is also available. However, it also accepts Solidity source files, making development much more streamlined. Please see our [Native DApps](https://geth.ethereum.org/docs/developers/dapp-developer/native-bindings) page for details. |
|
||||||
| `bootnode` | Stripped down version of our Ethereum client implementation that only takes part in the network node discovery protocol, but does not run any of the higher level application protocols. It can be used as a lightweight bootstrap node to aid in finding peers in private networks. |
|
|
||||||
| `evm` | Developer utility version of the EVM (Ethereum Virtual Machine) that is capable of running bytecode snippets within a configurable environment and execution mode. Its purpose is to allow isolated, fine-grained debugging of EVM opcodes (e.g. `evm --code 60ff60ff --debug run`). |
|
| `evm` | Developer utility version of the EVM (Ethereum Virtual Machine) that is capable of running bytecode snippets within a configurable environment and execution mode. Its purpose is to allow isolated, fine-grained debugging of EVM opcodes (e.g. `evm --code 60ff60ff --debug run`). |
|
||||||
| `rlpdump` | Developer utility tool to convert binary RLP ([Recursive Length Prefix](https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp)) dumps (data encoding used by the Ethereum protocol both network as well as consensus wise) to user-friendlier hierarchical representation (e.g. `rlpdump --hex CE0183FFFFFFC4C304050583616263`). |
|
| `rlpdump` | Developer utility tool to convert binary RLP ([Recursive Length Prefix](https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp)) dumps (data encoding used by the Ethereum protocol both network as well as consensus wise) to user-friendlier hierarchical representation (e.g. `rlpdump --hex CE0183FFFFFFC4C304050583616263`). |
|
||||||
|
|
||||||
|
|
@ -55,14 +54,14 @@ on how you can run your own `geth` instance.
|
||||||
|
|
||||||
Minimum:
|
Minimum:
|
||||||
|
|
||||||
* CPU with 2+ cores
|
* CPU with 4+ cores
|
||||||
* 4GB RAM
|
* 8GB RAM
|
||||||
* 1TB free storage space to sync the Mainnet
|
* 1TB free storage space to sync the Mainnet
|
||||||
* 8 MBit/sec download Internet service
|
* 8 MBit/sec download Internet service
|
||||||
|
|
||||||
Recommended:
|
Recommended:
|
||||||
|
|
||||||
* Fast CPU with 4+ cores
|
* Fast CPU with 8+ cores
|
||||||
* 16GB+ RAM
|
* 16GB+ RAM
|
||||||
* High-performance SSD with at least 1TB of free space
|
* High-performance SSD with at least 1TB of free space
|
||||||
* 25+ MBit/sec download Internet service
|
* 25+ MBit/sec download Internet service
|
||||||
|
|
@ -139,8 +138,6 @@ export your existing configuration:
|
||||||
$ geth --your-favourite-flags dumpconfig
|
$ geth --your-favourite-flags dumpconfig
|
||||||
```
|
```
|
||||||
|
|
||||||
*Note: This works only with `geth` v1.6.0 and above.*
|
|
||||||
|
|
||||||
#### Docker quick start
|
#### Docker quick start
|
||||||
|
|
||||||
One of the quickest ways to get Ethereum up and running on your machine is by using
|
One of the quickest ways to get Ethereum up and running on your machine is by using
|
||||||
|
|
@ -181,14 +178,13 @@ HTTP based JSON-RPC API options:
|
||||||
* `--http.addr` HTTP-RPC server listening interface (default: `localhost`)
|
* `--http.addr` HTTP-RPC server listening interface (default: `localhost`)
|
||||||
* `--http.port` HTTP-RPC server listening port (default: `8545`)
|
* `--http.port` HTTP-RPC server listening port (default: `8545`)
|
||||||
* `--http.api` API's offered over the HTTP-RPC interface (default: `eth,net,web3`)
|
* `--http.api` API's offered over the HTTP-RPC interface (default: `eth,net,web3`)
|
||||||
* `--http.corsdomain` Comma separated list of domains from which to accept cross origin requests (browser enforced)
|
* `--http.corsdomain` Comma separated list of domains from which to accept cross-origin requests (browser enforced)
|
||||||
* `--ws` Enable the WS-RPC server
|
* `--ws` Enable the WS-RPC server
|
||||||
* `--ws.addr` WS-RPC server listening interface (default: `localhost`)
|
* `--ws.addr` WS-RPC server listening interface (default: `localhost`)
|
||||||
* `--ws.port` WS-RPC server listening port (default: `8546`)
|
* `--ws.port` WS-RPC server listening port (default: `8546`)
|
||||||
* `--ws.api` API's offered over the WS-RPC interface (default: `eth,net,web3`)
|
* `--ws.api` API's offered over the WS-RPC interface (default: `eth,net,web3`)
|
||||||
* `--ws.origins` Origins from which to accept WebSocket requests
|
* `--ws.origins` Origins from which to accept WebSocket requests
|
||||||
* `--ipcdisable` Disable the IPC-RPC server
|
* `--ipcdisable` Disable the IPC-RPC server
|
||||||
* `--ipcapi` API's offered over the IPC-RPC interface (default: `admin,debug,eth,miner,net,personal,txpool,web3`)
|
|
||||||
* `--ipcpath` Filename for IPC socket/pipe within the datadir (explicit paths escape it)
|
* `--ipcpath` Filename for IPC socket/pipe within the datadir (explicit paths escape it)
|
||||||
|
|
||||||
You'll need to use your own programming environments' capabilities (libraries, tools, etc) to
|
You'll need to use your own programming environments' capabilities (libraries, tools, etc) to
|
||||||
|
|
@ -207,113 +203,14 @@ APIs!**
|
||||||
Maintaining your own private network is more involved as a lot of configurations taken for
|
Maintaining your own private network is more involved as a lot of configurations taken for
|
||||||
granted in the official networks need to be manually set up.
|
granted in the official networks need to be manually set up.
|
||||||
|
|
||||||
#### Defining the private genesis state
|
Unfortunately since [the Merge](https://ethereum.org/en/roadmap/merge/) it is no longer possible
|
||||||
|
to easily set up a network of geth nodes without also setting up a corresponding beacon chain.
|
||||||
|
|
||||||
First, you'll need to create the genesis state of your networks, which all nodes need to be
|
There are three different solutions depending on your use case:
|
||||||
aware of and agree upon. This consists of a small JSON file (e.g. call it `genesis.json`):
|
|
||||||
|
|
||||||
```json
|
* If you are looking for a simple way to test smart contracts from go in your CI, you can use the [Simulated Backend](https://geth.ethereum.org/docs/developers/dapp-developer/native-bindings#blockchain-simulator).
|
||||||
{
|
* If you want a convenient single node environment for testing, you can use our [Dev Mode](https://geth.ethereum.org/docs/developers/dapp-developer/dev-mode).
|
||||||
"config": {
|
* If you are looking for a multiple node test network, you can set one up quite easily with [Kurtosis](https://geth.ethereum.org/docs/fundamentals/kurtosis).
|
||||||
"chainId": <arbitrary positive integer>,
|
|
||||||
"homesteadBlock": 0,
|
|
||||||
"eip150Block": 0,
|
|
||||||
"eip155Block": 0,
|
|
||||||
"eip158Block": 0,
|
|
||||||
"byzantiumBlock": 0,
|
|
||||||
"constantinopleBlock": 0,
|
|
||||||
"petersburgBlock": 0,
|
|
||||||
"istanbulBlock": 0,
|
|
||||||
"berlinBlock": 0,
|
|
||||||
"londonBlock": 0
|
|
||||||
},
|
|
||||||
"alloc": {},
|
|
||||||
"coinbase": "0x0000000000000000000000000000000000000000",
|
|
||||||
"difficulty": "0x20000",
|
|
||||||
"extraData": "",
|
|
||||||
"gasLimit": "0x2fefd8",
|
|
||||||
"nonce": "0x0000000000000042",
|
|
||||||
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
||||||
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
||||||
"timestamp": "0x00"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
The above fields should be fine for most purposes, although we'd recommend changing
|
|
||||||
the `nonce` to some random value so you prevent unknown remote nodes from being able
|
|
||||||
to connect to you. If you'd like to pre-fund some accounts for easier testing, create
|
|
||||||
the accounts and populate the `alloc` field with their addresses.
|
|
||||||
|
|
||||||
```json
|
|
||||||
"alloc": {
|
|
||||||
"0x0000000000000000000000000000000000000001": {
|
|
||||||
"balance": "111111111"
|
|
||||||
},
|
|
||||||
"0x0000000000000000000000000000000000000002": {
|
|
||||||
"balance": "222222222"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
With the genesis state defined in the above JSON file, you'll need to initialize **every**
|
|
||||||
`geth` node with it prior to starting it up to ensure all blockchain parameters are correctly
|
|
||||||
set:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ geth init path/to/genesis.json
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Creating the rendezvous point
|
|
||||||
|
|
||||||
With all nodes that you want to run initialized to the desired genesis state, you'll need to
|
|
||||||
start a bootstrap node that others can use to find each other in your network and/or over
|
|
||||||
the internet. The clean way is to configure and run a dedicated bootnode:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ bootnode --genkey=boot.key
|
|
||||||
$ bootnode --nodekey=boot.key
|
|
||||||
```
|
|
||||||
|
|
||||||
With the bootnode online, it will display an [`enode` URL](https://ethereum.org/en/developers/docs/networking-layer/network-addresses/#enode)
|
|
||||||
that other nodes can use to connect to it and exchange peer information. Make sure to
|
|
||||||
replace the displayed IP address information (most probably `[::]`) with your externally
|
|
||||||
accessible IP to get the actual `enode` URL.
|
|
||||||
|
|
||||||
*Note: You could also use a full-fledged `geth` node as a bootnode, but it's the less
|
|
||||||
recommended way.*
|
|
||||||
|
|
||||||
#### Starting up your member nodes
|
|
||||||
|
|
||||||
With the bootnode operational and externally reachable (you can try
|
|
||||||
`telnet <ip> <port>` to ensure it's indeed reachable), start every subsequent `geth`
|
|
||||||
node pointed to the bootnode for peer discovery via the `--bootnodes` flag. It will
|
|
||||||
probably also be desirable to keep the data directory of your private network separated, so
|
|
||||||
do also specify a custom `--datadir` flag.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ geth --datadir=path/to/custom/data/folder --bootnodes=<bootnode-enode-url-from-above>
|
|
||||||
```
|
|
||||||
|
|
||||||
*Note: Since your network will be completely cut off from the main and test networks, you'll
|
|
||||||
also need to configure a miner to process transactions and create new blocks for you.*
|
|
||||||
|
|
||||||
#### Running a private miner
|
|
||||||
|
|
||||||
|
|
||||||
In a private network setting a single CPU miner instance is more than enough for
|
|
||||||
practical purposes as it can produce a stable stream of blocks at the correct intervals
|
|
||||||
without needing heavy resources (consider running on a single thread, no need for multiple
|
|
||||||
ones either). To start a `geth` instance for mining, run it with all your usual flags, extended
|
|
||||||
by:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ geth <usual-flags> --mine --miner.threads=1 --miner.etherbase=0x0000000000000000000000000000000000000000
|
|
||||||
```
|
|
||||||
|
|
||||||
Which will start mining blocks and transactions on a single CPU thread, crediting all
|
|
||||||
proceedings to the account specified by `--miner.etherbase`. You can further tune the mining
|
|
||||||
by changing the default gas limit blocks converge to (`--miner.targetgaslimit`) and the price
|
|
||||||
transactions are accepted at (`--miner.gasprice`).
|
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@ func (abi ABI) Pack(name string, args ...interface{}) ([]byte, error) {
|
||||||
|
|
||||||
func (abi ABI) getArguments(name string, data []byte) (Arguments, error) {
|
func (abi ABI) getArguments(name string, data []byte) (Arguments, error) {
|
||||||
// since there can't be naming collisions with contracts and events,
|
// since there can't be naming collisions with contracts and events,
|
||||||
// we need to decide whether we're calling a method or an event
|
// we need to decide whether we're calling a method, event or an error
|
||||||
var args Arguments
|
var args Arguments
|
||||||
if method, ok := abi.Methods[name]; ok {
|
if method, ok := abi.Methods[name]; ok {
|
||||||
if len(data)%32 != 0 {
|
if len(data)%32 != 0 {
|
||||||
|
|
@ -95,8 +95,11 @@ func (abi ABI) getArguments(name string, data []byte) (Arguments, error) {
|
||||||
if event, ok := abi.Events[name]; ok {
|
if event, ok := abi.Events[name]; ok {
|
||||||
args = event.Inputs
|
args = event.Inputs
|
||||||
}
|
}
|
||||||
|
if err, ok := abi.Errors[name]; ok {
|
||||||
|
args = err.Inputs
|
||||||
|
}
|
||||||
if args == nil {
|
if args == nil {
|
||||||
return nil, fmt.Errorf("abi: could not locate named method or event: %s", name)
|
return nil, fmt.Errorf("abi: could not locate named method, event or error: %s", name)
|
||||||
}
|
}
|
||||||
return args, nil
|
return args, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@ import (
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/common/math"
|
"github.com/ethereum/go-ethereum/common/math"
|
||||||
"github.com/ethereum/go-ethereum/crypto"
|
"github.com/ethereum/go-ethereum/crypto"
|
||||||
|
"github.com/ethereum/go-ethereum/internal/testrand"
|
||||||
)
|
)
|
||||||
|
|
||||||
const jsondata = `
|
const jsondata = `
|
||||||
|
|
@ -317,6 +318,38 @@ func TestCustomErrors(t *testing.T) {
|
||||||
check("MyError", "MyError(uint256)")
|
check("MyError", "MyError(uint256)")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCustomErrorUnpackIntoInterface(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
errorName := "MyError"
|
||||||
|
json := fmt.Sprintf(`[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"}],"name":"%s","type":"error"}]`, errorName)
|
||||||
|
abi, err := JSON(strings.NewReader(json))
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
type MyError struct {
|
||||||
|
Sender common.Address
|
||||||
|
Balance *big.Int
|
||||||
|
}
|
||||||
|
|
||||||
|
sender := testrand.Address()
|
||||||
|
balance := new(big.Int).SetBytes(testrand.Bytes(8))
|
||||||
|
encoded, err := abi.Errors[errorName].Inputs.Pack(sender, balance)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
result := MyError{}
|
||||||
|
err = abi.UnpackIntoInterface(&result, errorName, encoded)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if result.Sender != sender {
|
||||||
|
t.Errorf("expected %x got %x", sender, result.Sender)
|
||||||
|
}
|
||||||
|
if result.Balance.Cmp(balance) != 0 {
|
||||||
|
t.Errorf("expected %v got %v", balance, result.Balance)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestMultiPack(t *testing.T) {
|
func TestMultiPack(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
abi, err := JSON(strings.NewReader(jsondata))
|
abi, err := JSON(strings.NewReader(jsondata))
|
||||||
|
|
|
||||||
|
|
@ -30,12 +30,18 @@ import (
|
||||||
// WaitMined waits for tx to be mined on the blockchain.
|
// WaitMined waits for tx to be mined on the blockchain.
|
||||||
// It stops waiting when the context is canceled.
|
// It stops waiting when the context is canceled.
|
||||||
func WaitMined(ctx context.Context, b DeployBackend, tx *types.Transaction) (*types.Receipt, error) {
|
func WaitMined(ctx context.Context, b DeployBackend, tx *types.Transaction) (*types.Receipt, error) {
|
||||||
|
return WaitMinedHash(ctx, b, tx.Hash())
|
||||||
|
}
|
||||||
|
|
||||||
|
// WaitMinedHash waits for a transaction with the provided hash to be mined on the blockchain.
|
||||||
|
// It stops waiting when the context is canceled.
|
||||||
|
func WaitMinedHash(ctx context.Context, b DeployBackend, hash common.Hash) (*types.Receipt, error) {
|
||||||
queryTicker := time.NewTicker(time.Second)
|
queryTicker := time.NewTicker(time.Second)
|
||||||
defer queryTicker.Stop()
|
defer queryTicker.Stop()
|
||||||
|
|
||||||
logger := log.New("hash", tx.Hash())
|
logger := log.New("hash", hash)
|
||||||
for {
|
for {
|
||||||
receipt, err := b.TransactionReceipt(ctx, tx.Hash())
|
receipt, err := b.TransactionReceipt(ctx, hash)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return receipt, nil
|
return receipt, nil
|
||||||
}
|
}
|
||||||
|
|
@ -61,7 +67,13 @@ func WaitDeployed(ctx context.Context, b DeployBackend, tx *types.Transaction) (
|
||||||
if tx.To() != nil {
|
if tx.To() != nil {
|
||||||
return common.Address{}, errors.New("tx is not contract creation")
|
return common.Address{}, errors.New("tx is not contract creation")
|
||||||
}
|
}
|
||||||
receipt, err := WaitMined(ctx, b, tx)
|
return WaitDeployedHash(ctx, b, tx.Hash())
|
||||||
|
}
|
||||||
|
|
||||||
|
// WaitDeployedHash waits for a contract deployment transaction with the provided hash and returns the on-chain
|
||||||
|
// contract address when it is mined. It stops waiting when ctx is canceled.
|
||||||
|
func WaitDeployedHash(ctx context.Context, b DeployBackend, hash common.Hash) (common.Address, error) {
|
||||||
|
receipt, err := WaitMinedHash(ctx, b, hash)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return common.Address{}, err
|
return common.Address{}, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ func MakeTopics(query ...[]interface{}) ([][]common.Hash, error) {
|
||||||
case common.Address:
|
case common.Address:
|
||||||
copy(topic[common.HashLength-common.AddressLength:], rule[:])
|
copy(topic[common.HashLength-common.AddressLength:], rule[:])
|
||||||
case *big.Int:
|
case *big.Int:
|
||||||
copy(topic[:], math.U256Bytes(rule))
|
copy(topic[:], math.U256Bytes(new(big.Int).Set(rule)))
|
||||||
case bool:
|
case bool:
|
||||||
if rule {
|
if rule {
|
||||||
topic[common.HashLength-1] = 1
|
topic[common.HashLength-1] = 1
|
||||||
|
|
|
||||||
|
|
@ -149,6 +149,23 @@ func TestMakeTopics(t *testing.T) {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
t.Run("does not mutate big.Int", func(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
want := [][]common.Hash{{common.HexToHash("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")}}
|
||||||
|
|
||||||
|
in := big.NewInt(-1)
|
||||||
|
got, err := MakeTopics([]interface{}{in})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("makeTopics() error = %v", err)
|
||||||
|
}
|
||||||
|
if !reflect.DeepEqual(got, want) {
|
||||||
|
t.Fatalf("makeTopics() = %v, want %v", got, want)
|
||||||
|
}
|
||||||
|
if orig := big.NewInt(-1); in.Cmp(orig) != 0 {
|
||||||
|
t.Fatalf("makeTopics() mutated an input parameter from %v to %v", orig, in)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
type args struct {
|
type args struct {
|
||||||
|
|
|
||||||
|
|
@ -214,7 +214,9 @@ const (
|
||||||
// of starting any background processes such as automatic key derivation.
|
// of starting any background processes such as automatic key derivation.
|
||||||
WalletOpened
|
WalletOpened
|
||||||
|
|
||||||
// WalletDropped
|
// WalletDropped is fired when a wallet is removed or disconnected, either via USB
|
||||||
|
// or due to a filesystem event in the keystore. This event indicates that the wallet
|
||||||
|
// is no longer available for operations.
|
||||||
WalletDropped
|
WalletDropped
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
2
accounts/external/backend.go
vendored
2
accounts/external/backend.go
vendored
|
|
@ -215,7 +215,7 @@ func (api *ExternalSigner) SignTx(account accounts.Account, tx *types.Transactio
|
||||||
switch tx.Type() {
|
switch tx.Type() {
|
||||||
case types.LegacyTxType, types.AccessListTxType:
|
case types.LegacyTxType, types.AccessListTxType:
|
||||||
args.GasPrice = (*hexutil.Big)(tx.GasPrice())
|
args.GasPrice = (*hexutil.Big)(tx.GasPrice())
|
||||||
case types.DynamicFeeTxType, types.BlobTxType:
|
case types.DynamicFeeTxType, types.BlobTxType, types.SetCodeTxType:
|
||||||
args.MaxFeePerGas = (*hexutil.Big)(tx.GasFeeCap())
|
args.MaxFeePerGas = (*hexutil.Big)(tx.GasFeeCap())
|
||||||
args.MaxPriorityFeePerGas = (*hexutil.Big)(tx.GasTipCap())
|
args.MaxPriorityFeePerGas = (*hexutil.Big)(tx.GasTipCap())
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ func NewLedgerHub() (*Hub, error) {
|
||||||
return newHub(LedgerScheme, 0x2c97, []uint16{
|
return newHub(LedgerScheme, 0x2c97, []uint16{
|
||||||
|
|
||||||
// Device definitions taken from
|
// Device definitions taken from
|
||||||
// https://github.com/LedgerHQ/ledger-live/blob/38012bc8899e0f07149ea9cfe7e64b2c146bc92b/libs/ledgerjs/packages/devices/src/index.ts
|
// https://github.com/LedgerHQ/ledger-live/blob/595cb73b7e6622dbbcfc11867082ddc886f1bf01/libs/ledgerjs/packages/devices/src/index.ts
|
||||||
|
|
||||||
// Original product IDs
|
// Original product IDs
|
||||||
0x0000, /* Ledger Blue */
|
0x0000, /* Ledger Blue */
|
||||||
|
|
@ -81,18 +81,14 @@ func NewLedgerHub() (*Hub, error) {
|
||||||
0x0004, /* Ledger Nano X */
|
0x0004, /* Ledger Nano X */
|
||||||
0x0005, /* Ledger Nano S Plus */
|
0x0005, /* Ledger Nano S Plus */
|
||||||
0x0006, /* Ledger Nano FTS */
|
0x0006, /* Ledger Nano FTS */
|
||||||
|
0x0007, /* Ledger Flex */
|
||||||
|
|
||||||
0x0015, /* HID + U2F + WebUSB Ledger Blue */
|
0x0000, /* WebUSB Ledger Blue */
|
||||||
0x1015, /* HID + U2F + WebUSB Ledger Nano S */
|
0x1000, /* WebUSB Ledger Nano S */
|
||||||
0x4015, /* HID + U2F + WebUSB Ledger Nano X */
|
0x4000, /* WebUSB Ledger Nano X */
|
||||||
0x5015, /* HID + U2F + WebUSB Ledger Nano S Plus */
|
0x5000, /* WebUSB Ledger Nano S Plus */
|
||||||
0x6015, /* HID + U2F + WebUSB Ledger Nano FTS */
|
0x6000, /* WebUSB Ledger Nano FTS */
|
||||||
|
0x7000, /* WebUSB Ledger Flex */
|
||||||
0x0011, /* HID + WebUSB Ledger Blue */
|
|
||||||
0x1011, /* HID + WebUSB Ledger Nano S */
|
|
||||||
0x4011, /* HID + WebUSB Ledger Nano X */
|
|
||||||
0x5011, /* HID + WebUSB Ledger Nano S Plus */
|
|
||||||
0x6011, /* HID + WebUSB Ledger Nano FTS */
|
|
||||||
}, 0xffa0, 0, newLedgerDriver)
|
}, 0xffa0, 0, newLedgerDriver)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -185,8 +181,11 @@ func (hub *Hub) refreshWallets() {
|
||||||
|
|
||||||
for _, info := range infos {
|
for _, info := range infos {
|
||||||
for _, id := range hub.productIDs {
|
for _, id := range hub.productIDs {
|
||||||
|
// We check both the raw ProductID (legacy) and just the upper byte, as Ledger
|
||||||
|
// uses `MMII`, encoding a model (MM) and an interface bitfield (II)
|
||||||
|
mmOnly := info.ProductID & 0xff00
|
||||||
// Windows and Macos use UsageID matching, Linux uses Interface matching
|
// Windows and Macos use UsageID matching, Linux uses Interface matching
|
||||||
if info.ProductID == id && (info.UsagePage == hub.usageID || info.Interface == hub.endpointID) {
|
if (info.ProductID == id || mmOnly == id) && (info.UsagePage == hub.usageID || info.Interface == hub.endpointID) {
|
||||||
devices = append(devices, info)
|
devices = append(devices, info)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -265,15 +265,7 @@ func ExecutableDataToBlockNoHash(data ExecutableData, versionedHashes []common.H
|
||||||
|
|
||||||
var requestsHash *common.Hash
|
var requestsHash *common.Hash
|
||||||
if requests != nil {
|
if requests != nil {
|
||||||
// Put back request type byte.
|
h := types.CalcRequestsHash(requests)
|
||||||
typedRequests := make([][]byte, len(requests))
|
|
||||||
for i, reqdata := range requests {
|
|
||||||
typedReqdata := make([]byte, len(reqdata)+1)
|
|
||||||
typedReqdata[0] = byte(i)
|
|
||||||
copy(typedReqdata[1:], reqdata)
|
|
||||||
typedRequests[i] = typedReqdata
|
|
||||||
}
|
|
||||||
h := types.CalcRequestsHash(typedRequests)
|
|
||||||
requestsHash = &h
|
requestsHash = &h
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -343,20 +335,11 @@ func BlockToExecutableData(block *types.Block, fees *big.Int, sidecars []*types.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove type byte in requests.
|
|
||||||
var plainRequests [][]byte
|
|
||||||
if requests != nil {
|
|
||||||
plainRequests = make([][]byte, len(requests))
|
|
||||||
for i, reqdata := range requests {
|
|
||||||
plainRequests[i] = reqdata[1:]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return &ExecutionPayloadEnvelope{
|
return &ExecutionPayloadEnvelope{
|
||||||
ExecutionPayload: data,
|
ExecutionPayload: data,
|
||||||
BlockValue: fees,
|
BlockValue: fees,
|
||||||
BlobsBundle: &bundle,
|
BlobsBundle: &bundle,
|
||||||
Requests: plainRequests,
|
Requests: requests,
|
||||||
Override: false,
|
Override: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2023 The go-ethereum Authors
|
// Copyright 2024 The go-ethereum Authors
|
||||||
// This file is part of the go-ethereum library.
|
// This file is part of the go-ethereum library.
|
||||||
//
|
//
|
||||||
// The go-ethereum library is free software: you can redistribute it and/or modify
|
// The go-ethereum library is free software: you can redistribute it and/or modify
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2016 The go-ethereum Authors
|
// Copyright 2024 The go-ethereum Authors
|
||||||
// This file is part of the go-ethereum library.
|
// This file is part of the go-ethereum library.
|
||||||
//
|
//
|
||||||
// The go-ethereum library is free software: you can redistribute it and/or modify
|
// The go-ethereum library is free software: you can redistribute it and/or modify
|
||||||
|
|
|
||||||
|
|
@ -1,92 +1,86 @@
|
||||||
# This file contains sha256 checksums of optional build dependencies.
|
# This file contains sha256 checksums of optional build dependencies.
|
||||||
|
|
||||||
# version:spec-tests 2.1.0
|
# version:spec-tests pectra-devnet-6@v1.0.0
|
||||||
# https://github.com/ethereum/execution-spec-tests/releases
|
# https://github.com/ethereum/execution-spec-tests/releases
|
||||||
# https://github.com/ethereum/execution-spec-tests/releases/download/v2.1.0/
|
# https://github.com/ethereum/execution-spec-tests/releases/download/pectra-devnet-6%40v1.0.0/fixtures_pectra-devnet-6.tar.gz
|
||||||
ca89c76851b0900bfcc3cbb9a26cbece1f3d7c64a3bed38723e914713290df6c fixtures_develop.tar.gz
|
b69211752a3029083c020dc635fe12156ca1a6725a08559da540a0337586a77e fixtures_pectra-devnet-6.tar.gz
|
||||||
|
|
||||||
# version:golang 1.23.3
|
# version:golang 1.23.6
|
||||||
# https://go.dev/dl/
|
# https://go.dev/dl/
|
||||||
8d6a77332487557c6afa2421131b50f83db4ae3c579c3bc72e670ee1f6968599 go1.23.3.src.tar.gz
|
039c5b04e65279daceee8a6f71e70bd05cf5b801782b6f77c6e19e2ed0511222 go1.23.6.src.tar.gz
|
||||||
bdbf2a243ed4a121c9988684e5b15989cb244c1ff9e41ca823d0187b5c859114 go1.23.3.aix-ppc64.tar.gz
|
adec10f4ba56591f523aa04851f7f6900b1c61508dfa6b80e62717a8e6684a5c go1.23.6.aix-ppc64.tar.gz
|
||||||
b79c77bbdf61e6e486aa6bea9286f3f7969c28e2ff7686ce10c334f746bfb724 go1.23.3.darwin-amd64.pkg
|
782da50ce8ec5e98fac2cd3cdc6a1d7130d093294fc310038f651444232a3fb0 go1.23.6.darwin-amd64.tar.gz
|
||||||
c7e024d5c0bc81845070f23598caf02f05b8ae88fd4ad2cd3e236ddbea833ad2 go1.23.3.darwin-amd64.tar.gz
|
5cae2450a1708aeb0333237a155640d5562abaf195defebc4306054565536221 go1.23.6.darwin-arm64.tar.gz
|
||||||
3e764df0db8f3c7470b9ff641954a380510a4822613c06bd5a195fd083f4731d go1.23.3.darwin-arm64.pkg
|
d52efb3020d9332477ade98163c03d2f2fe3e051b0e7e01f0e167412c66de0cb go1.23.6.dragonfly-amd64.tar.gz
|
||||||
31e119fe9bde6e105407a32558d5b5fa6ca11e2bd17f8b7b2f8a06aba16a0632 go1.23.3.darwin-arm64.tar.gz
|
d3287706b5823712ac6cf7dff684a556cff98163ef60e7b275abe3388c17aac7 go1.23.6.freebsd-386.tar.gz
|
||||||
3872c9a98331050a242afe63fa6abc8fc313aca83dcaefda318e903309ac0c8d go1.23.3.dragonfly-amd64.tar.gz
|
ebb4c6a9b0673dbdabc439877779ed6add16575e21bd0a7955c33f692789aef6 go1.23.6.freebsd-amd64.tar.gz
|
||||||
69479fa016ec5b4605885643ce0c2dd5c583e02353978feb6de38c961863b9cc go1.23.3.freebsd-386.tar.gz
|
b7241584afb0b161c09148f8fde16171bb743e47b99d451fbc5f5217ec7a88b6 go1.23.6.freebsd-arm.tar.gz
|
||||||
bf1de22a900646ef4f79480ed88337856d47089cc610f87e6fef46f6b8db0e1f go1.23.3.freebsd-amd64.tar.gz
|
004718b53cedd7955d1b1dc4053539fcd1053c031f5f3374334a22befd1f8310 go1.23.6.freebsd-arm64.tar.gz
|
||||||
e461f866479bc36bdd4cfec32bfecb1bb243152268a1b3223de109410dec3407 go1.23.3.freebsd-arm.tar.gz
|
ca026ec8a30dd0c18164f40e1ce21bd725e2445f11699177d05815189a38de7a go1.23.6.freebsd-riscv64.tar.gz
|
||||||
24154b4018a45540aefeb6b5b9ffdcc8d9a8cdb78cd7fec262787b89fed19997 go1.23.3.freebsd-arm64.tar.gz
|
7db973efa3fb2e48e45059b855721550fce8e90803e7373d3efd37b88dd821e8 go1.23.6.illumos-amd64.tar.gz
|
||||||
218f3f1532e61dd65c330c2a5fc85bec18cc3690489763e62ffa9bb9fc85a68e go1.23.3.freebsd-riscv64.tar.gz
|
e61f87693169c0bbcc43363128f1e929b9dff0b7f448573f1bdd4e4a0b9687ba go1.23.6.linux-386.tar.gz
|
||||||
24e3f34858b8687c31f5e5ab9e46d27fb613b0d50a94261c500cebb2d79c0672 go1.23.3.illumos-amd64.tar.gz
|
9379441ea310de000f33a4dc767bd966e72ab2826270e038e78b2c53c2e7802d go1.23.6.linux-amd64.tar.gz
|
||||||
3d7b00191a43c50d28e0903a0c576104bc7e171a8670de419d41111c08dfa299 go1.23.3.linux-386.tar.gz
|
561c780e8f4a8955d32bf72e46af0b5ee5e0debe1e4633df9a03781878219202 go1.23.6.linux-arm64.tar.gz
|
||||||
a0afb9744c00648bafb1b90b4aba5bdb86f424f02f9275399ce0c20b93a2c3a8 go1.23.3.linux-amd64.tar.gz
|
27a4611010c16b8c4f37ade3aada55bd5781998f02f348b164302fd5eea4eb74 go1.23.6.linux-armv6l.tar.gz
|
||||||
1f7cbd7f668ea32a107ecd41b6488aaee1f5d77a66efd885b175494439d4e1ce go1.23.3.linux-arm64.tar.gz
|
c459226424372abc2b35957cc8955dad348330714f7605093325dbb73e33c750 go1.23.6.linux-loong64.tar.gz
|
||||||
5f0332754beffc65af65a7b2da76e9dd997567d0d81b6f4f71d3588dc7b4cb00 go1.23.3.linux-armv6l.tar.gz
|
e2a0aff70b958a3463a7d47132a2d0238369f64578d4f7f95e679e3a5af05622 go1.23.6.linux-mips.tar.gz
|
||||||
1d0161a8946c7d99f717bad23631738408511f9f87e78d852224a023d8882ad8 go1.23.3.linux-loong64.tar.gz
|
7d30ec7db056311d420bf930c16abcae13c0f41c26a202868f279721ec3c2f2f go1.23.6.linux-mips64.tar.gz
|
||||||
e924a7c9027f521f8a3563541ed0f89a4db3ef005b6b71263415b38e0b46e63a go1.23.3.linux-mips.tar.gz
|
74ca7bc475bcc084c6718b74df024d7de9612932cea8a6dc75e29d3a5315a23a go1.23.6.linux-mips64le.tar.gz
|
||||||
4cdf8c38165627f032c2b17cdd95e4aafff40d75fc873824d4c94914284098ca go1.23.3.linux-mips64.tar.gz
|
09bf935a14e9f59a20499989438b1655453480016bdbcb10406acf4df2678ccb go1.23.6.linux-mipsle.tar.gz
|
||||||
5e49347e7325d2e268fb14040529b704e66eed77154cc73a919e9167d8527a2f go1.23.3.linux-mips64le.tar.gz
|
5cb2f6a5090276c72c5eda8a55896f5a3d6ea0f28d10fa1a50e8318640f02d6c go1.23.6.linux-ppc64.tar.gz
|
||||||
142eabc17cee99403e895383ed7a6b7b40e740e8c2f73b79352bb9d1242fbd98 go1.23.3.linux-mipsle.tar.gz
|
0f817201e83d78ddbfa27f5f78d9b72450b92cc21d5e045145efacd0d3244a99 go1.23.6.linux-ppc64le.tar.gz
|
||||||
96ad61ba6b6cc0f5adfd75e65231c61e7db26d8236f01117023899528164d1b0 go1.23.3.linux-ppc64.tar.gz
|
f95f7f817ab22ecab4503d0704d6449ea1aa26a595f57bf9b9f94ddf2aa7c1f3 go1.23.6.linux-riscv64.tar.gz
|
||||||
e3b926c81e8099d3cee6e6e270b85b39c3bd44263f8d3df29aacb4d7e00507c8 go1.23.3.linux-ppc64le.tar.gz
|
321e7ed0d5416f731479c52fa7610b52b8079a8061967bd48cec6d66f671a60e go1.23.6.linux-s390x.tar.gz
|
||||||
324e03b6f59be841dfbaeabc466224b0f0905f5ad3a225b7c0703090e6c4b1a5 go1.23.3.linux-riscv64.tar.gz
|
92d678fb8e1eeeb8c6af6f22e4e5494652dcbb4a320113fc08325cb9956a2d4c go1.23.6.netbsd-386.tar.gz
|
||||||
6bd72fcef72b046b6282c2d1f2c38f31600e4fe9361fcd8341500c754fb09c38 go1.23.3.linux-s390x.tar.gz
|
86ba51e7bb26b30ea6a8d88ddb79d8e8c83b4116200040ecb7a5a44cf90a8c5c go1.23.6.netbsd-amd64.tar.gz
|
||||||
5df382337fe2e4ea6adaafa823da5e083513a97534a38f89d691dd6f599084ca go1.23.3.netbsd-386.tar.gz
|
4b974c35345100f0be6ea66afab2781de91ee9882117314126eaf0ae90fd3816 go1.23.6.netbsd-arm.tar.gz
|
||||||
9ae7cb6095a3e91182ac03547167e230fddd4941ed02dbdb6af663b2a53d9db7 go1.23.3.netbsd-amd64.tar.gz
|
53e3589fc38e787a493ea038961f8e40803714dbb42754c1713b00099c12e9b9 go1.23.6.netbsd-arm64.tar.gz
|
||||||
4a452c4134a9bea6213d8925d322f26b01c0eccda1330585bb2b241c76a0c3ea go1.23.3.netbsd-arm.tar.gz
|
6d2317b3a8505ccebff8f72d943f2ac9b82c115632e54a53a786eff24ced56d9 go1.23.6.openbsd-386.tar.gz
|
||||||
8ff3b5184d840148dbca061c04dca35a7070dc894255d3b755066bd76a7094dc go1.23.3.netbsd-arm64.tar.gz
|
f699e707d95a984fcc00361d91aecdb413d3c75e18235156ffba7a89edf68aae go1.23.6.openbsd-amd64.tar.gz
|
||||||
5b6940922e68ac1162a704a8b583fb4f039f955bfe97c35a56c40269cbcff9b1 go1.23.3.openbsd-386.tar.gz
|
3c1cf6ab893657d0bf1942e40ce115acfd27cbce1ccb9bc88fd9cd21ca3d489f go1.23.6.openbsd-arm.tar.gz
|
||||||
6ae4aeb6a88f3754b10ecec90422a30fb8bf86c3187be2be9408d67a5a235ace go1.23.3.openbsd-amd64.tar.gz
|
cc0875535d14001f2da23ae9af89025b28c466e8f4f4c63f991ebb6f4b02f66c go1.23.6.openbsd-arm64.tar.gz
|
||||||
e5eae226391b60c4d1ea1022663f55b225c6d7bab67f31fbafd5dd7a04684006 go1.23.3.openbsd-arm.tar.gz
|
64de80e29ca66cb566cbf8be030bf8599953af4e48402eab724cbe0a08b40602 go1.23.6.openbsd-ppc64.tar.gz
|
||||||
e12b2c04535e0bf5561d54831122b410d708519c1ec2c56b0c2350b15243c331 go1.23.3.openbsd-arm64.tar.gz
|
c398a6b43c569f34bb4a2d16b52f8010eaac9a2a82ecac0602b4338e35cef377 go1.23.6.openbsd-riscv64.tar.gz
|
||||||
599818e4062166d7a112f6f3fcca2dd4e2cdd3111fe48f9757bd8debf38c7f52 go1.23.3.openbsd-ppc64.tar.gz
|
10998b6b130bb7b542b407f0db42b86a913b111f8fa86d44394beaace4d45f01 go1.23.6.plan9-386.tar.gz
|
||||||
9ca4db8cab2a07d561f5b2a9397793684ab3b22326add1fe8cda8a545a1693db go1.23.3.openbsd-riscv64.tar.gz
|
9fbe8065436d8d12c02f19f64f51c9107da3a7a4ac46ab5777e182e9fe88c32f go1.23.6.plan9-amd64.tar.gz
|
||||||
8fca1ec2aced936e0170605378ee7f0acb38f002490321f67fc83728ee281967 go1.23.3.plan9-386.tar.gz
|
8e3c826b884daee2de37e3b070d7eac4cea5d68edab8db09910e22201c75db83 go1.23.6.plan9-arm.tar.gz
|
||||||
22d663692224fc1933a97f61d9fe49815e3b9ef1c2be97046505683fdf2e23c7 go1.23.3.plan9-amd64.tar.gz
|
b619eff63fec86daaea92ca170559e448a58b8ba0b92eef1971bc14e92ea86a7 go1.23.6.solaris-amd64.tar.gz
|
||||||
d0417a702d0e776d57e450fa2ce1ce7efa199a636644776862dbf946c409a462 go1.23.3.plan9-arm.tar.gz
|
96820c0f5d464dd694543329e9b4d413b17c821c03a055717a29e6735b44c2d8 go1.23.6.windows-386.zip
|
||||||
b5d9db1c02e0ca266a142eb687bd7749890c30872b09a4a0ffcd491425039754 go1.23.3.solaris-amd64.tar.gz
|
53fec1586850b2cf5ad6438341ff7adc5f6700dd3ec1cfa3f5e8b141df190243 go1.23.6.windows-amd64.zip
|
||||||
14b7baf4af2046013b74dfac6e9a0a7403f15ee9940a16890bc028dfd32c49ac go1.23.3.windows-386.msi
|
22c2518c45c20018afa20d5376dc9fd7a7e74367240ed7b5209e79a30b5c4218 go1.23.6.windows-arm.zip
|
||||||
23da9089ea6c5612d718f13c26e9bfc9aaaabe222838075346a8191d48f9dfe5 go1.23.3.windows-386.zip
|
a2d2ec1b3759552bdd9cdf58858f91dfbfd6ab3a472f00b5255acbed30b1aa41 go1.23.6.windows-arm64.zip
|
||||||
614f0e3eed82245dfb4356d4e8d5b96abecca6a4c4f0168c0e389e4dd6284db8 go1.23.3.windows-amd64.msi
|
|
||||||
81968b563642096b8a7521171e2be6e77ff6f44032f7493b7bdec9d33f44f31d go1.23.3.windows-amd64.zip
|
|
||||||
c9951eecad732c59dfde6dc4803fa9253eb074663c61035c8d856f4d2eb146cb go1.23.3.windows-arm.msi
|
|
||||||
1a7db02be47deada42082d21d63eba0013f93375cfa0e7768962f1295a469022 go1.23.3.windows-arm.zip
|
|
||||||
a74e3e195219af4330b93c71cd4b736b709a5654a07cc37eebe181c4984afb82 go1.23.3.windows-arm64.msi
|
|
||||||
dbdfa868b1a3f8c62950373e4975d83f90dd8b869a3907319af8384919bcaffe go1.23.3.windows-arm64.zip
|
|
||||||
|
|
||||||
# version:golangci 1.61.0
|
# version:golangci 1.63.4
|
||||||
# https://github.com/golangci/golangci-lint/releases/
|
# https://github.com/golangci/golangci-lint/releases/
|
||||||
# https://github.com/golangci/golangci-lint/releases/download/v1.61.0/
|
# https://github.com/golangci/golangci-lint/releases/download/v1.63.4/
|
||||||
5c280ef3284f80c54fd90d73dc39ca276953949da1db03eb9dd0fbf868cc6e55 golangci-lint-1.61.0-darwin-amd64.tar.gz
|
878d017cc360e4fb19510d39852c8189852e3c48e7ce0337577df73507c97d68 golangci-lint-1.63.4-darwin-amd64.tar.gz
|
||||||
544334890701e4e04a6e574bc010bea8945205c08c44cced73745a6378012d36 golangci-lint-1.61.0-darwin-arm64.tar.gz
|
a2b630c2ac8466393f0ccbbede4462387b6c190697a70bc2298c6d2123f21bbf golangci-lint-1.63.4-darwin-arm64.tar.gz
|
||||||
e885a6f561092055930ebd298914d80e8fd2e10d2b1e9942836c2c6a115301fa golangci-lint-1.61.0-freebsd-386.tar.gz
|
8938b74aa92888e561a1c5a4c175110b92f84e7d24733703e6d9ebc39e9cd5f8 golangci-lint-1.63.4-freebsd-386.tar.gz
|
||||||
b13f6a3f11f65e7ff66b734d7554df3bbae0f485768848424e7554ed289e19c2 golangci-lint-1.61.0-freebsd-amd64.tar.gz
|
054903339d620df2e760b978920100986e3b03bcb058f669d520a71dac9c34ed golangci-lint-1.63.4-freebsd-amd64.tar.gz
|
||||||
cd8e7bbe5b8f33ed1597aa1cc588da96a3b9f22e1b9ae60d93511eae1a0ee8c5 golangci-lint-1.61.0-freebsd-armv6.tar.gz
|
a19d499f961a02608348e8b626537a88edfaab6e1b6534f1eff742b5d6d750e4 golangci-lint-1.63.4-freebsd-armv6.tar.gz
|
||||||
7ade524dbd88bd250968f45e190af90e151fa5ee63dd6aa7f7bb90e8155db61d golangci-lint-1.61.0-freebsd-armv7.tar.gz
|
00d616f0fb275b780ce4d26604bdd7fdbfe6bc9c63acd5a0b31498e1f7511108 golangci-lint-1.63.4-freebsd-armv7.tar.gz
|
||||||
0fe3cd8a1ed8d9f54f48670a5af3df056d6040d94017057f0f4d65c930660ad9 golangci-lint-1.61.0-illumos-amd64.tar.gz
|
d453688e0eabded3c1a97ff5a2777bb0df5a18851efdaaaf6b472e3e5713c33e golangci-lint-1.63.4-illumos-amd64.tar.gz
|
||||||
b463fc5053a612abd26393ebaff1d85d7d56058946f4f0f7bf25ed44ea899415 golangci-lint-1.61.0-linux-386.tar.gz
|
6b1bec847fc9f347d53712d05606a49d55d0e3b5c1bacadfed2393f3503de0e9 golangci-lint-1.63.4-linux-386.tar.gz
|
||||||
77cb0af99379d9a21d5dc8c38364d060e864a01bd2f3e30b5e8cc550c3a54111 golangci-lint-1.61.0-linux-amd64.tar.gz
|
01abb14a4df47b5ca585eff3c34b105023cba92ec34ff17212dbb83855581690 golangci-lint-1.63.4-linux-amd64.tar.gz
|
||||||
af60ac05566d9351615cb31b4cc070185c25bf8cbd9b09c1873aa5ec6f3cc17e golangci-lint-1.61.0-linux-arm64.tar.gz
|
51f0c79d19a92353e0465fb30a4901a0644a975d34e6f399ad2eebc0160bbb24 golangci-lint-1.63.4-linux-arm64.tar.gz
|
||||||
1f307f2fcc5d7d674062a967a0d83a7091e300529aa237ec6ad2b3dd14c897f5 golangci-lint-1.61.0-linux-armv6.tar.gz
|
8d0a43f41e8424fbae10f7aa2dc29999f98112817c6dba63d7dc76832940a673 golangci-lint-1.63.4-linux-armv6.tar.gz
|
||||||
3ad8cbaae75a547450844811300f99c4cd290277398e43d22b9eb1792d15af4c golangci-lint-1.61.0-linux-armv7.tar.gz
|
1045a047b31e9302c9160c7b0f199f4ac1bd02a1b221a2d9521bd3507f0cf671 golangci-lint-1.63.4-linux-armv7.tar.gz
|
||||||
9be2ca67d961d7699079739cf6f7c8291c5183d57e34d1677de21ca19d0bd3ed golangci-lint-1.61.0-linux-loong64.tar.gz
|
933fe10ab50ce3bb0806e15a4ae69fe20f0549abf91dea0161236000ca706e67 golangci-lint-1.63.4-linux-loong64.tar.gz
|
||||||
90d005e1648115ebf0861b408eab9c936079a24763e883058b0a227cd3135d31 golangci-lint-1.61.0-linux-mips64.tar.gz
|
45798630cbad5642862766051199fa862ef3c33d569cab12f01cac4f68e2ddd5 golangci-lint-1.63.4-linux-mips64.tar.gz
|
||||||
6d2ed4f49407115460b8c10ccfc40fd177e0887a48864a2879dd16e84ba2a48c golangci-lint-1.61.0-linux-mips64le.tar.gz
|
86ae25335ddb24975d2c915c1af0c7fad70dce99d0b4614fa4bee392de714aa2 golangci-lint-1.63.4-linux-mips64le.tar.gz
|
||||||
633089589af5a58b7430afb6eee107d4e9c99e8d91711ddc219eb13a07e8d3b8 golangci-lint-1.61.0-linux-ppc64le.tar.gz
|
33dabd11aaba4b602938da98bcf49aabab55019557e0115cdc3dbcc3009768fa golangci-lint-1.63.4-linux-ppc64le.tar.gz
|
||||||
4c1a097d9e0d1b4a8144dae6a1f5583a38d662f3bdc1498c4e954b6ed856be98 golangci-lint-1.61.0-linux-riscv64.tar.gz
|
4e7a81230a663bcdf30bba5689ce96040abc76994dbc2003dce32c8dca8c06f3 golangci-lint-1.63.4-linux-riscv64.tar.gz
|
||||||
30581d3c987d287b7064617f1a2694143e10dffc40bc25be6636006ee82d7e1c golangci-lint-1.61.0-linux-s390x.tar.gz
|
21370b49c7c47f4d9b8f982c952f940b01e65710174c3b4dad7b6452d58f92ec golangci-lint-1.63.4-linux-s390x.tar.gz
|
||||||
42530bf8100bd43c07f5efe6d92148ba6c5a7a712d510c6f24be85af6571d5eb golangci-lint-1.61.0-netbsd-386.tar.gz
|
255866a6464c7e11bb7edd8e6e6ad54f11e1f01b82ba9ca229698ac788cd9724 golangci-lint-1.63.4-netbsd-386.tar.gz
|
||||||
b8bb07c920f6601edf718d5e82ec0784fd590b0992b42b6ec18da99f26013ed4 golangci-lint-1.61.0-netbsd-amd64.tar.gz
|
2798c040ac658bda97224f204795199c81ac97bb207b21c02b664aaed380d5d2 golangci-lint-1.63.4-netbsd-amd64.tar.gz
|
||||||
353a51527c60bd0776b0891b03f247c791986f625fca689d121972c624e54198 golangci-lint-1.61.0-netbsd-arm64.tar.gz
|
b910eecffd0064103837e7e1abe870deb8ade22331e6dffe319f430d49399c8e golangci-lint-1.63.4-netbsd-arm64.tar.gz
|
||||||
957a6272c3137910514225704c5dac0723b9c65eb7d9587366a997736e2d7580 golangci-lint-1.61.0-netbsd-armv6.tar.gz
|
df2693ef37147b457c3e2089614537dd2ae2e18e53641e756a5b404f4c72d3fa golangci-lint-1.63.4-netbsd-armv6.tar.gz
|
||||||
a89eb28ff7f18f5cd52b914739360fa95cf2f643de4adeca46e26bec3a07e8d8 golangci-lint-1.61.0-netbsd-armv7.tar.gz
|
a28a533366974bd7834c4516cd6075bff3419a508d1ed7aa63ae8182768b352e golangci-lint-1.63.4-netbsd-armv7.tar.gz
|
||||||
d8d74c43600b271393000717a4ed157d7a15bb85bab7db2efad9b63a694d4634 golangci-lint-1.61.0-windows-386.zip
|
368932775fb5c620b324dabf018155f3365f5e33c5af5b26e9321db373f96eea golangci-lint-1.63.4-windows-386.zip
|
||||||
e7bc2a81929a50f830244d6d2e657cce4f19a59aff49fa9000176ff34fda64ce golangci-lint-1.61.0-windows-amd64.zip
|
184d13c2b8f5441576bec2a0d8ba7b2d45445595cf796b879a73bcc98c39f8c1 golangci-lint-1.63.4-windows-amd64.zip
|
||||||
ed97c221596dd771e3dd9344872c140340bee2e819cd7a90afa1de752f1f2e0f golangci-lint-1.61.0-windows-arm64.zip
|
4fabf175d5b05ef0858ded49527948eebac50e9093814979fd84555a75fb80a6 golangci-lint-1.63.4-windows-arm64.zip
|
||||||
4b365233948b13d02d45928a5c390045e00945e919747b9887b5f260247541ae golangci-lint-1.61.0-windows-armv6.zip
|
e92be3f3ff30d4a849fb4b9a4c8d56837dee45269cb405a3ecad52fa034c781b golangci-lint-1.63.4-windows-armv6.zip
|
||||||
595538fb64d152173959d28f6235227f9cd969a828e5af0c4e960d02af4ffd0e golangci-lint-1.61.0-windows-armv7.zip
|
c71d348653b8f7fbb109bb10c1a481722bc6b0b2b6e731b897f99ac869f7653e golangci-lint-1.63.4-windows-armv7.zip
|
||||||
|
|
||||||
# This is the builder on PPA that will build Go itself (inception-y), don't modify!
|
# This is the builder on PPA that will build Go itself (inception-y), don't modify!
|
||||||
#
|
#
|
||||||
|
|
|
||||||
53
build/ci.go
53
build/ci.go
|
|
@ -75,7 +75,6 @@ var (
|
||||||
allToolsArchiveFiles = []string{
|
allToolsArchiveFiles = []string{
|
||||||
"COPYING",
|
"COPYING",
|
||||||
executablePath("abigen"),
|
executablePath("abigen"),
|
||||||
executablePath("bootnode"),
|
|
||||||
executablePath("evm"),
|
executablePath("evm"),
|
||||||
executablePath("geth"),
|
executablePath("geth"),
|
||||||
executablePath("rlpdump"),
|
executablePath("rlpdump"),
|
||||||
|
|
@ -88,10 +87,6 @@ var (
|
||||||
BinaryName: "abigen",
|
BinaryName: "abigen",
|
||||||
Description: "Source code generator to convert Ethereum contract definitions into easy to use, compile-time type-safe Go packages.",
|
Description: "Source code generator to convert Ethereum contract definitions into easy to use, compile-time type-safe Go packages.",
|
||||||
},
|
},
|
||||||
{
|
|
||||||
BinaryName: "bootnode",
|
|
||||||
Description: "Ethereum bootnode.",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
BinaryName: "evm",
|
BinaryName: "evm",
|
||||||
Description: "Developer utility version of the EVM (Ethereum Virtual Machine) that is capable of running bytecode snippets within a configurable environment and execution mode.",
|
Description: "Developer utility version of the EVM (Ethereum Virtual Machine) that is capable of running bytecode snippets within a configurable environment and execution mode.",
|
||||||
|
|
@ -257,7 +252,7 @@ func buildFlags(env build.Environment, staticLinking bool, buildTags []string) (
|
||||||
// See https://sourceware.org/binutils/docs-2.23.1/ld/Options.html#Options
|
// See https://sourceware.org/binutils/docs-2.23.1/ld/Options.html#Options
|
||||||
// regarding the options --build-id=none and --strip-all. It is needed for
|
// regarding the options --build-id=none and --strip-all. It is needed for
|
||||||
// reproducible builds; removing references to temporary files in C-land, and
|
// reproducible builds; removing references to temporary files in C-land, and
|
||||||
// making build-id reproducably absent.
|
// making build-id reproducibly absent.
|
||||||
extld := []string{"-Wl,-z,stack-size=0x800000,--build-id=none,--strip-all"}
|
extld := []string{"-Wl,-z,stack-size=0x800000,--build-id=none,--strip-all"}
|
||||||
if staticLinking {
|
if staticLinking {
|
||||||
extld = append(extld, "-static")
|
extld = append(extld, "-static")
|
||||||
|
|
@ -304,8 +299,8 @@ func doTest(cmdline []string) {
|
||||||
}
|
}
|
||||||
gotest := tc.Go("test")
|
gotest := tc.Go("test")
|
||||||
|
|
||||||
// CI needs a bit more time for the statetests (default 10m).
|
// CI needs a bit more time for the statetests (default 45m).
|
||||||
gotest.Args = append(gotest.Args, "-timeout=30m")
|
gotest.Args = append(gotest.Args, "-timeout=45m")
|
||||||
|
|
||||||
// Enable CKZG backend in CI.
|
// Enable CKZG backend in CI.
|
||||||
gotest.Args = append(gotest.Args, "-tags=ckzg")
|
gotest.Args = append(gotest.Args, "-tags=ckzg")
|
||||||
|
|
@ -344,8 +339,8 @@ func downloadSpecTestFixtures(csdb *build.ChecksumDB, cachedir string) string {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
ext := ".tar.gz"
|
ext := ".tar.gz"
|
||||||
base := "fixtures_develop" // TODO(MariusVanDerWijden) rename once the version becomes part of the filename
|
base := "fixtures_pectra-devnet-6" // TODO(s1na) rename once the version becomes part of the filename
|
||||||
url := fmt.Sprintf("https://github.com/ethereum/execution-spec-tests/releases/download/v%s/%s%s", executionSpecTestsVersion, base, ext)
|
url := fmt.Sprintf("https://github.com/ethereum/execution-spec-tests/releases/download/%s/%s%s", executionSpecTestsVersion, base, ext)
|
||||||
archivePath := filepath.Join(cachedir, base+ext)
|
archivePath := filepath.Join(cachedir, base+ext)
|
||||||
if err := csdb.DownloadFile(url, archivePath); err != nil {
|
if err := csdb.DownloadFile(url, archivePath); err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|
@ -690,7 +685,8 @@ func maybeSkipArchive(env build.Environment) {
|
||||||
func doDockerBuildx(cmdline []string) {
|
func doDockerBuildx(cmdline []string) {
|
||||||
var (
|
var (
|
||||||
platform = flag.String("platform", "", `Push a multi-arch docker image for the specified architectures (usually "linux/amd64,linux/arm64")`)
|
platform = flag.String("platform", "", `Push a multi-arch docker image for the specified architectures (usually "linux/amd64,linux/arm64")`)
|
||||||
upload = flag.String("upload", "", `Where to upload the docker image (usually "ethereum/client-go")`)
|
hubImage = flag.String("hub", "ethereum/client-go", `Where to upload the docker image`)
|
||||||
|
upload = flag.Bool("upload", false, `Whether to trigger upload`)
|
||||||
)
|
)
|
||||||
flag.CommandLine.Parse(cmdline)
|
flag.CommandLine.Parse(cmdline)
|
||||||
|
|
||||||
|
|
@ -723,32 +719,39 @@ func doDockerBuildx(cmdline []string) {
|
||||||
tags = []string{"latest"}
|
tags = []string{"latest"}
|
||||||
case strings.HasPrefix(env.Tag, "v1."):
|
case strings.HasPrefix(env.Tag, "v1."):
|
||||||
tags = []string{"stable", fmt.Sprintf("release-%v", version.Family), "v" + version.Semantic}
|
tags = []string{"stable", fmt.Sprintf("release-%v", version.Family), "v" + version.Semantic}
|
||||||
|
|
||||||
case strings.HasPrefix(env.Branch, "firehose"):
|
case strings.HasPrefix(env.Branch, "firehose"):
|
||||||
tags = []string{"edge-fh" + tracers.FirehoseProtocolVersion}
|
tags = []string{"edge-fh" + tracers.FirehoseProtocolVersion}
|
||||||
case strings.Contains(env.Tag, "fh"):
|
case strings.Contains(env.Tag, "fh"):
|
||||||
tags = []string{"stable-fh" + tracers.FirehoseProtocolVersion, "v" + version.Semantic + "-fh" + tracers.FirehoseProtocolVersion}
|
tags = []string{"stable-fh" + tracers.FirehoseProtocolVersion, "v" + version.Semantic + "-fh" + tracers.FirehoseProtocolVersion}
|
||||||
}
|
}
|
||||||
// Need to create a mult-arch builder
|
// Need to create a mult-arch builder
|
||||||
build.MustRunCommand("docker", "buildx", "create", "--use", "--name", "multi-arch-builder", "--platform", *platform)
|
check := exec.Command("docker", "buildx", "inspect", "multi-arch-builder")
|
||||||
|
if check.Run() != nil {
|
||||||
|
build.MustRunCommand("docker", "buildx", "create", "--use", "--name", "multi-arch-builder", "--platform", *platform)
|
||||||
|
}
|
||||||
|
|
||||||
for _, spec := range []struct {
|
for _, spec := range []struct {
|
||||||
file string
|
file string
|
||||||
base string
|
base string
|
||||||
}{
|
}{
|
||||||
{file: "Dockerfile", base: fmt.Sprintf("%s:", *upload)},
|
{file: "Dockerfile", base: fmt.Sprintf("%s:", *hubImage)},
|
||||||
// {file: "Dockerfile.alltools", base: fmt.Sprintf("%s:alltools-", *upload)},
|
{file: "Dockerfile.alltools", base: fmt.Sprintf("%s:alltools-", *hubImage)},
|
||||||
} {
|
} {
|
||||||
for _, tag := range tags { // latest, stable etc
|
for _, tag := range tags { // latest, stable etc
|
||||||
gethImage := fmt.Sprintf("%s%s", spec.base, tag)
|
gethImage := fmt.Sprintf("%s%s", spec.base, tag)
|
||||||
build.MustRunCommand("docker", "buildx", "build",
|
cmd := exec.Command("docker", "buildx", "build",
|
||||||
"--build-arg", "COMMIT="+env.Commit,
|
"--build-arg", "COMMIT="+env.Commit,
|
||||||
"--build-arg", "VERSION="+version.WithMeta+"-fh"+tracers.FirehoseProtocolVersion,
|
"--build-arg", "VERSION="+version.WithMeta,
|
||||||
"--build-arg", "BUILDNUM="+env.Buildnum,
|
"--build-arg", "BUILDNUM="+env.Buildnum,
|
||||||
"--tag", gethImage,
|
"--tag", gethImage,
|
||||||
"--platform", *platform,
|
"--platform", *platform,
|
||||||
"--push",
|
"--file", spec.file,
|
||||||
"--file", spec.file, ".")
|
)
|
||||||
|
if *upload {
|
||||||
|
cmd.Args = append(cmd.Args, "--push")
|
||||||
|
}
|
||||||
|
cmd.Args = append(cmd.Args, ".")
|
||||||
|
build.MustRun(cmd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -894,11 +897,17 @@ func ppaUpload(workdir, ppa, sshUser string, files []string) {
|
||||||
os.WriteFile(idfile, sshkey, 0600)
|
os.WriteFile(idfile, sshkey, 0600)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Upload
|
// Upload. This doesn't always work, so try up to three times.
|
||||||
dest := sshUser + "@ppa.launchpad.net"
|
dest := sshUser + "@ppa.launchpad.net"
|
||||||
if err := build.UploadSFTP(idfile, dest, incomingDir, files); err != nil {
|
for i := 0; i < 3; i++ {
|
||||||
log.Fatal(err)
|
err := build.UploadSFTP(idfile, dest, incomingDir, files)
|
||||||
|
if err == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.Println("PPA upload failed:", err)
|
||||||
|
time.Sleep(5 * time.Second)
|
||||||
}
|
}
|
||||||
|
log.Fatal("PPA upload failed all attempts.")
|
||||||
}
|
}
|
||||||
|
|
||||||
func getenvBase64(variable string) []byte {
|
func getenvBase64(variable string) []byte {
|
||||||
|
|
|
||||||
|
|
@ -98,6 +98,9 @@ func abigen(c *cli.Context) error {
|
||||||
if c.String(pkgFlag.Name) == "" {
|
if c.String(pkgFlag.Name) == "" {
|
||||||
utils.Fatalf("No destination package specified (--pkg)")
|
utils.Fatalf("No destination package specified (--pkg)")
|
||||||
}
|
}
|
||||||
|
if c.String(abiFlag.Name) == "" && c.String(jsonFlag.Name) == "" {
|
||||||
|
utils.Fatalf("Either contract ABI source (--abi) or combined-json (--combined-json) are required")
|
||||||
|
}
|
||||||
var lang bind.Lang
|
var lang bind.Lang
|
||||||
switch c.String(langFlag.Name) {
|
switch c.String(langFlag.Name) {
|
||||||
case "go":
|
case "go":
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,19 @@
|
||||||
|
// Copyright 2022 The go-ethereum Authors
|
||||||
|
// This file is part of go-ethereum.
|
||||||
|
//
|
||||||
|
// go-ethereum is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// go-ethereum 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 General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,19 @@
|
||||||
|
// Copyright 2022 The go-ethereum Authors
|
||||||
|
// This file is part of go-ethereum.
|
||||||
|
//
|
||||||
|
// go-ethereum is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// go-ethereum 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 General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,18 @@
|
||||||
// Copyright 2022 The go-ethereum Authors
|
// Copyright 2024 The go-ethereum Authors
|
||||||
// This file is part of the go-ethereum library.
|
// This file is part of go-ethereum.
|
||||||
//
|
//
|
||||||
// The go-ethereum library is free software: you can redistribute it and/or modify
|
// go-ethereum is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU Lesser General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// (at your option) any later version.
|
// (at your option) any later version.
|
||||||
//
|
//
|
||||||
// The go-ethereum library is distributed in the hope that it will be useful,
|
// go-ethereum is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU Lesser General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU Lesser General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
|
// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,209 +0,0 @@
|
||||||
// Copyright 2015 The go-ethereum Authors
|
|
||||||
// This file is part of go-ethereum.
|
|
||||||
//
|
|
||||||
// go-ethereum is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU General Public License as published by
|
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
|
||||||
// (at your option) any later version.
|
|
||||||
//
|
|
||||||
// go-ethereum 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 General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
// bootnode runs a bootstrap node for the Ethereum Discovery Protocol.
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"crypto/ecdsa"
|
|
||||||
"flag"
|
|
||||||
"fmt"
|
|
||||||
"net"
|
|
||||||
"os"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/cmd/utils"
|
|
||||||
"github.com/ethereum/go-ethereum/crypto"
|
|
||||||
"github.com/ethereum/go-ethereum/log"
|
|
||||||
"github.com/ethereum/go-ethereum/p2p/discover"
|
|
||||||
"github.com/ethereum/go-ethereum/p2p/enode"
|
|
||||||
"github.com/ethereum/go-ethereum/p2p/nat"
|
|
||||||
"github.com/ethereum/go-ethereum/p2p/netutil"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
var (
|
|
||||||
listenAddr = flag.String("addr", ":30301", "listen address")
|
|
||||||
genKey = flag.String("genkey", "", "generate a node key")
|
|
||||||
writeAddr = flag.Bool("writeaddress", false, "write out the node's public key and quit")
|
|
||||||
nodeKeyFile = flag.String("nodekey", "", "private key filename")
|
|
||||||
nodeKeyHex = flag.String("nodekeyhex", "", "private key as hex (for testing)")
|
|
||||||
natdesc = flag.String("nat", "none", "port mapping mechanism (any|none|upnp|pmp|pmp:<IP>|extip:<IP>)")
|
|
||||||
netrestrict = flag.String("netrestrict", "", "restrict network communication to the given IP networks (CIDR masks)")
|
|
||||||
runv5 = flag.Bool("v5", false, "run a v5 topic discovery bootnode")
|
|
||||||
verbosity = flag.Int("verbosity", 3, "log verbosity (0-5)")
|
|
||||||
vmodule = flag.String("vmodule", "", "log verbosity pattern")
|
|
||||||
|
|
||||||
nodeKey *ecdsa.PrivateKey
|
|
||||||
err error
|
|
||||||
)
|
|
||||||
flag.Parse()
|
|
||||||
|
|
||||||
glogger := log.NewGlogHandler(log.NewTerminalHandler(os.Stderr, false))
|
|
||||||
slogVerbosity := log.FromLegacyLevel(*verbosity)
|
|
||||||
glogger.Verbosity(slogVerbosity)
|
|
||||||
glogger.Vmodule(*vmodule)
|
|
||||||
log.SetDefault(log.NewLogger(glogger))
|
|
||||||
|
|
||||||
natm, err := nat.Parse(*natdesc)
|
|
||||||
if err != nil {
|
|
||||||
utils.Fatalf("-nat: %v", err)
|
|
||||||
}
|
|
||||||
switch {
|
|
||||||
case *genKey != "":
|
|
||||||
nodeKey, err = crypto.GenerateKey()
|
|
||||||
if err != nil {
|
|
||||||
utils.Fatalf("could not generate key: %v", err)
|
|
||||||
}
|
|
||||||
if err = crypto.SaveECDSA(*genKey, nodeKey); err != nil {
|
|
||||||
utils.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
if !*writeAddr {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
case *nodeKeyFile == "" && *nodeKeyHex == "":
|
|
||||||
utils.Fatalf("Use -nodekey or -nodekeyhex to specify a private key")
|
|
||||||
case *nodeKeyFile != "" && *nodeKeyHex != "":
|
|
||||||
utils.Fatalf("Options -nodekey and -nodekeyhex are mutually exclusive")
|
|
||||||
case *nodeKeyFile != "":
|
|
||||||
if nodeKey, err = crypto.LoadECDSA(*nodeKeyFile); err != nil {
|
|
||||||
utils.Fatalf("-nodekey: %v", err)
|
|
||||||
}
|
|
||||||
case *nodeKeyHex != "":
|
|
||||||
if nodeKey, err = crypto.HexToECDSA(*nodeKeyHex); err != nil {
|
|
||||||
utils.Fatalf("-nodekeyhex: %v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if *writeAddr {
|
|
||||||
fmt.Printf("%x\n", crypto.FromECDSAPub(&nodeKey.PublicKey)[1:])
|
|
||||||
os.Exit(0)
|
|
||||||
}
|
|
||||||
|
|
||||||
var restrictList *netutil.Netlist
|
|
||||||
if *netrestrict != "" {
|
|
||||||
restrictList, err = netutil.ParseNetlist(*netrestrict)
|
|
||||||
if err != nil {
|
|
||||||
utils.Fatalf("-netrestrict: %v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
addr, err := net.ResolveUDPAddr("udp", *listenAddr)
|
|
||||||
if err != nil {
|
|
||||||
utils.Fatalf("-ResolveUDPAddr: %v", err)
|
|
||||||
}
|
|
||||||
conn, err := net.ListenUDP("udp", addr)
|
|
||||||
if err != nil {
|
|
||||||
utils.Fatalf("-ListenUDP: %v", err)
|
|
||||||
}
|
|
||||||
defer conn.Close()
|
|
||||||
|
|
||||||
db, _ := enode.OpenDB("")
|
|
||||||
ln := enode.NewLocalNode(db, nodeKey)
|
|
||||||
|
|
||||||
listenerAddr := conn.LocalAddr().(*net.UDPAddr)
|
|
||||||
if natm != nil && !listenerAddr.IP.IsLoopback() {
|
|
||||||
natAddr := doPortMapping(natm, ln, listenerAddr)
|
|
||||||
if natAddr != nil {
|
|
||||||
listenerAddr = natAddr
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
printNotice(&nodeKey.PublicKey, *listenerAddr)
|
|
||||||
cfg := discover.Config{
|
|
||||||
PrivateKey: nodeKey,
|
|
||||||
NetRestrict: restrictList,
|
|
||||||
}
|
|
||||||
if *runv5 {
|
|
||||||
if _, err := discover.ListenV5(conn, ln, cfg); err != nil {
|
|
||||||
utils.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if _, err := discover.ListenUDP(conn, ln, cfg); err != nil {
|
|
||||||
utils.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
select {}
|
|
||||||
}
|
|
||||||
|
|
||||||
func printNotice(nodeKey *ecdsa.PublicKey, addr net.UDPAddr) {
|
|
||||||
if addr.IP.IsUnspecified() {
|
|
||||||
addr.IP = net.IP{127, 0, 0, 1}
|
|
||||||
}
|
|
||||||
n := enode.NewV4(nodeKey, addr.IP, 0, addr.Port)
|
|
||||||
fmt.Println(n.URLv4())
|
|
||||||
fmt.Println("Note: you're using cmd/bootnode, a developer tool.")
|
|
||||||
fmt.Println("We recommend using a regular node as bootstrap node for production deployments.")
|
|
||||||
}
|
|
||||||
|
|
||||||
func doPortMapping(natm nat.Interface, ln *enode.LocalNode, addr *net.UDPAddr) *net.UDPAddr {
|
|
||||||
const (
|
|
||||||
protocol = "udp"
|
|
||||||
name = "ethereum discovery"
|
|
||||||
)
|
|
||||||
newLogger := func(external int, internal int) log.Logger {
|
|
||||||
return log.New("proto", protocol, "extport", external, "intport", internal, "interface", natm)
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
intport = addr.Port
|
|
||||||
extaddr = &net.UDPAddr{IP: addr.IP, Port: addr.Port}
|
|
||||||
mapTimeout = nat.DefaultMapTimeout
|
|
||||||
log = newLogger(addr.Port, intport)
|
|
||||||
)
|
|
||||||
addMapping := func() {
|
|
||||||
// Get the external address.
|
|
||||||
var err error
|
|
||||||
extaddr.IP, err = natm.ExternalIP()
|
|
||||||
if err != nil {
|
|
||||||
log.Debug("Couldn't get external IP", "err", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// Create the mapping.
|
|
||||||
p, err := natm.AddMapping(protocol, extaddr.Port, intport, name, mapTimeout)
|
|
||||||
if err != nil {
|
|
||||||
log.Debug("Couldn't add port mapping", "err", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if p != uint16(extaddr.Port) {
|
|
||||||
extaddr.Port = int(p)
|
|
||||||
log = newLogger(extaddr.Port, intport)
|
|
||||||
log.Info("NAT mapped alternative port")
|
|
||||||
} else {
|
|
||||||
log.Info("NAT mapped port")
|
|
||||||
}
|
|
||||||
// Update IP/port information of the local node.
|
|
||||||
ln.SetStaticIP(extaddr.IP)
|
|
||||||
ln.SetFallbackUDP(extaddr.Port)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Perform mapping once, synchronously.
|
|
||||||
log.Info("Attempting port mapping")
|
|
||||||
addMapping()
|
|
||||||
|
|
||||||
// Refresh the mapping periodically.
|
|
||||||
go func() {
|
|
||||||
refresh := time.NewTimer(mapTimeout)
|
|
||||||
defer refresh.Stop()
|
|
||||||
for range refresh.C {
|
|
||||||
addMapping()
|
|
||||||
refresh.Reset(mapTimeout)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
return extaddr
|
|
||||||
}
|
|
||||||
|
|
@ -7,7 +7,7 @@ It enables usecases like the following:
|
||||||
* I want to auto-approve transactions with contract `CasinoDapp`, with up to `0.05 ether` in value to maximum `1 ether` per 24h period
|
* I want to auto-approve transactions with contract `CasinoDapp`, with up to `0.05 ether` in value to maximum `1 ether` per 24h period
|
||||||
* I want to auto-approve transaction to contract `EthAlarmClock` with `data`=`0xdeadbeef`, if `value=0`, `gas < 44k` and `gasPrice < 40Gwei`
|
* I want to auto-approve transaction to contract `EthAlarmClock` with `data`=`0xdeadbeef`, if `value=0`, `gas < 44k` and `gasPrice < 40Gwei`
|
||||||
|
|
||||||
The two main features that are required for this to work well are;
|
The two main features that are required for this to work well are:
|
||||||
|
|
||||||
1. Rule Implementation: how to create, manage, and interpret rules in a flexible but secure manner
|
1. Rule Implementation: how to create, manage, and interpret rules in a flexible but secure manner
|
||||||
2. Credential management and credentials; how to provide auto-unlock without exposing keys unnecessarily.
|
2. Credential management and credentials; how to provide auto-unlock without exposing keys unnecessarily.
|
||||||
|
|
@ -29,10 +29,10 @@ function asBig(str) {
|
||||||
|
|
||||||
// Approve transactions to a certain contract if the value is below a certain limit
|
// Approve transactions to a certain contract if the value is below a certain limit
|
||||||
function ApproveTx(req) {
|
function ApproveTx(req) {
|
||||||
var limit = big.Newint("0xb1a2bc2ec50000")
|
var limit = new BigNumber("0xb1a2bc2ec50000")
|
||||||
var value = asBig(req.transaction.value);
|
var value = asBig(req.transaction.value);
|
||||||
|
|
||||||
if (req.transaction.to.toLowerCase() == "0xae967917c465db8578ca9024c205720b1a3651a9") && value.lt(limit)) {
|
if (req.transaction.to.toLowerCase() == "0xae967917c465db8578ca9024c205720b1a3651a9" && value.lt(limit)) {
|
||||||
return "Approve"
|
return "Approve"
|
||||||
}
|
}
|
||||||
// If we return "Reject", it will be rejected.
|
// If we return "Reject", it will be rejected.
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"cmp"
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
@ -292,13 +293,7 @@ func sortChanges(changes []types.Change) {
|
||||||
if a.Action == b.Action {
|
if a.Action == b.Action {
|
||||||
return strings.Compare(*a.ResourceRecordSet.Name, *b.ResourceRecordSet.Name)
|
return strings.Compare(*a.ResourceRecordSet.Name, *b.ResourceRecordSet.Name)
|
||||||
}
|
}
|
||||||
if score[string(a.Action)] < score[string(b.Action)] {
|
return cmp.Compare(score[string(a.Action)], score[string(b.Action)])
|
||||||
return -1
|
|
||||||
}
|
|
||||||
if score[string(a.Action)] > score[string(b.Action)] {
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,6 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"slices"
|
"slices"
|
||||||
"sort"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
|
|
@ -41,6 +40,7 @@ import (
|
||||||
"github.com/ethereum/go-ethereum/eth/protocols/eth"
|
"github.com/ethereum/go-ethereum/eth/protocols/eth"
|
||||||
"github.com/ethereum/go-ethereum/params"
|
"github.com/ethereum/go-ethereum/params"
|
||||||
"github.com/ethereum/go-ethereum/rlp"
|
"github.com/ethereum/go-ethereum/rlp"
|
||||||
|
"golang.org/x/exp/maps"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Chain is a lightweight blockchain-like store which can read a hivechain
|
// Chain is a lightweight blockchain-like store which can read a hivechain
|
||||||
|
|
@ -143,11 +143,7 @@ func (c *Chain) ForkID() forkid.ID {
|
||||||
// TD calculates the total difficulty of the chain at the
|
// TD calculates the total difficulty of the chain at the
|
||||||
// chain head.
|
// chain head.
|
||||||
func (c *Chain) TD() *big.Int {
|
func (c *Chain) TD() *big.Int {
|
||||||
sum := new(big.Int)
|
return new(big.Int)
|
||||||
for _, block := range c.blocks[:c.Len()] {
|
|
||||||
sum.Add(sum, block.Difficulty())
|
|
||||||
}
|
|
||||||
return sum
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetBlock returns the block at the specified number.
|
// GetBlock returns the block at the specified number.
|
||||||
|
|
@ -166,11 +162,8 @@ func (c *Chain) RootAt(height int) common.Hash {
|
||||||
// GetSender returns the address associated with account at the index in the
|
// GetSender returns the address associated with account at the index in the
|
||||||
// pre-funded accounts list.
|
// pre-funded accounts list.
|
||||||
func (c *Chain) GetSender(idx int) (common.Address, uint64) {
|
func (c *Chain) GetSender(idx int) (common.Address, uint64) {
|
||||||
var accounts Addresses
|
accounts := maps.Keys(c.senders)
|
||||||
for addr := range c.senders {
|
slices.SortFunc(accounts, common.Address.Cmp)
|
||||||
accounts = append(accounts, addr)
|
|
||||||
}
|
|
||||||
sort.Sort(accounts)
|
|
||||||
addr := accounts[idx]
|
addr := accounts[idx]
|
||||||
return addr, c.senders[addr].Nonce
|
return addr, c.senders[addr].Nonce
|
||||||
}
|
}
|
||||||
|
|
@ -260,22 +253,6 @@ func loadGenesis(genesisFile string) (core.Genesis, error) {
|
||||||
return gen, nil
|
return gen, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type Addresses []common.Address
|
|
||||||
|
|
||||||
func (a Addresses) Len() int {
|
|
||||||
return len(a)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a Addresses) Less(i, j int) bool {
|
|
||||||
return bytes.Compare(a[i][:], a[j][:]) < 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a Addresses) Swap(i, j int) {
|
|
||||||
tmp := a[i]
|
|
||||||
a[i] = a[j]
|
|
||||||
a[j] = tmp
|
|
||||||
}
|
|
||||||
|
|
||||||
func blocksFromFile(chainfile string, gblock *types.Block) ([]*types.Block, error) {
|
func blocksFromFile(chainfile string, gblock *types.Block) ([]*types.Block, error) {
|
||||||
// Load chain.rlp.
|
// Load chain.rlp.
|
||||||
fh, err := os.Open(chainfile)
|
fh, err := os.Open(chainfile)
|
||||||
|
|
|
||||||
|
|
@ -316,9 +316,6 @@ loop:
|
||||||
return fmt.Errorf("wrong head block in status, want: %#x (block %d) have %#x",
|
return fmt.Errorf("wrong head block in status, want: %#x (block %d) have %#x",
|
||||||
want, chain.blocks[chain.Len()-1].NumberU64(), have)
|
want, chain.blocks[chain.Len()-1].NumberU64(), have)
|
||||||
}
|
}
|
||||||
if have, want := msg.TD.Cmp(chain.TD()), 0; have != want {
|
|
||||||
return fmt.Errorf("wrong TD in status: have %v want %v", have, want)
|
|
||||||
}
|
|
||||||
if have, want := msg.ForkID, chain.ForkID(); !reflect.DeepEqual(have, want) {
|
if have, want := msg.ForkID, chain.ForkID(); !reflect.DeepEqual(have, want) {
|
||||||
return fmt.Errorf("wrong fork ID in status: have %v, want %v", have, want)
|
return fmt.Errorf("wrong fork ID in status: have %v, want %v", have, want)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
|
// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
package ethtest
|
package ethtest
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,6 @@ package ethtest
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/rand"
|
"crypto/rand"
|
||||||
"math/big"
|
|
||||||
"reflect"
|
"reflect"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
|
|
@ -74,7 +73,6 @@ func (s *Suite) EthTests() []utesting.Test {
|
||||||
{Name: "GetBlockBodies", Fn: s.TestGetBlockBodies},
|
{Name: "GetBlockBodies", Fn: s.TestGetBlockBodies},
|
||||||
// // malicious handshakes + status
|
// // malicious handshakes + status
|
||||||
{Name: "MaliciousHandshake", Fn: s.TestMaliciousHandshake},
|
{Name: "MaliciousHandshake", Fn: s.TestMaliciousHandshake},
|
||||||
{Name: "MaliciousStatus", Fn: s.TestMaliciousStatus},
|
|
||||||
// test transactions
|
// test transactions
|
||||||
{Name: "LargeTxRequest", Fn: s.TestLargeTxRequest, Slow: true},
|
{Name: "LargeTxRequest", Fn: s.TestLargeTxRequest, Slow: true},
|
||||||
{Name: "Transaction", Fn: s.TestTransaction},
|
{Name: "Transaction", Fn: s.TestTransaction},
|
||||||
|
|
@ -453,42 +451,6 @@ func (s *Suite) TestMaliciousHandshake(t *utesting.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Suite) TestMaliciousStatus(t *utesting.T) {
|
|
||||||
t.Log(`This test sends a malicious eth Status message to the node and expects a disconnect.`)
|
|
||||||
|
|
||||||
conn, err := s.dial()
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("dial failed: %v", err)
|
|
||||||
}
|
|
||||||
defer conn.Close()
|
|
||||||
if err := conn.handshake(); err != nil {
|
|
||||||
t.Fatalf("handshake failed: %v", err)
|
|
||||||
}
|
|
||||||
// Create status with large total difficulty.
|
|
||||||
status := ð.StatusPacket{
|
|
||||||
ProtocolVersion: uint32(conn.negotiatedProtoVersion),
|
|
||||||
NetworkID: s.chain.config.ChainID.Uint64(),
|
|
||||||
TD: new(big.Int).SetBytes(randBuf(2048)),
|
|
||||||
Head: s.chain.Head().Hash(),
|
|
||||||
Genesis: s.chain.GetBlock(0).Hash(),
|
|
||||||
ForkID: s.chain.ForkID(),
|
|
||||||
}
|
|
||||||
if err := conn.statusExchange(s.chain, status); err != nil {
|
|
||||||
t.Fatalf("status exchange failed: %v", err)
|
|
||||||
}
|
|
||||||
// Wait for disconnect.
|
|
||||||
code, _, err := conn.Read()
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("error reading from connection: %v", err)
|
|
||||||
}
|
|
||||||
switch code {
|
|
||||||
case discMsg:
|
|
||||||
break
|
|
||||||
default:
|
|
||||||
t.Fatalf("expected disconnect, got: %d", code)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *Suite) TestTransaction(t *utesting.T) {
|
func (s *Suite) TestTransaction(t *utesting.T) {
|
||||||
t.Log(`This test sends a valid transaction to the node and checks if the
|
t.Log(`This test sends a valid transaction to the node and checks if the
|
||||||
transaction gets propagated.`)
|
transaction gets propagated.`)
|
||||||
|
|
@ -781,7 +743,7 @@ func (s *Suite) makeBlobTxs(count, blobs int, discriminator byte) (txs types.Tra
|
||||||
GasTipCap: uint256.NewInt(1),
|
GasTipCap: uint256.NewInt(1),
|
||||||
GasFeeCap: uint256.MustFromBig(s.chain.Head().BaseFee()),
|
GasFeeCap: uint256.MustFromBig(s.chain.Head().BaseFee()),
|
||||||
Gas: 100000,
|
Gas: 100000,
|
||||||
BlobFeeCap: uint256.MustFromBig(eip4844.CalcBlobFee(*s.chain.Head().ExcessBlobGas())),
|
BlobFeeCap: uint256.MustFromBig(eip4844.CalcBlobFee(s.chain.config, s.chain.Head().Header())),
|
||||||
BlobHashes: makeSidecar(blobdata...).BlobHashes(),
|
BlobHashes: makeSidecar(blobdata...).BlobHashes(),
|
||||||
Sidecar: makeSidecar(blobdata...),
|
Sidecar: makeSidecar(blobdata...),
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,14 @@
|
||||||
"shanghaiTime": 780,
|
"shanghaiTime": 780,
|
||||||
"cancunTime": 840,
|
"cancunTime": 840,
|
||||||
"terminalTotalDifficulty": 9454784,
|
"terminalTotalDifficulty": 9454784,
|
||||||
"ethash": {}
|
"ethash": {},
|
||||||
|
"blobSchedule": {
|
||||||
|
"cancun": {
|
||||||
|
"target": 3,
|
||||||
|
"max": 6,
|
||||||
|
"baseFeeUpdateFraction": 3338477
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"nonce": "0x0",
|
"nonce": "0x0",
|
||||||
"timestamp": "0x0",
|
"timestamp": "0x0",
|
||||||
|
|
|
||||||
|
|
@ -194,7 +194,7 @@ func PingExtraData(t *utesting.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This test sends a PING packet with additional data and wrong 'from' field
|
// PingExtraDataWrongFrom sends a PING packet with additional data and wrong 'from' field
|
||||||
// and expects a PONG response.
|
// and expects a PONG response.
|
||||||
func PingExtraDataWrongFrom(t *utesting.T) {
|
func PingExtraDataWrongFrom(t *utesting.T) {
|
||||||
te := newTestEnv(Remote, Listen1, Listen2)
|
te := newTestEnv(Remote, Listen1, Listen2)
|
||||||
|
|
@ -215,7 +215,7 @@ func PingExtraDataWrongFrom(t *utesting.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This test sends a PING packet with an expiration in the past.
|
// PingPastExpiration sends a PING packet with an expiration in the past.
|
||||||
// The remote node should not respond.
|
// The remote node should not respond.
|
||||||
func PingPastExpiration(t *utesting.T) {
|
func PingPastExpiration(t *utesting.T) {
|
||||||
te := newTestEnv(Remote, Listen1, Listen2)
|
te := newTestEnv(Remote, Listen1, Listen2)
|
||||||
|
|
@ -234,7 +234,7 @@ func PingPastExpiration(t *utesting.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This test sends an invalid packet. The remote node should not respond.
|
// WrongPacketType sends an invalid packet. The remote node should not respond.
|
||||||
func WrongPacketType(t *utesting.T) {
|
func WrongPacketType(t *utesting.T) {
|
||||||
te := newTestEnv(Remote, Listen1, Listen2)
|
te := newTestEnv(Remote, Listen1, Listen2)
|
||||||
defer te.close()
|
defer te.close()
|
||||||
|
|
@ -252,7 +252,7 @@ func WrongPacketType(t *utesting.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This test verifies that the default behaviour of ignoring 'from' fields is unaffected by
|
// BondThenPingWithWrongFrom verifies that the default behaviour of ignoring 'from' fields is unaffected by
|
||||||
// the bonding process. After bonding, it pings the target with a different from endpoint.
|
// the bonding process. After bonding, it pings the target with a different from endpoint.
|
||||||
func BondThenPingWithWrongFrom(t *utesting.T) {
|
func BondThenPingWithWrongFrom(t *utesting.T) {
|
||||||
te := newTestEnv(Remote, Listen1, Listen2)
|
te := newTestEnv(Remote, Listen1, Listen2)
|
||||||
|
|
@ -289,7 +289,7 @@ waitForPong:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This test just sends FINDNODE. The remote node should not reply
|
// FindnodeWithoutEndpointProof sends FINDNODE. The remote node should not reply
|
||||||
// because the endpoint proof has not completed.
|
// because the endpoint proof has not completed.
|
||||||
func FindnodeWithoutEndpointProof(t *utesting.T) {
|
func FindnodeWithoutEndpointProof(t *utesting.T) {
|
||||||
te := newTestEnv(Remote, Listen1, Listen2)
|
te := newTestEnv(Remote, Listen1, Listen2)
|
||||||
|
|
@ -332,7 +332,7 @@ func BasicFindnode(t *utesting.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This test sends an unsolicited NEIGHBORS packet after the endpoint proof, then sends
|
// UnsolicitedNeighbors sends an unsolicited NEIGHBORS packet after the endpoint proof, then sends
|
||||||
// FINDNODE to read the remote table. The remote node should not return the node contained
|
// FINDNODE to read the remote table. The remote node should not return the node contained
|
||||||
// in the unsolicited NEIGHBORS packet.
|
// in the unsolicited NEIGHBORS packet.
|
||||||
func UnsolicitedNeighbors(t *utesting.T) {
|
func UnsolicitedNeighbors(t *utesting.T) {
|
||||||
|
|
@ -373,7 +373,7 @@ func UnsolicitedNeighbors(t *utesting.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This test sends FINDNODE with an expiration timestamp in the past.
|
// FindnodePastExpiration sends FINDNODE with an expiration timestamp in the past.
|
||||||
// The remote node should not respond.
|
// The remote node should not respond.
|
||||||
func FindnodePastExpiration(t *utesting.T) {
|
func FindnodePastExpiration(t *utesting.T) {
|
||||||
te := newTestEnv(Remote, Listen1, Listen2)
|
te := newTestEnv(Remote, Listen1, Listen2)
|
||||||
|
|
@ -426,7 +426,7 @@ func bond(t *utesting.T, te *testenv) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This test attempts to perform a traffic amplification attack against a
|
// FindnodeAmplificationInvalidPongHash attempts to perform a traffic amplification attack against a
|
||||||
// 'victim' endpoint using FINDNODE. In this attack scenario, the attacker
|
// 'victim' endpoint using FINDNODE. In this attack scenario, the attacker
|
||||||
// attempts to complete the endpoint proof non-interactively by sending a PONG
|
// attempts to complete the endpoint proof non-interactively by sending a PONG
|
||||||
// with mismatching reply token from the 'victim' endpoint. The attack works if
|
// with mismatching reply token from the 'victim' endpoint. The attack works if
|
||||||
|
|
@ -478,7 +478,7 @@ func FindnodeAmplificationInvalidPongHash(t *utesting.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This test attempts to perform a traffic amplification attack using FINDNODE.
|
// FindnodeAmplificationWrongIP attempts to perform a traffic amplification attack using FINDNODE.
|
||||||
// The attack works if the remote node does not verify the IP address of FINDNODE
|
// The attack works if the remote node does not verify the IP address of FINDNODE
|
||||||
// against the endpoint verification proof done by PING/PONG.
|
// against the endpoint verification proof done by PING/PONG.
|
||||||
func FindnodeAmplificationWrongIP(t *utesting.T) {
|
func FindnodeAmplificationWrongIP(t *utesting.T) {
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"cmp"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
@ -104,13 +105,7 @@ func (ns nodeSet) topN(n int) nodeSet {
|
||||||
byscore = append(byscore, v)
|
byscore = append(byscore, v)
|
||||||
}
|
}
|
||||||
slices.SortFunc(byscore, func(a, b nodeJSON) int {
|
slices.SortFunc(byscore, func(a, b nodeJSON) int {
|
||||||
if a.Score > b.Score {
|
return cmp.Compare(b.Score, a.Score)
|
||||||
return -1
|
|
||||||
}
|
|
||||||
if a.Score < b.Score {
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
})
|
})
|
||||||
result := make(nodeSet, n)
|
result := make(nodeSet, n)
|
||||||
for _, v := range byscore[:n] {
|
for _, v := range byscore[:n] {
|
||||||
|
|
|
||||||
|
|
@ -22,79 +22,84 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"regexp"
|
"regexp"
|
||||||
"sort"
|
"slices"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/core"
|
"github.com/ethereum/go-ethereum/core"
|
||||||
"github.com/ethereum/go-ethereum/core/rawdb"
|
"github.com/ethereum/go-ethereum/core/rawdb"
|
||||||
"github.com/ethereum/go-ethereum/core/tracing"
|
|
||||||
"github.com/ethereum/go-ethereum/eth/tracers/logger"
|
|
||||||
"github.com/ethereum/go-ethereum/tests"
|
"github.com/ethereum/go-ethereum/tests"
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
|
"golang.org/x/exp/maps"
|
||||||
)
|
)
|
||||||
|
|
||||||
var RunFlag = &cli.StringFlag{
|
|
||||||
Name: "run",
|
|
||||||
Value: ".*",
|
|
||||||
Usage: "Run only those tests matching the regular expression.",
|
|
||||||
}
|
|
||||||
|
|
||||||
var blockTestCommand = &cli.Command{
|
var blockTestCommand = &cli.Command{
|
||||||
Action: blockTestCmd,
|
Action: blockTestCmd,
|
||||||
Name: "blocktest",
|
Name: "blocktest",
|
||||||
Usage: "Executes the given blockchain tests",
|
Usage: "Executes the given blockchain tests",
|
||||||
ArgsUsage: "<file>",
|
ArgsUsage: "<path>",
|
||||||
Flags: []cli.Flag{RunFlag},
|
Flags: slices.Concat([]cli.Flag{
|
||||||
|
DumpFlag,
|
||||||
|
HumanReadableFlag,
|
||||||
|
RunFlag,
|
||||||
|
WitnessCrossCheckFlag,
|
||||||
|
}, traceFlags),
|
||||||
}
|
}
|
||||||
|
|
||||||
func blockTestCmd(ctx *cli.Context) error {
|
func blockTestCmd(ctx *cli.Context) error {
|
||||||
if len(ctx.Args().First()) == 0 {
|
path := ctx.Args().First()
|
||||||
return errors.New("path-to-test argument required")
|
if len(path) == 0 {
|
||||||
|
return errors.New("path argument required")
|
||||||
}
|
}
|
||||||
|
var (
|
||||||
|
collected = collectFiles(path)
|
||||||
|
results []testResult
|
||||||
|
)
|
||||||
|
for _, fname := range collected {
|
||||||
|
r, err := runBlockTest(ctx, fname)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
results = append(results, r...)
|
||||||
|
}
|
||||||
|
report(ctx, results)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
var tracer *tracing.Hooks
|
func runBlockTest(ctx *cli.Context, fname string) ([]testResult, error) {
|
||||||
// Configure the EVM logger
|
src, err := os.ReadFile(fname)
|
||||||
if ctx.Bool(MachineFlag.Name) {
|
|
||||||
tracer = logger.NewJSONLogger(&logger.Config{
|
|
||||||
EnableMemory: !ctx.Bool(DisableMemoryFlag.Name),
|
|
||||||
DisableStack: ctx.Bool(DisableStackFlag.Name),
|
|
||||||
DisableStorage: ctx.Bool(DisableStorageFlag.Name),
|
|
||||||
EnableReturnData: !ctx.Bool(DisableReturnDataFlag.Name),
|
|
||||||
}, os.Stderr)
|
|
||||||
}
|
|
||||||
// Load the test content from the input file
|
|
||||||
src, err := os.ReadFile(ctx.Args().First())
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
var tests map[string]tests.BlockTest
|
var tests map[string]*tests.BlockTest
|
||||||
if err = json.Unmarshal(src, &tests); err != nil {
|
if err = json.Unmarshal(src, &tests); err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
re, err := regexp.Compile(ctx.String(RunFlag.Name))
|
re, err := regexp.Compile(ctx.String(RunFlag.Name))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("invalid regex -%s: %v", RunFlag.Name, err)
|
return nil, fmt.Errorf("invalid regex -%s: %v", RunFlag.Name, err)
|
||||||
}
|
}
|
||||||
|
tracer := tracerFromFlags(ctx)
|
||||||
|
|
||||||
// Run them in order
|
// Pull out keys to sort and ensure tests are run in order.
|
||||||
var keys []string
|
keys := maps.Keys(tests)
|
||||||
for key := range tests {
|
slices.Sort(keys)
|
||||||
keys = append(keys, key)
|
|
||||||
}
|
// Run all the tests.
|
||||||
sort.Strings(keys)
|
var results []testResult
|
||||||
for _, name := range keys {
|
for _, name := range keys {
|
||||||
if !re.MatchString(name) {
|
if !re.MatchString(name) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
test := tests[name]
|
result := &testResult{Name: name, Pass: true}
|
||||||
if err := test.Run(false, rawdb.HashScheme, false, tracer, func(res error, chain *core.BlockChain) {
|
if err := tests[name].Run(false, rawdb.HashScheme, ctx.Bool(WitnessCrossCheckFlag.Name), tracer, func(res error, chain *core.BlockChain) {
|
||||||
if ctx.Bool(DumpFlag.Name) {
|
if ctx.Bool(DumpFlag.Name) {
|
||||||
if state, _ := chain.State(); state != nil {
|
if s, _ := chain.State(); s != nil {
|
||||||
fmt.Println(string(state.Dump(nil)))
|
result.State = dump(s)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return fmt.Errorf("test %v: %w", name, err)
|
result.Pass, result.Error = false, err.Error()
|
||||||
}
|
}
|
||||||
|
results = append(results, *result)
|
||||||
}
|
}
|
||||||
return nil
|
return results, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
||||||
// Copyright 2017 The go-ethereum Authors
|
|
||||||
// This file is part of go-ethereum.
|
|
||||||
//
|
|
||||||
// go-ethereum is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU General Public License as published by
|
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
|
||||||
// (at your option) any later version.
|
|
||||||
//
|
|
||||||
// go-ethereum 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 General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/cmd/evm/internal/compiler"
|
|
||||||
|
|
||||||
"github.com/urfave/cli/v2"
|
|
||||||
)
|
|
||||||
|
|
||||||
var compileCommand = &cli.Command{
|
|
||||||
Action: compileCmd,
|
|
||||||
Name: "compile",
|
|
||||||
Usage: "Compiles easm source to evm binary",
|
|
||||||
ArgsUsage: "<file>",
|
|
||||||
}
|
|
||||||
|
|
||||||
func compileCmd(ctx *cli.Context) error {
|
|
||||||
debug := ctx.Bool(DebugFlag.Name)
|
|
||||||
|
|
||||||
if len(ctx.Args().First()) == 0 {
|
|
||||||
return errors.New("filename required")
|
|
||||||
}
|
|
||||||
|
|
||||||
fn := ctx.Args().First()
|
|
||||||
src, err := os.ReadFile(fn)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
bin, err := compiler.Compile(fn, src, debug)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
fmt.Println(bin)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
||||||
// Copyright 2017 The go-ethereum Authors
|
|
||||||
// This file is part of go-ethereum.
|
|
||||||
//
|
|
||||||
// go-ethereum is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU General Public License as published by
|
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
|
||||||
// (at your option) any later version.
|
|
||||||
//
|
|
||||||
// go-ethereum 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 General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/core/asm"
|
|
||||||
"github.com/urfave/cli/v2"
|
|
||||||
)
|
|
||||||
|
|
||||||
var disasmCommand = &cli.Command{
|
|
||||||
Action: disasmCmd,
|
|
||||||
Name: "disasm",
|
|
||||||
Usage: "Disassembles evm binary",
|
|
||||||
ArgsUsage: "<file>",
|
|
||||||
}
|
|
||||||
|
|
||||||
func disasmCmd(ctx *cli.Context) error {
|
|
||||||
var in string
|
|
||||||
switch {
|
|
||||||
case len(ctx.Args().First()) > 0:
|
|
||||||
fn := ctx.Args().First()
|
|
||||||
input, err := os.ReadFile(fn)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
in = string(input)
|
|
||||||
case ctx.IsSet(InputFlag.Name):
|
|
||||||
in = ctx.String(InputFlag.Name)
|
|
||||||
default:
|
|
||||||
return errors.New("missing filename or --input value")
|
|
||||||
}
|
|
||||||
|
|
||||||
code := strings.TrimSpace(in)
|
|
||||||
fmt.Printf("%v\n", code)
|
|
||||||
return asm.PrintDisassembled(code)
|
|
||||||
}
|
|
||||||
49
cmd/evm/eest.go
Normal file
49
cmd/evm/eest.go
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
// Copyright 2024 The go-ethereum Authors
|
||||||
|
// This file is part of go-ethereum.
|
||||||
|
//
|
||||||
|
// go-ethereum is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// go-ethereum 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 General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "regexp"
|
||||||
|
|
||||||
|
// testMetadata provides more granular access to the test information encoded
|
||||||
|
// within its filename by the execution spec test (EEST).
|
||||||
|
type testMetadata struct {
|
||||||
|
fork string
|
||||||
|
module string // which python module gnerated the test, e.g. eip7702
|
||||||
|
file string // exact file the test came from, e.g. test_gas.py
|
||||||
|
function string // func that created the test, e.g. test_valid_mcopy_operations
|
||||||
|
parameters string // the name of the parameters which were used to fill the test, e.g. zero_inputs
|
||||||
|
}
|
||||||
|
|
||||||
|
// parseTestMetadata reads a test name and parses out more specific information
|
||||||
|
// about the test.
|
||||||
|
func parseTestMetadata(s string) *testMetadata {
|
||||||
|
var (
|
||||||
|
pattern = `tests\/([^\/]+)\/([^\/]+)\/([^:]+)::([^[]+)\[fork_([^-\]]+)-[^-]+-(.+)\]`
|
||||||
|
re = regexp.MustCompile(pattern)
|
||||||
|
)
|
||||||
|
match := re.FindStringSubmatch(s)
|
||||||
|
if len(match) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return &testMetadata{
|
||||||
|
fork: match[5],
|
||||||
|
module: match[2],
|
||||||
|
file: match[3],
|
||||||
|
function: match[4],
|
||||||
|
parameters: match[6],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2023 The go-ethereum Authors
|
// Copyright 2024 The go-ethereum Authors
|
||||||
// This file is part of go-ethereum.
|
// This file is part of go-ethereum.
|
||||||
//
|
//
|
||||||
// go-ethereum is free software: you can redistribute it and/or modify
|
// go-ethereum is free software: you can redistribute it and/or modify
|
||||||
|
|
@ -31,13 +31,41 @@ import (
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var jt vm.JumpTable
|
||||||
|
|
||||||
|
const initcode = "INITCODE"
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
jt = vm.NewPragueEOFInstructionSetForTesting()
|
jt = vm.NewEOFInstructionSetForTesting()
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
jt vm.JumpTable
|
hexFlag = &cli.StringFlag{
|
||||||
initcode = "INITCODE"
|
Name: "hex",
|
||||||
|
Usage: "Single container data parse and validation",
|
||||||
|
}
|
||||||
|
refTestFlag = &cli.StringFlag{
|
||||||
|
Name: "test",
|
||||||
|
Usage: "Path to EOF validation reference test.",
|
||||||
|
}
|
||||||
|
eofParseCommand = &cli.Command{
|
||||||
|
Name: "eofparse",
|
||||||
|
Aliases: []string{"eof"},
|
||||||
|
Usage: "Parses hex eof container and returns validation errors (if any)",
|
||||||
|
Action: eofParseAction,
|
||||||
|
Flags: []cli.Flag{
|
||||||
|
hexFlag,
|
||||||
|
refTestFlag,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
eofDumpCommand = &cli.Command{
|
||||||
|
Name: "eofdump",
|
||||||
|
Usage: "Parses hex eof container and prints out human-readable representation of the container.",
|
||||||
|
Action: eofDumpAction,
|
||||||
|
Flags: []cli.Flag{
|
||||||
|
hexFlag,
|
||||||
|
},
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
func eofParseAction(ctx *cli.Context) error {
|
func eofParseAction(ctx *cli.Context) error {
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,19 @@
|
||||||
|
// Copyright 2024 The go-ethereum Authors
|
||||||
|
// This file is part of go-ethereum.
|
||||||
|
//
|
||||||
|
// go-ethereum is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// go-ethereum 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 General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
@ -43,7 +59,7 @@ func FuzzEofParsing(f *testing.F) {
|
||||||
// And do the fuzzing
|
// And do the fuzzing
|
||||||
f.Fuzz(func(t *testing.T, data []byte) {
|
f.Fuzz(func(t *testing.T, data []byte) {
|
||||||
var (
|
var (
|
||||||
jt = vm.NewPragueEOFInstructionSetForTesting()
|
jt = vm.NewEOFInstructionSetForTesting()
|
||||||
c vm.Container
|
c vm.Container
|
||||||
)
|
)
|
||||||
cpy := common.CopyBytes(data)
|
cpy := common.CopyBytes(data)
|
||||||
|
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
||||||
// Copyright 2017 The go-ethereum Authors
|
|
||||||
// This file is part of go-ethereum.
|
|
||||||
//
|
|
||||||
// go-ethereum is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU General Public License as published by
|
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
|
||||||
// (at your option) any later version.
|
|
||||||
//
|
|
||||||
// go-ethereum 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 General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
package compiler
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/core/asm"
|
|
||||||
)
|
|
||||||
|
|
||||||
func Compile(fn string, src []byte, debug bool) (string, error) {
|
|
||||||
compiler := asm.NewCompiler(debug)
|
|
||||||
compiler.Feed(asm.Lex(src, debug))
|
|
||||||
|
|
||||||
bin, compileErrors := compiler.Compile()
|
|
||||||
if len(compileErrors) > 0 {
|
|
||||||
// report errors
|
|
||||||
for _, err := range compileErrors {
|
|
||||||
fmt.Printf("%s:%v\n", fn, err)
|
|
||||||
}
|
|
||||||
return "", errors.New("compiling failed")
|
|
||||||
}
|
|
||||||
return bin, nil
|
|
||||||
}
|
|
||||||
|
|
@ -17,9 +17,7 @@
|
||||||
package t8ntool
|
package t8ntool
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
|
||||||
"math/big"
|
"math/big"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
|
|
@ -35,7 +33,6 @@ import (
|
||||||
"github.com/ethereum/go-ethereum/core/types"
|
"github.com/ethereum/go-ethereum/core/types"
|
||||||
"github.com/ethereum/go-ethereum/core/vm"
|
"github.com/ethereum/go-ethereum/core/vm"
|
||||||
"github.com/ethereum/go-ethereum/crypto"
|
"github.com/ethereum/go-ethereum/crypto"
|
||||||
"github.com/ethereum/go-ethereum/eth/tracers"
|
|
||||||
"github.com/ethereum/go-ethereum/ethdb"
|
"github.com/ethereum/go-ethereum/ethdb"
|
||||||
"github.com/ethereum/go-ethereum/log"
|
"github.com/ethereum/go-ethereum/log"
|
||||||
"github.com/ethereum/go-ethereum/params"
|
"github.com/ethereum/go-ethereum/params"
|
||||||
|
|
@ -70,11 +67,11 @@ type ExecutionResult struct {
|
||||||
CurrentExcessBlobGas *math.HexOrDecimal64 `json:"currentExcessBlobGas,omitempty"`
|
CurrentExcessBlobGas *math.HexOrDecimal64 `json:"currentExcessBlobGas,omitempty"`
|
||||||
CurrentBlobGasUsed *math.HexOrDecimal64 `json:"blobGasUsed,omitempty"`
|
CurrentBlobGasUsed *math.HexOrDecimal64 `json:"blobGasUsed,omitempty"`
|
||||||
RequestsHash *common.Hash `json:"requestsHash,omitempty"`
|
RequestsHash *common.Hash `json:"requestsHash,omitempty"`
|
||||||
Requests [][]byte `json:"requests,omitempty"`
|
Requests [][]byte `json:"requests"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type executionResultMarshaling struct {
|
type executionResultMarshaling struct {
|
||||||
Requests []hexutil.Bytes `json:"requests,omitempty"`
|
Requests []hexutil.Bytes `json:"requests"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ommer struct {
|
type ommer struct {
|
||||||
|
|
@ -130,9 +127,7 @@ type rejectedTx struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply applies a set of transactions to a pre-state
|
// Apply applies a set of transactions to a pre-state
|
||||||
func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig,
|
func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig, txIt txIterator, miningReward int64) (*state.StateDB, *ExecutionResult, []byte, error) {
|
||||||
txIt txIterator, miningReward int64,
|
|
||||||
getTracerFn func(txIndex int, txHash common.Hash, chainConfig *params.ChainConfig) (*tracers.Tracer, io.WriteCloser, error)) (*state.StateDB, *ExecutionResult, []byte, error) {
|
|
||||||
// Capture errors for BLOCKHASH operation, if we haven't been supplied the
|
// Capture errors for BLOCKHASH operation, if we haven't been supplied the
|
||||||
// required blockhashes
|
// required blockhashes
|
||||||
var hashError error
|
var hashError error
|
||||||
|
|
@ -183,15 +178,28 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig,
|
||||||
var excessBlobGas uint64
|
var excessBlobGas uint64
|
||||||
if pre.Env.ExcessBlobGas != nil {
|
if pre.Env.ExcessBlobGas != nil {
|
||||||
excessBlobGas = *pre.Env.ExcessBlobGas
|
excessBlobGas = *pre.Env.ExcessBlobGas
|
||||||
vmContext.BlobBaseFee = eip4844.CalcBlobFee(excessBlobGas)
|
header := &types.Header{
|
||||||
|
Time: pre.Env.Timestamp,
|
||||||
|
ExcessBlobGas: pre.Env.ExcessBlobGas,
|
||||||
|
}
|
||||||
|
vmContext.BlobBaseFee = eip4844.CalcBlobFee(chainConfig, header)
|
||||||
} else {
|
} else {
|
||||||
// If it is not explicitly defined, but we have the parent values, we try
|
// If it is not explicitly defined, but we have the parent values, we try
|
||||||
// to calculate it ourselves.
|
// to calculate it ourselves.
|
||||||
parentExcessBlobGas := pre.Env.ParentExcessBlobGas
|
parentExcessBlobGas := pre.Env.ParentExcessBlobGas
|
||||||
parentBlobGasUsed := pre.Env.ParentBlobGasUsed
|
parentBlobGasUsed := pre.Env.ParentBlobGasUsed
|
||||||
if parentExcessBlobGas != nil && parentBlobGasUsed != nil {
|
if parentExcessBlobGas != nil && parentBlobGasUsed != nil {
|
||||||
excessBlobGas = eip4844.CalcExcessBlobGas(*parentExcessBlobGas, *parentBlobGasUsed)
|
parent := &types.Header{
|
||||||
vmContext.BlobBaseFee = eip4844.CalcBlobFee(excessBlobGas)
|
Time: pre.Env.ParentTimestamp,
|
||||||
|
ExcessBlobGas: pre.Env.ParentExcessBlobGas,
|
||||||
|
BlobGasUsed: pre.Env.ParentBlobGasUsed,
|
||||||
|
}
|
||||||
|
header := &types.Header{
|
||||||
|
Time: pre.Env.Timestamp,
|
||||||
|
ExcessBlobGas: &excessBlobGas,
|
||||||
|
}
|
||||||
|
excessBlobGas = eip4844.CalcExcessBlobGas(chainConfig, parent, header.Time)
|
||||||
|
vmContext.BlobBaseFee = eip4844.CalcBlobFee(chainConfig, header)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// If DAO is supported/enabled, we need to handle it here. In geth 'proper', it's
|
// If DAO is supported/enabled, we need to handle it here. In geth 'proper', it's
|
||||||
|
|
@ -201,17 +209,16 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig,
|
||||||
chainConfig.DAOForkBlock.Cmp(new(big.Int).SetUint64(pre.Env.Number)) == 0 {
|
chainConfig.DAOForkBlock.Cmp(new(big.Int).SetUint64(pre.Env.Number)) == 0 {
|
||||||
misc.ApplyDAOHardFork(statedb)
|
misc.ApplyDAOHardFork(statedb)
|
||||||
}
|
}
|
||||||
|
evm := vm.NewEVM(vmContext, statedb, chainConfig, vmConfig)
|
||||||
if beaconRoot := pre.Env.ParentBeaconBlockRoot; beaconRoot != nil {
|
if beaconRoot := pre.Env.ParentBeaconBlockRoot; beaconRoot != nil {
|
||||||
evm := vm.NewEVM(vmContext, vm.TxContext{}, statedb, chainConfig, vmConfig)
|
core.ProcessBeaconBlockRoot(*beaconRoot, evm)
|
||||||
core.ProcessBeaconBlockRoot(*beaconRoot, evm, statedb)
|
|
||||||
}
|
}
|
||||||
if pre.Env.BlockHashes != nil && chainConfig.IsPrague(new(big.Int).SetUint64(pre.Env.Number), pre.Env.Timestamp) {
|
if pre.Env.BlockHashes != nil && chainConfig.IsPrague(new(big.Int).SetUint64(pre.Env.Number), pre.Env.Timestamp) {
|
||||||
var (
|
var (
|
||||||
prevNumber = pre.Env.Number - 1
|
prevNumber = pre.Env.Number - 1
|
||||||
prevHash = pre.Env.BlockHashes[math.HexOrDecimal64(prevNumber)]
|
prevHash = pre.Env.BlockHashes[math.HexOrDecimal64(prevNumber)]
|
||||||
evm = vm.NewEVM(vmContext, vm.TxContext{}, statedb, chainConfig, vmConfig)
|
|
||||||
)
|
)
|
||||||
core.ProcessParentBlockHash(prevHash, evm, statedb)
|
core.ProcessParentBlockHash(prevHash, evm)
|
||||||
}
|
}
|
||||||
for i := 0; txIt.Next(); i++ {
|
for i := 0; txIt.Next(); i++ {
|
||||||
tx, err := txIt.Tx()
|
tx, err := txIt.Tx()
|
||||||
|
|
@ -235,31 +242,21 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig,
|
||||||
txBlobGas := uint64(0)
|
txBlobGas := uint64(0)
|
||||||
if tx.Type() == types.BlobTxType {
|
if tx.Type() == types.BlobTxType {
|
||||||
txBlobGas = uint64(params.BlobTxBlobGasPerBlob * len(tx.BlobHashes()))
|
txBlobGas = uint64(params.BlobTxBlobGasPerBlob * len(tx.BlobHashes()))
|
||||||
if used, max := blobGasUsed+txBlobGas, uint64(params.MaxBlobGasPerBlock); used > max {
|
max := eip4844.MaxBlobGasPerBlock(chainConfig, pre.Env.Timestamp)
|
||||||
|
if used := blobGasUsed + txBlobGas; used > max {
|
||||||
err := fmt.Errorf("blob gas (%d) would exceed maximum allowance %d", used, max)
|
err := fmt.Errorf("blob gas (%d) would exceed maximum allowance %d", used, max)
|
||||||
log.Warn("rejected tx", "index", i, "err", err)
|
log.Warn("rejected tx", "index", i, "err", err)
|
||||||
rejectedTxs = append(rejectedTxs, &rejectedTx{i, err.Error()})
|
rejectedTxs = append(rejectedTxs, &rejectedTx{i, err.Error()})
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tracer, traceOutput, err := getTracerFn(txIndex, tx.Hash(), chainConfig)
|
|
||||||
if err != nil {
|
|
||||||
return nil, nil, nil, err
|
|
||||||
}
|
|
||||||
if tracer != nil {
|
|
||||||
vmConfig.Tracer = tracer.Hooks
|
|
||||||
}
|
|
||||||
statedb.SetTxContext(tx.Hash(), txIndex)
|
statedb.SetTxContext(tx.Hash(), txIndex)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
txContext = core.NewEVMTxContext(msg)
|
snapshot = statedb.Snapshot()
|
||||||
snapshot = statedb.Snapshot()
|
prevGas = gaspool.Gas()
|
||||||
prevGas = gaspool.Gas()
|
|
||||||
)
|
)
|
||||||
evm := vm.NewEVM(vmContext, txContext, statedb, chainConfig, vmConfig)
|
if evm.Config.Tracer != nil && evm.Config.Tracer.OnTxStart != nil {
|
||||||
|
evm.Config.Tracer.OnTxStart(evm.GetVMContext(), tx, msg.From)
|
||||||
if tracer != nil && tracer.OnTxStart != nil {
|
|
||||||
tracer.OnTxStart(evm.GetVMContext(), tx, msg.From)
|
|
||||||
}
|
}
|
||||||
// (ret []byte, usedGas uint64, failed bool, err error)
|
// (ret []byte, usedGas uint64, failed bool, err error)
|
||||||
msgResult, err := core.ApplyMessage(evm, msg, gaspool)
|
msgResult, err := core.ApplyMessage(evm, msg, gaspool)
|
||||||
|
|
@ -268,13 +265,8 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig,
|
||||||
log.Info("rejected tx", "index", i, "hash", tx.Hash(), "from", msg.From, "error", err)
|
log.Info("rejected tx", "index", i, "hash", tx.Hash(), "from", msg.From, "error", err)
|
||||||
rejectedTxs = append(rejectedTxs, &rejectedTx{i, err.Error()})
|
rejectedTxs = append(rejectedTxs, &rejectedTx{i, err.Error()})
|
||||||
gaspool.SetGas(prevGas)
|
gaspool.SetGas(prevGas)
|
||||||
if tracer != nil {
|
if evm.Config.Tracer != nil && evm.Config.Tracer.OnTxEnd != nil {
|
||||||
if tracer.OnTxEnd != nil {
|
evm.Config.Tracer.OnTxEnd(nil, err)
|
||||||
tracer.OnTxEnd(nil, err)
|
|
||||||
}
|
|
||||||
if err := writeTraceResult(tracer, traceOutput); err != nil {
|
|
||||||
log.Warn("Error writing tracer output", "err", err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
@ -318,13 +310,8 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig,
|
||||||
//receipt.BlockNumber
|
//receipt.BlockNumber
|
||||||
receipt.TransactionIndex = uint(txIndex)
|
receipt.TransactionIndex = uint(txIndex)
|
||||||
receipts = append(receipts, receipt)
|
receipts = append(receipts, receipt)
|
||||||
if tracer != nil {
|
if evm.Config.Tracer != nil && evm.Config.Tracer.OnTxEnd != nil {
|
||||||
if tracer.Hooks.OnTxEnd != nil {
|
evm.Config.Tracer.OnTxEnd(receipt, nil)
|
||||||
tracer.Hooks.OnTxEnd(receipt, nil)
|
|
||||||
}
|
|
||||||
if err = writeTraceResult(tracer, traceOutput); err != nil {
|
|
||||||
log.Warn("Error writing tracer output", "err", err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -365,26 +352,23 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig,
|
||||||
// Gather the execution-layer triggered requests.
|
// Gather the execution-layer triggered requests.
|
||||||
var requests [][]byte
|
var requests [][]byte
|
||||||
if chainConfig.IsPrague(vmContext.BlockNumber, vmContext.Time) {
|
if chainConfig.IsPrague(vmContext.BlockNumber, vmContext.Time) {
|
||||||
// EIP-6110 deposits
|
requests = [][]byte{}
|
||||||
|
// EIP-6110
|
||||||
var allLogs []*types.Log
|
var allLogs []*types.Log
|
||||||
for _, receipt := range receipts {
|
for _, receipt := range receipts {
|
||||||
allLogs = append(allLogs, receipt.Logs...)
|
allLogs = append(allLogs, receipt.Logs...)
|
||||||
}
|
}
|
||||||
depositRequests, err := core.ParseDepositLogs(allLogs, chainConfig)
|
if err := core.ParseDepositLogs(&requests, allLogs, chainConfig); err != nil {
|
||||||
if err != nil {
|
|
||||||
return nil, nil, nil, NewError(ErrorEVM, fmt.Errorf("could not parse requests logs: %v", err))
|
return nil, nil, nil, NewError(ErrorEVM, fmt.Errorf("could not parse requests logs: %v", err))
|
||||||
}
|
}
|
||||||
requests = append(requests, depositRequests)
|
// EIP-7002
|
||||||
// create EVM for system calls
|
core.ProcessWithdrawalQueue(&requests, evm)
|
||||||
vmenv := vm.NewEVM(vmContext, vm.TxContext{}, statedb, chainConfig, vm.Config{})
|
// EIP-7251
|
||||||
// EIP-7002 withdrawals
|
core.ProcessConsolidationQueue(&requests, evm)
|
||||||
requests = append(requests, core.ProcessWithdrawalQueue(vmenv, statedb))
|
|
||||||
// EIP-7251 consolidations
|
|
||||||
requests = append(requests, core.ProcessConsolidationQueue(vmenv, statedb))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Commit block
|
// Commit block
|
||||||
root, err := statedb.Commit(vmContext.BlockNumber.Uint64(), chainConfig.IsEIP158(vmContext.BlockNumber))
|
root, err := statedb.Commit(vmContext.BlockNumber.Uint64(), chainConfig.IsEIP158(vmContext.BlockNumber), chainConfig.IsCancun(vmContext.BlockNumber, vmContext.Time))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, NewError(ErrorEVM, fmt.Errorf("could not commit state: %v", err))
|
return nil, nil, nil, NewError(ErrorEVM, fmt.Errorf("could not commit state: %v", err))
|
||||||
}
|
}
|
||||||
|
|
@ -435,14 +419,14 @@ func MakePreState(db ethdb.Database, accounts types.GenesisAlloc) *state.StateDB
|
||||||
statedb, _ := state.New(types.EmptyRootHash, sdb)
|
statedb, _ := state.New(types.EmptyRootHash, sdb)
|
||||||
for addr, a := range accounts {
|
for addr, a := range accounts {
|
||||||
statedb.SetCode(addr, a.Code)
|
statedb.SetCode(addr, a.Code)
|
||||||
statedb.SetNonce(addr, a.Nonce)
|
statedb.SetNonce(addr, a.Nonce, tracing.NonceChangeGenesis)
|
||||||
statedb.SetBalance(addr, uint256.MustFromBig(a.Balance), tracing.BalanceIncreaseGenesisBalance)
|
statedb.SetBalance(addr, uint256.MustFromBig(a.Balance), tracing.BalanceIncreaseGenesisBalance)
|
||||||
for k, v := range a.Storage {
|
for k, v := range a.Storage {
|
||||||
statedb.SetState(addr, k, v)
|
statedb.SetState(addr, k, v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Commit and re-open to start with a clean state.
|
// Commit and re-open to start with a clean state.
|
||||||
root, _ := statedb.Commit(0, false)
|
root, _ := statedb.Commit(0, false, false)
|
||||||
statedb, _ = state.New(root, sdb)
|
statedb, _ = state.New(root, sdb)
|
||||||
return statedb
|
return statedb
|
||||||
}
|
}
|
||||||
|
|
@ -473,16 +457,3 @@ func calcDifficulty(config *params.ChainConfig, number, currentTime, parentTime
|
||||||
}
|
}
|
||||||
return ethash.CalcDifficulty(config, currentTime, parent)
|
return ethash.CalcDifficulty(config, currentTime, parent)
|
||||||
}
|
}
|
||||||
|
|
||||||
func writeTraceResult(tracer *tracers.Tracer, f io.WriteCloser) error {
|
|
||||||
defer f.Close()
|
|
||||||
result, err := tracer.GetResult()
|
|
||||||
if err != nil || result == nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
err = json.NewEncoder(f).Encode(result)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
|
||||||
152
cmd/evm/internal/t8ntool/file_tracer.go
Normal file
152
cmd/evm/internal/t8ntool/file_tracer.go
Normal file
|
|
@ -0,0 +1,152 @@
|
||||||
|
// Copyright 2024 The go-ethereum Authors
|
||||||
|
// This file is part of go-ethereum.
|
||||||
|
//
|
||||||
|
// go-ethereum is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// go-ethereum 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 General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
package t8ntool
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"math/big"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum/common"
|
||||||
|
"github.com/ethereum/go-ethereum/core/tracing"
|
||||||
|
"github.com/ethereum/go-ethereum/core/types"
|
||||||
|
"github.com/ethereum/go-ethereum/eth/tracers"
|
||||||
|
"github.com/ethereum/go-ethereum/log"
|
||||||
|
)
|
||||||
|
|
||||||
|
// fileWritingTracer wraps either a tracer or a logger. On tx start,
|
||||||
|
// it instantiates a tracer/logger, creates a new file to direct output to,
|
||||||
|
// and on tx end it closes the file.
|
||||||
|
type fileWritingTracer struct {
|
||||||
|
txIndex int // transaction counter
|
||||||
|
inner *tracing.Hooks // inner hooks
|
||||||
|
destination io.WriteCloser // the currently open file (if any)
|
||||||
|
baseDir string // baseDir to write output-files to
|
||||||
|
suffix string // suffix is the suffix to use when creating files
|
||||||
|
|
||||||
|
// for custom tracing
|
||||||
|
getResult func() (json.RawMessage, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *fileWritingTracer) Write(p []byte) (n int, err error) {
|
||||||
|
if l.destination != nil {
|
||||||
|
return l.destination.Write(p)
|
||||||
|
}
|
||||||
|
log.Warn("Tracer wrote to non-existing output")
|
||||||
|
// It is tempting to return an error here, however, the json encoder
|
||||||
|
// will no retry writing to an io.Writer once it has returned an error once.
|
||||||
|
// Therefore, we must squash the error.
|
||||||
|
return n, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// newFileWriter creates a set of hooks which wraps inner hooks (typically a logger),
|
||||||
|
// and writes the output to a file, one file per transaction.
|
||||||
|
func newFileWriter(baseDir string, innerFn func(out io.Writer) *tracing.Hooks) *tracing.Hooks {
|
||||||
|
t := &fileWritingTracer{
|
||||||
|
baseDir: baseDir,
|
||||||
|
suffix: "jsonl",
|
||||||
|
}
|
||||||
|
t.inner = innerFn(t) // instantiate the inner tracer
|
||||||
|
return t.hooks()
|
||||||
|
}
|
||||||
|
|
||||||
|
// newResultWriter creates a set of hooks wraps and invokes an underlying tracer,
|
||||||
|
// and writes the result (getResult-output) to file, one per transaction.
|
||||||
|
func newResultWriter(baseDir string, tracer *tracers.Tracer) *tracing.Hooks {
|
||||||
|
t := &fileWritingTracer{
|
||||||
|
baseDir: baseDir,
|
||||||
|
getResult: tracer.GetResult,
|
||||||
|
inner: tracer.Hooks,
|
||||||
|
suffix: "json",
|
||||||
|
}
|
||||||
|
return t.hooks()
|
||||||
|
}
|
||||||
|
|
||||||
|
// OnTxStart creates a new output-file specific for this transaction, and invokes
|
||||||
|
// the inner OnTxStart handler.
|
||||||
|
func (l *fileWritingTracer) OnTxStart(env *tracing.VMContext, tx *types.Transaction, from common.Address) {
|
||||||
|
// Open a new file, or print a warning log if it's failed
|
||||||
|
fname := filepath.Join(l.baseDir, fmt.Sprintf("trace-%d-%v.%v", l.txIndex, tx.Hash().String(), l.suffix))
|
||||||
|
traceFile, err := os.Create(fname)
|
||||||
|
if err != nil {
|
||||||
|
log.Warn("Failed creating trace-file", "err", err)
|
||||||
|
} else {
|
||||||
|
log.Info("Created tracing-file", "path", fname)
|
||||||
|
l.destination = traceFile
|
||||||
|
}
|
||||||
|
if l.inner != nil && l.inner.OnTxStart != nil {
|
||||||
|
l.inner.OnTxStart(env, tx, from)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OnTxEnd writes result (if getResult exist), closes any currently open output-file,
|
||||||
|
// and invokes the inner OnTxEnd handler.
|
||||||
|
func (l *fileWritingTracer) OnTxEnd(receipt *types.Receipt, err error) {
|
||||||
|
if l.inner != nil && l.inner.OnTxEnd != nil {
|
||||||
|
l.inner.OnTxEnd(receipt, err)
|
||||||
|
}
|
||||||
|
if l.getResult != nil && l.destination != nil {
|
||||||
|
if result, err := l.getResult(); result != nil {
|
||||||
|
json.NewEncoder(l.destination).Encode(result)
|
||||||
|
} else {
|
||||||
|
log.Warn("Error obtaining tracer result", "err", err)
|
||||||
|
}
|
||||||
|
l.destination.Close()
|
||||||
|
l.destination = nil
|
||||||
|
}
|
||||||
|
l.txIndex++
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *fileWritingTracer) hooks() *tracing.Hooks {
|
||||||
|
return &tracing.Hooks{
|
||||||
|
OnTxStart: l.OnTxStart,
|
||||||
|
OnTxEnd: l.OnTxEnd,
|
||||||
|
OnEnter: func(depth int, typ byte, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) {
|
||||||
|
if l.inner != nil && l.inner.OnEnter != nil {
|
||||||
|
l.inner.OnEnter(depth, typ, from, to, input, gas, value)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
OnExit: func(depth int, output []byte, gasUsed uint64, err error, reverted bool) {
|
||||||
|
if l.inner != nil && l.inner.OnExit != nil {
|
||||||
|
l.inner.OnExit(depth, output, gasUsed, err, reverted)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
OnOpcode: func(pc uint64, op byte, gas, cost uint64, scope tracing.OpContext, rData []byte, depth int, err error) {
|
||||||
|
if l.inner != nil && l.inner.OnOpcode != nil {
|
||||||
|
l.inner.OnOpcode(pc, op, gas, cost, scope, rData, depth, err)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
OnFault: func(pc uint64, op byte, gas, cost uint64, scope tracing.OpContext, depth int, err error) {
|
||||||
|
if l.inner != nil && l.inner.OnFault != nil {
|
||||||
|
l.inner.OnFault(pc, op, gas, cost, scope, depth, err)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
OnSystemCallStart: func() {
|
||||||
|
if l.inner != nil && l.inner.OnSystemCallStart != nil {
|
||||||
|
l.inner.OnSystemCallStart()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
OnSystemCallEnd: func() {
|
||||||
|
if l.inner != nil && l.inner.OnSystemCallEnd != nil {
|
||||||
|
l.inner.OnSystemCallEnd()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -31,7 +31,7 @@ func (e ExecutionResult) MarshalJSON() ([]byte, error) {
|
||||||
CurrentExcessBlobGas *math.HexOrDecimal64 `json:"currentExcessBlobGas,omitempty"`
|
CurrentExcessBlobGas *math.HexOrDecimal64 `json:"currentExcessBlobGas,omitempty"`
|
||||||
CurrentBlobGasUsed *math.HexOrDecimal64 `json:"blobGasUsed,omitempty"`
|
CurrentBlobGasUsed *math.HexOrDecimal64 `json:"blobGasUsed,omitempty"`
|
||||||
RequestsHash *common.Hash `json:"requestsHash,omitempty"`
|
RequestsHash *common.Hash `json:"requestsHash,omitempty"`
|
||||||
Requests []hexutil.Bytes `json:"requests,omitempty"`
|
Requests []hexutil.Bytes `json:"requests"`
|
||||||
}
|
}
|
||||||
var enc ExecutionResult
|
var enc ExecutionResult
|
||||||
enc.StateRoot = e.StateRoot
|
enc.StateRoot = e.StateRoot
|
||||||
|
|
@ -74,7 +74,7 @@ func (e *ExecutionResult) UnmarshalJSON(input []byte) error {
|
||||||
CurrentExcessBlobGas *math.HexOrDecimal64 `json:"currentExcessBlobGas,omitempty"`
|
CurrentExcessBlobGas *math.HexOrDecimal64 `json:"currentExcessBlobGas,omitempty"`
|
||||||
CurrentBlobGasUsed *math.HexOrDecimal64 `json:"blobGasUsed,omitempty"`
|
CurrentBlobGasUsed *math.HexOrDecimal64 `json:"blobGasUsed,omitempty"`
|
||||||
RequestsHash *common.Hash `json:"requestsHash,omitempty"`
|
RequestsHash *common.Hash `json:"requestsHash,omitempty"`
|
||||||
Requests []hexutil.Bytes `json:"requests,omitempty"`
|
Requests []hexutil.Bytes `json:"requests"`
|
||||||
}
|
}
|
||||||
var dec ExecutionResult
|
var dec ExecutionResult
|
||||||
if err := json.Unmarshal(input, &dec); err != nil {
|
if err := json.Unmarshal(input, &dec); err != nil {
|
||||||
|
|
|
||||||
|
|
@ -64,12 +64,10 @@ func (r *result) MarshalJSON() ([]byte, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func Transaction(ctx *cli.Context) error {
|
func Transaction(ctx *cli.Context) error {
|
||||||
var (
|
|
||||||
err error
|
|
||||||
)
|
|
||||||
// We need to load the transactions. May be either in stdin input or in files.
|
// We need to load the transactions. May be either in stdin input or in files.
|
||||||
// Check if anything needs to be read from stdin
|
// Check if anything needs to be read from stdin
|
||||||
var (
|
var (
|
||||||
|
err error
|
||||||
txStr = ctx.String(InputTxsFlag.Name)
|
txStr = ctx.String(InputTxsFlag.Name)
|
||||||
inputData = &input{}
|
inputData = &input{}
|
||||||
chainConfig *params.ChainConfig
|
chainConfig *params.ChainConfig
|
||||||
|
|
@ -82,6 +80,7 @@ func Transaction(ctx *cli.Context) error {
|
||||||
}
|
}
|
||||||
// Set the chain id
|
// Set the chain id
|
||||||
chainConfig.ChainID = big.NewInt(ctx.Int64(ChainIDFlag.Name))
|
chainConfig.ChainID = big.NewInt(ctx.Int64(ChainIDFlag.Name))
|
||||||
|
|
||||||
var body hexutil.Bytes
|
var body hexutil.Bytes
|
||||||
if txStr == stdinSelector {
|
if txStr == stdinSelector {
|
||||||
decoder := json.NewDecoder(os.Stdin)
|
decoder := json.NewDecoder(os.Stdin)
|
||||||
|
|
@ -107,6 +106,7 @@ func Transaction(ctx *cli.Context) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
signer := types.MakeSigner(chainConfig, new(big.Int), 0)
|
signer := types.MakeSigner(chainConfig, new(big.Int), 0)
|
||||||
|
|
||||||
// We now have the transactions in 'body', which is supposed to be an
|
// We now have the transactions in 'body', which is supposed to be an
|
||||||
// rlp list of transactions
|
// rlp list of transactions
|
||||||
it, err := rlp.NewListIterator([]byte(body))
|
it, err := rlp.NewListIterator([]byte(body))
|
||||||
|
|
@ -133,15 +133,29 @@ func Transaction(ctx *cli.Context) error {
|
||||||
r.Address = sender
|
r.Address = sender
|
||||||
}
|
}
|
||||||
// Check intrinsic gas
|
// Check intrinsic gas
|
||||||
if gas, err := core.IntrinsicGas(tx.Data(), tx.AccessList(), tx.To() == nil,
|
rules := chainConfig.Rules(common.Big0, true, 0)
|
||||||
chainConfig.IsHomestead(new(big.Int)), chainConfig.IsIstanbul(new(big.Int)), chainConfig.IsShanghai(new(big.Int), 0)); err != nil {
|
gas, err := core.IntrinsicGas(tx.Data(), tx.AccessList(), tx.SetCodeAuthorizations(), tx.To() == nil, rules.IsHomestead, rules.IsIstanbul, rules.IsShanghai)
|
||||||
|
if err != nil {
|
||||||
r.Error = err
|
r.Error = err
|
||||||
results = append(results, r)
|
results = append(results, r)
|
||||||
continue
|
continue
|
||||||
} else {
|
}
|
||||||
r.IntrinsicGas = gas
|
r.IntrinsicGas = gas
|
||||||
if tx.Gas() < gas {
|
if tx.Gas() < gas {
|
||||||
r.Error = fmt.Errorf("%w: have %d, want %d", core.ErrIntrinsicGas, tx.Gas(), gas)
|
r.Error = fmt.Errorf("%w: have %d, want %d", core.ErrIntrinsicGas, tx.Gas(), gas)
|
||||||
|
results = append(results, r)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
// For Prague txs, validate the floor data gas.
|
||||||
|
if rules.IsPrague {
|
||||||
|
floorDataGas, err := core.FloorDataGas(tx.Data())
|
||||||
|
if err != nil {
|
||||||
|
r.Error = err
|
||||||
|
results = append(results, r)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if tx.Gas() < floorDataGas {
|
||||||
|
r.Error = fmt.Errorf("%w: have %d, want %d", core.ErrFloorDataGas, tx.Gas(), floorDataGas)
|
||||||
results = append(results, r)
|
results = append(results, r)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -82,59 +82,10 @@ type input struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func Transition(ctx *cli.Context) error {
|
func Transition(ctx *cli.Context) error {
|
||||||
var getTracer = func(txIndex int, txHash common.Hash, chainConfig *params.ChainConfig) (*tracers.Tracer, io.WriteCloser, error) {
|
|
||||||
return nil, nil, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
baseDir, err := createBasedir(ctx)
|
baseDir, err := createBasedir(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return NewError(ErrorIO, fmt.Errorf("failed creating output basedir: %v", err))
|
return NewError(ErrorIO, fmt.Errorf("failed creating output basedir: %v", err))
|
||||||
}
|
}
|
||||||
|
|
||||||
if ctx.Bool(TraceFlag.Name) { // JSON opcode tracing
|
|
||||||
// Configure the EVM logger
|
|
||||||
logConfig := &logger.Config{
|
|
||||||
DisableStack: ctx.Bool(TraceDisableStackFlag.Name),
|
|
||||||
EnableMemory: ctx.Bool(TraceEnableMemoryFlag.Name),
|
|
||||||
EnableReturnData: ctx.Bool(TraceEnableReturnDataFlag.Name),
|
|
||||||
Debug: true,
|
|
||||||
}
|
|
||||||
getTracer = func(txIndex int, txHash common.Hash, _ *params.ChainConfig) (*tracers.Tracer, io.WriteCloser, error) {
|
|
||||||
traceFile, err := os.Create(filepath.Join(baseDir, fmt.Sprintf("trace-%d-%v.jsonl", txIndex, txHash.String())))
|
|
||||||
if err != nil {
|
|
||||||
return nil, nil, NewError(ErrorIO, fmt.Errorf("failed creating trace-file: %v", err))
|
|
||||||
}
|
|
||||||
var l *tracing.Hooks
|
|
||||||
if ctx.Bool(TraceEnableCallFramesFlag.Name) {
|
|
||||||
l = logger.NewJSONLoggerWithCallFrames(logConfig, traceFile)
|
|
||||||
} else {
|
|
||||||
l = logger.NewJSONLogger(logConfig, traceFile)
|
|
||||||
}
|
|
||||||
tracer := &tracers.Tracer{
|
|
||||||
Hooks: l,
|
|
||||||
// jsonLogger streams out result to file.
|
|
||||||
GetResult: func() (json.RawMessage, error) { return nil, nil },
|
|
||||||
Stop: func(err error) {},
|
|
||||||
}
|
|
||||||
return tracer, traceFile, nil
|
|
||||||
}
|
|
||||||
} else if ctx.IsSet(TraceTracerFlag.Name) {
|
|
||||||
var config json.RawMessage
|
|
||||||
if ctx.IsSet(TraceTracerConfigFlag.Name) {
|
|
||||||
config = []byte(ctx.String(TraceTracerConfigFlag.Name))
|
|
||||||
}
|
|
||||||
getTracer = func(txIndex int, txHash common.Hash, chainConfig *params.ChainConfig) (*tracers.Tracer, io.WriteCloser, error) {
|
|
||||||
traceFile, err := os.Create(filepath.Join(baseDir, fmt.Sprintf("trace-%d-%v.json", txIndex, txHash.String())))
|
|
||||||
if err != nil {
|
|
||||||
return nil, nil, NewError(ErrorIO, fmt.Errorf("failed creating trace-file: %v", err))
|
|
||||||
}
|
|
||||||
tracer, err := tracers.DefaultDirectory.New(ctx.String(TraceTracerFlag.Name), nil, config, chainConfig)
|
|
||||||
if err != nil {
|
|
||||||
return nil, nil, NewError(ErrorConfig, fmt.Errorf("failed instantiating tracer: %w", err))
|
|
||||||
}
|
|
||||||
return tracer, traceFile, nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// We need to load three things: alloc, env and transactions. May be either in
|
// We need to load three things: alloc, env and transactions. May be either in
|
||||||
// stdin input or in files.
|
// stdin input or in files.
|
||||||
// Check if anything needs to be read from stdin
|
// Check if anything needs to be read from stdin
|
||||||
|
|
@ -180,6 +131,7 @@ func Transition(ctx *cli.Context) error {
|
||||||
chainConfig = cConf
|
chainConfig = cConf
|
||||||
vmConfig.ExtraEips = extraEips
|
vmConfig.ExtraEips = extraEips
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the chain id
|
// Set the chain id
|
||||||
chainConfig.ChainID = big.NewInt(ctx.Int64(ChainIDFlag.Name))
|
chainConfig.ChainID = big.NewInt(ctx.Int64(ChainIDFlag.Name))
|
||||||
|
|
||||||
|
|
@ -198,8 +150,34 @@ func Transition(ctx *cli.Context) error {
|
||||||
if err := applyCancunChecks(&prestate.Env, chainConfig); err != nil {
|
if err := applyCancunChecks(&prestate.Env, chainConfig); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Configure tracer
|
||||||
|
if ctx.IsSet(TraceTracerFlag.Name) { // Custom tracing
|
||||||
|
config := json.RawMessage(ctx.String(TraceTracerConfigFlag.Name))
|
||||||
|
tracer, err := tracers.DefaultDirectory.New(ctx.String(TraceTracerFlag.Name),
|
||||||
|
nil, config, chainConfig)
|
||||||
|
if err != nil {
|
||||||
|
return NewError(ErrorConfig, fmt.Errorf("failed instantiating tracer: %v", err))
|
||||||
|
}
|
||||||
|
vmConfig.Tracer = newResultWriter(baseDir, tracer)
|
||||||
|
} else if ctx.Bool(TraceFlag.Name) { // JSON opcode tracing
|
||||||
|
logConfig := &logger.Config{
|
||||||
|
DisableStack: ctx.Bool(TraceDisableStackFlag.Name),
|
||||||
|
EnableMemory: ctx.Bool(TraceEnableMemoryFlag.Name),
|
||||||
|
EnableReturnData: ctx.Bool(TraceEnableReturnDataFlag.Name),
|
||||||
|
}
|
||||||
|
if ctx.Bool(TraceEnableCallFramesFlag.Name) {
|
||||||
|
vmConfig.Tracer = newFileWriter(baseDir, func(out io.Writer) *tracing.Hooks {
|
||||||
|
return logger.NewJSONLoggerWithCallFrames(logConfig, out)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
vmConfig.Tracer = newFileWriter(baseDir, func(out io.Writer) *tracing.Hooks {
|
||||||
|
return logger.NewJSONLogger(logConfig, out)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
// Run the test and aggregate the result
|
// Run the test and aggregate the result
|
||||||
s, result, body, err := prestate.Apply(vmConfig, chainConfig, txIt, ctx.Int64(RewardFlag.Name), getTracer)
|
s, result, body, err := prestate.Apply(vmConfig, chainConfig, txIt, ctx.Int64(RewardFlag.Name))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
313
cmd/evm/main.go
313
cmd/evm/main.go
|
|
@ -19,11 +19,14 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/big"
|
"io/fs"
|
||||||
"os"
|
"os"
|
||||||
"slices"
|
"path/filepath"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/cmd/evm/internal/t8ntool"
|
"github.com/ethereum/go-ethereum/cmd/evm/internal/t8ntool"
|
||||||
|
"github.com/ethereum/go-ethereum/core/state"
|
||||||
|
"github.com/ethereum/go-ethereum/core/tracing"
|
||||||
|
"github.com/ethereum/go-ethereum/eth/tracers/logger"
|
||||||
"github.com/ethereum/go-ethereum/internal/debug"
|
"github.com/ethereum/go-ethereum/internal/debug"
|
||||||
"github.com/ethereum/go-ethereum/internal/flags"
|
"github.com/ethereum/go-ethereum/internal/flags"
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
|
|
@ -33,122 +36,100 @@ import (
|
||||||
_ "github.com/ethereum/go-ethereum/eth/tracers/native"
|
_ "github.com/ethereum/go-ethereum/eth/tracers/native"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Some other nice-to-haves:
|
||||||
|
// * accumulate traces into an object to bundle with test
|
||||||
|
// * write tx identifier for trace before hand (blocktest only)
|
||||||
|
// * combine blocktest and statetest runner logic using unified test interface
|
||||||
|
|
||||||
|
const traceCategory = "TRACING"
|
||||||
|
|
||||||
var (
|
var (
|
||||||
DebugFlag = &cli.BoolFlag{
|
// Test running flags.
|
||||||
Name: "debug",
|
RunFlag = &cli.StringFlag{
|
||||||
Usage: "output full trace logs",
|
Name: "run",
|
||||||
Category: flags.VMCategory,
|
Value: ".*",
|
||||||
}
|
Usage: "Run only those tests matching the regular expression.",
|
||||||
StatDumpFlag = &cli.BoolFlag{
|
|
||||||
Name: "statdump",
|
|
||||||
Usage: "displays stack and heap memory information",
|
|
||||||
Category: flags.VMCategory,
|
|
||||||
}
|
|
||||||
CodeFlag = &cli.StringFlag{
|
|
||||||
Name: "code",
|
|
||||||
Usage: "EVM code",
|
|
||||||
Category: flags.VMCategory,
|
|
||||||
}
|
|
||||||
CodeFileFlag = &cli.StringFlag{
|
|
||||||
Name: "codefile",
|
|
||||||
Usage: "File containing EVM code. If '-' is specified, code is read from stdin ",
|
|
||||||
Category: flags.VMCategory,
|
|
||||||
}
|
|
||||||
GasFlag = &cli.Uint64Flag{
|
|
||||||
Name: "gas",
|
|
||||||
Usage: "gas limit for the evm",
|
|
||||||
Value: 10000000000,
|
|
||||||
Category: flags.VMCategory,
|
|
||||||
}
|
|
||||||
PriceFlag = &flags.BigFlag{
|
|
||||||
Name: "price",
|
|
||||||
Usage: "price set for the evm",
|
|
||||||
Value: new(big.Int),
|
|
||||||
Category: flags.VMCategory,
|
|
||||||
}
|
|
||||||
ValueFlag = &flags.BigFlag{
|
|
||||||
Name: "value",
|
|
||||||
Usage: "value set for the evm",
|
|
||||||
Value: new(big.Int),
|
|
||||||
Category: flags.VMCategory,
|
|
||||||
}
|
|
||||||
DumpFlag = &cli.BoolFlag{
|
|
||||||
Name: "dump",
|
|
||||||
Usage: "dumps the state after the run",
|
|
||||||
Category: flags.VMCategory,
|
|
||||||
}
|
|
||||||
InputFlag = &cli.StringFlag{
|
|
||||||
Name: "input",
|
|
||||||
Usage: "input for the EVM",
|
|
||||||
Category: flags.VMCategory,
|
|
||||||
}
|
|
||||||
InputFileFlag = &cli.StringFlag{
|
|
||||||
Name: "inputfile",
|
|
||||||
Usage: "file containing input for the EVM",
|
|
||||||
Category: flags.VMCategory,
|
|
||||||
}
|
}
|
||||||
BenchFlag = &cli.BoolFlag{
|
BenchFlag = &cli.BoolFlag{
|
||||||
Name: "bench",
|
Name: "bench",
|
||||||
Usage: "benchmark the execution",
|
Usage: "benchmark the execution",
|
||||||
Category: flags.VMCategory,
|
Category: flags.VMCategory,
|
||||||
}
|
}
|
||||||
CreateFlag = &cli.BoolFlag{
|
WitnessCrossCheckFlag = &cli.BoolFlag{
|
||||||
Name: "create",
|
Name: "cross-check",
|
||||||
Usage: "indicates the action should be create rather than call",
|
Aliases: []string{"xc"},
|
||||||
Category: flags.VMCategory,
|
Usage: "Cross-check stateful execution against stateless, verifying the witness generation.",
|
||||||
}
|
}
|
||||||
GenesisFlag = &cli.StringFlag{
|
|
||||||
Name: "prestate",
|
// Debugging flags.
|
||||||
Usage: "JSON file with prestate (genesis) config",
|
DumpFlag = &cli.BoolFlag{
|
||||||
Category: flags.VMCategory,
|
Name: "dump",
|
||||||
|
Usage: "dumps the state after the run",
|
||||||
|
}
|
||||||
|
HumanReadableFlag = &cli.BoolFlag{
|
||||||
|
Name: "human",
|
||||||
|
Usage: "\"Human-readable\" output",
|
||||||
|
}
|
||||||
|
StatDumpFlag = &cli.BoolFlag{
|
||||||
|
Name: "statdump",
|
||||||
|
Usage: "displays stack and heap memory information",
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tracing flags.
|
||||||
|
TraceFlag = &cli.BoolFlag{
|
||||||
|
Name: "trace",
|
||||||
|
Usage: "Enable tracing and output trace log.",
|
||||||
|
Category: traceCategory,
|
||||||
|
}
|
||||||
|
TraceFormatFlag = &cli.StringFlag{
|
||||||
|
Name: "trace.format",
|
||||||
|
Usage: "Trace output format to use (json|struct|md)",
|
||||||
|
Value: "json",
|
||||||
|
Category: traceCategory,
|
||||||
|
}
|
||||||
|
TraceDisableMemoryFlag = &cli.BoolFlag{
|
||||||
|
Name: "trace.nomemory",
|
||||||
|
Aliases: []string{"nomemory"},
|
||||||
|
Value: true,
|
||||||
|
Usage: "disable memory output",
|
||||||
|
Category: traceCategory,
|
||||||
|
}
|
||||||
|
TraceDisableStackFlag = &cli.BoolFlag{
|
||||||
|
Name: "trace.nostack",
|
||||||
|
Aliases: []string{"nostack"},
|
||||||
|
Usage: "disable stack output",
|
||||||
|
Category: traceCategory,
|
||||||
|
}
|
||||||
|
TraceDisableStorageFlag = &cli.BoolFlag{
|
||||||
|
Name: "trace.nostorage",
|
||||||
|
Aliases: []string{"nostorage"},
|
||||||
|
Usage: "disable storage output",
|
||||||
|
Category: traceCategory,
|
||||||
|
}
|
||||||
|
TraceDisableReturnDataFlag = &cli.BoolFlag{
|
||||||
|
Name: "trace.noreturndata",
|
||||||
|
Aliases: []string{"noreturndata"},
|
||||||
|
Value: true,
|
||||||
|
Usage: "enable return data output",
|
||||||
|
Category: traceCategory,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated flags.
|
||||||
|
DebugFlag = &cli.BoolFlag{
|
||||||
|
Name: "debug",
|
||||||
|
Usage: "output full trace logs (deprecated)",
|
||||||
|
Hidden: true,
|
||||||
|
Category: traceCategory,
|
||||||
}
|
}
|
||||||
MachineFlag = &cli.BoolFlag{
|
MachineFlag = &cli.BoolFlag{
|
||||||
Name: "json",
|
Name: "json",
|
||||||
Usage: "output trace logs in machine readable format (json)",
|
Usage: "output trace logs in machine readable format, json (deprecated)",
|
||||||
Category: flags.VMCategory,
|
Hidden: true,
|
||||||
}
|
Category: traceCategory,
|
||||||
SenderFlag = &cli.StringFlag{
|
|
||||||
Name: "sender",
|
|
||||||
Usage: "The transaction origin",
|
|
||||||
Category: flags.VMCategory,
|
|
||||||
}
|
|
||||||
ReceiverFlag = &cli.StringFlag{
|
|
||||||
Name: "receiver",
|
|
||||||
Usage: "The transaction receiver (execution context)",
|
|
||||||
Category: flags.VMCategory,
|
|
||||||
}
|
|
||||||
DisableMemoryFlag = &cli.BoolFlag{
|
|
||||||
Name: "nomemory",
|
|
||||||
Value: true,
|
|
||||||
Usage: "disable memory output",
|
|
||||||
Category: flags.VMCategory,
|
|
||||||
}
|
|
||||||
DisableStackFlag = &cli.BoolFlag{
|
|
||||||
Name: "nostack",
|
|
||||||
Usage: "disable stack output",
|
|
||||||
Category: flags.VMCategory,
|
|
||||||
}
|
|
||||||
DisableStorageFlag = &cli.BoolFlag{
|
|
||||||
Name: "nostorage",
|
|
||||||
Usage: "disable storage output",
|
|
||||||
Category: flags.VMCategory,
|
|
||||||
}
|
|
||||||
DisableReturnDataFlag = &cli.BoolFlag{
|
|
||||||
Name: "noreturndata",
|
|
||||||
Value: true,
|
|
||||||
Usage: "enable return data output",
|
|
||||||
Category: flags.VMCategory,
|
|
||||||
}
|
|
||||||
refTestFlag = &cli.StringFlag{
|
|
||||||
Name: "test",
|
|
||||||
Usage: "Path to EOF validation reference test.",
|
|
||||||
}
|
|
||||||
hexFlag = &cli.StringFlag{
|
|
||||||
Name: "hex",
|
|
||||||
Usage: "single container data parse and validation",
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Command definitions.
|
||||||
var (
|
var (
|
||||||
stateTransitionCommand = &cli.Command{
|
stateTransitionCommand = &cli.Command{
|
||||||
Name: "transition",
|
Name: "transition",
|
||||||
|
|
@ -175,7 +156,6 @@ var (
|
||||||
t8ntool.RewardFlag,
|
t8ntool.RewardFlag,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
transactionCommand = &cli.Command{
|
transactionCommand = &cli.Command{
|
||||||
Name: "transaction",
|
Name: "transaction",
|
||||||
Aliases: []string{"t9n"},
|
Aliases: []string{"t9n"},
|
||||||
|
|
@ -203,62 +183,27 @@ var (
|
||||||
t8ntool.SealCliqueFlag,
|
t8ntool.SealCliqueFlag,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
eofParseCommand = &cli.Command{
|
|
||||||
Name: "eofparse",
|
|
||||||
Aliases: []string{"eof"},
|
|
||||||
Usage: "Parses hex eof container and returns validation errors (if any)",
|
|
||||||
Action: eofParseAction,
|
|
||||||
Flags: []cli.Flag{
|
|
||||||
hexFlag,
|
|
||||||
refTestFlag,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
eofDumpCommand = &cli.Command{
|
|
||||||
Name: "eofdump",
|
|
||||||
Usage: "Parses hex eof container and prints out human-readable representation of the container.",
|
|
||||||
Action: eofDumpAction,
|
|
||||||
Flags: []cli.Flag{
|
|
||||||
hexFlag,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// vmFlags contains flags related to running the EVM.
|
|
||||||
var vmFlags = []cli.Flag{
|
|
||||||
CodeFlag,
|
|
||||||
CodeFileFlag,
|
|
||||||
CreateFlag,
|
|
||||||
GasFlag,
|
|
||||||
PriceFlag,
|
|
||||||
ValueFlag,
|
|
||||||
InputFlag,
|
|
||||||
InputFileFlag,
|
|
||||||
GenesisFlag,
|
|
||||||
SenderFlag,
|
|
||||||
ReceiverFlag,
|
|
||||||
}
|
|
||||||
|
|
||||||
// traceFlags contains flags that configure tracing output.
|
// traceFlags contains flags that configure tracing output.
|
||||||
var traceFlags = []cli.Flag{
|
var traceFlags = []cli.Flag{
|
||||||
BenchFlag,
|
TraceFlag,
|
||||||
|
TraceFormatFlag,
|
||||||
|
TraceDisableStackFlag,
|
||||||
|
TraceDisableMemoryFlag,
|
||||||
|
TraceDisableStorageFlag,
|
||||||
|
TraceDisableReturnDataFlag,
|
||||||
|
|
||||||
|
// deprecated
|
||||||
DebugFlag,
|
DebugFlag,
|
||||||
DumpFlag,
|
|
||||||
MachineFlag,
|
MachineFlag,
|
||||||
StatDumpFlag,
|
|
||||||
DisableMemoryFlag,
|
|
||||||
DisableStackFlag,
|
|
||||||
DisableStorageFlag,
|
|
||||||
DisableReturnDataFlag,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var app = flags.NewApp("the evm command line interface")
|
var app = flags.NewApp("the evm command line interface")
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
app.Flags = slices.Concat(vmFlags, traceFlags, debug.Flags)
|
app.Flags = debug.Flags
|
||||||
app.Commands = []*cli.Command{
|
app.Commands = []*cli.Command{
|
||||||
compileCommand,
|
|
||||||
disasmCommand,
|
|
||||||
runCommand,
|
runCommand,
|
||||||
blockTestCommand,
|
blockTestCommand,
|
||||||
stateTestCommand,
|
stateTestCommand,
|
||||||
|
|
@ -280,11 +225,71 @@ func init() {
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if err := app.Run(os.Args); err != nil {
|
if err := app.Run(os.Args); err != nil {
|
||||||
code := 1
|
|
||||||
if ec, ok := err.(*t8ntool.NumberedError); ok {
|
|
||||||
code = ec.ExitCode()
|
|
||||||
}
|
|
||||||
fmt.Fprintln(os.Stderr, err)
|
fmt.Fprintln(os.Stderr, err)
|
||||||
os.Exit(code)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// tracerFromFlags parses the cli flags and returns the specified tracer.
|
||||||
|
func tracerFromFlags(ctx *cli.Context) *tracing.Hooks {
|
||||||
|
config := &logger.Config{
|
||||||
|
EnableMemory: !ctx.Bool(TraceDisableMemoryFlag.Name),
|
||||||
|
DisableStack: ctx.Bool(TraceDisableStackFlag.Name),
|
||||||
|
DisableStorage: ctx.Bool(TraceDisableStorageFlag.Name),
|
||||||
|
EnableReturnData: !ctx.Bool(TraceDisableReturnDataFlag.Name),
|
||||||
|
}
|
||||||
|
switch {
|
||||||
|
case ctx.Bool(TraceFlag.Name):
|
||||||
|
switch format := ctx.String(TraceFormatFlag.Name); format {
|
||||||
|
case "struct":
|
||||||
|
return logger.NewStreamingStructLogger(config, os.Stderr).Hooks()
|
||||||
|
case "json":
|
||||||
|
return logger.NewJSONLogger(config, os.Stderr)
|
||||||
|
case "md", "markdown":
|
||||||
|
return logger.NewMarkdownLogger(config, os.Stderr).Hooks()
|
||||||
|
default:
|
||||||
|
fmt.Fprintf(os.Stderr, "unknown trace format: %q\n", format)
|
||||||
|
os.Exit(1)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
// Deprecated ways of configuring tracing.
|
||||||
|
case ctx.Bool(MachineFlag.Name):
|
||||||
|
return logger.NewJSONLogger(config, os.Stderr)
|
||||||
|
case ctx.Bool(DebugFlag.Name):
|
||||||
|
return logger.NewStreamingStructLogger(config, os.Stderr).Hooks()
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// collectFiles walks the given path. If the path is a directory, it will
|
||||||
|
// return a list of all accumulates all files with json extension.
|
||||||
|
// Otherwise (if path points to a file), it will return the path.
|
||||||
|
func collectFiles(path string) []string {
|
||||||
|
var out []string
|
||||||
|
if info, err := os.Stat(path); err == nil && !info.IsDir() {
|
||||||
|
// User explicitly pointed out a file, ignore extension.
|
||||||
|
return []string{path}
|
||||||
|
}
|
||||||
|
err := filepath.Walk(path, func(path string, info fs.FileInfo, err error) error {
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if !info.IsDir() && filepath.Ext(info.Name()) == ".json" {
|
||||||
|
out = append(out, path)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintln(os.Stderr, err)
|
||||||
|
}
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// dump returns a state dump for the most current trie.
|
||||||
|
func dump(s *state.StateDB) *state.Dump {
|
||||||
|
root := s.IntermediateRoot(false)
|
||||||
|
cpy, _ := state.New(root, s.Database())
|
||||||
|
dump := cpy.RawDump(nil)
|
||||||
|
return &dump
|
||||||
|
}
|
||||||
|
|
|
||||||
87
cmd/evm/reporter.go
Normal file
87
cmd/evm/reporter.go
Normal file
|
|
@ -0,0 +1,87 @@
|
||||||
|
// Copyright 2024 The go-ethereum Authors
|
||||||
|
// This file is part of go-ethereum.
|
||||||
|
//
|
||||||
|
// go-ethereum is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// go-ethereum 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 General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum/common"
|
||||||
|
"github.com/ethereum/go-ethereum/core/state"
|
||||||
|
"github.com/urfave/cli/v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PASS = "\033[32mPASS\033[0m"
|
||||||
|
FAIL = "\033[31mFAIL\033[0m"
|
||||||
|
)
|
||||||
|
|
||||||
|
// testResult contains the execution status after running a state test, any
|
||||||
|
// error that might have occurred and a dump of the final state if requested.
|
||||||
|
type testResult struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Pass bool `json:"pass"`
|
||||||
|
Root *common.Hash `json:"stateRoot,omitempty"`
|
||||||
|
Fork string `json:"fork"`
|
||||||
|
Error string `json:"error,omitempty"`
|
||||||
|
State *state.Dump `json:"state,omitempty"`
|
||||||
|
Stats *execStats `json:"benchStats,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r testResult) String() string {
|
||||||
|
var status string
|
||||||
|
if r.Pass {
|
||||||
|
status = fmt.Sprintf("[%s]", PASS)
|
||||||
|
} else {
|
||||||
|
status = fmt.Sprintf("[%s]", FAIL)
|
||||||
|
}
|
||||||
|
info := r.Name
|
||||||
|
m := parseTestMetadata(r.Name)
|
||||||
|
if m != nil {
|
||||||
|
info = fmt.Sprintf("%s %s, param=%s", m.module, m.function, m.parameters)
|
||||||
|
}
|
||||||
|
var extra string
|
||||||
|
if !r.Pass {
|
||||||
|
extra = fmt.Sprintf(", err=%v, fork=%s", r.Error, r.Fork)
|
||||||
|
}
|
||||||
|
out := fmt.Sprintf("%s %s%s", status, info, extra)
|
||||||
|
if r.State != nil {
|
||||||
|
state, _ := json.MarshalIndent(r.State, "", " ")
|
||||||
|
out += "\n" + string(state)
|
||||||
|
}
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// report prints the after-test summary.
|
||||||
|
func report(ctx *cli.Context, results []testResult) {
|
||||||
|
if ctx.Bool(HumanReadableFlag.Name) {
|
||||||
|
pass := 0
|
||||||
|
for _, r := range results {
|
||||||
|
if r.Pass {
|
||||||
|
pass++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, r := range results {
|
||||||
|
fmt.Println(r)
|
||||||
|
}
|
||||||
|
fmt.Println("--")
|
||||||
|
fmt.Printf("%d tests passed, %d tests failed.\n", pass, len(results)-pass)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
out, _ := json.MarshalIndent(results, "", " ")
|
||||||
|
fmt.Println(string(out))
|
||||||
|
}
|
||||||
|
|
@ -18,6 +18,7 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"encoding/hex"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
|
@ -25,19 +26,19 @@ import (
|
||||||
"os"
|
"os"
|
||||||
goruntime "runtime"
|
goruntime "runtime"
|
||||||
"slices"
|
"slices"
|
||||||
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/cmd/evm/internal/compiler"
|
|
||||||
"github.com/ethereum/go-ethereum/cmd/utils"
|
"github.com/ethereum/go-ethereum/cmd/utils"
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/core"
|
"github.com/ethereum/go-ethereum/core"
|
||||||
"github.com/ethereum/go-ethereum/core/rawdb"
|
"github.com/ethereum/go-ethereum/core/rawdb"
|
||||||
"github.com/ethereum/go-ethereum/core/state"
|
"github.com/ethereum/go-ethereum/core/state"
|
||||||
"github.com/ethereum/go-ethereum/core/tracing"
|
"github.com/ethereum/go-ethereum/core/tracing"
|
||||||
|
"github.com/ethereum/go-ethereum/core/types"
|
||||||
"github.com/ethereum/go-ethereum/core/vm"
|
"github.com/ethereum/go-ethereum/core/vm"
|
||||||
"github.com/ethereum/go-ethereum/core/vm/runtime"
|
"github.com/ethereum/go-ethereum/core/vm/runtime"
|
||||||
"github.com/ethereum/go-ethereum/eth/tracers/logger"
|
|
||||||
"github.com/ethereum/go-ethereum/internal/flags"
|
"github.com/ethereum/go-ethereum/internal/flags"
|
||||||
"github.com/ethereum/go-ethereum/params"
|
"github.com/ethereum/go-ethereum/params"
|
||||||
"github.com/ethereum/go-ethereum/triedb"
|
"github.com/ethereum/go-ethereum/triedb"
|
||||||
|
|
@ -51,14 +52,83 @@ var runCommand = &cli.Command{
|
||||||
Usage: "Run arbitrary evm binary",
|
Usage: "Run arbitrary evm binary",
|
||||||
ArgsUsage: "<code>",
|
ArgsUsage: "<code>",
|
||||||
Description: `The run command runs arbitrary EVM code.`,
|
Description: `The run command runs arbitrary EVM code.`,
|
||||||
Flags: slices.Concat(vmFlags, traceFlags),
|
Flags: slices.Concat([]cli.Flag{
|
||||||
|
BenchFlag,
|
||||||
|
CodeFileFlag,
|
||||||
|
CreateFlag,
|
||||||
|
GasFlag,
|
||||||
|
GenesisFlag,
|
||||||
|
InputFlag,
|
||||||
|
InputFileFlag,
|
||||||
|
PriceFlag,
|
||||||
|
ReceiverFlag,
|
||||||
|
SenderFlag,
|
||||||
|
ValueFlag,
|
||||||
|
StatDumpFlag,
|
||||||
|
DumpFlag,
|
||||||
|
}, traceFlags),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
CodeFileFlag = &cli.StringFlag{
|
||||||
|
Name: "codefile",
|
||||||
|
Usage: "File containing EVM code. If '-' is specified, code is read from stdin ",
|
||||||
|
Category: flags.VMCategory,
|
||||||
|
}
|
||||||
|
CreateFlag = &cli.BoolFlag{
|
||||||
|
Name: "create",
|
||||||
|
Usage: "Indicates the action should be create rather than call",
|
||||||
|
Category: flags.VMCategory,
|
||||||
|
}
|
||||||
|
GasFlag = &cli.Uint64Flag{
|
||||||
|
Name: "gas",
|
||||||
|
Usage: "Gas limit for the evm",
|
||||||
|
Value: 10000000000,
|
||||||
|
Category: flags.VMCategory,
|
||||||
|
}
|
||||||
|
GenesisFlag = &cli.StringFlag{
|
||||||
|
Name: "prestate",
|
||||||
|
Usage: "JSON file with prestate (genesis) config",
|
||||||
|
Category: flags.VMCategory,
|
||||||
|
}
|
||||||
|
InputFlag = &cli.StringFlag{
|
||||||
|
Name: "input",
|
||||||
|
Usage: "Input for the EVM",
|
||||||
|
Category: flags.VMCategory,
|
||||||
|
}
|
||||||
|
InputFileFlag = &cli.StringFlag{
|
||||||
|
Name: "inputfile",
|
||||||
|
Usage: "File containing input for the EVM",
|
||||||
|
Category: flags.VMCategory,
|
||||||
|
}
|
||||||
|
PriceFlag = &flags.BigFlag{
|
||||||
|
Name: "price",
|
||||||
|
Usage: "Price set for the evm",
|
||||||
|
Value: new(big.Int),
|
||||||
|
Category: flags.VMCategory,
|
||||||
|
}
|
||||||
|
ReceiverFlag = &cli.StringFlag{
|
||||||
|
Name: "receiver",
|
||||||
|
Usage: "The transaction receiver (execution context)",
|
||||||
|
Category: flags.VMCategory,
|
||||||
|
}
|
||||||
|
SenderFlag = &cli.StringFlag{
|
||||||
|
Name: "sender",
|
||||||
|
Usage: "The transaction origin",
|
||||||
|
Category: flags.VMCategory,
|
||||||
|
}
|
||||||
|
ValueFlag = &flags.BigFlag{
|
||||||
|
Name: "value",
|
||||||
|
Usage: "Value set for the evm",
|
||||||
|
Value: new(big.Int),
|
||||||
|
Category: flags.VMCategory,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
// readGenesis will read the given JSON format genesis file and return
|
// readGenesis will read the given JSON format genesis file and return
|
||||||
// the initialized Genesis structure
|
// the initialized Genesis structure
|
||||||
func readGenesis(genesisPath string) *core.Genesis {
|
func readGenesis(genesisPath string) *core.Genesis {
|
||||||
// Make sure we have a valid genesis JSON
|
// Make sure we have a valid genesis JSON
|
||||||
//genesisPath := ctx.Args().First()
|
|
||||||
if len(genesisPath) == 0 {
|
if len(genesisPath) == 0 {
|
||||||
utils.Fatalf("Must supply path to genesis JSON file")
|
utils.Fatalf("Must supply path to genesis JSON file")
|
||||||
}
|
}
|
||||||
|
|
@ -84,19 +154,20 @@ type execStats struct {
|
||||||
|
|
||||||
func timedExec(bench bool, execFunc func() ([]byte, uint64, error)) ([]byte, execStats, error) {
|
func timedExec(bench bool, execFunc func() ([]byte, uint64, error)) ([]byte, execStats, error) {
|
||||||
if bench {
|
if bench {
|
||||||
|
testing.Init()
|
||||||
// Do one warm-up run
|
// Do one warm-up run
|
||||||
output, gasUsed, err := execFunc()
|
output, gasUsed, err := execFunc()
|
||||||
result := testing.Benchmark(func(b *testing.B) {
|
result := testing.Benchmark(func(b *testing.B) {
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
haveOutput, haveGasUsed, haveErr := execFunc()
|
haveOutput, haveGasUsed, haveErr := execFunc()
|
||||||
if !bytes.Equal(haveOutput, output) {
|
if !bytes.Equal(haveOutput, output) {
|
||||||
b.Fatalf("output differs, have\n%x\nwant%x\n", haveOutput, output)
|
panic(fmt.Sprintf("output differs\nhave %x\nwant %x\n", haveOutput, output))
|
||||||
}
|
}
|
||||||
if haveGasUsed != gasUsed {
|
if haveGasUsed != gasUsed {
|
||||||
b.Fatalf("gas differs, have %v want%v", haveGasUsed, gasUsed)
|
panic(fmt.Sprintf("gas differs, have %v want %v", haveGasUsed, gasUsed))
|
||||||
}
|
}
|
||||||
if haveErr != err {
|
if haveErr != err {
|
||||||
b.Fatalf("err differs, have %v want%v", haveErr, err)
|
panic(fmt.Sprintf("err differs, have %v want %v", haveErr, err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
@ -126,18 +197,9 @@ func timedExec(bench bool, execFunc func() ([]byte, uint64, error)) ([]byte, exe
|
||||||
}
|
}
|
||||||
|
|
||||||
func runCmd(ctx *cli.Context) error {
|
func runCmd(ctx *cli.Context) error {
|
||||||
logconfig := &logger.Config{
|
|
||||||
EnableMemory: !ctx.Bool(DisableMemoryFlag.Name),
|
|
||||||
DisableStack: ctx.Bool(DisableStackFlag.Name),
|
|
||||||
DisableStorage: ctx.Bool(DisableStorageFlag.Name),
|
|
||||||
EnableReturnData: !ctx.Bool(DisableReturnDataFlag.Name),
|
|
||||||
Debug: ctx.Bool(DebugFlag.Name),
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
var (
|
||||||
tracer *tracing.Hooks
|
tracer *tracing.Hooks
|
||||||
debugLogger *logger.StructLogger
|
prestate *state.StateDB
|
||||||
statedb *state.StateDB
|
|
||||||
chainConfig *params.ChainConfig
|
chainConfig *params.ChainConfig
|
||||||
sender = common.BytesToAddress([]byte("sender"))
|
sender = common.BytesToAddress([]byte("sender"))
|
||||||
receiver = common.BytesToAddress([]byte("receiver"))
|
receiver = common.BytesToAddress([]byte("receiver"))
|
||||||
|
|
@ -145,15 +207,7 @@ func runCmd(ctx *cli.Context) error {
|
||||||
blobHashes []common.Hash // TODO (MariusVanDerWijden) implement blob hashes in state tests
|
blobHashes []common.Hash // TODO (MariusVanDerWijden) implement blob hashes in state tests
|
||||||
blobBaseFee = new(big.Int) // TODO (MariusVanDerWijden) implement blob fee in state tests
|
blobBaseFee = new(big.Int) // TODO (MariusVanDerWijden) implement blob fee in state tests
|
||||||
)
|
)
|
||||||
if ctx.Bool(MachineFlag.Name) {
|
tracer = tracerFromFlags(ctx)
|
||||||
tracer = logger.NewJSONLogger(logconfig, os.Stdout)
|
|
||||||
} else if ctx.Bool(DebugFlag.Name) {
|
|
||||||
debugLogger = logger.NewStructLogger(logconfig)
|
|
||||||
tracer = debugLogger.Hooks()
|
|
||||||
} else {
|
|
||||||
debugLogger = logger.NewStructLogger(logconfig)
|
|
||||||
}
|
|
||||||
|
|
||||||
initialGas := ctx.Uint64(GasFlag.Name)
|
initialGas := ctx.Uint64(GasFlag.Name)
|
||||||
genesisConfig := new(core.Genesis)
|
genesisConfig := new(core.Genesis)
|
||||||
genesisConfig.GasLimit = initialGas
|
genesisConfig.GasLimit = initialGas
|
||||||
|
|
@ -174,7 +228,7 @@ func runCmd(ctx *cli.Context) error {
|
||||||
defer triedb.Close()
|
defer triedb.Close()
|
||||||
genesis := genesisConfig.MustCommit(db, triedb)
|
genesis := genesisConfig.MustCommit(db, triedb)
|
||||||
sdb := state.NewDatabase(triedb, nil)
|
sdb := state.NewDatabase(triedb, nil)
|
||||||
statedb, _ = state.New(genesis.Root(), sdb)
|
prestate, _ = state.New(genesis.Root(), sdb)
|
||||||
chainConfig = genesisConfig.Config
|
chainConfig = genesisConfig.Config
|
||||||
|
|
||||||
if ctx.String(SenderFlag.Name) != "" {
|
if ctx.String(SenderFlag.Name) != "" {
|
||||||
|
|
@ -187,51 +241,38 @@ func runCmd(ctx *cli.Context) error {
|
||||||
|
|
||||||
var code []byte
|
var code []byte
|
||||||
codeFileFlag := ctx.String(CodeFileFlag.Name)
|
codeFileFlag := ctx.String(CodeFileFlag.Name)
|
||||||
codeFlag := ctx.String(CodeFlag.Name)
|
hexcode := ctx.Args().First()
|
||||||
|
|
||||||
// The '--code' or '--codefile' flag overrides code in state
|
// The '--codefile' flag overrides code in state
|
||||||
if codeFileFlag != "" || codeFlag != "" {
|
if codeFileFlag == "-" {
|
||||||
var hexcode []byte
|
// If - is specified, it means that code comes from stdin
|
||||||
if codeFileFlag != "" {
|
// Try reading from stdin
|
||||||
var err error
|
input, err := io.ReadAll(os.Stdin)
|
||||||
// If - is specified, it means that code comes from stdin
|
if err != nil {
|
||||||
if codeFileFlag == "-" {
|
fmt.Printf("Could not load code from stdin: %v\n", err)
|
||||||
//Try reading from stdin
|
|
||||||
if hexcode, err = io.ReadAll(os.Stdin); err != nil {
|
|
||||||
fmt.Printf("Could not load code from stdin: %v\n", err)
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Codefile with hex assembly
|
|
||||||
if hexcode, err = os.ReadFile(codeFileFlag); err != nil {
|
|
||||||
fmt.Printf("Could not load code from file: %v\n", err)
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
hexcode = []byte(codeFlag)
|
|
||||||
}
|
|
||||||
hexcode = bytes.TrimSpace(hexcode)
|
|
||||||
if len(hexcode)%2 != 0 {
|
|
||||||
fmt.Printf("Invalid input length for hex data (%d)\n", len(hexcode))
|
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
code = common.FromHex(string(hexcode))
|
hexcode = string(input)
|
||||||
} else if fn := ctx.Args().First(); len(fn) > 0 {
|
} else if codeFileFlag != "" {
|
||||||
// EASM-file to compile
|
// Codefile with hex assembly
|
||||||
src, err := os.ReadFile(fn)
|
input, err := os.ReadFile(codeFileFlag)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
fmt.Printf("Could not load code from file: %v\n", err)
|
||||||
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
bin, err := compiler.Compile(fn, src, false)
|
hexcode = string(input)
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
code = common.Hex2Bytes(bin)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hexcode = strings.TrimSpace(hexcode)
|
||||||
|
if len(hexcode)%2 != 0 {
|
||||||
|
fmt.Printf("Invalid input length for hex data (%d)\n", len(hexcode))
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
code = common.FromHex(hexcode)
|
||||||
|
|
||||||
runtimeConfig := runtime.Config{
|
runtimeConfig := runtime.Config{
|
||||||
Origin: sender,
|
Origin: sender,
|
||||||
State: statedb,
|
State: prestate,
|
||||||
GasLimit: initialGas,
|
GasLimit: initialGas,
|
||||||
GasPrice: flags.GlobalBig(ctx, PriceFlag.Name),
|
GasPrice: flags.GlobalBig(ctx, PriceFlag.Name),
|
||||||
Value: flags.GlobalBig(ctx, ValueFlag.Name),
|
Value: flags.GlobalBig(ctx, ValueFlag.Name),
|
||||||
|
|
@ -274,14 +315,18 @@ func runCmd(ctx *cli.Context) error {
|
||||||
if ctx.Bool(CreateFlag.Name) {
|
if ctx.Bool(CreateFlag.Name) {
|
||||||
input = append(code, input...)
|
input = append(code, input...)
|
||||||
execFunc = func() ([]byte, uint64, error) {
|
execFunc = func() ([]byte, uint64, error) {
|
||||||
|
// don't mutate the state!
|
||||||
|
runtimeConfig.State = prestate.Copy()
|
||||||
output, _, gasLeft, err := runtime.Create(input, &runtimeConfig)
|
output, _, gasLeft, err := runtime.Create(input, &runtimeConfig)
|
||||||
return output, gasLeft, err
|
return output, gasLeft, err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if len(code) > 0 {
|
if len(code) > 0 {
|
||||||
statedb.SetCode(receiver, code)
|
prestate.SetCode(receiver, code)
|
||||||
}
|
}
|
||||||
execFunc = func() ([]byte, uint64, error) {
|
execFunc = func() ([]byte, uint64, error) {
|
||||||
|
// don't mutate the state!
|
||||||
|
runtimeConfig.State = prestate.Copy()
|
||||||
output, gasLeft, err := runtime.Call(receiver, input, &runtimeConfig)
|
output, gasLeft, err := runtime.Call(receiver, input, &runtimeConfig)
|
||||||
return output, initialGas - gasLeft, err
|
return output, initialGas - gasLeft, err
|
||||||
}
|
}
|
||||||
|
|
@ -291,7 +336,7 @@ func runCmd(ctx *cli.Context) error {
|
||||||
output, stats, err := timedExec(bench, execFunc)
|
output, stats, err := timedExec(bench, execFunc)
|
||||||
|
|
||||||
if ctx.Bool(DumpFlag.Name) {
|
if ctx.Bool(DumpFlag.Name) {
|
||||||
root, err := statedb.Commit(genesisConfig.Number, true)
|
root, err := runtimeConfig.State.Commit(genesisConfig.Number, true, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Failed to commit changes %v\n", err)
|
fmt.Printf("Failed to commit changes %v\n", err)
|
||||||
return err
|
return err
|
||||||
|
|
@ -305,12 +350,10 @@ func runCmd(ctx *cli.Context) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ctx.Bool(DebugFlag.Name) {
|
if ctx.Bool(DebugFlag.Name) {
|
||||||
if debugLogger != nil {
|
if logs := runtimeConfig.State.Logs(); len(logs) > 0 {
|
||||||
fmt.Fprintln(os.Stderr, "#### TRACE ####")
|
fmt.Fprintln(os.Stderr, "### LOGS")
|
||||||
logger.WriteTrace(os.Stderr, debugLogger.StructLogs())
|
writeLogs(os.Stderr, logs)
|
||||||
}
|
}
|
||||||
fmt.Fprintln(os.Stderr, "#### LOGS ####")
|
|
||||||
logger.WriteLogs(os.Stderr, statedb.Logs())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if bench || ctx.Bool(StatDumpFlag.Name) {
|
if bench || ctx.Bool(StatDumpFlag.Name) {
|
||||||
|
|
@ -329,3 +372,16 @@ allocated bytes: %d
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// writeLogs writes vm logs in a readable format to the given writer
|
||||||
|
func writeLogs(writer io.Writer, logs []*types.Log) {
|
||||||
|
for _, log := range logs {
|
||||||
|
fmt.Fprintf(writer, "LOG%d: %x bn=%d txi=%x\n", len(log.Topics), log.Address, log.BlockNumber, log.TxIndex)
|
||||||
|
|
||||||
|
for i, topic := range log.Topics {
|
||||||
|
fmt.Fprintf(writer, "%08d %x\n", i, topic)
|
||||||
|
}
|
||||||
|
fmt.Fprint(writer, hex.Dump(log.Data))
|
||||||
|
fmt.Fprintln(writer)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,12 +21,12 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"regexp"
|
||||||
|
"slices"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/core/rawdb"
|
"github.com/ethereum/go-ethereum/core/rawdb"
|
||||||
"github.com/ethereum/go-ethereum/core/state"
|
|
||||||
"github.com/ethereum/go-ethereum/core/vm"
|
"github.com/ethereum/go-ethereum/core/vm"
|
||||||
"github.com/ethereum/go-ethereum/eth/tracers/logger"
|
|
||||||
"github.com/ethereum/go-ethereum/internal/flags"
|
"github.com/ethereum/go-ethereum/internal/flags"
|
||||||
"github.com/ethereum/go-ethereum/tests"
|
"github.com/ethereum/go-ethereum/tests"
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
|
|
@ -35,157 +35,125 @@ import (
|
||||||
var (
|
var (
|
||||||
forkFlag = &cli.StringFlag{
|
forkFlag = &cli.StringFlag{
|
||||||
Name: "statetest.fork",
|
Name: "statetest.fork",
|
||||||
Usage: "The hard-fork to run the test against",
|
Usage: "Only run tests for the specified fork.",
|
||||||
Category: flags.VMCategory,
|
Category: flags.VMCategory,
|
||||||
}
|
}
|
||||||
idxFlag = &cli.IntFlag{
|
idxFlag = &cli.IntFlag{
|
||||||
Name: "statetest.index",
|
Name: "statetest.index",
|
||||||
Usage: "The index of the subtest to run",
|
Usage: "The index of the subtest to run.",
|
||||||
Category: flags.VMCategory,
|
Category: flags.VMCategory,
|
||||||
Value: -1, // default to select all subtest indices
|
Value: -1, // default to select all subtest indices
|
||||||
}
|
}
|
||||||
testNameFlag = &cli.StringFlag{
|
|
||||||
Name: "statetest.name",
|
|
||||||
Usage: "The name of the state test to run",
|
|
||||||
Category: flags.VMCategory,
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
var stateTestCommand = &cli.Command{
|
var stateTestCommand = &cli.Command{
|
||||||
Action: stateTestCmd,
|
Action: stateTestCmd,
|
||||||
Name: "statetest",
|
Name: "statetest",
|
||||||
Usage: "Executes the given state tests. Filenames can be fed via standard input (batch mode) or as an argument (one-off execution).",
|
Usage: "Executes the given state tests. Filenames can be fed via standard input (batch mode) or as an argument (one-off execution).",
|
||||||
ArgsUsage: "<file>",
|
ArgsUsage: "<file>",
|
||||||
Flags: []cli.Flag{
|
Flags: slices.Concat([]cli.Flag{
|
||||||
forkFlag,
|
BenchFlag,
|
||||||
idxFlag,
|
DumpFlag,
|
||||||
testNameFlag,
|
HumanReadableFlag,
|
||||||
},
|
RunFlag,
|
||||||
}
|
}, traceFlags),
|
||||||
|
|
||||||
// StatetestResult contains the execution status after running a state test, any
|
|
||||||
// error that might have occurred and a dump of the final state if requested.
|
|
||||||
type StatetestResult struct {
|
|
||||||
Name string `json:"name"`
|
|
||||||
Pass bool `json:"pass"`
|
|
||||||
Root *common.Hash `json:"stateRoot,omitempty"`
|
|
||||||
Fork string `json:"fork"`
|
|
||||||
Error string `json:"error,omitempty"`
|
|
||||||
State *state.Dump `json:"state,omitempty"`
|
|
||||||
BenchStats *execStats `json:"benchStats,omitempty"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func stateTestCmd(ctx *cli.Context) error {
|
func stateTestCmd(ctx *cli.Context) error {
|
||||||
// Configure the EVM logger
|
path := ctx.Args().First()
|
||||||
config := &logger.Config{
|
|
||||||
EnableMemory: !ctx.Bool(DisableMemoryFlag.Name),
|
|
||||||
DisableStack: ctx.Bool(DisableStackFlag.Name),
|
|
||||||
DisableStorage: ctx.Bool(DisableStorageFlag.Name),
|
|
||||||
EnableReturnData: !ctx.Bool(DisableReturnDataFlag.Name),
|
|
||||||
}
|
|
||||||
var cfg vm.Config
|
|
||||||
switch {
|
|
||||||
case ctx.Bool(MachineFlag.Name):
|
|
||||||
cfg.Tracer = logger.NewJSONLogger(config, os.Stderr)
|
|
||||||
|
|
||||||
case ctx.Bool(DebugFlag.Name):
|
// If path is provided, run the tests at that path.
|
||||||
cfg.Tracer = logger.NewStructLogger(config).Hooks()
|
if len(path) != 0 {
|
||||||
|
var (
|
||||||
|
collected = collectFiles(path)
|
||||||
|
results []testResult
|
||||||
|
)
|
||||||
|
for _, fname := range collected {
|
||||||
|
r, err := runStateTest(ctx, fname)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
results = append(results, r...)
|
||||||
|
}
|
||||||
|
report(ctx, results)
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
// Load the test content from the input file
|
// Otherwise, read filenames from stdin and execute back-to-back.
|
||||||
if len(ctx.Args().First()) != 0 {
|
|
||||||
return runStateTest(ctx, ctx.Args().First(), cfg, ctx.Bool(DumpFlag.Name), ctx.Bool(BenchFlag.Name))
|
|
||||||
}
|
|
||||||
// Read filenames from stdin and execute back-to-back
|
|
||||||
scanner := bufio.NewScanner(os.Stdin)
|
scanner := bufio.NewScanner(os.Stdin)
|
||||||
for scanner.Scan() {
|
for scanner.Scan() {
|
||||||
fname := scanner.Text()
|
fname := scanner.Text()
|
||||||
if len(fname) == 0 {
|
if len(fname) == 0 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if err := runStateTest(ctx, fname, cfg, ctx.Bool(DumpFlag.Name), ctx.Bool(BenchFlag.Name)); err != nil {
|
results, err := runStateTest(ctx, fname)
|
||||||
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
report(ctx, results)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type stateTestCase struct {
|
|
||||||
name string
|
|
||||||
test tests.StateTest
|
|
||||||
st tests.StateSubtest
|
|
||||||
}
|
|
||||||
|
|
||||||
// collectMatchedSubtests returns test cases which match against provided filtering CLI parameters
|
|
||||||
func collectMatchedSubtests(ctx *cli.Context, testsByName map[string]tests.StateTest) []stateTestCase {
|
|
||||||
var res []stateTestCase
|
|
||||||
subtestName := ctx.String(testNameFlag.Name)
|
|
||||||
if subtestName != "" {
|
|
||||||
if subtest, ok := testsByName[subtestName]; ok {
|
|
||||||
testsByName := make(map[string]tests.StateTest)
|
|
||||||
testsByName[subtestName] = subtest
|
|
||||||
}
|
|
||||||
}
|
|
||||||
idx := ctx.Int(idxFlag.Name)
|
|
||||||
fork := ctx.String(forkFlag.Name)
|
|
||||||
|
|
||||||
for key, test := range testsByName {
|
|
||||||
for _, st := range test.Subtests() {
|
|
||||||
if idx != -1 && st.Index != idx {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if fork != "" && st.Fork != fork {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
res = append(res, stateTestCase{name: key, st: st, test: test})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return res
|
|
||||||
}
|
|
||||||
|
|
||||||
// runStateTest loads the state-test given by fname, and executes the test.
|
// runStateTest loads the state-test given by fname, and executes the test.
|
||||||
func runStateTest(ctx *cli.Context, fname string, cfg vm.Config, dump bool, bench bool) error {
|
func runStateTest(ctx *cli.Context, fname string) ([]testResult, error) {
|
||||||
src, err := os.ReadFile(fname)
|
src, err := os.ReadFile(fname)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
var testsByName map[string]tests.StateTest
|
var testsByName map[string]tests.StateTest
|
||||||
if err := json.Unmarshal(src, &testsByName); err != nil {
|
if err := json.Unmarshal(src, &testsByName); err != nil {
|
||||||
return err
|
return nil, fmt.Errorf("unable to read test file %s: %w", fname, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
matchingTests := collectMatchedSubtests(ctx, testsByName)
|
cfg := vm.Config{Tracer: tracerFromFlags(ctx)}
|
||||||
|
re, err := regexp.Compile(ctx.String(RunFlag.Name))
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("invalid regex -%s: %v", RunFlag.Name, err)
|
||||||
|
}
|
||||||
|
|
||||||
// Iterate over all the tests, run them and aggregate the results
|
// Iterate over all the tests, run them and aggregate the results
|
||||||
var results []StatetestResult
|
results := make([]testResult, 0, len(testsByName))
|
||||||
for _, test := range matchingTests {
|
for key, test := range testsByName {
|
||||||
// Run the test and aggregate the result
|
if !re.MatchString(key) {
|
||||||
result := &StatetestResult{Name: test.name, Fork: test.st.Fork, Pass: true}
|
continue
|
||||||
test.test.Run(test.st, cfg, false, rawdb.HashScheme, func(err error, tstate *tests.StateTestState) {
|
}
|
||||||
var root common.Hash
|
for i, st := range test.Subtests() {
|
||||||
if tstate.StateDB != nil {
|
if idx := ctx.Int(idxFlag.Name); idx != -1 && idx != i {
|
||||||
root = tstate.StateDB.IntermediateRoot(false)
|
// If specific index requested, skip all tests that do not match.
|
||||||
result.Root = &root
|
continue
|
||||||
fmt.Fprintf(os.Stderr, "{\"stateRoot\": \"%#x\"}\n", root)
|
}
|
||||||
if dump { // Dump any state to aid debugging
|
if fork := ctx.String(forkFlag.Name); fork != "" && st.Fork != fork {
|
||||||
cpy, _ := state.New(root, tstate.StateDB.Database())
|
// If specific fork requested, skip all tests that do not match.
|
||||||
dump := cpy.RawDump(nil)
|
continue
|
||||||
result.State = &dump
|
}
|
||||||
}
|
// Run the test and aggregate the result
|
||||||
}
|
result := &testResult{Name: key, Fork: st.Fork, Pass: true}
|
||||||
if err != nil {
|
test.Run(st, cfg, false, rawdb.HashScheme, func(err error, state *tests.StateTestState) {
|
||||||
// Test failed, mark as so
|
var root common.Hash
|
||||||
result.Pass, result.Error = false, err.Error()
|
if state.StateDB != nil {
|
||||||
}
|
root = state.StateDB.IntermediateRoot(false)
|
||||||
})
|
result.Root = &root
|
||||||
if bench {
|
fmt.Fprintf(os.Stderr, "{\"stateRoot\": \"%#x\"}\n", root)
|
||||||
_, stats, _ := timedExec(true, func() ([]byte, uint64, error) {
|
// Dump any state to aid debugging.
|
||||||
_, _, gasUsed, _ := test.test.RunNoVerify(test.st, cfg, false, rawdb.HashScheme)
|
if ctx.Bool(DumpFlag.Name) {
|
||||||
return nil, gasUsed, nil
|
result.State = dump(state.StateDB)
|
||||||
})
|
}
|
||||||
result.BenchStats = &stats
|
}
|
||||||
|
// Collect bench stats if requested.
|
||||||
|
if ctx.Bool(BenchFlag.Name) {
|
||||||
|
_, stats, _ := timedExec(true, func() ([]byte, uint64, error) {
|
||||||
|
_, _, gasUsed, _ := test.RunNoVerify(st, cfg, false, rawdb.HashScheme)
|
||||||
|
return nil, gasUsed, nil
|
||||||
|
})
|
||||||
|
result.Stats = &stats
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
// Test failed, mark as so.
|
||||||
|
result.Pass, result.Error = false, err.Error()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
})
|
||||||
|
results = append(results, *result)
|
||||||
}
|
}
|
||||||
results = append(results, *result)
|
|
||||||
}
|
}
|
||||||
out, _ := json.MarshalIndent(results, "", " ")
|
return results, nil
|
||||||
fmt.Println(string(out))
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
|
@ -287,6 +288,14 @@ func TestT8n(t *testing.T) {
|
||||||
output: t8nOutput{alloc: true, result: true},
|
output: t8nOutput{alloc: true, result: true},
|
||||||
expOut: "exp.json",
|
expOut: "exp.json",
|
||||||
},
|
},
|
||||||
|
{ // Prague test, EIP-7702 transaction
|
||||||
|
base: "./testdata/33",
|
||||||
|
input: t8nInput{
|
||||||
|
"alloc.json", "txs.json", "env.json", "Prague", "",
|
||||||
|
},
|
||||||
|
output: t8nOutput{alloc: true, result: true},
|
||||||
|
expOut: "exp.json",
|
||||||
|
},
|
||||||
} {
|
} {
|
||||||
args := []string{"t8n"}
|
args := []string{"t8n"}
|
||||||
args = append(args, tc.output.get()...)
|
args = append(args, tc.output.get()...)
|
||||||
|
|
@ -341,98 +350,6 @@ func lineIterator(path string) func() (string, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestT8nTracing is a test that checks the tracing-output from t8n.
|
|
||||||
func TestT8nTracing(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
tt := new(testT8n)
|
|
||||||
tt.TestCmd = cmdtest.NewTestCmd(t, tt)
|
|
||||||
for i, tc := range []struct {
|
|
||||||
base string
|
|
||||||
input t8nInput
|
|
||||||
expExitCode int
|
|
||||||
extraArgs []string
|
|
||||||
expectedTraces []string
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
base: "./testdata/31",
|
|
||||||
input: t8nInput{
|
|
||||||
"alloc.json", "txs.json", "env.json", "Cancun", "",
|
|
||||||
},
|
|
||||||
extraArgs: []string{"--trace"},
|
|
||||||
expectedTraces: []string{"trace-0-0x88f5fbd1524731a81e49f637aa847543268a5aaf2a6b32a69d2c6d978c45dcfb.jsonl"},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
base: "./testdata/31",
|
|
||||||
input: t8nInput{
|
|
||||||
"alloc.json", "txs.json", "env.json", "Cancun", "",
|
|
||||||
},
|
|
||||||
extraArgs: []string{"--trace.tracer", `
|
|
||||||
{
|
|
||||||
result: function(){
|
|
||||||
return "hello world"
|
|
||||||
},
|
|
||||||
fault: function(){}
|
|
||||||
}`},
|
|
||||||
expectedTraces: []string{"trace-0-0x88f5fbd1524731a81e49f637aa847543268a5aaf2a6b32a69d2c6d978c45dcfb.json"},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
base: "./testdata/32",
|
|
||||||
input: t8nInput{
|
|
||||||
"alloc.json", "txs.json", "env.json", "Paris", "",
|
|
||||||
},
|
|
||||||
extraArgs: []string{"--trace", "--trace.callframes"},
|
|
||||||
expectedTraces: []string{"trace-0-0x47806361c0fa084be3caa18afe8c48156747c01dbdfc1ee11b5aecdbe4fcf23e.jsonl"},
|
|
||||||
},
|
|
||||||
} {
|
|
||||||
args := []string{"t8n"}
|
|
||||||
args = append(args, tc.input.get(tc.base)...)
|
|
||||||
// Place the output somewhere we can find it
|
|
||||||
outdir := t.TempDir()
|
|
||||||
args = append(args, "--output.basedir", outdir)
|
|
||||||
args = append(args, tc.extraArgs...)
|
|
||||||
|
|
||||||
var qArgs []string // quoted args for debugging purposes
|
|
||||||
for _, arg := range args {
|
|
||||||
if len(arg) == 0 {
|
|
||||||
qArgs = append(qArgs, `""`)
|
|
||||||
} else {
|
|
||||||
qArgs = append(qArgs, arg)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
tt.Logf("args: %v\n", strings.Join(qArgs, " "))
|
|
||||||
tt.Run("evm-test", args...)
|
|
||||||
t.Log(string(tt.Output()))
|
|
||||||
|
|
||||||
// Compare the expected traces
|
|
||||||
for _, traceFile := range tc.expectedTraces {
|
|
||||||
haveFn := lineIterator(filepath.Join(outdir, traceFile))
|
|
||||||
wantFn := lineIterator(filepath.Join(tc.base, traceFile))
|
|
||||||
|
|
||||||
for line := 0; ; line++ {
|
|
||||||
want, wErr := wantFn()
|
|
||||||
have, hErr := haveFn()
|
|
||||||
if want != have {
|
|
||||||
t.Fatalf("test %d, trace %v, line %d\nwant: %v\nhave: %v\n",
|
|
||||||
i, traceFile, line, want, have)
|
|
||||||
}
|
|
||||||
if wErr != nil && hErr != nil {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if wErr != nil {
|
|
||||||
t.Fatal(wErr)
|
|
||||||
}
|
|
||||||
if hErr != nil {
|
|
||||||
t.Fatal(hErr)
|
|
||||||
}
|
|
||||||
t.Logf("%v\n", want)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if have, want := tt.ExitStatus(), tc.expExitCode; have != want {
|
|
||||||
t.Fatalf("test %d: wrong exit code, have %d, want %d", i, have, want)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type t9nInput struct {
|
type t9nInput struct {
|
||||||
inTxs string
|
inTxs string
|
||||||
stFork string
|
stFork string
|
||||||
|
|
@ -672,6 +589,143 @@ func TestB11r(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestEvmRun(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
tt := cmdtest.NewTestCmd(t, nil)
|
||||||
|
for i, tc := range []struct {
|
||||||
|
input []string
|
||||||
|
wantStdout string
|
||||||
|
wantStderr string
|
||||||
|
}{
|
||||||
|
{ // json tracing
|
||||||
|
input: []string{"run", "--trace", "--trace.format=json", "6040"},
|
||||||
|
wantStdout: "./testdata/evmrun/1.out.1.txt",
|
||||||
|
wantStderr: "./testdata/evmrun/1.out.2.txt",
|
||||||
|
},
|
||||||
|
{ // Same as above, using the deprecated --json
|
||||||
|
input: []string{"run", "--json", "6040"},
|
||||||
|
wantStdout: "./testdata/evmrun/1.out.1.txt",
|
||||||
|
wantStderr: "./testdata/evmrun/1.out.2.txt",
|
||||||
|
},
|
||||||
|
{ // Struct tracing
|
||||||
|
input: []string{"run", "--trace", "--trace.format=struct", "0x6040"},
|
||||||
|
wantStdout: "./testdata/evmrun/2.out.1.txt",
|
||||||
|
wantStderr: "./testdata/evmrun/2.out.2.txt",
|
||||||
|
},
|
||||||
|
{ // struct-tracing, plus alloc-dump
|
||||||
|
input: []string{"run", "--trace", "--trace.format=struct", "--dump", "0x6040"},
|
||||||
|
wantStdout: "./testdata/evmrun/3.out.1.txt",
|
||||||
|
//wantStderr: "./testdata/evmrun/3.out.2.txt",
|
||||||
|
},
|
||||||
|
{ // json-tracing (default), plus alloc-dump
|
||||||
|
input: []string{"run", "--trace", "--dump", "0x6040"},
|
||||||
|
wantStdout: "./testdata/evmrun/4.out.1.txt",
|
||||||
|
//wantStderr: "./testdata/evmrun/4.out.2.txt",
|
||||||
|
},
|
||||||
|
{ // md-tracing
|
||||||
|
input: []string{"run", "--trace", "--trace.format=md", "0x6040"},
|
||||||
|
wantStdout: "./testdata/evmrun/5.out.1.txt",
|
||||||
|
wantStderr: "./testdata/evmrun/5.out.2.txt",
|
||||||
|
},
|
||||||
|
{ // statetest subcommand
|
||||||
|
input: []string{"statetest", "./testdata/statetest.json"},
|
||||||
|
wantStdout: "./testdata/evmrun/6.out.1.txt",
|
||||||
|
wantStderr: "./testdata/evmrun/6.out.2.txt",
|
||||||
|
},
|
||||||
|
{ // statetest subcommand with output
|
||||||
|
input: []string{"statetest", "--trace", "--trace.format=md", "./testdata/statetest.json"},
|
||||||
|
wantStdout: "./testdata/evmrun/7.out.1.txt",
|
||||||
|
wantStderr: "./testdata/evmrun/7.out.2.txt",
|
||||||
|
},
|
||||||
|
{ // statetest subcommand with output
|
||||||
|
input: []string{"statetest", "--trace", "--trace.format=json", "./testdata/statetest.json"},
|
||||||
|
wantStdout: "./testdata/evmrun/8.out.1.txt",
|
||||||
|
wantStderr: "./testdata/evmrun/8.out.2.txt",
|
||||||
|
},
|
||||||
|
} {
|
||||||
|
tt.Logf("args: go run ./cmd/evm %v\n", strings.Join(tc.input, " "))
|
||||||
|
tt.Run("evm-test", tc.input...)
|
||||||
|
|
||||||
|
haveStdOut := tt.Output()
|
||||||
|
tt.WaitExit()
|
||||||
|
haveStdErr := tt.StderrText()
|
||||||
|
|
||||||
|
if have, wantFile := haveStdOut, tc.wantStdout; wantFile != "" {
|
||||||
|
want, err := os.ReadFile(wantFile)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("test %d: could not read expected output: %v", i, err)
|
||||||
|
}
|
||||||
|
if string(haveStdOut) != string(want) {
|
||||||
|
t.Fatalf("test %d, output wrong, have \n%v\nwant\n%v\n", i, string(have), string(want))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if have, wantFile := haveStdErr, tc.wantStderr; wantFile != "" {
|
||||||
|
want, err := os.ReadFile(wantFile)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("test %d: could not read expected output: %v", i, err)
|
||||||
|
}
|
||||||
|
if have != string(want) {
|
||||||
|
t.Fatalf("test %d, output wrong\nhave %q\nwant %q\n", i, have, string(want))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestEvmRunRegEx(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
tt := cmdtest.NewTestCmd(t, nil)
|
||||||
|
for i, tc := range []struct {
|
||||||
|
input []string
|
||||||
|
wantStdout string
|
||||||
|
wantStderr string
|
||||||
|
}{
|
||||||
|
{ // json tracing
|
||||||
|
input: []string{"run", "--bench", "6040"},
|
||||||
|
wantStdout: "./testdata/evmrun/9.out.1.txt",
|
||||||
|
wantStderr: "./testdata/evmrun/9.out.2.txt",
|
||||||
|
},
|
||||||
|
{ // statetest subcommand
|
||||||
|
input: []string{"statetest", "--bench", "./testdata/statetest.json"},
|
||||||
|
wantStdout: "./testdata/evmrun/10.out.1.txt",
|
||||||
|
wantStderr: "./testdata/evmrun/10.out.2.txt",
|
||||||
|
},
|
||||||
|
} {
|
||||||
|
tt.Logf("args: go run ./cmd/evm %v\n", strings.Join(tc.input, " "))
|
||||||
|
tt.Run("evm-test", tc.input...)
|
||||||
|
|
||||||
|
haveStdOut := tt.Output()
|
||||||
|
tt.WaitExit()
|
||||||
|
haveStdErr := tt.StderrText()
|
||||||
|
|
||||||
|
if have, wantFile := haveStdOut, tc.wantStdout; wantFile != "" {
|
||||||
|
want, err := os.ReadFile(wantFile)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("test %d: could not read expected output: %v", i, err)
|
||||||
|
}
|
||||||
|
re, err := regexp.Compile(string(want))
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("test %d: could not compile regular expression: %v", i, err)
|
||||||
|
}
|
||||||
|
if !re.Match(have) {
|
||||||
|
t.Fatalf("test %d, output wrong, have \n%v\nwant\n%v\n", i, string(have), re)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if have, wantFile := haveStdErr, tc.wantStderr; wantFile != "" {
|
||||||
|
want, err := os.ReadFile(wantFile)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("test %d: could not read expected output: %v", i, err)
|
||||||
|
}
|
||||||
|
re, err := regexp.Compile(string(want))
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("test %d: could not compile regular expression: %v", i, err)
|
||||||
|
}
|
||||||
|
if !re.MatchString(have) {
|
||||||
|
t.Fatalf("test %d, output wrong, have \n%v\nwant\n%v\n", i, have, re)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// cmpJson compares the JSON in two byte slices.
|
// cmpJson compares the JSON in two byte slices.
|
||||||
func cmpJson(a, b []byte) (bool, error) {
|
func cmpJson(a, b []byte) (bool, error) {
|
||||||
var j, j2 interface{}
|
var j, j2 interface{}
|
||||||
|
|
@ -683,3 +737,99 @@ func cmpJson(a, b []byte) (bool, error) {
|
||||||
}
|
}
|
||||||
return reflect.DeepEqual(j2, j), nil
|
return reflect.DeepEqual(j2, j), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestEVMTracing is a test that checks the tracing-output from evm.
|
||||||
|
func TestEVMTracing(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
tt := cmdtest.NewTestCmd(t, nil)
|
||||||
|
for i, tc := range []struct {
|
||||||
|
base string
|
||||||
|
input []string
|
||||||
|
expectedTraces []string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
base: "./testdata/31",
|
||||||
|
input: []string{"t8n",
|
||||||
|
"--input.alloc=./testdata/31/alloc.json", "--input.txs=./testdata/31/txs.json",
|
||||||
|
"--input.env=./testdata/31/env.json", "--state.fork=Cancun",
|
||||||
|
"--trace",
|
||||||
|
},
|
||||||
|
//expectedTraces: []string{"trace-0-0x88f5fbd1524731a81e49f637aa847543268a5aaf2a6b32a69d2c6d978c45dcfb.jsonl"},
|
||||||
|
expectedTraces: []string{"trace-0-0x88f5fbd1524731a81e49f637aa847543268a5aaf2a6b32a69d2c6d978c45dcfb.jsonl",
|
||||||
|
"trace-1-0x03a7b0a91e61a170d64ea94b8263641ef5a8bbdb10ac69f466083a6789c77fb8.jsonl",
|
||||||
|
"trace-2-0xd96e0ce6418ee3360e11d3c7b6886f5a9a08f7ef183da72c23bb3b2374530128.jsonl"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
base: "./testdata/31",
|
||||||
|
input: []string{"t8n",
|
||||||
|
"--input.alloc=./testdata/31/alloc.json", "--input.txs=./testdata/31/txs.json",
|
||||||
|
"--input.env=./testdata/31/env.json", "--state.fork=Cancun",
|
||||||
|
"--trace.tracer", `
|
||||||
|
{ count: 0,
|
||||||
|
result: function(){
|
||||||
|
this.count = this.count + 1;
|
||||||
|
return "hello world " + this.count
|
||||||
|
},
|
||||||
|
fault: function(){}
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
expectedTraces: []string{"trace-0-0x88f5fbd1524731a81e49f637aa847543268a5aaf2a6b32a69d2c6d978c45dcfb.json",
|
||||||
|
"trace-1-0x03a7b0a91e61a170d64ea94b8263641ef5a8bbdb10ac69f466083a6789c77fb8.json",
|
||||||
|
"trace-2-0xd96e0ce6418ee3360e11d3c7b6886f5a9a08f7ef183da72c23bb3b2374530128.json"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
base: "./testdata/32",
|
||||||
|
input: []string{"t8n",
|
||||||
|
"--input.alloc=./testdata/32/alloc.json", "--input.txs=./testdata/32/txs.json",
|
||||||
|
"--input.env=./testdata/32/env.json", "--state.fork=Paris",
|
||||||
|
"--trace", "--trace.callframes",
|
||||||
|
},
|
||||||
|
expectedTraces: []string{"trace-0-0x47806361c0fa084be3caa18afe8c48156747c01dbdfc1ee11b5aecdbe4fcf23e.jsonl"},
|
||||||
|
},
|
||||||
|
// TODO, make it possible to run tracers on statetests, e.g:
|
||||||
|
//{
|
||||||
|
// base: "./testdata/31",
|
||||||
|
// input: []string{"statetest", "--trace", "--trace.tracer", `{
|
||||||
|
// result: function(){
|
||||||
|
// return "hello world"
|
||||||
|
// },
|
||||||
|
// fault: function(){}
|
||||||
|
//}`, "./testdata/statetest.json"},
|
||||||
|
// expectedTraces: []string{"trace-0-0x88f5fbd1524731a81e49f637aa847543268a5aaf2a6b32a69d2c6d978c45dcfb.json"},
|
||||||
|
// },
|
||||||
|
} {
|
||||||
|
// Place the output somewhere we can find it
|
||||||
|
outdir := t.TempDir()
|
||||||
|
args := append(tc.input, "--output.basedir", outdir)
|
||||||
|
|
||||||
|
tt.Run("evm-test", args...)
|
||||||
|
tt.Logf("args: go run ./cmd/evm %v\n", args)
|
||||||
|
tt.WaitExit()
|
||||||
|
//t.Log(string(tt.Output()))
|
||||||
|
|
||||||
|
// Compare the expected traces
|
||||||
|
for _, traceFile := range tc.expectedTraces {
|
||||||
|
haveFn := lineIterator(filepath.Join(outdir, traceFile))
|
||||||
|
wantFn := lineIterator(filepath.Join(tc.base, traceFile))
|
||||||
|
|
||||||
|
for line := 0; ; line++ {
|
||||||
|
want, wErr := wantFn()
|
||||||
|
have, hErr := haveFn()
|
||||||
|
if want != have {
|
||||||
|
t.Fatalf("test %d, trace %v, line %d\nwant: %v\nhave: %v\n",
|
||||||
|
i, traceFile, line, want, have)
|
||||||
|
}
|
||||||
|
if wErr != nil && hErr != nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if wErr != nil {
|
||||||
|
t.Fatal(wErr)
|
||||||
|
}
|
||||||
|
if hErr != nil {
|
||||||
|
t.Fatal(hErr)
|
||||||
|
}
|
||||||
|
//t.Logf("%v\n", want)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
3
cmd/evm/testdata/1/exp.json
vendored
3
cmd/evm/testdata/1/exp.json
vendored
|
|
@ -40,6 +40,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"currentDifficulty": "0x20000",
|
"currentDifficulty": "0x20000",
|
||||||
"gasUsed": "0x5208"
|
"gasUsed": "0x5208",
|
||||||
|
"requests": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
3
cmd/evm/testdata/13/exp2.json
vendored
3
cmd/evm/testdata/13/exp2.json
vendored
|
|
@ -37,6 +37,7 @@
|
||||||
],
|
],
|
||||||
"currentDifficulty": "0x20000",
|
"currentDifficulty": "0x20000",
|
||||||
"gasUsed": "0x109a0",
|
"gasUsed": "0x109a0",
|
||||||
"currentBaseFee": "0x36b"
|
"currentBaseFee": "0x36b",
|
||||||
|
"requests": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
3
cmd/evm/testdata/14/exp.json
vendored
3
cmd/evm/testdata/14/exp.json
vendored
|
|
@ -8,6 +8,7 @@
|
||||||
"currentDifficulty": "0x2000020000000",
|
"currentDifficulty": "0x2000020000000",
|
||||||
"receipts": [],
|
"receipts": [],
|
||||||
"gasUsed": "0x0",
|
"gasUsed": "0x0",
|
||||||
"currentBaseFee": "0x500"
|
"currentBaseFee": "0x500",
|
||||||
|
"requests": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
3
cmd/evm/testdata/14/exp2.json
vendored
3
cmd/evm/testdata/14/exp2.json
vendored
|
|
@ -8,6 +8,7 @@
|
||||||
"receipts": [],
|
"receipts": [],
|
||||||
"currentDifficulty": "0x1ff8020000000",
|
"currentDifficulty": "0x1ff8020000000",
|
||||||
"gasUsed": "0x0",
|
"gasUsed": "0x0",
|
||||||
"currentBaseFee": "0x500"
|
"currentBaseFee": "0x500",
|
||||||
|
"requests": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
3
cmd/evm/testdata/14/exp_berlin.json
vendored
3
cmd/evm/testdata/14/exp_berlin.json
vendored
|
|
@ -8,6 +8,7 @@
|
||||||
"receipts": [],
|
"receipts": [],
|
||||||
"currentDifficulty": "0x1ff9000000000",
|
"currentDifficulty": "0x1ff9000000000",
|
||||||
"gasUsed": "0x0",
|
"gasUsed": "0x0",
|
||||||
"currentBaseFee": "0x500"
|
"currentBaseFee": "0x500",
|
||||||
|
"requests": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
3
cmd/evm/testdata/19/exp_arrowglacier.json
vendored
3
cmd/evm/testdata/19/exp_arrowglacier.json
vendored
|
|
@ -8,6 +8,7 @@
|
||||||
"currentDifficulty": "0x2000000200000",
|
"currentDifficulty": "0x2000000200000",
|
||||||
"receipts": [],
|
"receipts": [],
|
||||||
"gasUsed": "0x0",
|
"gasUsed": "0x0",
|
||||||
"currentBaseFee": "0x500"
|
"currentBaseFee": "0x500",
|
||||||
|
"requests": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
23
cmd/evm/testdata/19/exp_grayglacier.json
vendored
23
cmd/evm/testdata/19/exp_grayglacier.json
vendored
|
|
@ -1,13 +1,14 @@
|
||||||
{
|
{
|
||||||
"result": {
|
"result": {
|
||||||
"stateRoot": "0x6f058887ca01549716789c380ede95aecc510e6d1fdc4dbf67d053c7c07f4bdc",
|
"stateRoot": "0x6f058887ca01549716789c380ede95aecc510e6d1fdc4dbf67d053c7c07f4bdc",
|
||||||
"txRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
|
"txRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
|
||||||
"receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
|
"receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
|
||||||
"logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
|
"logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
|
||||||
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
||||||
"receipts": [],
|
"receipts": [],
|
||||||
"currentDifficulty": "0x2000000004000",
|
"currentDifficulty": "0x2000000004000",
|
||||||
"gasUsed": "0x0",
|
"gasUsed": "0x0",
|
||||||
"currentBaseFee": "0x500"
|
"currentBaseFee": "0x500",
|
||||||
}
|
"requests": null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
3
cmd/evm/testdata/19/exp_london.json
vendored
3
cmd/evm/testdata/19/exp_london.json
vendored
|
|
@ -8,6 +8,7 @@
|
||||||
"currentDifficulty": "0x2000080000000",
|
"currentDifficulty": "0x2000080000000",
|
||||||
"receipts": [],
|
"receipts": [],
|
||||||
"gasUsed": "0x0",
|
"gasUsed": "0x0",
|
||||||
"currentBaseFee": "0x500"
|
"currentBaseFee": "0x500",
|
||||||
|
"requests": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
3
cmd/evm/testdata/23/exp.json
vendored
3
cmd/evm/testdata/23/exp.json
vendored
|
|
@ -21,6 +21,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"currentDifficulty": "0x20000",
|
"currentDifficulty": "0x20000",
|
||||||
"gasUsed": "0x520b"
|
"gasUsed": "0x520b",
|
||||||
|
"requests": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
3
cmd/evm/testdata/24/exp.json
vendored
3
cmd/evm/testdata/24/exp.json
vendored
|
|
@ -51,6 +51,7 @@
|
||||||
],
|
],
|
||||||
"currentDifficulty": null,
|
"currentDifficulty": null,
|
||||||
"gasUsed": "0x10306",
|
"gasUsed": "0x10306",
|
||||||
"currentBaseFee": "0x500"
|
"currentBaseFee": "0x500",
|
||||||
|
"requests": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
3
cmd/evm/testdata/25/exp.json
vendored
3
cmd/evm/testdata/25/exp.json
vendored
|
|
@ -34,6 +34,7 @@
|
||||||
],
|
],
|
||||||
"currentDifficulty": null,
|
"currentDifficulty": null,
|
||||||
"gasUsed": "0x5208",
|
"gasUsed": "0x5208",
|
||||||
"currentBaseFee": "0x460"
|
"currentBaseFee": "0x460",
|
||||||
|
"requests": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
3
cmd/evm/testdata/26/exp.json
vendored
3
cmd/evm/testdata/26/exp.json
vendored
|
|
@ -15,6 +15,7 @@
|
||||||
"currentDifficulty": null,
|
"currentDifficulty": null,
|
||||||
"gasUsed": "0x0",
|
"gasUsed": "0x0",
|
||||||
"currentBaseFee": "0x500",
|
"currentBaseFee": "0x500",
|
||||||
"withdrawalsRoot": "0x4921c0162c359755b2ae714a0978a1dad2eb8edce7ff9b38b9b6fc4cbc547eb5"
|
"withdrawalsRoot": "0x4921c0162c359755b2ae714a0978a1dad2eb8edce7ff9b38b9b6fc4cbc547eb5",
|
||||||
|
"requests": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
3
cmd/evm/testdata/28/exp.json
vendored
3
cmd/evm/testdata/28/exp.json
vendored
|
|
@ -42,6 +42,7 @@
|
||||||
"currentBaseFee": "0x9",
|
"currentBaseFee": "0x9",
|
||||||
"withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
|
"withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
|
||||||
"currentExcessBlobGas": "0x0",
|
"currentExcessBlobGas": "0x0",
|
||||||
"blobGasUsed": "0x20000"
|
"blobGasUsed": "0x20000",
|
||||||
|
"requests": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
3
cmd/evm/testdata/29/exp.json
vendored
3
cmd/evm/testdata/29/exp.json
vendored
|
|
@ -40,6 +40,7 @@
|
||||||
"currentBaseFee": "0x9",
|
"currentBaseFee": "0x9",
|
||||||
"withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
|
"withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
|
||||||
"currentExcessBlobGas": "0x0",
|
"currentExcessBlobGas": "0x0",
|
||||||
"blobGasUsed": "0x0"
|
"blobGasUsed": "0x0",
|
||||||
|
"requests": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
3
cmd/evm/testdata/3/exp.json
vendored
3
cmd/evm/testdata/3/exp.json
vendored
|
|
@ -34,6 +34,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"currentDifficulty": "0x20000",
|
"currentDifficulty": "0x20000",
|
||||||
"gasUsed": "0x521f"
|
"gasUsed": "0x521f",
|
||||||
|
"requests": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
3
cmd/evm/testdata/30/exp.json
vendored
3
cmd/evm/testdata/30/exp.json
vendored
|
|
@ -59,6 +59,7 @@
|
||||||
"currentBaseFee": "0x7",
|
"currentBaseFee": "0x7",
|
||||||
"withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
|
"withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
|
||||||
"currentExcessBlobGas": "0x0",
|
"currentExcessBlobGas": "0x0",
|
||||||
"blobGasUsed": "0x0"
|
"blobGasUsed": "0x0",
|
||||||
|
"requests": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
10
cmd/evm/testdata/31/README.md
vendored
10
cmd/evm/testdata/31/README.md
vendored
|
|
@ -1 +1,11 @@
|
||||||
This test does some EVM execution, and can be used to test the tracers and trace-outputs.
|
This test does some EVM execution, and can be used to test the tracers and trace-outputs.
|
||||||
|
This test should yield three output-traces, in separate files
|
||||||
|
|
||||||
|
For example:
|
||||||
|
```
|
||||||
|
[user@work evm]$ go run . t8n --input.alloc ./testdata/31/alloc.json --input.txs ./testdata/31/txs.json --input.env ./testdata/31/env.json --state.fork Cancun --output.basedir /tmp --trace
|
||||||
|
INFO [12-06|09:53:32.123] Created tracing-file path=/tmp/trace-0-0x88f5fbd1524731a81e49f637aa847543268a5aaf2a6b32a69d2c6d978c45dcfb.jsonl
|
||||||
|
INFO [12-06|09:53:32.124] Created tracing-file path=/tmp/trace-1-0x03a7b0a91e61a170d64ea94b8263641ef5a8bbdb10ac69f466083a6789c77fb8.jsonl
|
||||||
|
INFO [12-06|09:53:32.125] Created tracing-file path=/tmp/trace-2-0xd96e0ce6418ee3360e11d3c7b6886f5a9a08f7ef183da72c23bb3b2374530128.jsonl
|
||||||
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
"hello world"
|
"hello world 1"
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
"hello world 2"
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
{"pc":0,"op":96,"gas":"0x13498","gasCost":"0x3","memSize":0,"stack":[],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2,"op":96,"gas":"0x13495","gasCost":"0x3","memSize":0,"stack":["0x40"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":4,"op":96,"gas":"0x13492","gasCost":"0x3","memSize":0,"stack":["0x40","0x40"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":6,"op":96,"gas":"0x1348f","gasCost":"0x3","memSize":0,"stack":["0x40","0x40","0x40"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":8,"op":0,"gas":"0x1348c","gasCost":"0x0","memSize":0,"stack":["0x40","0x40","0x40","0x40"],"depth":1,"refund":0,"opName":"STOP"}
|
||||||
|
{"output":"","gasUsed":"0xc"}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
"hello world 3"
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
{"pc":0,"op":96,"gas":"0x13498","gasCost":"0x3","memSize":0,"stack":[],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2,"op":96,"gas":"0x13495","gasCost":"0x3","memSize":0,"stack":["0x40"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":4,"op":96,"gas":"0x13492","gasCost":"0x3","memSize":0,"stack":["0x40","0x40"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":6,"op":96,"gas":"0x1348f","gasCost":"0x3","memSize":0,"stack":["0x40","0x40","0x40"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":8,"op":0,"gas":"0x1348c","gasCost":"0x0","memSize":0,"stack":["0x40","0x40","0x40","0x40"],"depth":1,"refund":0,"opName":"STOP"}
|
||||||
|
{"output":"","gasUsed":"0xc"}
|
||||||
24
cmd/evm/testdata/31/txs.json
vendored
24
cmd/evm/testdata/31/txs.json
vendored
|
|
@ -10,5 +10,29 @@
|
||||||
"r" : "0x0",
|
"r" : "0x0",
|
||||||
"s" : "0x0",
|
"s" : "0x0",
|
||||||
"secretKey" : "0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8"
|
"secretKey" : "0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gas": "0x186a0",
|
||||||
|
"gasPrice": "0x600",
|
||||||
|
"input": "0x",
|
||||||
|
"nonce": "0x1",
|
||||||
|
"to": "0x1111111111111111111111111111111111111111",
|
||||||
|
"value": "0x1",
|
||||||
|
"v" : "0x0",
|
||||||
|
"r" : "0x0",
|
||||||
|
"s" : "0x0",
|
||||||
|
"secretKey" : "0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gas": "0x186a0",
|
||||||
|
"gasPrice": "0x600",
|
||||||
|
"input": "0x",
|
||||||
|
"nonce": "0x2",
|
||||||
|
"to": "0x1111111111111111111111111111111111111111",
|
||||||
|
"value": "0x1",
|
||||||
|
"v" : "0x0",
|
||||||
|
"r" : "0x0",
|
||||||
|
"s" : "0x0",
|
||||||
|
"secretKey" : "0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
||||||
1
cmd/evm/testdata/33/README.md
vendored
Normal file
1
cmd/evm/testdata/33/README.md
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
This test sets some EIP-7702 delegations and calls them.
|
||||||
30
cmd/evm/testdata/33/alloc.json
vendored
Normal file
30
cmd/evm/testdata/33/alloc.json
vendored
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"0x8a0a19589531694250d570040a0c4b74576919b8": {
|
||||||
|
"nonce": "0x00",
|
||||||
|
"balance": "0x0de0b6b3a7640000",
|
||||||
|
"code": "0x600060006000600060007310000000000000000000000000000000000000015af1600155600060006000600060007310000000000000000000000000000000000000025af16002553d600060003e600051600355",
|
||||||
|
"storage": {
|
||||||
|
"0x01": "0x0100",
|
||||||
|
"0x02": "0x0100",
|
||||||
|
"0x03": "0x0100"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"0x000000000000000000000000000000000000aaaa": {
|
||||||
|
"nonce": "0x00",
|
||||||
|
"balance": "0x4563918244f40000",
|
||||||
|
"code": "0x58808080600173703c4b2bd70c169f5717101caee543299fc946c75af100",
|
||||||
|
"storage": {}
|
||||||
|
},
|
||||||
|
"0x000000000000000000000000000000000000bbbb": {
|
||||||
|
"nonce": "0x00",
|
||||||
|
"balance": "0x29a2241af62c0000",
|
||||||
|
"code": "0x6042805500",
|
||||||
|
"storage": {}
|
||||||
|
},
|
||||||
|
"0x71562b71999873DB5b286dF957af199Ec94617F7": {
|
||||||
|
"nonce": "0x00",
|
||||||
|
"balance": "0x6124fee993bc0000",
|
||||||
|
"code": "0x",
|
||||||
|
"storage": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
14
cmd/evm/testdata/33/env.json
vendored
Normal file
14
cmd/evm/testdata/33/env.json
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba",
|
||||||
|
"currentGasLimit": "71794957647893862",
|
||||||
|
"currentNumber": "1",
|
||||||
|
"currentTimestamp": "1000",
|
||||||
|
"currentRandom": "0",
|
||||||
|
"currentDifficulty": "0",
|
||||||
|
"blockHashes": {},
|
||||||
|
"ommers": [],
|
||||||
|
"currentBaseFee": "7",
|
||||||
|
"parentUncleHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"withdrawals": [],
|
||||||
|
"parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000"
|
||||||
|
}
|
||||||
62
cmd/evm/testdata/33/exp.json
vendored
Normal file
62
cmd/evm/testdata/33/exp.json
vendored
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
{
|
||||||
|
"alloc": {
|
||||||
|
"0x000000000000000000000000000000000000aaaa": {
|
||||||
|
"code": "0x58808080600173703c4b2bd70c169f5717101caee543299fc946c75af100",
|
||||||
|
"balance": "0x4563918244f40000"
|
||||||
|
},
|
||||||
|
"0x000000000000000000000000000000000000bbbb": {
|
||||||
|
"code": "0x6042805500",
|
||||||
|
"balance": "0x29a2241af62c0000"
|
||||||
|
},
|
||||||
|
"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba": {
|
||||||
|
"balance": "0x2bf52"
|
||||||
|
},
|
||||||
|
"0x703c4b2bd70c169f5717101caee543299fc946c7": {
|
||||||
|
"code": "0xef0100000000000000000000000000000000000000bbbb",
|
||||||
|
"storage": {
|
||||||
|
"0x0000000000000000000000000000000000000000000000000000000000000042": "0x0000000000000000000000000000000000000000000000000000000000000042"
|
||||||
|
},
|
||||||
|
"balance": "0x1",
|
||||||
|
"nonce": "0x1"
|
||||||
|
},
|
||||||
|
"0x71562b71999873db5b286df957af199ec94617f7": {
|
||||||
|
"code": "0xef0100000000000000000000000000000000000000aaaa",
|
||||||
|
"balance": "0x6124fee993afa30e",
|
||||||
|
"nonce": "0x2"
|
||||||
|
},
|
||||||
|
"0x8a0a19589531694250d570040a0c4b74576919b8": {
|
||||||
|
"code": "0x600060006000600060007310000000000000000000000000000000000000015af1600155600060006000600060007310000000000000000000000000000000000000025af16002553d600060003e600051600355",
|
||||||
|
"storage": {
|
||||||
|
"0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000100",
|
||||||
|
"0x0000000000000000000000000000000000000000000000000000000000000002": "0x0000000000000000000000000000000000000000000000000000000000000100",
|
||||||
|
"0x0000000000000000000000000000000000000000000000000000000000000003": "0x0000000000000000000000000000000000000000000000000000000000000100"
|
||||||
|
},
|
||||||
|
"balance": "0xde0b6b3a7640000"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"stateRoot": "0x9fdcacd4510e93c4488e537dc51578b5c6d505771db64a2610036eeb4be7b26f",
|
||||||
|
"txRoot": "0x5d13a0b074e80388dc754da92b22922313a63417b3e25a10f324935e09697a53",
|
||||||
|
"receiptsRoot": "0x504c5d86c34391f70d210e6c482615b391db4bdb9f43479366399d9c5599850a",
|
||||||
|
"logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
|
||||||
|
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","receipts": [{
|
||||||
|
"type": "0x4",
|
||||||
|
"root": "0x",
|
||||||
|
"status": "0x1",
|
||||||
|
"cumulativeGasUsed": "0x15fa9",
|
||||||
|
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","logs": null,"transactionHash": "0x0417aab7c1d8a3989190c3167c132876ce9b8afd99262c5a0f9d06802de3d7ef",
|
||||||
|
"contractAddress": "0x0000000000000000000000000000000000000000",
|
||||||
|
"gasUsed": "0x15fa9",
|
||||||
|
"effectiveGasPrice": null,
|
||||||
|
"blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"transactionIndex": "0x0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentDifficulty": null,
|
||||||
|
"gasUsed": "0x15fa9",
|
||||||
|
"currentBaseFee": "0x7",
|
||||||
|
"withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
|
||||||
|
"requestsHash": "0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||||
|
"requests": []
|
||||||
|
}
|
||||||
|
}
|
||||||
37
cmd/evm/testdata/33/txs.json
vendored
Normal file
37
cmd/evm/testdata/33/txs.json
vendored
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"type": "0x4",
|
||||||
|
"chainId": "0x1",
|
||||||
|
"nonce": "0x0",
|
||||||
|
"to": "0x71562b71999873db5b286df957af199ec94617f7",
|
||||||
|
"gas": "0x7a120",
|
||||||
|
"gasPrice": null,
|
||||||
|
"maxPriorityFeePerGas": "0x2",
|
||||||
|
"maxFeePerGas": "0x12a05f200",
|
||||||
|
"value": "0x0",
|
||||||
|
"input": "0x",
|
||||||
|
"accessList": [],
|
||||||
|
"authorizationList": [
|
||||||
|
{
|
||||||
|
"chainId": "0x1",
|
||||||
|
"address": "0x000000000000000000000000000000000000aaaa",
|
||||||
|
"nonce": "0x1",
|
||||||
|
"yParity": "0x1",
|
||||||
|
"r": "0xf7e3e597fc097e71ed6c26b14b25e5395bc8510d58b9136af439e12715f2d721",
|
||||||
|
"s": "0x6cf7c3d7939bfdb784373effc0ebb0bd7549691a513f395e3cdabf8602724987"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"chainId": "0x0",
|
||||||
|
"address": "0x000000000000000000000000000000000000bbbb",
|
||||||
|
"nonce": "0x0",
|
||||||
|
"yParity": "0x1",
|
||||||
|
"r": "0x5011890f198f0356a887b0779bde5afa1ed04e6acb1e3f37f8f18c7b6f521b98",
|
||||||
|
"s": "0x56c3fa3456b103f3ef4a0acb4b647b9cab9ec4bc68fbcdf1e10b49fb2bcbcf61"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"secretKey": "0xb71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291",
|
||||||
|
"v": "0x0",
|
||||||
|
"r": "0x0",
|
||||||
|
"s": "0x0"
|
||||||
|
}
|
||||||
|
]
|
||||||
3
cmd/evm/testdata/5/exp.json
vendored
3
cmd/evm/testdata/5/exp.json
vendored
|
|
@ -18,6 +18,7 @@
|
||||||
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
||||||
"receipts": [],
|
"receipts": [],
|
||||||
"currentDifficulty": "0x20000",
|
"currentDifficulty": "0x20000",
|
||||||
"gasUsed": "0x0"
|
"gasUsed": "0x0",
|
||||||
|
"requests": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
0
cmd/evm/testdata/evmrun/1.out.1.txt
vendored
Normal file
0
cmd/evm/testdata/evmrun/1.out.1.txt
vendored
Normal file
3
cmd/evm/testdata/evmrun/1.out.2.txt
vendored
Normal file
3
cmd/evm/testdata/evmrun/1.out.2.txt
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
{"pc":0,"op":96,"gas":"0x2540be400","gasCost":"0x3","memSize":0,"stack":[],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2,"op":0,"gas":"0x2540be3fd","gasCost":"0x0","memSize":0,"stack":["0x40"],"depth":1,"refund":0,"opName":"STOP"}
|
||||||
|
{"output":"","gasUsed":"0x3"}
|
||||||
15
cmd/evm/testdata/evmrun/10.out.1.txt
vendored
Normal file
15
cmd/evm/testdata/evmrun/10.out.1.txt
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
\[
|
||||||
|
\{
|
||||||
|
"name": "00000006-naivefuzz-0",
|
||||||
|
"pass": false,
|
||||||
|
"stateRoot": "0xad1024c87b5548e77c937aa50f72b6cb620d278f4dd79bae7f78f71ff75af458",
|
||||||
|
"fork": "London",
|
||||||
|
"error": "post state root mismatch: got ad1024c87b5548e77c937aa50f72b6cb620d278f4dd79bae7f78f71ff75af458, want 0000000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"benchStats": \{
|
||||||
|
"time": \d+,
|
||||||
|
"allocs": \d+,
|
||||||
|
"bytesAllocated": \d+,
|
||||||
|
"gasUsed": \d+
|
||||||
|
\}
|
||||||
|
\}
|
||||||
|
\]
|
||||||
0
cmd/evm/testdata/evmrun/10.out.2.txt
vendored
Normal file
0
cmd/evm/testdata/evmrun/10.out.2.txt
vendored
Normal file
0
cmd/evm/testdata/evmrun/2.out.1.txt
vendored
Normal file
0
cmd/evm/testdata/evmrun/2.out.1.txt
vendored
Normal file
6
cmd/evm/testdata/evmrun/2.out.2.txt
vendored
Normal file
6
cmd/evm/testdata/evmrun/2.out.2.txt
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
PUSH1 pc=00000000 gas=10000000000 cost=3
|
||||||
|
|
||||||
|
STOP pc=00000002 gas=9999999997 cost=0
|
||||||
|
Stack:
|
||||||
|
00000000 0x40
|
||||||
|
|
||||||
14
cmd/evm/testdata/evmrun/3.out.1.txt
vendored
Normal file
14
cmd/evm/testdata/evmrun/3.out.1.txt
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"root": "b444481d1367188172f8c6091e948aaa68bae763fd26d6b9e994306a66bf69f9",
|
||||||
|
"accounts": {
|
||||||
|
"0x0000000000000000000000007265636569766572": {
|
||||||
|
"balance": "0",
|
||||||
|
"nonce": 0,
|
||||||
|
"root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
|
||||||
|
"codeHash": "0x3e48ef54b89079a075f3b8fc253c657a86b110a7aed3568c1517b10edf2c3eb6",
|
||||||
|
"code": "0x6040",
|
||||||
|
"address": "0x0000000000000000000000007265636569766572",
|
||||||
|
"key": "0x30d7a0694cb29af31b982480e11d7ebb003a3fca4026939149071f014689b142"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
9
cmd/evm/testdata/evmrun/3.out.2.txt
vendored
Normal file
9
cmd/evm/testdata/evmrun/3.out.2.txt
vendored
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
PUSH1 pc=00000000 gas=10000000000 cost=3
|
||||||
|
|
||||||
|
STOP pc=00000002 gas=9999999997 cost=0
|
||||||
|
Stack:
|
||||||
|
00000000 0x40
|
||||||
|
|
||||||
|
INFO [12-03|10:37:15.827] Trie dumping started root=b44448..bf69f9
|
||||||
|
WARN [12-03|10:37:15.827] Dump incomplete due to missing preimages missing=1
|
||||||
|
INFO [12-03|10:37:15.827] Trie dumping complete accounts=1 elapsed="163.513µs"
|
||||||
14
cmd/evm/testdata/evmrun/4.out.1.txt
vendored
Normal file
14
cmd/evm/testdata/evmrun/4.out.1.txt
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"root": "b444481d1367188172f8c6091e948aaa68bae763fd26d6b9e994306a66bf69f9",
|
||||||
|
"accounts": {
|
||||||
|
"0x0000000000000000000000007265636569766572": {
|
||||||
|
"balance": "0",
|
||||||
|
"nonce": 0,
|
||||||
|
"root": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
|
||||||
|
"codeHash": "0x3e48ef54b89079a075f3b8fc253c657a86b110a7aed3568c1517b10edf2c3eb6",
|
||||||
|
"code": "0x6040",
|
||||||
|
"address": "0x0000000000000000000000007265636569766572",
|
||||||
|
"key": "0x30d7a0694cb29af31b982480e11d7ebb003a3fca4026939149071f014689b142"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
6
cmd/evm/testdata/evmrun/4.out.2.txt
vendored
Normal file
6
cmd/evm/testdata/evmrun/4.out.2.txt
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{"pc":0,"op":96,"gas":"0x2540be400","gasCost":"0x3","memSize":0,"stack":[],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2,"op":0,"gas":"0x2540be3fd","gasCost":"0x0","memSize":0,"stack":["0x40"],"depth":1,"refund":0,"opName":"STOP"}
|
||||||
|
{"output":"","gasUsed":"0x3"}
|
||||||
|
INFO [12-03|10:38:33.360] Trie dumping started root=b44448..bf69f9
|
||||||
|
WARN [12-03|10:38:33.361] Dump incomplete due to missing preimages missing=1
|
||||||
|
INFO [12-03|10:38:33.361] Trie dumping complete accounts=1 elapsed="240.811µs"
|
||||||
0
cmd/evm/testdata/evmrun/5.out.1.txt
vendored
Normal file
0
cmd/evm/testdata/evmrun/5.out.1.txt
vendored
Normal file
16
cmd/evm/testdata/evmrun/5.out.2.txt
vendored
Normal file
16
cmd/evm/testdata/evmrun/5.out.2.txt
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
Pre-execution info:
|
||||||
|
- from: `0x000000000000000000000000000073656E646572`
|
||||||
|
- to: `0x0000000000000000000000007265636569766572`
|
||||||
|
- data: ``
|
||||||
|
- gas: `10000000000`
|
||||||
|
- value: `0` wei
|
||||||
|
|
||||||
|
| Pc | Op | Cost | Refund | Stack |
|
||||||
|
|-------|-------------|------|-----------|-----------|
|
||||||
|
| 0 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2 | STOP | 0 | 0 | [0x40] |
|
||||||
|
|
||||||
|
Post-execution info:
|
||||||
|
- output: ``
|
||||||
|
- consumed gas: `3`
|
||||||
|
- error: `<nil>`
|
||||||
9
cmd/evm/testdata/evmrun/6.out.1.txt
vendored
Normal file
9
cmd/evm/testdata/evmrun/6.out.1.txt
vendored
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "00000006-naivefuzz-0",
|
||||||
|
"pass": false,
|
||||||
|
"stateRoot": "0xad1024c87b5548e77c937aa50f72b6cb620d278f4dd79bae7f78f71ff75af458",
|
||||||
|
"fork": "London",
|
||||||
|
"error": "post state root mismatch: got ad1024c87b5548e77c937aa50f72b6cb620d278f4dd79bae7f78f71ff75af458, want 0000000000000000000000000000000000000000000000000000000000000000"
|
||||||
|
}
|
||||||
|
]
|
||||||
1
cmd/evm/testdata/evmrun/6.out.2.txt
vendored
Normal file
1
cmd/evm/testdata/evmrun/6.out.2.txt
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"stateRoot": "0xad1024c87b5548e77c937aa50f72b6cb620d278f4dd79bae7f78f71ff75af458"}
|
||||||
9
cmd/evm/testdata/evmrun/7.out.1.txt
vendored
Normal file
9
cmd/evm/testdata/evmrun/7.out.1.txt
vendored
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "00000006-naivefuzz-0",
|
||||||
|
"pass": false,
|
||||||
|
"stateRoot": "0xad1024c87b5548e77c937aa50f72b6cb620d278f4dd79bae7f78f71ff75af458",
|
||||||
|
"fork": "London",
|
||||||
|
"error": "post state root mismatch: got ad1024c87b5548e77c937aa50f72b6cb620d278f4dd79bae7f78f71ff75af458, want 0000000000000000000000000000000000000000000000000000000000000000"
|
||||||
|
}
|
||||||
|
]
|
||||||
925
cmd/evm/testdata/evmrun/7.out.2.txt
vendored
Normal file
925
cmd/evm/testdata/evmrun/7.out.2.txt
vendored
Normal file
|
|
@ -0,0 +1,925 @@
|
||||||
|
Pre-execution info:
|
||||||
|
- from: `0xa94f5374Fce5edBC8E2a8697C15331677e6EbF0B`
|
||||||
|
- to: `0x00000000000000000000000000000000000000f1`
|
||||||
|
- data: `0x81fbe24d1e33d7944b2e62ee0ff24811bbbcf8cb311e5617c80623dec4477cc14849fc042b9bbaebca9f03f66cca76c46353c5a68c2e134ef75f8c2425d9702f3a4bd3c5527e93d27579bdbd7d237eaa1c0278fce26479aaf11fb8d00e7478`
|
||||||
|
- gas: `737811`
|
||||||
|
- value: `1` wei
|
||||||
|
|
||||||
|
| Pc | Op | Cost | Refund | Stack |
|
||||||
|
|-------|-------------|------|-----------|-----------|
|
||||||
|
| 0 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2 | PUSH1 | 3 | 0 | [0x2] |
|
||||||
|
| 4 | SSTORE | 22100 | 0 | [0x2,0x3] |
|
||||||
|
| 5 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 7 | PUSH1 | 3 | 0 | [0x0] |
|
||||||
|
| 9 | PUSH1 | 3 | 0 | [0x0,0x0] |
|
||||||
|
| 11 | PUSH1 | 3 | 0 |[0x0,0x0,0x0] |
|
||||||
|
| 13 | PUSH1 | 3 | 0 |[0x0,0x0,0x0,0x0] |
|
||||||
|
| 15 | PUSH1 | 3 | 0 |[0x0,0x0,0x0,0x0,0x0] |
|
||||||
|
| 17 | GAS | 2 | 0 |[0x0,0x0,0x0,0x0,0x0,0x4] |
|
||||||
|
| 18 | CALLCODE | 704504 | 0 |[0x0,0x0,0x0,0x0,0x0,0x4,0xaeba5] |
|
||||||
|
| 19 | POP | 2 | 0 | [0x1] |
|
||||||
|
| 20 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 53 | PUSH1 | 3 | 0 |[0x600254506003545060016003557f7f6008545060006004557f60016004556000] |
|
||||||
|
| 55 | MSTORE | 6 | 0 |[0x600254506003545060016003557f7f6008545060006004557f60016004556000,0x0] |
|
||||||
|
| 56 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 89 | PUSH1 | 3 | 0 |[0x60045560006000600060006000606000527ff96000527f5af250600060006000] |
|
||||||
|
| 91 | MSTORE | 6 | 0 |[0x60045560006000600060006000606000527ff96000527f5af250600060006000,0x20] |
|
||||||
|
| 92 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 125 | PUSH1 | 3 | 0 |[0x606000527e60f45af45060006000600060006020527f600060f55a6020527ff1] |
|
||||||
|
| 127 | MSTORE | 6 | 0 |[0x606000527e60f45af45060006000600060006020527f600060f55a6020527ff1,0x40] |
|
||||||
|
| 128 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 161 | PUSH1 | 3 | 0 |[0x50f001075205846a44a283446020527f8ca2600060006040527f600060006004] |
|
||||||
|
| 163 | MSTORE | 6 | 0 |[0x50f001075205846a44a283446020527f8ca2600060006040527f600060006004,0x60] |
|
||||||
|
| 164 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 197 | PUSH1 | 3 | 0 |[0x5af4506040527f519930847f3b631c54a49b5f600354503260406060527f527f] |
|
||||||
|
| 199 | MSTORE | 6 | 0 |[0x5af4506040527f519930847f3b631c54a49b5f600354503260406060527f527f,0x80] |
|
||||||
|
| 200 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 233 | PUSH1 | 3 | 0 |[0x77306b60006000600060006060527f6000600c5af15060006000600060006080] |
|
||||||
|
| 235 | MSTORE | 6 | 0 |[0x77306b60006000600060006060527f6000600c5af15060006000600060006080,0xa0] |
|
||||||
|
| 236 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 269 | PUSH1 | 3 | 0 |[0x527f60f85af450506060527f066001600255606080527f035450600060005560] |
|
||||||
|
| 271 | MSTORE | 6 | 0 |[0x527f60f85af450506060527f066001600255606080527f035450600060005560,0xc0] |
|
||||||
|
| 272 | PUSH31 | 3 | 0 | [] |
|
||||||
|
| 304 | PUSH1 | 3 | 0 |[0x6060a0527f01556c3394fff4607f7f1684317b6080527f387b9f60a0527f19] |
|
||||||
|
| 306 | MSTORE | 6 | 0 |[0x6060a0527f01556c3394fff4607f7f1684317b6080527f387b9f60a0527f19,0xe0] |
|
||||||
|
| 307 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 340 | PUSH2 | 3 | 0 |[0x20700184809d60c0527f60015450011899016e6009ff60026001556000527f9f] |
|
||||||
|
| 343 | MSTORE | 6 | 0 |[0x20700184809d60c0527f60015450011899016e6009ff60026001556000527f9f,0x100] |
|
||||||
|
| 344 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 377 | PUSH2 | 3 | 0 |[0x60a05260c0527f7f600060e0527f527f9981600160045582600eff6000600060] |
|
||||||
|
| 380 | MSTORE | 6 | 0 |[0x60a05260c0527f7f600060e0527f527f9981600160045582600eff6000600060,0x120] |
|
||||||
|
| 381 | PUSH31 | 3 | 0 | [] |
|
||||||
|
| 413 | PUSH2 | 3 | 0 |[0x600060f65af45060006060e052610100527f7f6060c0527f20527e60006000] |
|
||||||
|
| 416 | MSTORE | 6 | 0 |[0x600060f65af45060006060e052610100527f7f6060c0527f20527e60006000,0x140] |
|
||||||
|
| 417 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 450 | PUSH2 | 3 | 0 |[0x6020527f60f75af4501d7f1903166660006000610120527f60610100527e6000] |
|
||||||
|
| 453 | MSTORE | 6 | 0 |[0x6020527f60f75af4501d7f1903166660006000610120527f60610100527e6000,0x160] |
|
||||||
|
| 454 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 487 | PUSH2 | 3 | 0 |[0x600060e0527f60046040527f5af150600060006000604052610140527f7f6000] |
|
||||||
|
| 490 | MSTORE | 6 | 0 |[0x600060e0527f60046040527f5af150600060006000604052610140527f7f6000,0x180] |
|
||||||
|
| 491 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 524 | PUSH2 | 3 | 0 |[0x6009610120527f5af4503c95138e5b8f610100527f7f605a6000536060610160] |
|
||||||
|
| 527 | MSTORE | 6 | 0 |[0x6009610120527f5af4503c95138e5b8f610100527f7f605a6000536060610160,0x1a0] |
|
||||||
|
| 528 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 561 | PUSH2 | 3 | 0 |[0x527f527f6031600153606b60610140527f02536010606060527f035360456061] |
|
||||||
|
| 564 | MSTORE | 6 | 0 |[0x527f527f6031600153606b60610140527f02536010606060527f035360456061,0x1c0] |
|
||||||
|
| 565 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 598 | PUSH2 | 3 | 0 |[0x120610180527f527f04536060600553600160608052610160527f7e527f6006] |
|
||||||
|
| 601 | MSTORE | 6 | 0 |[0x120610180527f527f04536060600553600160608052610160527f7e527f6006,0x1e0] |
|
||||||
|
| 602 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 635 | PUSH2 | 3 | 0 |[0x536060600753606101a0527f02600853606080610140527f527f556009536060] |
|
||||||
|
| 638 | MSTORE | 6 | 0 |[0x536060600753606101a0527f02600853606080610140527f527f556009536060,0x200] |
|
||||||
|
| 639 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 672 | PUSH2 | 3 | 0 |[0x610180527f600a53600160a06101c0527f527f600b536060600c6020527f5360] |
|
||||||
|
| 675 | MSTORE | 6 | 0 |[0x610180527f600a53600160a06101c0527f527f600b536060600c6020527f5360,0x220] |
|
||||||
|
| 676 | PUSH31 | 3 | 0 | [] |
|
||||||
|
| 708 | PUSH2 | 3 | 0 |[0x60610160527f0d53606101a0527f55606101e0527f0e60a0527f536060600f] |
|
||||||
|
| 711 | MSTORE | 6 | 0 |[0x60610160527f0d53606101a0527f55606101e0527f0e60a0527f536060600f,0x240] |
|
||||||
|
| 712 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 745 | PUSH2 | 3 | 0 |[0x536060c0527f01601053606060115360026101806101610200527fc0527f527f] |
|
||||||
|
| 748 | MSTORE | 6 | 0 |[0x536060c0527f01601053606060115360026101806101610200527fc0527f527f,0x260] |
|
||||||
|
| 749 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 782 | PUSH2 | 3 | 0 |[0x601253606040527f55601353606060c0527f60145360e0527f6000610220527f] |
|
||||||
|
| 785 | MSTORE | 6 | 0 |[0x601253606040527f55601353606060c0527f60145360e0527f6000610220527f,0x280] |
|
||||||
|
| 786 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 819 | PUSH2 | 3 | 0 |[0x6015536101e0527f60606101a0527f601653600060175360f360185360196060] |
|
||||||
|
| 822 | MSTORE | 6 | 0 |[0x6015536101e0527f60606101a0527f601653600060175360f360185360196060,0x2a0] |
|
||||||
|
| 823 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 856 | PUSH2 | 3 | 0 |[0x610240527f605260006060e052610200527f610100527f7f806101c0527f5360] |
|
||||||
|
| 859 | MSTORE | 7 | 0 |[0x610240527f605260006060e052610200527f610100527f7f806101c0527f5360,0x2c0] |
|
||||||
|
| 860 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 893 | PUSH2 | 3 | 0 |[0xf360815360610260527f8260006000f060006000600060610220527e845af450] |
|
||||||
|
| 896 | MSTORE | 6 | 0 |[0xf360815360610260527f8260006000f060006000600060610220527e845af450,0x2e0] |
|
||||||
|
| 897 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 930 | PUSH2 | 3 | 0 |[0x506000600061016101e0610280527f527f20527f60610100527e600060006003] |
|
||||||
|
| 933 | MSTORE | 6 | 0 |[0x506000600061016101e0610280527f527f20527f60610100527e600060006003,0x300] |
|
||||||
|
| 934 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 967 | PUSH2 | 3 | 0 |[0x610240527f5af15060005450c760006102a0527f6002551309f562610200527f] |
|
||||||
|
| 970 | MSTORE | 6 | 0 |[0x610240527f5af15060005450c760006102a0527f6002551309f562610200527f,0x320] |
|
||||||
|
| 971 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1004 | PUSH2 | 3 | 0 |[0x66a486610140527f6b00610260527f1d457161016102c0527f20527f60005450] |
|
||||||
|
| 1007 | MSTORE | 6 | 0 |[0x66a486610140527f6b00610260527f1d457161016102c0527f20527f60005450,0x340] |
|
||||||
|
| 1008 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1041 | PUSH2 | 3 | 0 |[0x1c641d373c7f60045450610220527f6000600155610280527f6102e0527f6005] |
|
||||||
|
| 1044 | MSTORE | 6 | 0 |[0x1c641d373c7f60045450610220527f6000600155610280527f6102e0527f6005,0x360] |
|
||||||
|
| 1045 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1078 | PUSH2 | 3 | 0 |[0x54610160527f50600160025560085450610140527f60006002610240527f6103] |
|
||||||
|
| 1081 | MSTORE | 6 | 0 |[0x54610160527f50600160025560085450610140527f60006002610240527f6103,0x380] |
|
||||||
|
| 1082 | PUSH31 | 3 | 0 | [] |
|
||||||
|
| 1114 | PUSH2 | 3 | 0 |[0x527f6102a0527f557fd86000606000527e600060610180527e600060005af1] |
|
||||||
|
| 1117 | MSTORE | 6 | 0 |[0x527f6102a0527f557fd86000606000527e600060610180527e600060005af1,0x3a0] |
|
||||||
|
| 1118 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1151 | PUSH2 | 3 | 0 |[0x508612610320527f17145147356102c0527f610260527f610160527f5198a37e] |
|
||||||
|
| 1154 | MSTORE | 6 | 0 |[0x508612610320527f17145147356102c0527f610260527f610160527f5198a37e,0x3c0] |
|
||||||
|
| 1155 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1188 | PUSH2 | 3 | 0 |[0x127a7efa7c600052610340527f6101a0527f606020527f6102e0527f60602053] |
|
||||||
|
| 1191 | MSTORE | 7 | 0 |[0x127a7efa7c600052610340527f6101a0527f606020527f6102e0527f60602053,0x3e0] |
|
||||||
|
| 1192 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1225 | PUSH2 | 3 | 0 |[0x60610280527ff760215360ff60610360527f225360610180527fdb6023536037] |
|
||||||
|
| 1228 | MSTORE | 6 | 0 |[0x60610280527ff760215360ff60610360527f225360610180527fdb6023536037,0x400] |
|
||||||
|
| 1229 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1262 | PUSH2 | 3 | 0 |[0x60610300527f6101c0527f24536075606102610380527fa0527f2553609f6060] |
|
||||||
|
| 1265 | MSTORE | 6 | 0 |[0x60610300527f6101c0527f24536075606102610380527fa0527f2553609f6060,0x420] |
|
||||||
|
| 1266 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1299 | PUSH2 | 3 | 0 |[0x40527f265360fe60275360610320527f8f60286101a0526103a0527f7f536061] |
|
||||||
|
| 1302 | MSTORE | 6 | 0 |[0x40527f265360fe60275360610320527f8f60286101a0526103a0527f7f536061,0x440] |
|
||||||
|
| 1303 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1336 | PUSH2 | 3 | 0 |[0x1e0527f6102c0527f0b6029536060602a53600060610340527f2b536103c052] |
|
||||||
|
| 1339 | MSTORE | 6 | 0 |[0x1e0527f6102c0527f0b6029536060602a53600060610340527f2b536103c052,0x460] |
|
||||||
|
| 1340 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1373 | PUSH2 | 3 | 0 |[0x7f6060602c53606052606060805360006061016102e0527f610200527fc05261] |
|
||||||
|
| 1376 | MSTORE | 6 | 0 |[0x7f6060602c53606052606060805360006061016102e0527f610200527fc05261,0x480] |
|
||||||
|
| 1377 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1410 | PUSH2 | 3 | 0 |[0x36103e0527f60527f7f81536060608253602d60835360536084536060608553] |
|
||||||
|
| 1413 | MSTORE | 6 | 0 |[0x36103e0527f60527f7f81536060608253602d60835360536084536060608553,0x4a0] |
|
||||||
|
| 1414 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1447 | PUSH2 | 3 | 0 |[0x60fd61030052610400527f7f6086610380527f536060610220527f6087536101] |
|
||||||
|
| 1450 | MSTORE | 6 | 0 |[0x60fd61030052610400527f7f6086610380527f536060610220527f6087536101,0x4c0] |
|
||||||
|
| 1451 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1484 | PUSH2 | 3 | 0 |[0xe0527f602e608853605360610420527f89536060608a61036103a0527f20527f] |
|
||||||
|
| 1487 | MSTORE | 7 | 0 |[0xe0527f602e608853605360610420527f89536060608a61036103a0527f20527f,0x4e0] |
|
||||||
|
| 1488 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1521 | PUSH2 | 3 | 0 |[0x53602f608b536060608c610240527f53610440527f6000608d5360f361020052] |
|
||||||
|
| 1524 | MSTORE | 6 | 0 |[0x53602f608b536060608c610240527f53610440527f6000608d5360f361020052,0x500] |
|
||||||
|
| 1525 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1558 | PUSH2 | 3 | 0 |[0x60606103c0527f610220610340527f53608e610221610460527f536053610222] |
|
||||||
|
| 1561 | MSTORE | 6 | 0 |[0x60606103c0527f610220610340527f53608e610221610460527f536053610222,0x520] |
|
||||||
|
| 1562 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1595 | PUSH2 | 3 | 0 |[0x536060610260527f610223536103e0527f600061022453606061610480527f03] |
|
||||||
|
| 1598 | MSTORE | 6 | 0 |[0x536060610260527f610223536103e0527f600061022453606061610480527f03,0x540] |
|
||||||
|
| 1599 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1632 | PUSH2 | 3 | 0 |[0x60527f61022553608f61022653606061022753600061610400527f0261028061] |
|
||||||
|
| 1635 | MSTORE | 6 | 0 |[0x60527f61022553608f61022653606061022753600061610400527f0261028061,0x560] |
|
||||||
|
| 1636 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1669 | PUSH2 | 3 | 0 |[0x4a0527f527f28536060610229610380527f53600061022a5360f561022b5360] |
|
||||||
|
| 1672 | MSTORE | 6 | 0 |[0x4a0527f527f28536060610229610380527f53600061022a5360f561022b5360,0x580] |
|
||||||
|
| 1673 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1706 | PUSH2 | 3 | 0 |[0x610420526104c0527f7f6061022c53600061022d536102a0527f60606103a052] |
|
||||||
|
| 1709 | MSTORE | 7 | 0 |[0x610420526104c0527f7f6061022c53600061022d536102a0527f60606103a052,0x5a0] |
|
||||||
|
| 1710 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1743 | PUSH2 | 3 | 0 |[0x7f61022e53600061026104e0527f2f610440527f536060610230536000610231] |
|
||||||
|
| 1746 | MSTORE | 6 | 0 |[0x7f61022e53600061026104e0527f2f610440527f536060610230536000610231,0x5c0] |
|
||||||
|
| 1747 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1780 | PUSH2 | 3 | 0 |[0x53606061023253600061026103c0610500527f527fc0527f61610460527f0233] |
|
||||||
|
| 1783 | MSTORE | 6 | 0 |[0x53606061023253600061026103c0610500527f527fc0527f61610460527f0233,0x5e0] |
|
||||||
|
| 1784 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1817 | PUSH2 | 3 | 0 |[0x53606061023453600061023553608561023653610520527f605a610237536061] |
|
||||||
|
| 1820 | MSTORE | 6 | 0 |[0x53606061023453600061023553608561023653610520527f605a610237536061,0x600] |
|
||||||
|
| 1821 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1854 | PUSH2 | 3 | 0 |[0x3e052610480527f7ff261026102e0526038610300536053610540527f610301] |
|
||||||
|
| 1857 | MSTORE | 6 | 0 |[0x3e052610480527f7ff261026102e0526038610300536053610540527f610301,0x620] |
|
||||||
|
| 1858 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1891 | PUSH2 | 3 | 0 |[0x536060610302536050610303536104a0527f60610400527f6161030453610560] |
|
||||||
|
| 1894 | MSTORE | 7 | 0 |[0x536060610302536050610303536104a0527f60610400527f6161030453610560,0x640] |
|
||||||
|
| 1895 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1928 | PUSH2 | 3 | 0 |[0x527f6002610305536039610306536053610307536060616104c0527f03085360] |
|
||||||
|
| 1931 | MSTORE | 6 | 0 |[0x527f6002610305536039610306536053610307536060616104c0527f03085360,0x660] |
|
||||||
|
| 1932 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1965 | PUSH2 | 3 | 0 |[0x5061610580527f610420527f030953606161030a53600261030b53603a61030c] |
|
||||||
|
| 1968 | MSTORE | 6 | 0 |[0x5061610580527f610420527f030953606161030a53600261030b53603a61030c,0x680] |
|
||||||
|
| 1969 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 2002 | PUSH2 | 3 | 0 |[0x536104e0527f606105a0527f5361030d53606161030e610440527f5360026103] |
|
||||||
|
| 2005 | MSTORE | 6 | 0 |[0x536104e0527f606105a0527f5361030d53606161030e610440527f5360026103,0x6a0] |
|
||||||
|
| 2006 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 2039 | PUSH2 | 3 | 0 |[0xf53603b61031053606061616105c0527f0500527f03115360006103125360f3] |
|
||||||
|
| 2042 | MSTORE | 6 | 0 |[0xf53603b61031053606061616105c0527f0500527f03115360006103125360f3,0x6c0] |
|
||||||
|
| 2043 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 2076 | PUSH2 | 3 | 0 |[0x61031353616104605260036104805360146105e0527f61048153610520527f60] |
|
||||||
|
| 2079 | MSTORE | 7 | 0 |[0x61031353616104605260036104805360146105e0527f61048153610520527f60,0x6e0] |
|
||||||
|
| 2080 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 2113 | PUSH2 | 3 | 0 |[0x60610482536000610483536060610484536000610485610600527f5360f06104] |
|
||||||
|
| 2116 | MSTORE | 6 | 0 |[0x60610482536000610483536060610484536000610485610600527f5360f06104,0x700] |
|
||||||
|
| 2117 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 2150 | PUSH2 | 3 | 0 |[0x86536060610540527f610487536000610488536060610489536000610620527f] |
|
||||||
|
| 2153 | MSTORE | 6 | 0 |[0x86536060610540527f610487536000610488536060610489536000610620527f,0x720] |
|
||||||
|
| 2154 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 2187 | PUSH2 | 3 | 0 |[0x61048a53606061048b5360006104610560527f8c53606061048d53600061048e] |
|
||||||
|
| 2190 | MSTORE | 6 | 0 |[0x61048a53606061048b5360006104610560527f8c53606061048d53600061048e,0x740] |
|
||||||
|
| 2191 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 2224 | PUSH2 | 3 | 0 |[0x610640527f53608461048f53605a6104905360f4610491536105805260606105] |
|
||||||
|
| 2227 | MSTORE | 7 | 0 |[0x610640527f53608461048f53605a6104905360f4610491536105805260606105,0x760] |
|
||||||
|
| 2228 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 2261 | PUSH2 | 3 | 0 |[0xa053605061610660527f05a15360616105a25360046105a35360926105a45360] |
|
||||||
|
| 2264 | MSTORE | 6 | 0 |[0xa053605061610660527f05a15360616105a25360046105a35360926105a45360,0x780] |
|
||||||
|
| 2265 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 2298 | PUSH2 | 3 | 0 |[0x536105a55360606105a6610680527f5360506105a75360616105a85360046105] |
|
||||||
|
| 2301 | MSTORE | 6 | 0 |[0x536105a55360606105a6610680527f5360506105a75360616105a85360046105,0x7a0] |
|
||||||
|
| 2302 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 2335 | PUSH2 | 3 | 0 |[0xa95360936105aa5360536105ab53606106a0527f616105ac5360046105ad5360] |
|
||||||
|
| 2338 | MSTORE | 6 | 0 |[0xa95360936105aa5360536105ab53606106a0527f616105ac5360046105ad5360,0x7c0] |
|
||||||
|
| 2339 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 2372 | PUSH2 | 3 | 0 |[0x946105ae5360606105af5360006105b05360f3616106c05260056106e05360b1] |
|
||||||
|
| 2375 | MSTORE | 7 | 0 |[0x946105ae5360606105af5360006105b05360f3616106c05260056106e05360b1,0x7e0] |
|
||||||
|
| 2376 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 2409 | PUSH2 | 3 | 0 |[0x6106e15360536106e25360606106e35360006106e45360616106e55360056106] |
|
||||||
|
| 2412 | MSTORE | 6 | 0 |[0x6106e15360536106e25360606106e35360006106e45360616106e55360056106,0x800] |
|
||||||
|
| 2413 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 2446 | PUSH2 | 3 | 0 |[0xe65360b26106e75360606106e85360006106e95360606106ea5360006106eb53] |
|
||||||
|
| 2449 | MSTORE | 6 | 0 |[0xe65360b26106e75360606106e85360006106e95360606106ea5360006106eb53,0x820] |
|
||||||
|
| 2450 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 2483 | PUSH2 | 3 | 0 |[0x60f56106ec5360606106ed5360006106ee5360606106ef5360006106f0536060] |
|
||||||
|
| 2486 | MSTORE | 6 | 0 |[0x60f56106ec5360606106ed5360006106ee5360606106ef5360006106f0536060,0x840] |
|
||||||
|
| 2487 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 2520 | PUSH2 | 3 | 0 |[0x6106f15360006106f25360606106f35360006106f45360606106f55360006106] |
|
||||||
|
| 2523 | MSTORE | 7 | 0 |[0x6106f15360006106f25360606106f35360006106f45360606106f55360006106,0x860] |
|
||||||
|
| 2524 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 2557 | PUSH2 | 3 | 0 |[0xf65360856106f753605a6106f85360f16106f95360506106fa5360506106fb53] |
|
||||||
|
| 2560 | MSTORE | 6 | 0 |[0xf65360856106f753605a6106f85360f16106f95360506106fa5360506106fb53,0x880] |
|
||||||
|
| 2561 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2563 | PUSH2 | 3 | 0 | [0x61] |
|
||||||
|
| 2566 | MSTORE8 | 6 | 0 |[0x61,0x8a0] |
|
||||||
|
| 2567 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2569 | PUSH2 | 3 | 0 | [0x6] |
|
||||||
|
| 2572 | MSTORE8 | 3 | 0 |[0x6,0x8a1] |
|
||||||
|
| 2573 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2575 | PUSH2 | 3 | 0 | [0xfc] |
|
||||||
|
| 2578 | MSTORE8 | 3 | 0 |[0xfc,0x8a2] |
|
||||||
|
| 2579 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2581 | PUSH2 | 3 | 0 | [0x60] |
|
||||||
|
| 2584 | MSTORE8 | 3 | 0 |[0x60,0x8a3] |
|
||||||
|
| 2585 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2587 | PUSH2 | 3 | 0 | [0x0] |
|
||||||
|
| 2590 | MSTORE8 | 3 | 0 |[0x0,0x8a4] |
|
||||||
|
| 2591 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2593 | PUSH2 | 3 | 0 | [0xf3] |
|
||||||
|
| 2596 | MSTORE8 | 3 | 0 |[0xf3,0x8a5] |
|
||||||
|
| 2597 | PUSH2 | 3 | 0 | [] |
|
||||||
|
| 2600 | PUSH1 | 3 | 0 | [0x8a6] |
|
||||||
|
| 2602 | PUSH1 | 3 | 0 |[0x8a6,0x0] |
|
||||||
|
| 2604 | CREATE | 32000 | 0 |[0x8a6,0x0,0x0] |
|
||||||
|
| 0 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2 | SLOAD | 2100 | 0 | [0x2] |
|
||||||
|
| 3 | POP | 2 | 0 | [0x0] |
|
||||||
|
| 4 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 6 | SLOAD | 2100 | 0 | [0x3] |
|
||||||
|
| 7 | POP | 2 | 0 | [0x0] |
|
||||||
|
| 8 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 10 | PUSH1 | 3 | 0 | [0x1] |
|
||||||
|
| 12 | SSTORE | 20000 | 0 | [0x1,0x3] |
|
||||||
|
| 13 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 46 | PUSH1 | 3 | 0 |[0x7f6008545060006004557f600160045560006004556000600060006000600060] |
|
||||||
|
| 48 | MSTORE | 6 | 0 |[0x7f6008545060006004557f600160045560006004556000600060006000600060,0x0] |
|
||||||
|
| 49 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 82 | PUSH1 | 3 | 0 |[0xf96000527f5af250600060006000606000527e60f45af4506000600060006000] |
|
||||||
|
| 84 | MSTORE | 6 | 0 |[0xf96000527f5af250600060006000606000527e60f45af4506000600060006000,0x20] |
|
||||||
|
| 85 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 118 | PUSH1 | 3 | 0 |[0x600060f55a6020527ff150f001075205846a44a283446020527f8ca260006000] |
|
||||||
|
| 120 | MSTORE | 6 | 0 |[0x600060f55a6020527ff150f001075205846a44a283446020527f8ca260006000,0x40] |
|
||||||
|
| 121 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 154 | PUSH1 | 3 | 0 |[0x6000600060045af4506040527f519930847f3b631c54a49b5f60035450326040] |
|
||||||
|
| 156 | MSTORE | 6 | 0 |[0x6000600060045af4506040527f519930847f3b631c54a49b5f60035450326040,0x60] |
|
||||||
|
| 157 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 190 | PUSH1 | 3 | 0 |[0x527f77306b60006000600060006060527f6000600c5af1506000600060006000] |
|
||||||
|
| 192 | MSTORE | 6 | 0 |[0x527f77306b60006000600060006060527f6000600c5af1506000600060006000,0x80] |
|
||||||
|
| 193 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 226 | PUSH1 | 3 | 0 |[0x60f85af450506060527f066001600255606080527f0354506000600055600060] |
|
||||||
|
| 228 | MSTORE | 6 | 0 |[0x60f85af450506060527f066001600255606080527f0354506000600055600060,0xa0] |
|
||||||
|
| 229 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 262 | PUSH1 | 3 | 0 |[0x1556c3394fff4607f7f1684317b6080527f387b9f60a0527f1920700184809d] |
|
||||||
|
| 264 | MSTORE | 6 | 0 |[0x1556c3394fff4607f7f1684317b6080527f387b9f60a0527f1920700184809d,0xc0] |
|
||||||
|
| 265 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 298 | PUSH1 | 3 | 0 |[0x60015450011899016e6009ff60026001556000527f9f60a05260c0527f7f6000] |
|
||||||
|
| 300 | MSTORE | 6 | 0 |[0x60015450011899016e6009ff60026001556000527f9f60a05260c0527f7f6000,0xe0] |
|
||||||
|
| 301 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 334 | PUSH2 | 3 | 0 |[0x527f9981600160045582600eff600060006000600060f65af45060006060e052] |
|
||||||
|
| 337 | MSTORE | 6 | 0 |[0x527f9981600160045582600eff600060006000600060f65af45060006060e052,0x100] |
|
||||||
|
| 338 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 371 | PUSH2 | 3 | 0 |[0x7f6060c0527f20527e600060006020527f60f75af4501d7f1903166660006000] |
|
||||||
|
| 374 | MSTORE | 6 | 0 |[0x7f6060c0527f20527e600060006020527f60f75af4501d7f1903166660006000,0x120] |
|
||||||
|
| 375 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 408 | PUSH2 | 3 | 0 |[0x60610100527e6000600060e0527f60046040527f5af150600060006000604052] |
|
||||||
|
| 411 | MSTORE | 6 | 0 |[0x60610100527e6000600060e0527f60046040527f5af150600060006000604052,0x140] |
|
||||||
|
| 412 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 445 | PUSH2 | 3 | 0 |[0x7f60006009610120527f5af4503c95138e5b8f610100527f7f605a6000536060] |
|
||||||
|
| 448 | MSTORE | 6 | 0 |[0x7f60006009610120527f5af4503c95138e5b8f610100527f7f605a6000536060,0x160] |
|
||||||
|
| 449 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 482 | PUSH2 | 3 | 0 |[0x527f6031600153606b60610140527f02536010606060527f0353604560610120] |
|
||||||
|
| 485 | MSTORE | 6 | 0 |[0x527f6031600153606b60610140527f02536010606060527f0353604560610120,0x180] |
|
||||||
|
| 486 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 519 | PUSH2 | 3 | 0 |[0x527f04536060600553600160608052610160527f7e527f600653606060075360] |
|
||||||
|
| 522 | MSTORE | 6 | 0 |[0x527f04536060600553600160608052610160527f7e527f600653606060075360,0x1a0] |
|
||||||
|
| 523 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 556 | PUSH2 | 3 | 0 |[0x2600853606080610140527f527f556009536060610180527f600a53600160a0] |
|
||||||
|
| 559 | MSTORE | 6 | 0 |[0x2600853606080610140527f527f556009536060610180527f600a53600160a0,0x1c0] |
|
||||||
|
| 560 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 593 | PUSH2 | 3 | 0 |[0x527f600b536060600c6020527f53600060610160527f0d53606101a0527f5560] |
|
||||||
|
| 596 | MSTORE | 6 | 0 |[0x527f600b536060600c6020527f53600060610160527f0d53606101a0527f5560,0x1e0] |
|
||||||
|
| 597 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 630 | PUSH2 | 3 | 0 |[0xe60a0527f536060600f536060c0527f01601053606060115360026101806101] |
|
||||||
|
| 633 | MSTORE | 6 | 0 |[0xe60a0527f536060600f536060c0527f01601053606060115360026101806101,0x200] |
|
||||||
|
| 634 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 667 | PUSH2 | 3 | 0 |[0xc0527f527f601253606040527f55601353606060c0527f60145360e0527f6000] |
|
||||||
|
| 670 | MSTORE | 6 | 0 |[0xc0527f527f601253606040527f55601353606060c0527f60145360e0527f6000,0x220] |
|
||||||
|
| 671 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 704 | PUSH2 | 3 | 0 |[0x6015536101e0527f60606101a0527f601653600060175360f360185360196060] |
|
||||||
|
| 707 | MSTORE | 6 | 0 |[0x6015536101e0527f60606101a0527f601653600060175360f360185360196060,0x240] |
|
||||||
|
| 708 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 741 | PUSH2 | 3 | 0 |[0x605260006060e052610200527f610100527f7f806101c0527f5360f360815360] |
|
||||||
|
| 744 | MSTORE | 6 | 0 |[0x605260006060e052610200527f610100527f7f806101c0527f5360f360815360,0x260] |
|
||||||
|
| 745 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 778 | PUSH2 | 3 | 0 |[0x8260006000f060006000600060610220527e845af450506000600061016101e0] |
|
||||||
|
| 781 | MSTORE | 6 | 0 |[0x8260006000f060006000600060610220527e845af450506000600061016101e0,0x280] |
|
||||||
|
| 782 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 815 | PUSH2 | 3 | 0 |[0x527f20527f60610100527e600060006003610240527f5af15060005450c76000] |
|
||||||
|
| 818 | MSTORE | 6 | 0 |[0x527f20527f60610100527e600060006003610240527f5af15060005450c76000,0x2a0] |
|
||||||
|
| 819 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 852 | PUSH2 | 3 | 0 |[0x6002551309f562610200527f66a486610140527f6b00610260527f1d45716101] |
|
||||||
|
| 855 | MSTORE | 7 | 0 |[0x6002551309f562610200527f66a486610140527f6b00610260527f1d45716101,0x2c0] |
|
||||||
|
| 856 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 889 | PUSH2 | 3 | 0 |[0x20527f600054501c641d373c7f60045450610220527f6000600155610280527f] |
|
||||||
|
| 892 | MSTORE | 6 | 0 |[0x20527f600054501c641d373c7f60045450610220527f6000600155610280527f,0x2e0] |
|
||||||
|
| 893 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 926 | PUSH2 | 3 | 0 |[0x600554610160527f50600160025560085450610140527f60006002610240527f] |
|
||||||
|
| 929 | MSTORE | 6 | 0 |[0x600554610160527f50600160025560085450610140527f60006002610240527f,0x300] |
|
||||||
|
| 930 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 963 | PUSH2 | 3 | 0 |[0x6102a0527f557fd86000606000527e600060610180527e600060005af1508612] |
|
||||||
|
| 966 | MSTORE | 6 | 0 |[0x6102a0527f557fd86000606000527e600060610180527e600060005af1508612,0x320] |
|
||||||
|
| 967 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1000 | PUSH2 | 3 | 0 |[0x17145147356102c0527f610260527f610160527f5198a37e127a7efa7c600052] |
|
||||||
|
| 1003 | MSTORE | 6 | 0 |[0x17145147356102c0527f610260527f610160527f5198a37e127a7efa7c600052,0x340] |
|
||||||
|
| 1004 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1037 | PUSH2 | 3 | 0 |[0x6101a0527f606020527f6102e0527f6060205360610280527ff760215360ff60] |
|
||||||
|
| 1040 | MSTORE | 6 | 0 |[0x6101a0527f606020527f6102e0527f6060205360610280527ff760215360ff60,0x360] |
|
||||||
|
| 1041 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1074 | PUSH2 | 3 | 0 |[0x225360610180527fdb602353603760610300527f6101c0527f24536075606102] |
|
||||||
|
| 1077 | MSTORE | 6 | 0 |[0x225360610180527fdb602353603760610300527f6101c0527f24536075606102,0x380] |
|
||||||
|
| 1078 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1111 | PUSH2 | 3 | 0 |[0xa0527f2553609f606040527f265360fe60275360610320527f8f60286101a052] |
|
||||||
|
| 1114 | MSTORE | 6 | 0 |[0xa0527f2553609f606040527f265360fe60275360610320527f8f60286101a052,0x3a0] |
|
||||||
|
| 1115 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1148 | PUSH2 | 3 | 0 |[0x7f53606101e0527f6102c0527f0b6029536060602a53600060610340527f2b53] |
|
||||||
|
| 1151 | MSTORE | 6 | 0 |[0x7f53606101e0527f6102c0527f0b6029536060602a53600060610340527f2b53,0x3c0] |
|
||||||
|
| 1152 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1185 | PUSH2 | 3 | 0 |[0x6060602c53606052606060805360006061016102e0527f610200527fc0526103] |
|
||||||
|
| 1188 | MSTORE | 7 | 0 |[0x6060602c53606052606060805360006061016102e0527f610200527fc0526103,0x3e0] |
|
||||||
|
| 1189 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1222 | PUSH2 | 3 | 0 |[0x60527f7f81536060608253602d6083536053608453606060855360fd61030052] |
|
||||||
|
| 1225 | MSTORE | 6 | 0 |[0x60527f7f81536060608253602d6083536053608453606060855360fd61030052,0x400] |
|
||||||
|
| 1226 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1259 | PUSH2 | 3 | 0 |[0x7f6086610380527f536060610220527f6087536101e0527f602e608853605360] |
|
||||||
|
| 1262 | MSTORE | 6 | 0 |[0x7f6086610380527f536060610220527f6087536101e0527f602e608853605360,0x420] |
|
||||||
|
| 1263 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1296 | PUSH2 | 3 | 0 |[0x89536060608a61036103a0527f20527f53602f608b536060608c610240527f53] |
|
||||||
|
| 1299 | MSTORE | 6 | 0 |[0x89536060608a61036103a0527f20527f53602f608b536060608c610240527f53,0x440] |
|
||||||
|
| 1300 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1333 | PUSH2 | 3 | 0 |[0x6000608d5360f36102005260606103c0527f610220610340527f53608e610221] |
|
||||||
|
| 1336 | MSTORE | 6 | 0 |[0x6000608d5360f36102005260606103c0527f610220610340527f53608e610221,0x460] |
|
||||||
|
| 1337 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1370 | PUSH2 | 3 | 0 |[0x536053610222536060610260527f610223536103e0527f600061022453606061] |
|
||||||
|
| 1373 | MSTORE | 6 | 0 |[0x536053610222536060610260527f610223536103e0527f600061022453606061,0x480] |
|
||||||
|
| 1374 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1407 | PUSH2 | 3 | 0 |[0x360527f61022553608f61022653606061022753600061610400527f02610280] |
|
||||||
|
| 1410 | MSTORE | 6 | 0 |[0x360527f61022553608f61022653606061022753600061610400527f02610280,0x4a0] |
|
||||||
|
| 1411 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1444 | PUSH2 | 3 | 0 |[0x527f28536060610229610380527f53600061022a5360f561022b536061042052] |
|
||||||
|
| 1447 | MSTORE | 6 | 0 |[0x527f28536060610229610380527f53600061022a5360f561022b536061042052,0x4c0] |
|
||||||
|
| 1448 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1481 | PUSH2 | 3 | 0 |[0x7f6061022c53600061022d536102a0527f60606103a0527f61022e5360006102] |
|
||||||
|
| 1484 | MSTORE | 7 | 0 |[0x7f6061022c53600061022d536102a0527f60606103a0527f61022e5360006102,0x4e0] |
|
||||||
|
| 1485 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1518 | PUSH2 | 3 | 0 |[0x2f610440527f53606061023053600061023153606061023253600061026103c0] |
|
||||||
|
| 1521 | MSTORE | 6 | 0 |[0x2f610440527f53606061023053600061023153606061023253600061026103c0,0x500] |
|
||||||
|
| 1522 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1555 | PUSH2 | 3 | 0 |[0x527fc0527f61610460527f023353606061023453600061023553608561023653] |
|
||||||
|
| 1558 | MSTORE | 6 | 0 |[0x527fc0527f61610460527f023353606061023453600061023553608561023653,0x520] |
|
||||||
|
| 1559 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1592 | PUSH2 | 3 | 0 |[0x605a61023753606103e052610480527f7ff261026102e0526038610300536053] |
|
||||||
|
| 1595 | MSTORE | 6 | 0 |[0x605a61023753606103e052610480527f7ff261026102e0526038610300536053,0x540] |
|
||||||
|
| 1596 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1629 | PUSH2 | 3 | 0 |[0x610301536060610302536050610303536104a0527f60610400527f6161030453] |
|
||||||
|
| 1632 | MSTORE | 6 | 0 |[0x610301536060610302536050610303536104a0527f60610400527f6161030453,0x560] |
|
||||||
|
| 1633 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1666 | PUSH2 | 3 | 0 |[0x6002610305536039610306536053610307536060616104c0527f030853605061] |
|
||||||
|
| 1669 | MSTORE | 6 | 0 |[0x6002610305536039610306536053610307536060616104c0527f030853605061,0x580] |
|
||||||
|
| 1670 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1703 | PUSH2 | 3 | 0 |[0x610420527f030953606161030a53600261030b53603a61030c536104e0527f60] |
|
||||||
|
| 1706 | MSTORE | 7 | 0 |[0x610420527f030953606161030a53600261030b53603a61030c536104e0527f60,0x5a0] |
|
||||||
|
| 1707 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1740 | PUSH2 | 3 | 0 |[0x5361030d53606161030e610440527f53600261030f53603b6103105360606161] |
|
||||||
|
| 1743 | MSTORE | 6 | 0 |[0x5361030d53606161030e610440527f53600261030f53603b6103105360606161,0x5c0] |
|
||||||
|
| 1744 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1777 | PUSH2 | 3 | 0 |[0x500527f03115360006103125360f36103135361610460526003610480536014] |
|
||||||
|
| 1780 | MSTORE | 6 | 0 |[0x500527f03115360006103125360f36103135361610460526003610480536014,0x5e0] |
|
||||||
|
| 1781 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1814 | PUSH2 | 3 | 0 |[0x61048153610520527f6060610482536000610483536060610484536000610485] |
|
||||||
|
| 1817 | MSTORE | 6 | 0 |[0x61048153610520527f6060610482536000610483536060610484536000610485,0x600] |
|
||||||
|
| 1818 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1851 | PUSH2 | 3 | 0 |[0x5360f0610486536060610540527f610487536000610488536060610489536000] |
|
||||||
|
| 1854 | MSTORE | 6 | 0 |[0x5360f0610486536060610540527f610487536000610488536060610489536000,0x620] |
|
||||||
|
| 1855 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1888 | PUSH2 | 3 | 0 |[0x61048a53606061048b5360006104610560527f8c53606061048d53600061048e] |
|
||||||
|
| 1891 | MSTORE | 7 | 0 |[0x61048a53606061048b5360006104610560527f8c53606061048d53600061048e,0x640] |
|
||||||
|
| 1892 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1925 | PUSH2 | 3 | 0 |[0x53608461048f53605a6104905360f4610491536105805260606105a053605061] |
|
||||||
|
| 1928 | MSTORE | 6 | 0 |[0x53608461048f53605a6104905360f4610491536105805260606105a053605061,0x660] |
|
||||||
|
| 1929 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1962 | PUSH2 | 3 | 0 |[0x5a15360616105a25360046105a35360926105a45360536105a55360606105a6] |
|
||||||
|
| 1965 | MSTORE | 6 | 0 |[0x5a15360616105a25360046105a35360926105a45360536105a55360606105a6,0x680] |
|
||||||
|
| 1966 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1999 | PUSH2 | 3 | 0 |[0x5360506105a75360616105a85360046105a95360936105aa5360536105ab5360] |
|
||||||
|
| 2002 | MSTORE | 6 | 0 |[0x5360506105a75360616105a85360046105a95360936105aa5360536105ab5360,0x6a0] |
|
||||||
|
| 2003 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 2036 | PUSH2 | 3 | 0 |[0x616105ac5360046105ad5360946105ae5360606105af5360006105b05360f361] |
|
||||||
|
| 2039 | MSTORE | 6 | 0 |[0x616105ac5360046105ad5360946105ae5360606105af5360006105b05360f361,0x6c0] |
|
||||||
|
| 2040 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2042 | PUSH2 | 3 | 0 | [0x5] |
|
||||||
|
| 2045 | MSTORE8 | 7 | 0 |[0x5,0x6e0] |
|
||||||
|
| 2046 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2048 | PUSH2 | 3 | 0 | [0xb1] |
|
||||||
|
| 2051 | MSTORE8 | 3 | 0 |[0xb1,0x6e1] |
|
||||||
|
| 2052 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2054 | PUSH2 | 3 | 0 | [0x53] |
|
||||||
|
| 2057 | MSTORE8 | 3 | 0 |[0x53,0x6e2] |
|
||||||
|
| 2058 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2060 | PUSH2 | 3 | 0 | [0x60] |
|
||||||
|
| 2063 | MSTORE8 | 3 | 0 |[0x60,0x6e3] |
|
||||||
|
| 2064 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2066 | PUSH2 | 3 | 0 | [0x0] |
|
||||||
|
| 2069 | MSTORE8 | 3 | 0 |[0x0,0x6e4] |
|
||||||
|
| 2070 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2072 | PUSH2 | 3 | 0 | [0x61] |
|
||||||
|
| 2075 | MSTORE8 | 3 | 0 |[0x61,0x6e5] |
|
||||||
|
| 2076 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2078 | PUSH2 | 3 | 0 | [0x5] |
|
||||||
|
| 2081 | MSTORE8 | 3 | 0 |[0x5,0x6e6] |
|
||||||
|
| 2082 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2084 | PUSH2 | 3 | 0 | [0xb2] |
|
||||||
|
| 2087 | MSTORE8 | 3 | 0 |[0xb2,0x6e7] |
|
||||||
|
| 2088 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2090 | PUSH2 | 3 | 0 | [0x60] |
|
||||||
|
| 2093 | MSTORE8 | 3 | 0 |[0x60,0x6e8] |
|
||||||
|
| 2094 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2096 | PUSH2 | 3 | 0 | [0x0] |
|
||||||
|
| 2099 | MSTORE8 | 3 | 0 |[0x0,0x6e9] |
|
||||||
|
| 2100 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2102 | PUSH2 | 3 | 0 | [0x60] |
|
||||||
|
| 2105 | MSTORE8 | 3 | 0 |[0x60,0x6ea] |
|
||||||
|
| 2106 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2108 | PUSH2 | 3 | 0 | [0x0] |
|
||||||
|
| 2111 | MSTORE8 | 3 | 0 |[0x0,0x6eb] |
|
||||||
|
| 2112 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2114 | PUSH2 | 3 | 0 | [0xf5] |
|
||||||
|
| 2117 | MSTORE8 | 3 | 0 |[0xf5,0x6ec] |
|
||||||
|
| 2118 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2120 | PUSH2 | 3 | 0 | [0x60] |
|
||||||
|
| 2123 | MSTORE8 | 3 | 0 |[0x60,0x6ed] |
|
||||||
|
| 2124 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2126 | PUSH2 | 3 | 0 | [0x0] |
|
||||||
|
| 2129 | MSTORE8 | 3 | 0 |[0x0,0x6ee] |
|
||||||
|
| 2130 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2132 | PUSH2 | 3 | 0 | [0x60] |
|
||||||
|
| 2135 | MSTORE8 | 3 | 0 |[0x60,0x6ef] |
|
||||||
|
| 2136 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2138 | PUSH2 | 3 | 0 | [0x0] |
|
||||||
|
| 2141 | MSTORE8 | 3 | 0 |[0x0,0x6f0] |
|
||||||
|
| 2142 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2144 | PUSH2 | 3 | 0 | [0x60] |
|
||||||
|
| 2147 | MSTORE8 | 3 | 0 |[0x60,0x6f1] |
|
||||||
|
| 2148 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2150 | PUSH2 | 3 | 0 | [0x0] |
|
||||||
|
| 2153 | MSTORE8 | 3 | 0 |[0x0,0x6f2] |
|
||||||
|
| 2154 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2156 | PUSH2 | 3 | 0 | [0x60] |
|
||||||
|
| 2159 | MSTORE8 | 3 | 0 |[0x60,0x6f3] |
|
||||||
|
| 2160 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2162 | PUSH2 | 3 | 0 | [0x0] |
|
||||||
|
| 2165 | MSTORE8 | 3 | 0 |[0x0,0x6f4] |
|
||||||
|
| 2166 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2168 | PUSH2 | 3 | 0 | [0x60] |
|
||||||
|
| 2171 | MSTORE8 | 3 | 0 |[0x60,0x6f5] |
|
||||||
|
| 2172 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2174 | PUSH2 | 3 | 0 | [0x0] |
|
||||||
|
| 2177 | MSTORE8 | 3 | 0 |[0x0,0x6f6] |
|
||||||
|
| 2178 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2180 | PUSH2 | 3 | 0 | [0x85] |
|
||||||
|
| 2183 | MSTORE8 | 3 | 0 |[0x85,0x6f7] |
|
||||||
|
| 2184 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2186 | PUSH2 | 3 | 0 | [0x5a] |
|
||||||
|
| 2189 | MSTORE8 | 3 | 0 |[0x5a,0x6f8] |
|
||||||
|
| 2190 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2192 | PUSH2 | 3 | 0 | [0xf1] |
|
||||||
|
| 2195 | MSTORE8 | 3 | 0 |[0xf1,0x6f9] |
|
||||||
|
| 2196 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2198 | PUSH2 | 3 | 0 | [0x50] |
|
||||||
|
| 2201 | MSTORE8 | 3 | 0 |[0x50,0x6fa] |
|
||||||
|
| 2202 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2204 | PUSH2 | 3 | 0 | [0x50] |
|
||||||
|
| 2207 | MSTORE8 | 3 | 0 |[0x50,0x6fb] |
|
||||||
|
| 2208 | PUSH2 | 3 | 0 | [] |
|
||||||
|
| 2211 | PUSH1 | 3 | 0 | [0x6fc] |
|
||||||
|
| 2213 | RETURN | 0 | 0 |[0x6fc,0x0] |
|
||||||
|
| 2605 | PUSH1 | 3 | 0 |[0x7dce2faf43218578e3fcf2ad22df9918a89e2fba] |
|
||||||
|
| 2607 | PUSH1 | 3 | 0 |[0x7dce2faf43218578e3fcf2ad22df9918a89e2fba,0x0] |
|
||||||
|
| 2609 | PUSH1 | 3 | 0 |[0x7dce2faf43218578e3fcf2ad22df9918a89e2fba,0x0,0x0] |
|
||||||
|
| 2611 | PUSH1 | 3 | 0 |[0x7dce2faf43218578e3fcf2ad22df9918a89e2fba,0x0,0x0,0x0] |
|
||||||
|
| 2613 | PUSH1 | 3 | 0 |[0x7dce2faf43218578e3fcf2ad22df9918a89e2fba,0x0,0x0,0x0,0x0] |
|
||||||
|
| 2615 | DUP6 | 3 | 0 |[0x7dce2faf43218578e3fcf2ad22df9918a89e2fba,0x0,0x0,0x0,0x0,0x0] |
|
||||||
|
| 2616 | GAS | 2 | 0 |[0x7dce2faf43218578e3fcf2ad22df9918a89e2fba,0x0,0x0,0x0,0x0,0x0,0x7dce2faf43218578e3fcf2ad22df9918a89e2fba] |
|
||||||
|
| 2617 | CALL | 295218 | 0 |[0x7dce2faf43218578e3fcf2ad22df9918a89e2fba,0x0,0x0,0x0,0x0,0x0,0x7dce2faf43218578e3fcf2ad22df9918a89e2fba,0x4937e] |
|
||||||
|
| 0 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 33 | PUSH1 | 3 | 0 |[0x6008545060006004557f600160045560006004556000600060006000600060f9] |
|
||||||
|
| 35 | MSTORE | 6 | 0 |[0x6008545060006004557f600160045560006004556000600060006000600060f9,0x0] |
|
||||||
|
| 36 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 69 | PUSH1 | 3 | 0 |[0x5af250600060006000606000527e60f45af4506000600060006000600060f55a] |
|
||||||
|
| 71 | MSTORE | 6 | 0 |[0x5af250600060006000606000527e60f45af4506000600060006000600060f55a,0x20] |
|
||||||
|
| 72 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 105 | PUSH1 | 3 | 0 |[0xf150f001075205846a44a283446020527f8ca2600060006000600060045af450] |
|
||||||
|
| 107 | MSTORE | 6 | 0 |[0xf150f001075205846a44a283446020527f8ca2600060006000600060045af450,0x40] |
|
||||||
|
| 108 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 141 | PUSH1 | 3 | 0 |[0x519930847f3b631c54a49b5f60035450326040527f77306b6000600060006000] |
|
||||||
|
| 143 | MSTORE | 6 | 0 |[0x519930847f3b631c54a49b5f60035450326040527f77306b6000600060006000,0x60] |
|
||||||
|
| 144 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 177 | PUSH1 | 3 | 0 |[0x6000600c5af150600060006000600060f85af450506060527f06600160025560] |
|
||||||
|
| 179 | MSTORE | 6 | 0 |[0x6000600c5af150600060006000600060f85af450506060527f06600160025560,0x80] |
|
||||||
|
| 180 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 213 | PUSH1 | 3 | 0 |[0x35450600060005560006001556c3394fff4607f7f1684317b6080527f387b9f] |
|
||||||
|
| 215 | MSTORE | 6 | 0 |[0x35450600060005560006001556c3394fff4607f7f1684317b6080527f387b9f,0xa0] |
|
||||||
|
| 216 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 249 | PUSH1 | 3 | 0 |[0x1920700184809d60015450011899016e6009ff60026001556000527f9f60a052] |
|
||||||
|
| 251 | MSTORE | 6 | 0 |[0x1920700184809d60015450011899016e6009ff60026001556000527f9f60a052,0xc0] |
|
||||||
|
| 252 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 285 | PUSH1 | 3 | 0 |[0x7f6000527f9981600160045582600eff600060006000600060f65af450600060] |
|
||||||
|
| 287 | MSTORE | 6 | 0 |[0x7f6000527f9981600160045582600eff600060006000600060f65af450600060,0xe0] |
|
||||||
|
| 288 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 321 | PUSH2 | 3 | 0 |[0x6060c0527f20527e600060006020527f60f75af4501d7f190316666000600060] |
|
||||||
|
| 324 | MSTORE | 6 | 0 |[0x6060c0527f20527e600060006020527f60f75af4501d7f190316666000600060,0x100] |
|
||||||
|
| 325 | PUSH31 | 3 | 0 | [] |
|
||||||
|
| 357 | PUSH2 | 3 | 0 |[0x6000600060e0527f60046040527f5af1506000600060006040527f60006009] |
|
||||||
|
| 360 | MSTORE | 6 | 0 |[0x6000600060e0527f60046040527f5af1506000600060006040527f60006009,0x120] |
|
||||||
|
| 361 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 394 | PUSH2 | 3 | 0 |[0x5af4503c95138e5b8f610100527f7f605a6000536060527f6031600153606b60] |
|
||||||
|
| 397 | MSTORE | 6 | 0 |[0x5af4503c95138e5b8f610100527f7f605a6000536060527f6031600153606b60,0x140] |
|
||||||
|
| 398 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 431 | PUSH2 | 3 | 0 |[0x2536010606060527f0353604560610120527f04536060600553600160608052] |
|
||||||
|
| 434 | MSTORE | 6 | 0 |[0x2536010606060527f0353604560610120527f04536060600553600160608052,0x160] |
|
||||||
|
| 435 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 468 | PUSH2 | 3 | 0 |[0x7e527f60065360606007536002600853606080610140527f527f556009536060] |
|
||||||
|
| 471 | MSTORE | 6 | 0 |[0x7e527f60065360606007536002600853606080610140527f527f556009536060,0x180] |
|
||||||
|
| 472 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 505 | PUSH2 | 3 | 0 |[0x600a53600160a0527f600b536060600c6020527f53600060610160527f0d5360] |
|
||||||
|
| 508 | MSTORE | 6 | 0 |[0x600a53600160a0527f600b536060600c6020527f53600060610160527f0d5360,0x1a0] |
|
||||||
|
| 509 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 542 | PUSH2 | 3 | 0 |[0x55600e60a0527f536060600f536060c0527f0160105360606011536002610180] |
|
||||||
|
| 545 | MSTORE | 6 | 0 |[0x55600e60a0527f536060600f536060c0527f0160105360606011536002610180,0x1c0] |
|
||||||
|
| 546 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 579 | PUSH2 | 3 | 0 |[0x527f601253606040527f55601353606060c0527f60145360e0527f6000601553] |
|
||||||
|
| 582 | MSTORE | 6 | 0 |[0x527f601253606040527f55601353606060c0527f60145360e0527f6000601553,0x1e0] |
|
||||||
|
| 583 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 616 | PUSH2 | 3 | 0 |[0x60606101a0527f601653600060175360f360185360196060605260006060e052] |
|
||||||
|
| 619 | MSTORE | 6 | 0 |[0x60606101a0527f601653600060175360f360185360196060605260006060e052,0x200] |
|
||||||
|
| 620 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 653 | PUSH2 | 3 | 0 |[0x610100527f7f806101c0527f5360f3608153608260006000f060006000600060] |
|
||||||
|
| 656 | MSTORE | 6 | 0 |[0x610100527f7f806101c0527f5360f3608153608260006000f060006000600060,0x220] |
|
||||||
|
| 657 | PUSH31 | 3 | 0 | [] |
|
||||||
|
| 689 | PUSH2 | 3 | 0 |[0x845af450506000600061016101e0527f20527f60610100527e600060006003] |
|
||||||
|
| 692 | MSTORE | 6 | 0 |[0x845af450506000600061016101e0527f20527f60610100527e600060006003,0x240] |
|
||||||
|
| 693 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 726 | PUSH2 | 3 | 0 |[0x5af15060005450c760006002551309f562610200527f66a486610140527f6b00] |
|
||||||
|
| 729 | MSTORE | 6 | 0 |[0x5af15060005450c760006002551309f562610200527f66a486610140527f6b00,0x260] |
|
||||||
|
| 730 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 763 | PUSH2 | 3 | 0 |[0x1d4571610120527f600054501c641d373c7f60045450610220527f6000600155] |
|
||||||
|
| 766 | MSTORE | 6 | 0 |[0x1d4571610120527f600054501c641d373c7f60045450610220527f6000600155,0x280] |
|
||||||
|
| 767 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 800 | PUSH2 | 3 | 0 |[0x600554610160527f50600160025560085450610140527f60006002610240527f] |
|
||||||
|
| 803 | MSTORE | 6 | 0 |[0x600554610160527f50600160025560085450610140527f60006002610240527f,0x2a0] |
|
||||||
|
| 804 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 837 | PUSH2 | 3 | 0 |[0x557fd86000606000527e600060610180527e600060005af15086121714514735] |
|
||||||
|
| 840 | MSTORE | 7 | 0 |[0x557fd86000606000527e600060610180527e600060005af15086121714514735,0x2c0] |
|
||||||
|
| 841 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 874 | PUSH2 | 3 | 0 |[0x610260527f610160527f5198a37e127a7efa7c6000526101a0527f606020527f] |
|
||||||
|
| 877 | MSTORE | 6 | 0 |[0x610260527f610160527f5198a37e127a7efa7c6000526101a0527f606020527f,0x2e0] |
|
||||||
|
| 878 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 911 | PUSH2 | 3 | 0 |[0x6060205360610280527ff760215360ff60225360610180527fdb602353603760] |
|
||||||
|
| 914 | MSTORE | 6 | 0 |[0x6060205360610280527ff760215360ff60225360610180527fdb602353603760,0x300] |
|
||||||
|
| 915 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 948 | PUSH2 | 3 | 0 |[0x6101c0527f24536075606102a0527f2553609f606040527f265360fe60275360] |
|
||||||
|
| 951 | MSTORE | 6 | 0 |[0x6101c0527f24536075606102a0527f2553609f606040527f265360fe60275360,0x320] |
|
||||||
|
| 952 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 985 | PUSH2 | 3 | 0 |[0x8f60286101a0527f53606101e0527f6102c0527f0b6029536060602a53600060] |
|
||||||
|
| 988 | MSTORE | 6 | 0 |[0x8f60286101a0527f53606101e0527f6102c0527f0b6029536060602a53600060,0x340] |
|
||||||
|
| 989 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1022 | PUSH2 | 3 | 0 |[0x2b536060602c53606052606060805360006061016102e0527f610200527fc052] |
|
||||||
|
| 1025 | MSTORE | 6 | 0 |[0x2b536060602c53606052606060805360006061016102e0527f610200527fc052,0x360] |
|
||||||
|
| 1026 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1059 | PUSH2 | 3 | 0 |[0x7f81536060608253602d6083536053608453606060855360fd610300527f6086] |
|
||||||
|
| 1062 | MSTORE | 6 | 0 |[0x7f81536060608253602d6083536053608453606060855360fd610300527f6086,0x380] |
|
||||||
|
| 1063 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1096 | PUSH2 | 3 | 0 |[0x536060610220527f6087536101e0527f602e60885360536089536060608a6103] |
|
||||||
|
| 1099 | MSTORE | 6 | 0 |[0x536060610220527f6087536101e0527f602e60885360536089536060608a6103,0x3a0] |
|
||||||
|
| 1100 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1133 | PUSH2 | 3 | 0 |[0x20527f53602f608b536060608c610240527f536000608d5360f3610200526060] |
|
||||||
|
| 1136 | MSTORE | 6 | 0 |[0x20527f53602f608b536060608c610240527f536000608d5360f3610200526060,0x3c0] |
|
||||||
|
| 1137 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1170 | PUSH2 | 3 | 0 |[0x610220610340527f53608e610221536053610222536060610260527f61022353] |
|
||||||
|
| 1173 | MSTORE | 7 | 0 |[0x610220610340527f53608e610221536053610222536060610260527f61022353,0x3e0] |
|
||||||
|
| 1174 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1207 | PUSH2 | 3 | 0 |[0x6000610224536060610360527f61022553608f61022653606061022753600061] |
|
||||||
|
| 1210 | MSTORE | 6 | 0 |[0x6000610224536060610360527f61022553608f61022653606061022753600061,0x400] |
|
||||||
|
| 1211 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1244 | PUSH2 | 3 | 0 |[0x2610280527f28536060610229610380527f53600061022a5360f561022b5360] |
|
||||||
|
| 1247 | MSTORE | 6 | 0 |[0x2610280527f28536060610229610380527f53600061022a5360f561022b5360,0x420] |
|
||||||
|
| 1248 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1281 | PUSH2 | 3 | 0 |[0x6061022c53600061022d536102a0527f60606103a0527f61022e53600061022f] |
|
||||||
|
| 1284 | MSTORE | 6 | 0 |[0x6061022c53600061022d536102a0527f60606103a0527f61022e53600061022f,0x440] |
|
||||||
|
| 1285 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1318 | PUSH2 | 3 | 0 |[0x53606061023053600061023153606061023253600061026103c0527fc0527f61] |
|
||||||
|
| 1321 | MSTORE | 6 | 0 |[0x53606061023053600061023153606061023253600061026103c0527fc0527f61,0x460] |
|
||||||
|
| 1322 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1355 | PUSH2 | 3 | 0 |[0x23353606061023453600061023553608561023653605a61023753606103e052] |
|
||||||
|
| 1358 | MSTORE | 6 | 0 |[0x23353606061023453600061023553608561023653605a61023753606103e052,0x480] |
|
||||||
|
| 1359 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1392 | PUSH2 | 3 | 0 |[0x7ff261026102e052603861030053605361030153606061030253605061030353] |
|
||||||
|
| 1395 | MSTORE | 6 | 0 |[0x7ff261026102e052603861030053605361030153606061030253605061030353,0x4a0] |
|
||||||
|
| 1396 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1429 | PUSH2 | 3 | 0 |[0x60610400527f6161030453600261030553603961030653605361030753606061] |
|
||||||
|
| 1432 | MSTORE | 6 | 0 |[0x60610400527f6161030453600261030553603961030653605361030753606061,0x4c0] |
|
||||||
|
| 1433 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1466 | PUSH2 | 3 | 0 |[0x30853605061610420527f030953606161030a53600261030b53603a61030c53] |
|
||||||
|
| 1469 | MSTORE | 7 | 0 |[0x30853605061610420527f030953606161030a53600261030b53603a61030c53,0x4e0] |
|
||||||
|
| 1470 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1503 | PUSH2 | 3 | 0 |[0x605361030d53606161030e610440527f53600261030f53603b61031053606061] |
|
||||||
|
| 1506 | MSTORE | 6 | 0 |[0x605361030d53606161030e610440527f53600261030f53603b61031053606061,0x500] |
|
||||||
|
| 1507 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1540 | PUSH2 | 3 | 0 |[0x3115360006103125360f3610313536161046052600361048053601461048153] |
|
||||||
|
| 1543 | MSTORE | 6 | 0 |[0x3115360006103125360f3610313536161046052600361048053601461048153,0x520] |
|
||||||
|
| 1544 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1577 | PUSH2 | 3 | 0 |[0x60606104825360006104835360606104845360006104855360f0610486536060] |
|
||||||
|
| 1580 | MSTORE | 6 | 0 |[0x60606104825360006104835360606104845360006104855360f0610486536060,0x540] |
|
||||||
|
| 1581 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1614 | PUSH2 | 3 | 0 |[0x61048753600061048853606061048953600061048a53606061048b5360006104] |
|
||||||
|
| 1617 | MSTORE | 6 | 0 |[0x61048753600061048853606061048953600061048a53606061048b5360006104,0x560] |
|
||||||
|
| 1618 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1651 | PUSH2 | 3 | 0 |[0x8c53606061048d53600061048e53608461048f53605a6104905360f461049153] |
|
||||||
|
| 1654 | MSTORE | 6 | 0 |[0x8c53606061048d53600061048e53608461048f53605a6104905360f461049153,0x580] |
|
||||||
|
| 1655 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1657 | PUSH2 | 3 | 0 | [0x60] |
|
||||||
|
| 1660 | MSTORE8 | 7 | 0 |[0x60,0x5a0] |
|
||||||
|
| 1661 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1663 | PUSH2 | 3 | 0 | [0x50] |
|
||||||
|
| 1666 | MSTORE8 | 3 | 0 |[0x50,0x5a1] |
|
||||||
|
| 1667 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1669 | PUSH2 | 3 | 0 | [0x61] |
|
||||||
|
| 1672 | MSTORE8 | 3 | 0 |[0x61,0x5a2] |
|
||||||
|
| 1673 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1675 | PUSH2 | 3 | 0 | [0x4] |
|
||||||
|
| 1678 | MSTORE8 | 3 | 0 |[0x4,0x5a3] |
|
||||||
|
| 1679 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1681 | PUSH2 | 3 | 0 | [0x92] |
|
||||||
|
| 1684 | MSTORE8 | 3 | 0 |[0x92,0x5a4] |
|
||||||
|
| 1685 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1687 | PUSH2 | 3 | 0 | [0x53] |
|
||||||
|
| 1690 | MSTORE8 | 3 | 0 |[0x53,0x5a5] |
|
||||||
|
| 1691 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1693 | PUSH2 | 3 | 0 | [0x60] |
|
||||||
|
| 1696 | MSTORE8 | 3 | 0 |[0x60,0x5a6] |
|
||||||
|
| 1697 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1699 | PUSH2 | 3 | 0 | [0x50] |
|
||||||
|
| 1702 | MSTORE8 | 3 | 0 |[0x50,0x5a7] |
|
||||||
|
| 1703 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1705 | PUSH2 | 3 | 0 | [0x61] |
|
||||||
|
| 1708 | MSTORE8 | 3 | 0 |[0x61,0x5a8] |
|
||||||
|
| 1709 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1711 | PUSH2 | 3 | 0 | [0x4] |
|
||||||
|
| 1714 | MSTORE8 | 3 | 0 |[0x4,0x5a9] |
|
||||||
|
| 1715 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1717 | PUSH2 | 3 | 0 | [0x93] |
|
||||||
|
| 1720 | MSTORE8 | 3 | 0 |[0x93,0x5aa] |
|
||||||
|
| 1721 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1723 | PUSH2 | 3 | 0 | [0x53] |
|
||||||
|
| 1726 | MSTORE8 | 3 | 0 |[0x53,0x5ab] |
|
||||||
|
| 1727 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1729 | PUSH2 | 3 | 0 | [0x61] |
|
||||||
|
| 1732 | MSTORE8 | 3 | 0 |[0x61,0x5ac] |
|
||||||
|
| 1733 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1735 | PUSH2 | 3 | 0 | [0x4] |
|
||||||
|
| 1738 | MSTORE8 | 3 | 0 |[0x4,0x5ad] |
|
||||||
|
| 1739 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1741 | PUSH2 | 3 | 0 | [0x94] |
|
||||||
|
| 1744 | MSTORE8 | 3 | 0 |[0x94,0x5ae] |
|
||||||
|
| 1745 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1747 | PUSH2 | 3 | 0 | [0x60] |
|
||||||
|
| 1750 | MSTORE8 | 3 | 0 |[0x60,0x5af] |
|
||||||
|
| 1751 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1753 | PUSH2 | 3 | 0 | [0x0] |
|
||||||
|
| 1756 | MSTORE8 | 3 | 0 |[0x0,0x5b0] |
|
||||||
|
| 1757 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1759 | PUSH2 | 3 | 0 | [0xf3] |
|
||||||
|
| 1762 | MSTORE8 | 3 | 0 |[0xf3,0x5b1] |
|
||||||
|
| 1763 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1765 | PUSH2 | 3 | 0 | [0x0] |
|
||||||
|
| 1768 | PUSH1 | 3 | 0 |[0x0,0x5b2] |
|
||||||
|
| 1770 | PUSH1 | 3 | 0 |[0x0,0x5b2,0x0] |
|
||||||
|
| 1772 | CREATE2 | 32276 | 0 |[0x0,0x5b2,0x0,0x0] |
|
||||||
|
| 0 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2 | SLOAD | 2100 | 0 | [0x8] |
|
||||||
|
| 3 | POP | 2 | 0 | [0x0] |
|
||||||
|
| 4 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 6 | PUSH1 | 3 | 0 | [0x0] |
|
||||||
|
| 8 | SSTORE | 2200 | 0 | [0x0,0x4] |
|
||||||
|
| 9 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 42 | PUSH1 | 3 | 0 |[0x600160045560006004556000600060006000600060f95af25060006000600060] |
|
||||||
|
| 44 | MSTORE | 6 | 0 |[0x600160045560006004556000600060006000600060f95af25060006000600060,0x0] |
|
||||||
|
| 45 | PUSH31 | 3 | 0 | [] |
|
||||||
|
| 77 | PUSH1 | 3 | 0 |[0x60f45af4506000600060006000600060f55af150f001075205846a44a28344] |
|
||||||
|
| 79 | MSTORE | 6 | 0 |[0x60f45af4506000600060006000600060f55af150f001075205846a44a28344,0x20] |
|
||||||
|
| 80 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 113 | PUSH1 | 3 | 0 |[0x8ca2600060006000600060045af450519930847f3b631c54a49b5f6003545032] |
|
||||||
|
| 115 | MSTORE | 6 | 0 |[0x8ca2600060006000600060045af450519930847f3b631c54a49b5f6003545032,0x40] |
|
||||||
|
| 116 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 149 | PUSH1 | 3 | 0 |[0x77306b60006000600060006000600c5af150600060006000600060f85af45050] |
|
||||||
|
| 151 | MSTORE | 6 | 0 |[0x77306b60006000600060006000600c5af150600060006000600060f85af45050,0x60] |
|
||||||
|
| 152 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 185 | PUSH1 | 3 | 0 |[0x6600160025560035450600060005560006001556c3394fff4607f7f1684317b] |
|
||||||
|
| 187 | MSTORE | 6 | 0 |[0x6600160025560035450600060005560006001556c3394fff4607f7f1684317b,0x80] |
|
||||||
|
| 188 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 221 | PUSH1 | 3 | 0 |[0x387b9f1920700184809d60015450011899016e6009ff60026001556000527f9f] |
|
||||||
|
| 223 | MSTORE | 6 | 0 |[0x387b9f1920700184809d60015450011899016e6009ff60026001556000527f9f,0xa0] |
|
||||||
|
| 224 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 257 | PUSH1 | 3 | 0 |[0x6000527f9981600160045582600eff600060006000600060f65af45060006060] |
|
||||||
|
| 259 | MSTORE | 6 | 0 |[0x6000527f9981600160045582600eff600060006000600060f65af45060006060,0xc0] |
|
||||||
|
| 260 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 293 | PUSH1 | 3 | 0 |[0x20527e600060006020527f60f75af4501d7f1903166660006000600060006000] |
|
||||||
|
| 295 | MSTORE | 6 | 0 |[0x20527e600060006020527f60f75af4501d7f1903166660006000600060006000,0xe0] |
|
||||||
|
| 296 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 329 | PUSH2 | 3 | 0 |[0x60046040527f5af1506000600060006040527f600060095af4503c95138e5b8f] |
|
||||||
|
| 332 | MSTORE | 6 | 0 |[0x60046040527f5af1506000600060006040527f600060095af4503c95138e5b8f,0x100] |
|
||||||
|
| 333 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 366 | PUSH2 | 3 | 0 |[0x7f605a6000536060527f6031600153606b6002536010606060527f0353604560] |
|
||||||
|
| 369 | MSTORE | 6 | 0 |[0x7f605a6000536060527f6031600153606b6002536010606060527f0353604560,0x120] |
|
||||||
|
| 370 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 403 | PUSH2 | 3 | 0 |[0x45360606005536001606080527e527f60065360606007536002600853606080] |
|
||||||
|
| 406 | MSTORE | 6 | 0 |[0x45360606005536001606080527e527f60065360606007536002600853606080,0x140] |
|
||||||
|
| 407 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 440 | PUSH2 | 3 | 0 |[0x527f556009536060600a53600160a0527f600b536060600c6020527f53600060] |
|
||||||
|
| 443 | MSTORE | 6 | 0 |[0x527f556009536060600a53600160a0527f600b536060600c6020527f53600060,0x160] |
|
||||||
|
| 444 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 477 | PUSH2 | 3 | 0 |[0xd536055600e60a0527f536060600f536060c0527f0160105360606011536002] |
|
||||||
|
| 480 | MSTORE | 6 | 0 |[0xd536055600e60a0527f536060600f536060c0527f0160105360606011536002,0x180] |
|
||||||
|
| 481 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 514 | PUSH2 | 3 | 0 |[0x601253606040527f55601353606060c0527f60145360e0527f60006015536060] |
|
||||||
|
| 517 | MSTORE | 6 | 0 |[0x601253606040527f55601353606060c0527f60145360e0527f60006015536060,0x1a0] |
|
||||||
|
| 518 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 551 | PUSH2 | 3 | 0 |[0x601653600060175360f360185360196060605260006060e052610100527f7f80] |
|
||||||
|
| 554 | MSTORE | 6 | 0 |[0x601653600060175360f360185360196060605260006060e052610100527f7f80,0x1c0] |
|
||||||
|
| 555 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 588 | PUSH2 | 3 | 0 |[0x5360f3608153608260006000f06000600060006000845af45050600060006101] |
|
||||||
|
| 591 | MSTORE | 6 | 0 |[0x5360f3608153608260006000f06000600060006000845af45050600060006101,0x1e0] |
|
||||||
|
| 592 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 625 | PUSH2 | 3 | 0 |[0x20527f60610100527e6000600060035af15060005450c760006002551309f562] |
|
||||||
|
| 628 | MSTORE | 6 | 0 |[0x20527f60610100527e6000600060035af15060005450c760006002551309f562,0x200] |
|
||||||
|
| 629 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 662 | PUSH2 | 3 | 0 |[0x66a486610140527f6b001d4571610120527f600054501c641d373c7f60045450] |
|
||||||
|
| 665 | MSTORE | 6 | 0 |[0x66a486610140527f6b001d4571610120527f600054501c641d373c7f60045450,0x220] |
|
||||||
|
| 666 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 699 | PUSH2 | 3 | 0 |[0x6000600155600554610160527f50600160025560085450610140527f60006002] |
|
||||||
|
| 702 | MSTORE | 6 | 0 |[0x6000600155600554610160527f50600160025560085450610140527f60006002,0x240] |
|
||||||
|
| 703 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 736 | PUSH2 | 3 | 0 |[0x557fd86000606000527e600060610180527e600060005af15086121714514735] |
|
||||||
|
| 739 | MSTORE | 6 | 0 |[0x557fd86000606000527e600060610180527e600060005af15086121714514735,0x260] |
|
||||||
|
| 740 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 773 | PUSH2 | 3 | 0 |[0x610160527f5198a37e127a7efa7c6000526101a0527f606020527f6060205360] |
|
||||||
|
| 776 | MSTORE | 6 | 0 |[0x610160527f5198a37e127a7efa7c6000526101a0527f606020527f6060205360,0x280] |
|
||||||
|
| 777 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 810 | PUSH2 | 3 | 0 |[0xf760215360ff60225360610180527fdb6023536037606101c0527f2453607560] |
|
||||||
|
| 813 | MSTORE | 6 | 0 |[0xf760215360ff60225360610180527fdb6023536037606101c0527f2453607560,0x2a0] |
|
||||||
|
| 814 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 847 | PUSH2 | 3 | 0 |[0x2553609f606040527f265360fe602753608f60286101a0527f53606101e0527f] |
|
||||||
|
| 850 | MSTORE | 7 | 0 |[0x2553609f606040527f265360fe602753608f60286101a0527f53606101e0527f,0x2c0] |
|
||||||
|
| 851 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 884 | PUSH2 | 3 | 0 |[0xb6029536060602a536000602b536060602c5360605260606080536000606101] |
|
||||||
|
| 887 | MSTORE | 6 | 0 |[0xb6029536060602a536000602b536060602c5360605260606080536000606101,0x2e0] |
|
||||||
|
| 888 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 921 | PUSH2 | 3 | 0 |[0x610200527fc0527f81536060608253602d6083536053608453606060855360fd] |
|
||||||
|
| 924 | MSTORE | 6 | 0 |[0x610200527fc0527f81536060608253602d6083536053608453606060855360fd,0x300] |
|
||||||
|
| 925 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 958 | PUSH2 | 3 | 0 |[0x6086536060610220527f6087536101e0527f602e60885360536089536060608a] |
|
||||||
|
| 961 | MSTORE | 6 | 0 |[0x6086536060610220527f6087536101e0527f602e60885360536089536060608a,0x320] |
|
||||||
|
| 962 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 995 | PUSH2 | 3 | 0 |[0x53602f608b536060608c610240527f536000608d5360f3610200526060610220] |
|
||||||
|
| 998 | MSTORE | 6 | 0 |[0x53602f608b536060608c610240527f536000608d5360f3610200526060610220,0x340] |
|
||||||
|
| 999 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1032 | PUSH2 | 3 | 0 |[0x53608e610221536053610222536060610260527f610223536000610224536060] |
|
||||||
|
| 1035 | MSTORE | 6 | 0 |[0x53608e610221536053610222536060610260527f610223536000610224536060,0x360] |
|
||||||
|
| 1036 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1069 | PUSH2 | 3 | 0 |[0x61022553608f6102265360606102275360006102610280527f28536060610229] |
|
||||||
|
| 1072 | MSTORE | 6 | 0 |[0x61022553608f6102265360606102275360006102610280527f28536060610229,0x380] |
|
||||||
|
| 1073 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1106 | PUSH2 | 3 | 0 |[0x53600061022a5360f561022b53606061022c53600061022d536102a0527f6060] |
|
||||||
|
| 1109 | MSTORE | 6 | 0 |[0x53600061022a5360f561022b53606061022c53600061022d536102a0527f6060,0x3a0] |
|
||||||
|
| 1110 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1143 | PUSH2 | 3 | 0 |[0x61022e53600061022f5360606102305360006102315360606102325360006102] |
|
||||||
|
| 1146 | MSTORE | 6 | 0 |[0x61022e53600061022f5360606102305360006102315360606102325360006102,0x3c0] |
|
||||||
|
| 1147 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1180 | PUSH2 | 3 | 0 |[0xc0527f61023353606061023453600061023553608561023653605a6102375360] |
|
||||||
|
| 1183 | MSTORE | 7 | 0 |[0xc0527f61023353606061023453600061023553608561023653605a6102375360,0x3e0] |
|
||||||
|
| 1184 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1217 | PUSH2 | 3 | 0 |[0xf261026102e05260386103005360536103015360606103025360506103035360] |
|
||||||
|
| 1220 | MSTORE | 6 | 0 |[0xf261026102e05260386103005360536103015360606103025360506103035360,0x400] |
|
||||||
|
| 1221 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1254 | PUSH2 | 3 | 0 |[0x6161030453600261030553603961030653605361030753606061030853605061] |
|
||||||
|
| 1257 | MSTORE | 6 | 0 |[0x6161030453600261030553603961030653605361030753606061030853605061,0x420] |
|
||||||
|
| 1258 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1291 | PUSH2 | 3 | 0 |[0x30953606161030a53600261030b53603a61030c53605361030d53606161030e] |
|
||||||
|
| 1294 | MSTORE | 6 | 0 |[0x30953606161030a53600261030b53603a61030c53605361030d53606161030e,0x440] |
|
||||||
|
| 1295 | PUSH32 | 3 | 0 | [] |
|
||||||
|
| 1328 | PUSH2 | 3 | 0 |[0x53600261030f53603b6103105360606103115360006103125360f36103135361] |
|
||||||
|
| 1331 | MSTORE | 6 | 0 |[0x53600261030f53603b6103105360606103115360006103125360f36103135361,0x460] |
|
||||||
|
| 1332 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1334 | PUSH2 | 3 | 0 | [0x3] |
|
||||||
|
| 1337 | MSTORE8 | 6 | 0 |[0x3,0x480] |
|
||||||
|
| 1338 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1340 | PUSH2 | 3 | 0 | [0x14] |
|
||||||
|
| 1343 | MSTORE8 | 3 | 0 |[0x14,0x481] |
|
||||||
|
| 1344 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1346 | PUSH2 | 3 | 0 | [0x60] |
|
||||||
|
| 1349 | MSTORE8 | 3 | 0 |[0x60,0x482] |
|
||||||
|
| 1350 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1352 | PUSH2 | 3 | 0 | [0x0] |
|
||||||
|
| 1355 | MSTORE8 | 3 | 0 |[0x0,0x483] |
|
||||||
|
| 1356 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1358 | PUSH2 | 3 | 0 | [0x60] |
|
||||||
|
| 1361 | MSTORE8 | 3 | 0 |[0x60,0x484] |
|
||||||
|
| 1362 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1364 | PUSH2 | 3 | 0 | [0x0] |
|
||||||
|
| 1367 | MSTORE8 | 3 | 0 |[0x0,0x485] |
|
||||||
|
| 1368 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1370 | PUSH2 | 3 | 0 | [0xf0] |
|
||||||
|
| 1373 | MSTORE8 | 3 | 0 |[0xf0,0x486] |
|
||||||
|
| 1374 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1376 | PUSH2 | 3 | 0 | [0x60] |
|
||||||
|
| 1379 | MSTORE8 | 3 | 0 |[0x60,0x487] |
|
||||||
|
| 1380 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1382 | PUSH2 | 3 | 0 | [0x0] |
|
||||||
|
| 1385 | MSTORE8 | 3 | 0 |[0x0,0x488] |
|
||||||
|
| 1386 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1388 | PUSH2 | 3 | 0 | [0x60] |
|
||||||
|
| 1391 | MSTORE8 | 3 | 0 |[0x60,0x489] |
|
||||||
|
| 1392 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1394 | PUSH2 | 3 | 0 | [0x0] |
|
||||||
|
| 1397 | MSTORE8 | 3 | 0 |[0x0,0x48a] |
|
||||||
|
| 1398 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1400 | PUSH2 | 3 | 0 | [0x60] |
|
||||||
|
| 1403 | MSTORE8 | 3 | 0 |[0x60,0x48b] |
|
||||||
|
| 1404 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1406 | PUSH2 | 3 | 0 | [0x0] |
|
||||||
|
| 1409 | MSTORE8 | 3 | 0 |[0x0,0x48c] |
|
||||||
|
| 1410 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1412 | PUSH2 | 3 | 0 | [0x60] |
|
||||||
|
| 1415 | MSTORE8 | 3 | 0 |[0x60,0x48d] |
|
||||||
|
| 1416 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1418 | PUSH2 | 3 | 0 | [0x0] |
|
||||||
|
| 1421 | MSTORE8 | 3 | 0 |[0x0,0x48e] |
|
||||||
|
| 1422 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1424 | PUSH2 | 3 | 0 | [0x84] |
|
||||||
|
| 1427 | MSTORE8 | 3 | 0 |[0x84,0x48f] |
|
||||||
|
| 1428 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1430 | PUSH2 | 3 | 0 | [0x5a] |
|
||||||
|
| 1433 | MSTORE8 | 3 | 0 |[0x5a,0x490] |
|
||||||
|
| 1434 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1436 | PUSH2 | 3 | 0 | [0xf4] |
|
||||||
|
| 1439 | MSTORE8 | 3 | 0 |[0xf4,0x491] |
|
||||||
|
| 1440 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1442 | PUSH2 | 3 | 0 | [0x50] |
|
||||||
|
| 1445 | MSTORE8 | 3 | 0 |[0x50,0x492] |
|
||||||
|
| 1446 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 1448 | PUSH2 | 3 | 0 | [0x50] |
|
||||||
|
| 1451 | MSTORE8 | 3 | 0 |[0x50,0x493] |
|
||||||
|
| 1452 | PUSH2 | 3 | 0 | [] |
|
||||||
|
| 1455 | PUSH1 | 3 | 0 | [0x494] |
|
||||||
|
| 1457 | RETURN | 0 | 0 |[0x494,0x0] |
|
||||||
|
| 1773 | PUSH1 | 3 | 0 |[0x94a843a7335fc63be036fbdecc40b1365f3c5f26] |
|
||||||
|
| 1775 | PUSH1 | 3 | 0 |[0x94a843a7335fc63be036fbdecc40b1365f3c5f26,0x0] |
|
||||||
|
| 1777 | PUSH1 | 3 | 0 |[0x94a843a7335fc63be036fbdecc40b1365f3c5f26,0x0,0x0] |
|
||||||
|
| 1779 | PUSH1 | 3 | 0 |[0x94a843a7335fc63be036fbdecc40b1365f3c5f26,0x0,0x0,0x0] |
|
||||||
|
| 1781 | PUSH1 | 3 | 0 |[0x94a843a7335fc63be036fbdecc40b1365f3c5f26,0x0,0x0,0x0,0x0] |
|
||||||
|
| 1783 | DUP6 | 3 | 0 |[0x94a843a7335fc63be036fbdecc40b1365f3c5f26,0x0,0x0,0x0,0x0,0x0] |
|
||||||
|
| 1784 | GAS | 2 | 0 |[0x94a843a7335fc63be036fbdecc40b1365f3c5f26,0x0,0x0,0x0,0x0,0x0,0x94a843a7335fc63be036fbdecc40b1365f3c5f26] |
|
||||||
|
| 1785 | CALL | 22413 | 0 |[0x94a843a7335fc63be036fbdecc40b1365f3c5f26,0x0,0x0,0x0,0x0,0x0,0x94a843a7335fc63be036fbdecc40b1365f3c5f26,0x58ef] |
|
||||||
|
| 0 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 2 | PUSH1 | 3 | 0 | [0x1] |
|
||||||
|
| 4 | SSTORE | 20000 | 0 | [0x1,0x4] |
|
||||||
|
| 5 | PUSH1 | 3 | 0 | [] |
|
||||||
|
| 7 | PUSH1 | 3 | 0 | [0x0] |
|
||||||
|
| 9 | SSTORE | 100 | 19900 | [0x0,0x4] |
|
||||||
|
| 10 | PUSH1 | 3 | 19900 | [] |
|
||||||
|
| 12 | PUSH1 | 3 | 19900 | [0x0] |
|
||||||
|
| 14 | PUSH1 | 3 | 19900 | [0x0,0x0] |
|
||||||
|
| 16 | PUSH1 | 3 | 19900 |[0x0,0x0,0x0] |
|
||||||
|
| 18 | PUSH1 | 3 | 19900 |[0x0,0x0,0x0,0x0] |
|
||||||
|
| 20 | PUSH1 | 3 | 19900 |[0x0,0x0,0x0,0x0,0x0] |
|
||||||
|
| 22 | GAS | 2 | 19900 |[0x0,0x0,0x0,0x0,0x0,0xf9] |
|
||||||
|
| 23 | CALLCODE | 100 | 19900 |[0x0,0x0,0x0,0x0,0x0,0xf9,0x885] |
|
||||||
|
Error: out of gas: out of gas
|
||||||
|
| 1786 | POP | 2 | 0 |[0x94a843a7335fc63be036fbdecc40b1365f3c5f26,0x0] |
|
||||||
|
| 1787 | POP | 2 | 0 |[0x94a843a7335fc63be036fbdecc40b1365f3c5f26] |
|
||||||
|
| 1788 | STOP | 0 | 0 | [] |
|
||||||
|
| 2618 | POP | 2 | 0 |[0x7dce2faf43218578e3fcf2ad22df9918a89e2fba,0x1] |
|
||||||
|
| 2619 | POP | 2 | 0 |[0x7dce2faf43218578e3fcf2ad22df9918a89e2fba] |
|
||||||
|
| 2620 | STOP | 0 | 0 | [] |
|
||||||
|
|
||||||
|
Post-execution info:
|
||||||
|
- output: ``
|
||||||
|
- consumed gas: `732781`
|
||||||
|
- error: `<nil>`
|
||||||
|
{"stateRoot": "0xad1024c87b5548e77c937aa50f72b6cb620d278f4dd79bae7f78f71ff75af458"}
|
||||||
9
cmd/evm/testdata/evmrun/8.out.1.txt
vendored
Normal file
9
cmd/evm/testdata/evmrun/8.out.1.txt
vendored
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "00000006-naivefuzz-0",
|
||||||
|
"pass": false,
|
||||||
|
"stateRoot": "0xad1024c87b5548e77c937aa50f72b6cb620d278f4dd79bae7f78f71ff75af458",
|
||||||
|
"fork": "London",
|
||||||
|
"error": "post state root mismatch: got ad1024c87b5548e77c937aa50f72b6cb620d278f4dd79bae7f78f71ff75af458, want 0000000000000000000000000000000000000000000000000000000000000000"
|
||||||
|
}
|
||||||
|
]
|
||||||
916
cmd/evm/testdata/evmrun/8.out.2.txt
vendored
Normal file
916
cmd/evm/testdata/evmrun/8.out.2.txt
vendored
Normal file
|
|
@ -0,0 +1,916 @@
|
||||||
|
{"pc":0,"op":96,"gas":"0xb4213","gasCost":"0x3","memSize":0,"stack":[],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2,"op":96,"gas":"0xb4210","gasCost":"0x3","memSize":0,"stack":["0x2"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":4,"op":85,"gas":"0xb420d","gasCost":"0x5654","memSize":0,"stack":["0x2","0x3"],"depth":1,"refund":0,"opName":"SSTORE"}
|
||||||
|
{"pc":5,"op":96,"gas":"0xaebb9","gasCost":"0x3","memSize":0,"stack":[],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":7,"op":96,"gas":"0xaebb6","gasCost":"0x3","memSize":0,"stack":["0x0"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":9,"op":96,"gas":"0xaebb3","gasCost":"0x3","memSize":0,"stack":["0x0","0x0"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":11,"op":96,"gas":"0xaebb0","gasCost":"0x3","memSize":0,"stack":["0x0","0x0","0x0"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":13,"op":96,"gas":"0xaebad","gasCost":"0x3","memSize":0,"stack":["0x0","0x0","0x0","0x0"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":15,"op":96,"gas":"0xaebaa","gasCost":"0x3","memSize":0,"stack":["0x0","0x0","0x0","0x0","0x0"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":17,"op":90,"gas":"0xaeba7","gasCost":"0x2","memSize":0,"stack":["0x0","0x0","0x0","0x0","0x0","0x4"],"depth":1,"refund":0,"opName":"GAS"}
|
||||||
|
{"pc":18,"op":242,"gas":"0xaeba5","gasCost":"0xabff8","memSize":0,"stack":["0x0","0x0","0x0","0x0","0x0","0x4","0xaeba5"],"depth":1,"refund":0,"opName":"CALLCODE"}
|
||||||
|
{"output":"","gasUsed":"0xf"}
|
||||||
|
{"pc":19,"op":80,"gas":"0xaeb32","gasCost":"0x2","memSize":0,"stack":["0x1"],"depth":1,"refund":0,"opName":"POP"}
|
||||||
|
{"pc":20,"op":127,"gas":"0xaeb30","gasCost":"0x3","memSize":0,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":53,"op":96,"gas":"0xaeb2d","gasCost":"0x3","memSize":0,"stack":["0x600254506003545060016003557f7f6008545060006004557f60016004556000"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":55,"op":82,"gas":"0xaeb2a","gasCost":"0x6","memSize":0,"stack":["0x600254506003545060016003557f7f6008545060006004557f60016004556000","0x0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":56,"op":127,"gas":"0xaeb24","gasCost":"0x3","memSize":32,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":89,"op":96,"gas":"0xaeb21","gasCost":"0x3","memSize":32,"stack":["0x60045560006000600060006000606000527ff96000527f5af250600060006000"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":91,"op":82,"gas":"0xaeb1e","gasCost":"0x6","memSize":32,"stack":["0x60045560006000600060006000606000527ff96000527f5af250600060006000","0x20"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":92,"op":127,"gas":"0xaeb18","gasCost":"0x3","memSize":64,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":125,"op":96,"gas":"0xaeb15","gasCost":"0x3","memSize":64,"stack":["0x606000527e60f45af45060006000600060006020527f600060f55a6020527ff1"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":127,"op":82,"gas":"0xaeb12","gasCost":"0x6","memSize":64,"stack":["0x606000527e60f45af45060006000600060006020527f600060f55a6020527ff1","0x40"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":128,"op":127,"gas":"0xaeb0c","gasCost":"0x3","memSize":96,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":161,"op":96,"gas":"0xaeb09","gasCost":"0x3","memSize":96,"stack":["0x50f001075205846a44a283446020527f8ca2600060006040527f600060006004"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":163,"op":82,"gas":"0xaeb06","gasCost":"0x6","memSize":96,"stack":["0x50f001075205846a44a283446020527f8ca2600060006040527f600060006004","0x60"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":164,"op":127,"gas":"0xaeb00","gasCost":"0x3","memSize":128,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":197,"op":96,"gas":"0xaeafd","gasCost":"0x3","memSize":128,"stack":["0x5af4506040527f519930847f3b631c54a49b5f600354503260406060527f527f"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":199,"op":82,"gas":"0xaeafa","gasCost":"0x6","memSize":128,"stack":["0x5af4506040527f519930847f3b631c54a49b5f600354503260406060527f527f","0x80"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":200,"op":127,"gas":"0xaeaf4","gasCost":"0x3","memSize":160,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":233,"op":96,"gas":"0xaeaf1","gasCost":"0x3","memSize":160,"stack":["0x77306b60006000600060006060527f6000600c5af15060006000600060006080"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":235,"op":82,"gas":"0xaeaee","gasCost":"0x6","memSize":160,"stack":["0x77306b60006000600060006060527f6000600c5af15060006000600060006080","0xa0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":236,"op":127,"gas":"0xaeae8","gasCost":"0x3","memSize":192,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":269,"op":96,"gas":"0xaeae5","gasCost":"0x3","memSize":192,"stack":["0x527f60f85af450506060527f066001600255606080527f035450600060005560"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":271,"op":82,"gas":"0xaeae2","gasCost":"0x6","memSize":192,"stack":["0x527f60f85af450506060527f066001600255606080527f035450600060005560","0xc0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":272,"op":126,"gas":"0xaeadc","gasCost":"0x3","memSize":224,"stack":[],"depth":1,"refund":0,"opName":"PUSH31"}
|
||||||
|
{"pc":304,"op":96,"gas":"0xaead9","gasCost":"0x3","memSize":224,"stack":["0x6060a0527f01556c3394fff4607f7f1684317b6080527f387b9f60a0527f19"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":306,"op":82,"gas":"0xaead6","gasCost":"0x6","memSize":224,"stack":["0x6060a0527f01556c3394fff4607f7f1684317b6080527f387b9f60a0527f19","0xe0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":307,"op":127,"gas":"0xaead0","gasCost":"0x3","memSize":256,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":340,"op":97,"gas":"0xaeacd","gasCost":"0x3","memSize":256,"stack":["0x20700184809d60c0527f60015450011899016e6009ff60026001556000527f9f"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":343,"op":82,"gas":"0xaeaca","gasCost":"0x6","memSize":256,"stack":["0x20700184809d60c0527f60015450011899016e6009ff60026001556000527f9f","0x100"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":344,"op":127,"gas":"0xaeac4","gasCost":"0x3","memSize":288,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":377,"op":97,"gas":"0xaeac1","gasCost":"0x3","memSize":288,"stack":["0x60a05260c0527f7f600060e0527f527f9981600160045582600eff6000600060"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":380,"op":82,"gas":"0xaeabe","gasCost":"0x6","memSize":288,"stack":["0x60a05260c0527f7f600060e0527f527f9981600160045582600eff6000600060","0x120"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":381,"op":126,"gas":"0xaeab8","gasCost":"0x3","memSize":320,"stack":[],"depth":1,"refund":0,"opName":"PUSH31"}
|
||||||
|
{"pc":413,"op":97,"gas":"0xaeab5","gasCost":"0x3","memSize":320,"stack":["0x600060f65af45060006060e052610100527f7f6060c0527f20527e60006000"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":416,"op":82,"gas":"0xaeab2","gasCost":"0x6","memSize":320,"stack":["0x600060f65af45060006060e052610100527f7f6060c0527f20527e60006000","0x140"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":417,"op":127,"gas":"0xaeaac","gasCost":"0x3","memSize":352,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":450,"op":97,"gas":"0xaeaa9","gasCost":"0x3","memSize":352,"stack":["0x6020527f60f75af4501d7f1903166660006000610120527f60610100527e6000"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":453,"op":82,"gas":"0xaeaa6","gasCost":"0x6","memSize":352,"stack":["0x6020527f60f75af4501d7f1903166660006000610120527f60610100527e6000","0x160"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":454,"op":127,"gas":"0xaeaa0","gasCost":"0x3","memSize":384,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":487,"op":97,"gas":"0xaea9d","gasCost":"0x3","memSize":384,"stack":["0x600060e0527f60046040527f5af150600060006000604052610140527f7f6000"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":490,"op":82,"gas":"0xaea9a","gasCost":"0x6","memSize":384,"stack":["0x600060e0527f60046040527f5af150600060006000604052610140527f7f6000","0x180"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":491,"op":127,"gas":"0xaea94","gasCost":"0x3","memSize":416,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":524,"op":97,"gas":"0xaea91","gasCost":"0x3","memSize":416,"stack":["0x6009610120527f5af4503c95138e5b8f610100527f7f605a6000536060610160"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":527,"op":82,"gas":"0xaea8e","gasCost":"0x6","memSize":416,"stack":["0x6009610120527f5af4503c95138e5b8f610100527f7f605a6000536060610160","0x1a0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":528,"op":127,"gas":"0xaea88","gasCost":"0x3","memSize":448,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":561,"op":97,"gas":"0xaea85","gasCost":"0x3","memSize":448,"stack":["0x527f527f6031600153606b60610140527f02536010606060527f035360456061"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":564,"op":82,"gas":"0xaea82","gasCost":"0x6","memSize":448,"stack":["0x527f527f6031600153606b60610140527f02536010606060527f035360456061","0x1c0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":565,"op":127,"gas":"0xaea7c","gasCost":"0x3","memSize":480,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":598,"op":97,"gas":"0xaea79","gasCost":"0x3","memSize":480,"stack":["0x120610180527f527f04536060600553600160608052610160527f7e527f6006"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":601,"op":82,"gas":"0xaea76","gasCost":"0x6","memSize":480,"stack":["0x120610180527f527f04536060600553600160608052610160527f7e527f6006","0x1e0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":602,"op":127,"gas":"0xaea70","gasCost":"0x3","memSize":512,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":635,"op":97,"gas":"0xaea6d","gasCost":"0x3","memSize":512,"stack":["0x536060600753606101a0527f02600853606080610140527f527f556009536060"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":638,"op":82,"gas":"0xaea6a","gasCost":"0x6","memSize":512,"stack":["0x536060600753606101a0527f02600853606080610140527f527f556009536060","0x200"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":639,"op":127,"gas":"0xaea64","gasCost":"0x3","memSize":544,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":672,"op":97,"gas":"0xaea61","gasCost":"0x3","memSize":544,"stack":["0x610180527f600a53600160a06101c0527f527f600b536060600c6020527f5360"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":675,"op":82,"gas":"0xaea5e","gasCost":"0x6","memSize":544,"stack":["0x610180527f600a53600160a06101c0527f527f600b536060600c6020527f5360","0x220"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":676,"op":126,"gas":"0xaea58","gasCost":"0x3","memSize":576,"stack":[],"depth":1,"refund":0,"opName":"PUSH31"}
|
||||||
|
{"pc":708,"op":97,"gas":"0xaea55","gasCost":"0x3","memSize":576,"stack":["0x60610160527f0d53606101a0527f55606101e0527f0e60a0527f536060600f"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":711,"op":82,"gas":"0xaea52","gasCost":"0x6","memSize":576,"stack":["0x60610160527f0d53606101a0527f55606101e0527f0e60a0527f536060600f","0x240"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":712,"op":127,"gas":"0xaea4c","gasCost":"0x3","memSize":608,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":745,"op":97,"gas":"0xaea49","gasCost":"0x3","memSize":608,"stack":["0x536060c0527f01601053606060115360026101806101610200527fc0527f527f"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":748,"op":82,"gas":"0xaea46","gasCost":"0x6","memSize":608,"stack":["0x536060c0527f01601053606060115360026101806101610200527fc0527f527f","0x260"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":749,"op":127,"gas":"0xaea40","gasCost":"0x3","memSize":640,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":782,"op":97,"gas":"0xaea3d","gasCost":"0x3","memSize":640,"stack":["0x601253606040527f55601353606060c0527f60145360e0527f6000610220527f"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":785,"op":82,"gas":"0xaea3a","gasCost":"0x6","memSize":640,"stack":["0x601253606040527f55601353606060c0527f60145360e0527f6000610220527f","0x280"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":786,"op":127,"gas":"0xaea34","gasCost":"0x3","memSize":672,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":819,"op":97,"gas":"0xaea31","gasCost":"0x3","memSize":672,"stack":["0x6015536101e0527f60606101a0527f601653600060175360f360185360196060"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":822,"op":82,"gas":"0xaea2e","gasCost":"0x6","memSize":672,"stack":["0x6015536101e0527f60606101a0527f601653600060175360f360185360196060","0x2a0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":823,"op":127,"gas":"0xaea28","gasCost":"0x3","memSize":704,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":856,"op":97,"gas":"0xaea25","gasCost":"0x3","memSize":704,"stack":["0x610240527f605260006060e052610200527f610100527f7f806101c0527f5360"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":859,"op":82,"gas":"0xaea22","gasCost":"0x7","memSize":704,"stack":["0x610240527f605260006060e052610200527f610100527f7f806101c0527f5360","0x2c0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":860,"op":127,"gas":"0xaea1b","gasCost":"0x3","memSize":736,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":893,"op":97,"gas":"0xaea18","gasCost":"0x3","memSize":736,"stack":["0xf360815360610260527f8260006000f060006000600060610220527e845af450"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":896,"op":82,"gas":"0xaea15","gasCost":"0x6","memSize":736,"stack":["0xf360815360610260527f8260006000f060006000600060610220527e845af450","0x2e0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":897,"op":127,"gas":"0xaea0f","gasCost":"0x3","memSize":768,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":930,"op":97,"gas":"0xaea0c","gasCost":"0x3","memSize":768,"stack":["0x506000600061016101e0610280527f527f20527f60610100527e600060006003"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":933,"op":82,"gas":"0xaea09","gasCost":"0x6","memSize":768,"stack":["0x506000600061016101e0610280527f527f20527f60610100527e600060006003","0x300"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":934,"op":127,"gas":"0xaea03","gasCost":"0x3","memSize":800,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":967,"op":97,"gas":"0xaea00","gasCost":"0x3","memSize":800,"stack":["0x610240527f5af15060005450c760006102a0527f6002551309f562610200527f"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":970,"op":82,"gas":"0xae9fd","gasCost":"0x6","memSize":800,"stack":["0x610240527f5af15060005450c760006102a0527f6002551309f562610200527f","0x320"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":971,"op":127,"gas":"0xae9f7","gasCost":"0x3","memSize":832,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1004,"op":97,"gas":"0xae9f4","gasCost":"0x3","memSize":832,"stack":["0x66a486610140527f6b00610260527f1d457161016102c0527f20527f60005450"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1007,"op":82,"gas":"0xae9f1","gasCost":"0x6","memSize":832,"stack":["0x66a486610140527f6b00610260527f1d457161016102c0527f20527f60005450","0x340"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1008,"op":127,"gas":"0xae9eb","gasCost":"0x3","memSize":864,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1041,"op":97,"gas":"0xae9e8","gasCost":"0x3","memSize":864,"stack":["0x1c641d373c7f60045450610220527f6000600155610280527f6102e0527f6005"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1044,"op":82,"gas":"0xae9e5","gasCost":"0x6","memSize":864,"stack":["0x1c641d373c7f60045450610220527f6000600155610280527f6102e0527f6005","0x360"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1045,"op":127,"gas":"0xae9df","gasCost":"0x3","memSize":896,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1078,"op":97,"gas":"0xae9dc","gasCost":"0x3","memSize":896,"stack":["0x54610160527f50600160025560085450610140527f60006002610240527f6103"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1081,"op":82,"gas":"0xae9d9","gasCost":"0x6","memSize":896,"stack":["0x54610160527f50600160025560085450610140527f60006002610240527f6103","0x380"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1082,"op":126,"gas":"0xae9d3","gasCost":"0x3","memSize":928,"stack":[],"depth":1,"refund":0,"opName":"PUSH31"}
|
||||||
|
{"pc":1114,"op":97,"gas":"0xae9d0","gasCost":"0x3","memSize":928,"stack":["0x527f6102a0527f557fd86000606000527e600060610180527e600060005af1"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1117,"op":82,"gas":"0xae9cd","gasCost":"0x6","memSize":928,"stack":["0x527f6102a0527f557fd86000606000527e600060610180527e600060005af1","0x3a0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1118,"op":127,"gas":"0xae9c7","gasCost":"0x3","memSize":960,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1151,"op":97,"gas":"0xae9c4","gasCost":"0x3","memSize":960,"stack":["0x508612610320527f17145147356102c0527f610260527f610160527f5198a37e"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1154,"op":82,"gas":"0xae9c1","gasCost":"0x6","memSize":960,"stack":["0x508612610320527f17145147356102c0527f610260527f610160527f5198a37e","0x3c0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1155,"op":127,"gas":"0xae9bb","gasCost":"0x3","memSize":992,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1188,"op":97,"gas":"0xae9b8","gasCost":"0x3","memSize":992,"stack":["0x127a7efa7c600052610340527f6101a0527f606020527f6102e0527f60602053"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1191,"op":82,"gas":"0xae9b5","gasCost":"0x7","memSize":992,"stack":["0x127a7efa7c600052610340527f6101a0527f606020527f6102e0527f60602053","0x3e0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1192,"op":127,"gas":"0xae9ae","gasCost":"0x3","memSize":1024,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1225,"op":97,"gas":"0xae9ab","gasCost":"0x3","memSize":1024,"stack":["0x60610280527ff760215360ff60610360527f225360610180527fdb6023536037"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1228,"op":82,"gas":"0xae9a8","gasCost":"0x6","memSize":1024,"stack":["0x60610280527ff760215360ff60610360527f225360610180527fdb6023536037","0x400"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1229,"op":127,"gas":"0xae9a2","gasCost":"0x3","memSize":1056,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1262,"op":97,"gas":"0xae99f","gasCost":"0x3","memSize":1056,"stack":["0x60610300527f6101c0527f24536075606102610380527fa0527f2553609f6060"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1265,"op":82,"gas":"0xae99c","gasCost":"0x6","memSize":1056,"stack":["0x60610300527f6101c0527f24536075606102610380527fa0527f2553609f6060","0x420"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1266,"op":127,"gas":"0xae996","gasCost":"0x3","memSize":1088,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1299,"op":97,"gas":"0xae993","gasCost":"0x3","memSize":1088,"stack":["0x40527f265360fe60275360610320527f8f60286101a0526103a0527f7f536061"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1302,"op":82,"gas":"0xae990","gasCost":"0x6","memSize":1088,"stack":["0x40527f265360fe60275360610320527f8f60286101a0526103a0527f7f536061","0x440"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1303,"op":127,"gas":"0xae98a","gasCost":"0x3","memSize":1120,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1336,"op":97,"gas":"0xae987","gasCost":"0x3","memSize":1120,"stack":["0x1e0527f6102c0527f0b6029536060602a53600060610340527f2b536103c052"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1339,"op":82,"gas":"0xae984","gasCost":"0x6","memSize":1120,"stack":["0x1e0527f6102c0527f0b6029536060602a53600060610340527f2b536103c052","0x460"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1340,"op":127,"gas":"0xae97e","gasCost":"0x3","memSize":1152,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1373,"op":97,"gas":"0xae97b","gasCost":"0x3","memSize":1152,"stack":["0x7f6060602c53606052606060805360006061016102e0527f610200527fc05261"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1376,"op":82,"gas":"0xae978","gasCost":"0x6","memSize":1152,"stack":["0x7f6060602c53606052606060805360006061016102e0527f610200527fc05261","0x480"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1377,"op":127,"gas":"0xae972","gasCost":"0x3","memSize":1184,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1410,"op":97,"gas":"0xae96f","gasCost":"0x3","memSize":1184,"stack":["0x36103e0527f60527f7f81536060608253602d60835360536084536060608553"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1413,"op":82,"gas":"0xae96c","gasCost":"0x6","memSize":1184,"stack":["0x36103e0527f60527f7f81536060608253602d60835360536084536060608553","0x4a0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1414,"op":127,"gas":"0xae966","gasCost":"0x3","memSize":1216,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1447,"op":97,"gas":"0xae963","gasCost":"0x3","memSize":1216,"stack":["0x60fd61030052610400527f7f6086610380527f536060610220527f6087536101"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1450,"op":82,"gas":"0xae960","gasCost":"0x6","memSize":1216,"stack":["0x60fd61030052610400527f7f6086610380527f536060610220527f6087536101","0x4c0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1451,"op":127,"gas":"0xae95a","gasCost":"0x3","memSize":1248,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1484,"op":97,"gas":"0xae957","gasCost":"0x3","memSize":1248,"stack":["0xe0527f602e608853605360610420527f89536060608a61036103a0527f20527f"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1487,"op":82,"gas":"0xae954","gasCost":"0x7","memSize":1248,"stack":["0xe0527f602e608853605360610420527f89536060608a61036103a0527f20527f","0x4e0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1488,"op":127,"gas":"0xae94d","gasCost":"0x3","memSize":1280,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1521,"op":97,"gas":"0xae94a","gasCost":"0x3","memSize":1280,"stack":["0x53602f608b536060608c610240527f53610440527f6000608d5360f361020052"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1524,"op":82,"gas":"0xae947","gasCost":"0x6","memSize":1280,"stack":["0x53602f608b536060608c610240527f53610440527f6000608d5360f361020052","0x500"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1525,"op":127,"gas":"0xae941","gasCost":"0x3","memSize":1312,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1558,"op":97,"gas":"0xae93e","gasCost":"0x3","memSize":1312,"stack":["0x60606103c0527f610220610340527f53608e610221610460527f536053610222"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1561,"op":82,"gas":"0xae93b","gasCost":"0x6","memSize":1312,"stack":["0x60606103c0527f610220610340527f53608e610221610460527f536053610222","0x520"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1562,"op":127,"gas":"0xae935","gasCost":"0x3","memSize":1344,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1595,"op":97,"gas":"0xae932","gasCost":"0x3","memSize":1344,"stack":["0x536060610260527f610223536103e0527f600061022453606061610480527f03"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1598,"op":82,"gas":"0xae92f","gasCost":"0x6","memSize":1344,"stack":["0x536060610260527f610223536103e0527f600061022453606061610480527f03","0x540"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1599,"op":127,"gas":"0xae929","gasCost":"0x3","memSize":1376,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1632,"op":97,"gas":"0xae926","gasCost":"0x3","memSize":1376,"stack":["0x60527f61022553608f61022653606061022753600061610400527f0261028061"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1635,"op":82,"gas":"0xae923","gasCost":"0x6","memSize":1376,"stack":["0x60527f61022553608f61022653606061022753600061610400527f0261028061","0x560"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1636,"op":127,"gas":"0xae91d","gasCost":"0x3","memSize":1408,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1669,"op":97,"gas":"0xae91a","gasCost":"0x3","memSize":1408,"stack":["0x4a0527f527f28536060610229610380527f53600061022a5360f561022b5360"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1672,"op":82,"gas":"0xae917","gasCost":"0x6","memSize":1408,"stack":["0x4a0527f527f28536060610229610380527f53600061022a5360f561022b5360","0x580"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1673,"op":127,"gas":"0xae911","gasCost":"0x3","memSize":1440,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1706,"op":97,"gas":"0xae90e","gasCost":"0x3","memSize":1440,"stack":["0x610420526104c0527f7f6061022c53600061022d536102a0527f60606103a052"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1709,"op":82,"gas":"0xae90b","gasCost":"0x7","memSize":1440,"stack":["0x610420526104c0527f7f6061022c53600061022d536102a0527f60606103a052","0x5a0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1710,"op":127,"gas":"0xae904","gasCost":"0x3","memSize":1472,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1743,"op":97,"gas":"0xae901","gasCost":"0x3","memSize":1472,"stack":["0x7f61022e53600061026104e0527f2f610440527f536060610230536000610231"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1746,"op":82,"gas":"0xae8fe","gasCost":"0x6","memSize":1472,"stack":["0x7f61022e53600061026104e0527f2f610440527f536060610230536000610231","0x5c0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1747,"op":127,"gas":"0xae8f8","gasCost":"0x3","memSize":1504,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1780,"op":97,"gas":"0xae8f5","gasCost":"0x3","memSize":1504,"stack":["0x53606061023253600061026103c0610500527f527fc0527f61610460527f0233"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1783,"op":82,"gas":"0xae8f2","gasCost":"0x6","memSize":1504,"stack":["0x53606061023253600061026103c0610500527f527fc0527f61610460527f0233","0x5e0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1784,"op":127,"gas":"0xae8ec","gasCost":"0x3","memSize":1536,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1817,"op":97,"gas":"0xae8e9","gasCost":"0x3","memSize":1536,"stack":["0x53606061023453600061023553608561023653610520527f605a610237536061"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1820,"op":82,"gas":"0xae8e6","gasCost":"0x6","memSize":1536,"stack":["0x53606061023453600061023553608561023653610520527f605a610237536061","0x600"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1821,"op":127,"gas":"0xae8e0","gasCost":"0x3","memSize":1568,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1854,"op":97,"gas":"0xae8dd","gasCost":"0x3","memSize":1568,"stack":["0x3e052610480527f7ff261026102e0526038610300536053610540527f610301"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1857,"op":82,"gas":"0xae8da","gasCost":"0x6","memSize":1568,"stack":["0x3e052610480527f7ff261026102e0526038610300536053610540527f610301","0x620"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1858,"op":127,"gas":"0xae8d4","gasCost":"0x3","memSize":1600,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1891,"op":97,"gas":"0xae8d1","gasCost":"0x3","memSize":1600,"stack":["0x536060610302536050610303536104a0527f60610400527f6161030453610560"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1894,"op":82,"gas":"0xae8ce","gasCost":"0x7","memSize":1600,"stack":["0x536060610302536050610303536104a0527f60610400527f6161030453610560","0x640"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1895,"op":127,"gas":"0xae8c7","gasCost":"0x3","memSize":1632,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1928,"op":97,"gas":"0xae8c4","gasCost":"0x3","memSize":1632,"stack":["0x527f6002610305536039610306536053610307536060616104c0527f03085360"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1931,"op":82,"gas":"0xae8c1","gasCost":"0x6","memSize":1632,"stack":["0x527f6002610305536039610306536053610307536060616104c0527f03085360","0x660"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1932,"op":127,"gas":"0xae8bb","gasCost":"0x3","memSize":1664,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1965,"op":97,"gas":"0xae8b8","gasCost":"0x3","memSize":1664,"stack":["0x5061610580527f610420527f030953606161030a53600261030b53603a61030c"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1968,"op":82,"gas":"0xae8b5","gasCost":"0x6","memSize":1664,"stack":["0x5061610580527f610420527f030953606161030a53600261030b53603a61030c","0x680"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1969,"op":127,"gas":"0xae8af","gasCost":"0x3","memSize":1696,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":2002,"op":97,"gas":"0xae8ac","gasCost":"0x3","memSize":1696,"stack":["0x536104e0527f606105a0527f5361030d53606161030e610440527f5360026103"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2005,"op":82,"gas":"0xae8a9","gasCost":"0x6","memSize":1696,"stack":["0x536104e0527f606105a0527f5361030d53606161030e610440527f5360026103","0x6a0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":2006,"op":127,"gas":"0xae8a3","gasCost":"0x3","memSize":1728,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":2039,"op":97,"gas":"0xae8a0","gasCost":"0x3","memSize":1728,"stack":["0xf53603b61031053606061616105c0527f0500527f03115360006103125360f3"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2042,"op":82,"gas":"0xae89d","gasCost":"0x6","memSize":1728,"stack":["0xf53603b61031053606061616105c0527f0500527f03115360006103125360f3","0x6c0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":2043,"op":127,"gas":"0xae897","gasCost":"0x3","memSize":1760,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":2076,"op":97,"gas":"0xae894","gasCost":"0x3","memSize":1760,"stack":["0x61031353616104605260036104805360146105e0527f61048153610520527f60"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2079,"op":82,"gas":"0xae891","gasCost":"0x7","memSize":1760,"stack":["0x61031353616104605260036104805360146105e0527f61048153610520527f60","0x6e0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":2080,"op":127,"gas":"0xae88a","gasCost":"0x3","memSize":1792,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":2113,"op":97,"gas":"0xae887","gasCost":"0x3","memSize":1792,"stack":["0x60610482536000610483536060610484536000610485610600527f5360f06104"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2116,"op":82,"gas":"0xae884","gasCost":"0x6","memSize":1792,"stack":["0x60610482536000610483536060610484536000610485610600527f5360f06104","0x700"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":2117,"op":127,"gas":"0xae87e","gasCost":"0x3","memSize":1824,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":2150,"op":97,"gas":"0xae87b","gasCost":"0x3","memSize":1824,"stack":["0x86536060610540527f610487536000610488536060610489536000610620527f"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2153,"op":82,"gas":"0xae878","gasCost":"0x6","memSize":1824,"stack":["0x86536060610540527f610487536000610488536060610489536000610620527f","0x720"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":2154,"op":127,"gas":"0xae872","gasCost":"0x3","memSize":1856,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":2187,"op":97,"gas":"0xae86f","gasCost":"0x3","memSize":1856,"stack":["0x61048a53606061048b5360006104610560527f8c53606061048d53600061048e"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2190,"op":82,"gas":"0xae86c","gasCost":"0x6","memSize":1856,"stack":["0x61048a53606061048b5360006104610560527f8c53606061048d53600061048e","0x740"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":2191,"op":127,"gas":"0xae866","gasCost":"0x3","memSize":1888,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":2224,"op":97,"gas":"0xae863","gasCost":"0x3","memSize":1888,"stack":["0x610640527f53608461048f53605a6104905360f4610491536105805260606105"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2227,"op":82,"gas":"0xae860","gasCost":"0x7","memSize":1888,"stack":["0x610640527f53608461048f53605a6104905360f4610491536105805260606105","0x760"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":2228,"op":127,"gas":"0xae859","gasCost":"0x3","memSize":1920,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":2261,"op":97,"gas":"0xae856","gasCost":"0x3","memSize":1920,"stack":["0xa053605061610660527f05a15360616105a25360046105a35360926105a45360"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2264,"op":82,"gas":"0xae853","gasCost":"0x6","memSize":1920,"stack":["0xa053605061610660527f05a15360616105a25360046105a35360926105a45360","0x780"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":2265,"op":127,"gas":"0xae84d","gasCost":"0x3","memSize":1952,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":2298,"op":97,"gas":"0xae84a","gasCost":"0x3","memSize":1952,"stack":["0x536105a55360606105a6610680527f5360506105a75360616105a85360046105"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2301,"op":82,"gas":"0xae847","gasCost":"0x6","memSize":1952,"stack":["0x536105a55360606105a6610680527f5360506105a75360616105a85360046105","0x7a0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":2302,"op":127,"gas":"0xae841","gasCost":"0x3","memSize":1984,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":2335,"op":97,"gas":"0xae83e","gasCost":"0x3","memSize":1984,"stack":["0xa95360936105aa5360536105ab53606106a0527f616105ac5360046105ad5360"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2338,"op":82,"gas":"0xae83b","gasCost":"0x6","memSize":1984,"stack":["0xa95360936105aa5360536105ab53606106a0527f616105ac5360046105ad5360","0x7c0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":2339,"op":127,"gas":"0xae835","gasCost":"0x3","memSize":2016,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":2372,"op":97,"gas":"0xae832","gasCost":"0x3","memSize":2016,"stack":["0x946105ae5360606105af5360006105b05360f3616106c05260056106e05360b1"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2375,"op":82,"gas":"0xae82f","gasCost":"0x7","memSize":2016,"stack":["0x946105ae5360606105af5360006105b05360f3616106c05260056106e05360b1","0x7e0"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":2376,"op":127,"gas":"0xae828","gasCost":"0x3","memSize":2048,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":2409,"op":97,"gas":"0xae825","gasCost":"0x3","memSize":2048,"stack":["0x6106e15360536106e25360606106e35360006106e45360616106e55360056106"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2412,"op":82,"gas":"0xae822","gasCost":"0x6","memSize":2048,"stack":["0x6106e15360536106e25360606106e35360006106e45360616106e55360056106","0x800"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":2413,"op":127,"gas":"0xae81c","gasCost":"0x3","memSize":2080,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":2446,"op":97,"gas":"0xae819","gasCost":"0x3","memSize":2080,"stack":["0xe65360b26106e75360606106e85360006106e95360606106ea5360006106eb53"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2449,"op":82,"gas":"0xae816","gasCost":"0x6","memSize":2080,"stack":["0xe65360b26106e75360606106e85360006106e95360606106ea5360006106eb53","0x820"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":2450,"op":127,"gas":"0xae810","gasCost":"0x3","memSize":2112,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":2483,"op":97,"gas":"0xae80d","gasCost":"0x3","memSize":2112,"stack":["0x60f56106ec5360606106ed5360006106ee5360606106ef5360006106f0536060"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2486,"op":82,"gas":"0xae80a","gasCost":"0x6","memSize":2112,"stack":["0x60f56106ec5360606106ed5360006106ee5360606106ef5360006106f0536060","0x840"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":2487,"op":127,"gas":"0xae804","gasCost":"0x3","memSize":2144,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":2520,"op":97,"gas":"0xae801","gasCost":"0x3","memSize":2144,"stack":["0x6106f15360006106f25360606106f35360006106f45360606106f55360006106"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2523,"op":82,"gas":"0xae7fe","gasCost":"0x7","memSize":2144,"stack":["0x6106f15360006106f25360606106f35360006106f45360606106f55360006106","0x860"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":2524,"op":127,"gas":"0xae7f7","gasCost":"0x3","memSize":2176,"stack":[],"depth":1,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":2557,"op":97,"gas":"0xae7f4","gasCost":"0x3","memSize":2176,"stack":["0xf65360856106f753605a6106f85360f16106f95360506106fa5360506106fb53"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2560,"op":82,"gas":"0xae7f1","gasCost":"0x6","memSize":2176,"stack":["0xf65360856106f753605a6106f85360f16106f95360506106fa5360506106fb53","0x880"],"depth":1,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":2561,"op":96,"gas":"0xae7eb","gasCost":"0x3","memSize":2208,"stack":[],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2563,"op":97,"gas":"0xae7e8","gasCost":"0x3","memSize":2208,"stack":["0x61"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2566,"op":83,"gas":"0xae7e5","gasCost":"0x6","memSize":2208,"stack":["0x61","0x8a0"],"depth":1,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2567,"op":96,"gas":"0xae7df","gasCost":"0x3","memSize":2240,"stack":[],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2569,"op":97,"gas":"0xae7dc","gasCost":"0x3","memSize":2240,"stack":["0x6"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2572,"op":83,"gas":"0xae7d9","gasCost":"0x3","memSize":2240,"stack":["0x6","0x8a1"],"depth":1,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2573,"op":96,"gas":"0xae7d6","gasCost":"0x3","memSize":2240,"stack":[],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2575,"op":97,"gas":"0xae7d3","gasCost":"0x3","memSize":2240,"stack":["0xfc"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2578,"op":83,"gas":"0xae7d0","gasCost":"0x3","memSize":2240,"stack":["0xfc","0x8a2"],"depth":1,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2579,"op":96,"gas":"0xae7cd","gasCost":"0x3","memSize":2240,"stack":[],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2581,"op":97,"gas":"0xae7ca","gasCost":"0x3","memSize":2240,"stack":["0x60"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2584,"op":83,"gas":"0xae7c7","gasCost":"0x3","memSize":2240,"stack":["0x60","0x8a3"],"depth":1,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2585,"op":96,"gas":"0xae7c4","gasCost":"0x3","memSize":2240,"stack":[],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2587,"op":97,"gas":"0xae7c1","gasCost":"0x3","memSize":2240,"stack":["0x0"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2590,"op":83,"gas":"0xae7be","gasCost":"0x3","memSize":2240,"stack":["0x0","0x8a4"],"depth":1,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2591,"op":96,"gas":"0xae7bb","gasCost":"0x3","memSize":2240,"stack":[],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2593,"op":97,"gas":"0xae7b8","gasCost":"0x3","memSize":2240,"stack":["0xf3"],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2596,"op":83,"gas":"0xae7b5","gasCost":"0x3","memSize":2240,"stack":["0xf3","0x8a5"],"depth":1,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2597,"op":97,"gas":"0xae7b2","gasCost":"0x3","memSize":2240,"stack":[],"depth":1,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2600,"op":96,"gas":"0xae7af","gasCost":"0x3","memSize":2240,"stack":["0x8a6"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2602,"op":96,"gas":"0xae7ac","gasCost":"0x3","memSize":2240,"stack":["0x8a6","0x0"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2604,"op":240,"gas":"0xae7a9","gasCost":"0x7d00","memSize":2240,"stack":["0x8a6","0x0","0x0"],"depth":1,"refund":0,"opName":"CREATE"}
|
||||||
|
{"pc":0,"op":96,"gas":"0xa40ff","gasCost":"0x3","memSize":0,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2,"op":84,"gas":"0xa40fc","gasCost":"0x834","memSize":0,"stack":["0x2"],"depth":2,"refund":0,"opName":"SLOAD"}
|
||||||
|
{"pc":3,"op":80,"gas":"0xa38c8","gasCost":"0x2","memSize":0,"stack":["0x0"],"depth":2,"refund":0,"opName":"POP"}
|
||||||
|
{"pc":4,"op":96,"gas":"0xa38c6","gasCost":"0x3","memSize":0,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":6,"op":84,"gas":"0xa38c3","gasCost":"0x834","memSize":0,"stack":["0x3"],"depth":2,"refund":0,"opName":"SLOAD"}
|
||||||
|
{"pc":7,"op":80,"gas":"0xa308f","gasCost":"0x2","memSize":0,"stack":["0x0"],"depth":2,"refund":0,"opName":"POP"}
|
||||||
|
{"pc":8,"op":96,"gas":"0xa308d","gasCost":"0x3","memSize":0,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":10,"op":96,"gas":"0xa308a","gasCost":"0x3","memSize":0,"stack":["0x1"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":12,"op":85,"gas":"0xa3087","gasCost":"0x4e20","memSize":0,"stack":["0x1","0x3"],"depth":2,"refund":0,"opName":"SSTORE"}
|
||||||
|
{"pc":13,"op":127,"gas":"0x9e267","gasCost":"0x3","memSize":0,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":46,"op":96,"gas":"0x9e264","gasCost":"0x3","memSize":0,"stack":["0x7f6008545060006004557f600160045560006004556000600060006000600060"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":48,"op":82,"gas":"0x9e261","gasCost":"0x6","memSize":0,"stack":["0x7f6008545060006004557f600160045560006004556000600060006000600060","0x0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":49,"op":127,"gas":"0x9e25b","gasCost":"0x3","memSize":32,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":82,"op":96,"gas":"0x9e258","gasCost":"0x3","memSize":32,"stack":["0xf96000527f5af250600060006000606000527e60f45af4506000600060006000"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":84,"op":82,"gas":"0x9e255","gasCost":"0x6","memSize":32,"stack":["0xf96000527f5af250600060006000606000527e60f45af4506000600060006000","0x20"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":85,"op":127,"gas":"0x9e24f","gasCost":"0x3","memSize":64,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":118,"op":96,"gas":"0x9e24c","gasCost":"0x3","memSize":64,"stack":["0x600060f55a6020527ff150f001075205846a44a283446020527f8ca260006000"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":120,"op":82,"gas":"0x9e249","gasCost":"0x6","memSize":64,"stack":["0x600060f55a6020527ff150f001075205846a44a283446020527f8ca260006000","0x40"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":121,"op":127,"gas":"0x9e243","gasCost":"0x3","memSize":96,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":154,"op":96,"gas":"0x9e240","gasCost":"0x3","memSize":96,"stack":["0x6000600060045af4506040527f519930847f3b631c54a49b5f60035450326040"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":156,"op":82,"gas":"0x9e23d","gasCost":"0x6","memSize":96,"stack":["0x6000600060045af4506040527f519930847f3b631c54a49b5f60035450326040","0x60"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":157,"op":127,"gas":"0x9e237","gasCost":"0x3","memSize":128,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":190,"op":96,"gas":"0x9e234","gasCost":"0x3","memSize":128,"stack":["0x527f77306b60006000600060006060527f6000600c5af1506000600060006000"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":192,"op":82,"gas":"0x9e231","gasCost":"0x6","memSize":128,"stack":["0x527f77306b60006000600060006060527f6000600c5af1506000600060006000","0x80"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":193,"op":127,"gas":"0x9e22b","gasCost":"0x3","memSize":160,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":226,"op":96,"gas":"0x9e228","gasCost":"0x3","memSize":160,"stack":["0x60f85af450506060527f066001600255606080527f0354506000600055600060"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":228,"op":82,"gas":"0x9e225","gasCost":"0x6","memSize":160,"stack":["0x60f85af450506060527f066001600255606080527f0354506000600055600060","0xa0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":229,"op":127,"gas":"0x9e21f","gasCost":"0x3","memSize":192,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":262,"op":96,"gas":"0x9e21c","gasCost":"0x3","memSize":192,"stack":["0x1556c3394fff4607f7f1684317b6080527f387b9f60a0527f1920700184809d"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":264,"op":82,"gas":"0x9e219","gasCost":"0x6","memSize":192,"stack":["0x1556c3394fff4607f7f1684317b6080527f387b9f60a0527f1920700184809d","0xc0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":265,"op":127,"gas":"0x9e213","gasCost":"0x3","memSize":224,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":298,"op":96,"gas":"0x9e210","gasCost":"0x3","memSize":224,"stack":["0x60015450011899016e6009ff60026001556000527f9f60a05260c0527f7f6000"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":300,"op":82,"gas":"0x9e20d","gasCost":"0x6","memSize":224,"stack":["0x60015450011899016e6009ff60026001556000527f9f60a05260c0527f7f6000","0xe0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":301,"op":127,"gas":"0x9e207","gasCost":"0x3","memSize":256,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":334,"op":97,"gas":"0x9e204","gasCost":"0x3","memSize":256,"stack":["0x527f9981600160045582600eff600060006000600060f65af45060006060e052"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":337,"op":82,"gas":"0x9e201","gasCost":"0x6","memSize":256,"stack":["0x527f9981600160045582600eff600060006000600060f65af45060006060e052","0x100"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":338,"op":127,"gas":"0x9e1fb","gasCost":"0x3","memSize":288,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":371,"op":97,"gas":"0x9e1f8","gasCost":"0x3","memSize":288,"stack":["0x7f6060c0527f20527e600060006020527f60f75af4501d7f1903166660006000"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":374,"op":82,"gas":"0x9e1f5","gasCost":"0x6","memSize":288,"stack":["0x7f6060c0527f20527e600060006020527f60f75af4501d7f1903166660006000","0x120"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":375,"op":127,"gas":"0x9e1ef","gasCost":"0x3","memSize":320,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":408,"op":97,"gas":"0x9e1ec","gasCost":"0x3","memSize":320,"stack":["0x60610100527e6000600060e0527f60046040527f5af150600060006000604052"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":411,"op":82,"gas":"0x9e1e9","gasCost":"0x6","memSize":320,"stack":["0x60610100527e6000600060e0527f60046040527f5af150600060006000604052","0x140"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":412,"op":127,"gas":"0x9e1e3","gasCost":"0x3","memSize":352,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":445,"op":97,"gas":"0x9e1e0","gasCost":"0x3","memSize":352,"stack":["0x7f60006009610120527f5af4503c95138e5b8f610100527f7f605a6000536060"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":448,"op":82,"gas":"0x9e1dd","gasCost":"0x6","memSize":352,"stack":["0x7f60006009610120527f5af4503c95138e5b8f610100527f7f605a6000536060","0x160"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":449,"op":127,"gas":"0x9e1d7","gasCost":"0x3","memSize":384,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":482,"op":97,"gas":"0x9e1d4","gasCost":"0x3","memSize":384,"stack":["0x527f6031600153606b60610140527f02536010606060527f0353604560610120"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":485,"op":82,"gas":"0x9e1d1","gasCost":"0x6","memSize":384,"stack":["0x527f6031600153606b60610140527f02536010606060527f0353604560610120","0x180"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":486,"op":127,"gas":"0x9e1cb","gasCost":"0x3","memSize":416,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":519,"op":97,"gas":"0x9e1c8","gasCost":"0x3","memSize":416,"stack":["0x527f04536060600553600160608052610160527f7e527f600653606060075360"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":522,"op":82,"gas":"0x9e1c5","gasCost":"0x6","memSize":416,"stack":["0x527f04536060600553600160608052610160527f7e527f600653606060075360","0x1a0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":523,"op":127,"gas":"0x9e1bf","gasCost":"0x3","memSize":448,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":556,"op":97,"gas":"0x9e1bc","gasCost":"0x3","memSize":448,"stack":["0x2600853606080610140527f527f556009536060610180527f600a53600160a0"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":559,"op":82,"gas":"0x9e1b9","gasCost":"0x6","memSize":448,"stack":["0x2600853606080610140527f527f556009536060610180527f600a53600160a0","0x1c0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":560,"op":127,"gas":"0x9e1b3","gasCost":"0x3","memSize":480,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":593,"op":97,"gas":"0x9e1b0","gasCost":"0x3","memSize":480,"stack":["0x527f600b536060600c6020527f53600060610160527f0d53606101a0527f5560"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":596,"op":82,"gas":"0x9e1ad","gasCost":"0x6","memSize":480,"stack":["0x527f600b536060600c6020527f53600060610160527f0d53606101a0527f5560","0x1e0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":597,"op":127,"gas":"0x9e1a7","gasCost":"0x3","memSize":512,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":630,"op":97,"gas":"0x9e1a4","gasCost":"0x3","memSize":512,"stack":["0xe60a0527f536060600f536060c0527f01601053606060115360026101806101"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":633,"op":82,"gas":"0x9e1a1","gasCost":"0x6","memSize":512,"stack":["0xe60a0527f536060600f536060c0527f01601053606060115360026101806101","0x200"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":634,"op":127,"gas":"0x9e19b","gasCost":"0x3","memSize":544,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":667,"op":97,"gas":"0x9e198","gasCost":"0x3","memSize":544,"stack":["0xc0527f527f601253606040527f55601353606060c0527f60145360e0527f6000"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":670,"op":82,"gas":"0x9e195","gasCost":"0x6","memSize":544,"stack":["0xc0527f527f601253606040527f55601353606060c0527f60145360e0527f6000","0x220"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":671,"op":127,"gas":"0x9e18f","gasCost":"0x3","memSize":576,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":704,"op":97,"gas":"0x9e18c","gasCost":"0x3","memSize":576,"stack":["0x6015536101e0527f60606101a0527f601653600060175360f360185360196060"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":707,"op":82,"gas":"0x9e189","gasCost":"0x6","memSize":576,"stack":["0x6015536101e0527f60606101a0527f601653600060175360f360185360196060","0x240"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":708,"op":127,"gas":"0x9e183","gasCost":"0x3","memSize":608,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":741,"op":97,"gas":"0x9e180","gasCost":"0x3","memSize":608,"stack":["0x605260006060e052610200527f610100527f7f806101c0527f5360f360815360"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":744,"op":82,"gas":"0x9e17d","gasCost":"0x6","memSize":608,"stack":["0x605260006060e052610200527f610100527f7f806101c0527f5360f360815360","0x260"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":745,"op":127,"gas":"0x9e177","gasCost":"0x3","memSize":640,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":778,"op":97,"gas":"0x9e174","gasCost":"0x3","memSize":640,"stack":["0x8260006000f060006000600060610220527e845af450506000600061016101e0"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":781,"op":82,"gas":"0x9e171","gasCost":"0x6","memSize":640,"stack":["0x8260006000f060006000600060610220527e845af450506000600061016101e0","0x280"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":782,"op":127,"gas":"0x9e16b","gasCost":"0x3","memSize":672,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":815,"op":97,"gas":"0x9e168","gasCost":"0x3","memSize":672,"stack":["0x527f20527f60610100527e600060006003610240527f5af15060005450c76000"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":818,"op":82,"gas":"0x9e165","gasCost":"0x6","memSize":672,"stack":["0x527f20527f60610100527e600060006003610240527f5af15060005450c76000","0x2a0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":819,"op":127,"gas":"0x9e15f","gasCost":"0x3","memSize":704,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":852,"op":97,"gas":"0x9e15c","gasCost":"0x3","memSize":704,"stack":["0x6002551309f562610200527f66a486610140527f6b00610260527f1d45716101"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":855,"op":82,"gas":"0x9e159","gasCost":"0x7","memSize":704,"stack":["0x6002551309f562610200527f66a486610140527f6b00610260527f1d45716101","0x2c0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":856,"op":127,"gas":"0x9e152","gasCost":"0x3","memSize":736,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":889,"op":97,"gas":"0x9e14f","gasCost":"0x3","memSize":736,"stack":["0x20527f600054501c641d373c7f60045450610220527f6000600155610280527f"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":892,"op":82,"gas":"0x9e14c","gasCost":"0x6","memSize":736,"stack":["0x20527f600054501c641d373c7f60045450610220527f6000600155610280527f","0x2e0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":893,"op":127,"gas":"0x9e146","gasCost":"0x3","memSize":768,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":926,"op":97,"gas":"0x9e143","gasCost":"0x3","memSize":768,"stack":["0x600554610160527f50600160025560085450610140527f60006002610240527f"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":929,"op":82,"gas":"0x9e140","gasCost":"0x6","memSize":768,"stack":["0x600554610160527f50600160025560085450610140527f60006002610240527f","0x300"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":930,"op":127,"gas":"0x9e13a","gasCost":"0x3","memSize":800,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":963,"op":97,"gas":"0x9e137","gasCost":"0x3","memSize":800,"stack":["0x6102a0527f557fd86000606000527e600060610180527e600060005af1508612"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":966,"op":82,"gas":"0x9e134","gasCost":"0x6","memSize":800,"stack":["0x6102a0527f557fd86000606000527e600060610180527e600060005af1508612","0x320"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":967,"op":127,"gas":"0x9e12e","gasCost":"0x3","memSize":832,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1000,"op":97,"gas":"0x9e12b","gasCost":"0x3","memSize":832,"stack":["0x17145147356102c0527f610260527f610160527f5198a37e127a7efa7c600052"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1003,"op":82,"gas":"0x9e128","gasCost":"0x6","memSize":832,"stack":["0x17145147356102c0527f610260527f610160527f5198a37e127a7efa7c600052","0x340"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1004,"op":127,"gas":"0x9e122","gasCost":"0x3","memSize":864,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1037,"op":97,"gas":"0x9e11f","gasCost":"0x3","memSize":864,"stack":["0x6101a0527f606020527f6102e0527f6060205360610280527ff760215360ff60"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1040,"op":82,"gas":"0x9e11c","gasCost":"0x6","memSize":864,"stack":["0x6101a0527f606020527f6102e0527f6060205360610280527ff760215360ff60","0x360"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1041,"op":127,"gas":"0x9e116","gasCost":"0x3","memSize":896,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1074,"op":97,"gas":"0x9e113","gasCost":"0x3","memSize":896,"stack":["0x225360610180527fdb602353603760610300527f6101c0527f24536075606102"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1077,"op":82,"gas":"0x9e110","gasCost":"0x6","memSize":896,"stack":["0x225360610180527fdb602353603760610300527f6101c0527f24536075606102","0x380"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1078,"op":127,"gas":"0x9e10a","gasCost":"0x3","memSize":928,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1111,"op":97,"gas":"0x9e107","gasCost":"0x3","memSize":928,"stack":["0xa0527f2553609f606040527f265360fe60275360610320527f8f60286101a052"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1114,"op":82,"gas":"0x9e104","gasCost":"0x6","memSize":928,"stack":["0xa0527f2553609f606040527f265360fe60275360610320527f8f60286101a052","0x3a0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1115,"op":127,"gas":"0x9e0fe","gasCost":"0x3","memSize":960,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1148,"op":97,"gas":"0x9e0fb","gasCost":"0x3","memSize":960,"stack":["0x7f53606101e0527f6102c0527f0b6029536060602a53600060610340527f2b53"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1151,"op":82,"gas":"0x9e0f8","gasCost":"0x6","memSize":960,"stack":["0x7f53606101e0527f6102c0527f0b6029536060602a53600060610340527f2b53","0x3c0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1152,"op":127,"gas":"0x9e0f2","gasCost":"0x3","memSize":992,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1185,"op":97,"gas":"0x9e0ef","gasCost":"0x3","memSize":992,"stack":["0x6060602c53606052606060805360006061016102e0527f610200527fc0526103"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1188,"op":82,"gas":"0x9e0ec","gasCost":"0x7","memSize":992,"stack":["0x6060602c53606052606060805360006061016102e0527f610200527fc0526103","0x3e0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1189,"op":127,"gas":"0x9e0e5","gasCost":"0x3","memSize":1024,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1222,"op":97,"gas":"0x9e0e2","gasCost":"0x3","memSize":1024,"stack":["0x60527f7f81536060608253602d6083536053608453606060855360fd61030052"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1225,"op":82,"gas":"0x9e0df","gasCost":"0x6","memSize":1024,"stack":["0x60527f7f81536060608253602d6083536053608453606060855360fd61030052","0x400"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1226,"op":127,"gas":"0x9e0d9","gasCost":"0x3","memSize":1056,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1259,"op":97,"gas":"0x9e0d6","gasCost":"0x3","memSize":1056,"stack":["0x7f6086610380527f536060610220527f6087536101e0527f602e608853605360"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1262,"op":82,"gas":"0x9e0d3","gasCost":"0x6","memSize":1056,"stack":["0x7f6086610380527f536060610220527f6087536101e0527f602e608853605360","0x420"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1263,"op":127,"gas":"0x9e0cd","gasCost":"0x3","memSize":1088,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1296,"op":97,"gas":"0x9e0ca","gasCost":"0x3","memSize":1088,"stack":["0x89536060608a61036103a0527f20527f53602f608b536060608c610240527f53"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1299,"op":82,"gas":"0x9e0c7","gasCost":"0x6","memSize":1088,"stack":["0x89536060608a61036103a0527f20527f53602f608b536060608c610240527f53","0x440"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1300,"op":127,"gas":"0x9e0c1","gasCost":"0x3","memSize":1120,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1333,"op":97,"gas":"0x9e0be","gasCost":"0x3","memSize":1120,"stack":["0x6000608d5360f36102005260606103c0527f610220610340527f53608e610221"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1336,"op":82,"gas":"0x9e0bb","gasCost":"0x6","memSize":1120,"stack":["0x6000608d5360f36102005260606103c0527f610220610340527f53608e610221","0x460"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1337,"op":127,"gas":"0x9e0b5","gasCost":"0x3","memSize":1152,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1370,"op":97,"gas":"0x9e0b2","gasCost":"0x3","memSize":1152,"stack":["0x536053610222536060610260527f610223536103e0527f600061022453606061"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1373,"op":82,"gas":"0x9e0af","gasCost":"0x6","memSize":1152,"stack":["0x536053610222536060610260527f610223536103e0527f600061022453606061","0x480"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1374,"op":127,"gas":"0x9e0a9","gasCost":"0x3","memSize":1184,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1407,"op":97,"gas":"0x9e0a6","gasCost":"0x3","memSize":1184,"stack":["0x360527f61022553608f61022653606061022753600061610400527f02610280"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1410,"op":82,"gas":"0x9e0a3","gasCost":"0x6","memSize":1184,"stack":["0x360527f61022553608f61022653606061022753600061610400527f02610280","0x4a0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1411,"op":127,"gas":"0x9e09d","gasCost":"0x3","memSize":1216,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1444,"op":97,"gas":"0x9e09a","gasCost":"0x3","memSize":1216,"stack":["0x527f28536060610229610380527f53600061022a5360f561022b536061042052"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1447,"op":82,"gas":"0x9e097","gasCost":"0x6","memSize":1216,"stack":["0x527f28536060610229610380527f53600061022a5360f561022b536061042052","0x4c0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1448,"op":127,"gas":"0x9e091","gasCost":"0x3","memSize":1248,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1481,"op":97,"gas":"0x9e08e","gasCost":"0x3","memSize":1248,"stack":["0x7f6061022c53600061022d536102a0527f60606103a0527f61022e5360006102"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1484,"op":82,"gas":"0x9e08b","gasCost":"0x7","memSize":1248,"stack":["0x7f6061022c53600061022d536102a0527f60606103a0527f61022e5360006102","0x4e0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1485,"op":127,"gas":"0x9e084","gasCost":"0x3","memSize":1280,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1518,"op":97,"gas":"0x9e081","gasCost":"0x3","memSize":1280,"stack":["0x2f610440527f53606061023053600061023153606061023253600061026103c0"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1521,"op":82,"gas":"0x9e07e","gasCost":"0x6","memSize":1280,"stack":["0x2f610440527f53606061023053600061023153606061023253600061026103c0","0x500"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1522,"op":127,"gas":"0x9e078","gasCost":"0x3","memSize":1312,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1555,"op":97,"gas":"0x9e075","gasCost":"0x3","memSize":1312,"stack":["0x527fc0527f61610460527f023353606061023453600061023553608561023653"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1558,"op":82,"gas":"0x9e072","gasCost":"0x6","memSize":1312,"stack":["0x527fc0527f61610460527f023353606061023453600061023553608561023653","0x520"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1559,"op":127,"gas":"0x9e06c","gasCost":"0x3","memSize":1344,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1592,"op":97,"gas":"0x9e069","gasCost":"0x3","memSize":1344,"stack":["0x605a61023753606103e052610480527f7ff261026102e0526038610300536053"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1595,"op":82,"gas":"0x9e066","gasCost":"0x6","memSize":1344,"stack":["0x605a61023753606103e052610480527f7ff261026102e0526038610300536053","0x540"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1596,"op":127,"gas":"0x9e060","gasCost":"0x3","memSize":1376,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1629,"op":97,"gas":"0x9e05d","gasCost":"0x3","memSize":1376,"stack":["0x610301536060610302536050610303536104a0527f60610400527f6161030453"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1632,"op":82,"gas":"0x9e05a","gasCost":"0x6","memSize":1376,"stack":["0x610301536060610302536050610303536104a0527f60610400527f6161030453","0x560"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1633,"op":127,"gas":"0x9e054","gasCost":"0x3","memSize":1408,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1666,"op":97,"gas":"0x9e051","gasCost":"0x3","memSize":1408,"stack":["0x6002610305536039610306536053610307536060616104c0527f030853605061"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1669,"op":82,"gas":"0x9e04e","gasCost":"0x6","memSize":1408,"stack":["0x6002610305536039610306536053610307536060616104c0527f030853605061","0x580"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1670,"op":127,"gas":"0x9e048","gasCost":"0x3","memSize":1440,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1703,"op":97,"gas":"0x9e045","gasCost":"0x3","memSize":1440,"stack":["0x610420527f030953606161030a53600261030b53603a61030c536104e0527f60"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1706,"op":82,"gas":"0x9e042","gasCost":"0x7","memSize":1440,"stack":["0x610420527f030953606161030a53600261030b53603a61030c536104e0527f60","0x5a0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1707,"op":127,"gas":"0x9e03b","gasCost":"0x3","memSize":1472,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1740,"op":97,"gas":"0x9e038","gasCost":"0x3","memSize":1472,"stack":["0x5361030d53606161030e610440527f53600261030f53603b6103105360606161"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1743,"op":82,"gas":"0x9e035","gasCost":"0x6","memSize":1472,"stack":["0x5361030d53606161030e610440527f53600261030f53603b6103105360606161","0x5c0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1744,"op":127,"gas":"0x9e02f","gasCost":"0x3","memSize":1504,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1777,"op":97,"gas":"0x9e02c","gasCost":"0x3","memSize":1504,"stack":["0x500527f03115360006103125360f36103135361610460526003610480536014"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1780,"op":82,"gas":"0x9e029","gasCost":"0x6","memSize":1504,"stack":["0x500527f03115360006103125360f36103135361610460526003610480536014","0x5e0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1781,"op":127,"gas":"0x9e023","gasCost":"0x3","memSize":1536,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1814,"op":97,"gas":"0x9e020","gasCost":"0x3","memSize":1536,"stack":["0x61048153610520527f6060610482536000610483536060610484536000610485"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1817,"op":82,"gas":"0x9e01d","gasCost":"0x6","memSize":1536,"stack":["0x61048153610520527f6060610482536000610483536060610484536000610485","0x600"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1818,"op":127,"gas":"0x9e017","gasCost":"0x3","memSize":1568,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1851,"op":97,"gas":"0x9e014","gasCost":"0x3","memSize":1568,"stack":["0x5360f0610486536060610540527f610487536000610488536060610489536000"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1854,"op":82,"gas":"0x9e011","gasCost":"0x6","memSize":1568,"stack":["0x5360f0610486536060610540527f610487536000610488536060610489536000","0x620"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1855,"op":127,"gas":"0x9e00b","gasCost":"0x3","memSize":1600,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1888,"op":97,"gas":"0x9e008","gasCost":"0x3","memSize":1600,"stack":["0x61048a53606061048b5360006104610560527f8c53606061048d53600061048e"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1891,"op":82,"gas":"0x9e005","gasCost":"0x7","memSize":1600,"stack":["0x61048a53606061048b5360006104610560527f8c53606061048d53600061048e","0x640"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1892,"op":127,"gas":"0x9dffe","gasCost":"0x3","memSize":1632,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1925,"op":97,"gas":"0x9dffb","gasCost":"0x3","memSize":1632,"stack":["0x53608461048f53605a6104905360f4610491536105805260606105a053605061"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1928,"op":82,"gas":"0x9dff8","gasCost":"0x6","memSize":1632,"stack":["0x53608461048f53605a6104905360f4610491536105805260606105a053605061","0x660"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1929,"op":127,"gas":"0x9dff2","gasCost":"0x3","memSize":1664,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1962,"op":97,"gas":"0x9dfef","gasCost":"0x3","memSize":1664,"stack":["0x5a15360616105a25360046105a35360926105a45360536105a55360606105a6"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1965,"op":82,"gas":"0x9dfec","gasCost":"0x6","memSize":1664,"stack":["0x5a15360616105a25360046105a35360926105a45360536105a55360606105a6","0x680"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1966,"op":127,"gas":"0x9dfe6","gasCost":"0x3","memSize":1696,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1999,"op":97,"gas":"0x9dfe3","gasCost":"0x3","memSize":1696,"stack":["0x5360506105a75360616105a85360046105a95360936105aa5360536105ab5360"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2002,"op":82,"gas":"0x9dfe0","gasCost":"0x6","memSize":1696,"stack":["0x5360506105a75360616105a85360046105a95360936105aa5360536105ab5360","0x6a0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":2003,"op":127,"gas":"0x9dfda","gasCost":"0x3","memSize":1728,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":2036,"op":97,"gas":"0x9dfd7","gasCost":"0x3","memSize":1728,"stack":["0x616105ac5360046105ad5360946105ae5360606105af5360006105b05360f361"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2039,"op":82,"gas":"0x9dfd4","gasCost":"0x6","memSize":1728,"stack":["0x616105ac5360046105ad5360946105ae5360606105af5360006105b05360f361","0x6c0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":2040,"op":96,"gas":"0x9dfce","gasCost":"0x3","memSize":1760,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2042,"op":97,"gas":"0x9dfcb","gasCost":"0x3","memSize":1760,"stack":["0x5"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2045,"op":83,"gas":"0x9dfc8","gasCost":"0x7","memSize":1760,"stack":["0x5","0x6e0"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2046,"op":96,"gas":"0x9dfc1","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2048,"op":97,"gas":"0x9dfbe","gasCost":"0x3","memSize":1792,"stack":["0xb1"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2051,"op":83,"gas":"0x9dfbb","gasCost":"0x3","memSize":1792,"stack":["0xb1","0x6e1"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2052,"op":96,"gas":"0x9dfb8","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2054,"op":97,"gas":"0x9dfb5","gasCost":"0x3","memSize":1792,"stack":["0x53"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2057,"op":83,"gas":"0x9dfb2","gasCost":"0x3","memSize":1792,"stack":["0x53","0x6e2"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2058,"op":96,"gas":"0x9dfaf","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2060,"op":97,"gas":"0x9dfac","gasCost":"0x3","memSize":1792,"stack":["0x60"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2063,"op":83,"gas":"0x9dfa9","gasCost":"0x3","memSize":1792,"stack":["0x60","0x6e3"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2064,"op":96,"gas":"0x9dfa6","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2066,"op":97,"gas":"0x9dfa3","gasCost":"0x3","memSize":1792,"stack":["0x0"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2069,"op":83,"gas":"0x9dfa0","gasCost":"0x3","memSize":1792,"stack":["0x0","0x6e4"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2070,"op":96,"gas":"0x9df9d","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2072,"op":97,"gas":"0x9df9a","gasCost":"0x3","memSize":1792,"stack":["0x61"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2075,"op":83,"gas":"0x9df97","gasCost":"0x3","memSize":1792,"stack":["0x61","0x6e5"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2076,"op":96,"gas":"0x9df94","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2078,"op":97,"gas":"0x9df91","gasCost":"0x3","memSize":1792,"stack":["0x5"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2081,"op":83,"gas":"0x9df8e","gasCost":"0x3","memSize":1792,"stack":["0x5","0x6e6"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2082,"op":96,"gas":"0x9df8b","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2084,"op":97,"gas":"0x9df88","gasCost":"0x3","memSize":1792,"stack":["0xb2"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2087,"op":83,"gas":"0x9df85","gasCost":"0x3","memSize":1792,"stack":["0xb2","0x6e7"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2088,"op":96,"gas":"0x9df82","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2090,"op":97,"gas":"0x9df7f","gasCost":"0x3","memSize":1792,"stack":["0x60"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2093,"op":83,"gas":"0x9df7c","gasCost":"0x3","memSize":1792,"stack":["0x60","0x6e8"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2094,"op":96,"gas":"0x9df79","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2096,"op":97,"gas":"0x9df76","gasCost":"0x3","memSize":1792,"stack":["0x0"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2099,"op":83,"gas":"0x9df73","gasCost":"0x3","memSize":1792,"stack":["0x0","0x6e9"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2100,"op":96,"gas":"0x9df70","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2102,"op":97,"gas":"0x9df6d","gasCost":"0x3","memSize":1792,"stack":["0x60"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2105,"op":83,"gas":"0x9df6a","gasCost":"0x3","memSize":1792,"stack":["0x60","0x6ea"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2106,"op":96,"gas":"0x9df67","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2108,"op":97,"gas":"0x9df64","gasCost":"0x3","memSize":1792,"stack":["0x0"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2111,"op":83,"gas":"0x9df61","gasCost":"0x3","memSize":1792,"stack":["0x0","0x6eb"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2112,"op":96,"gas":"0x9df5e","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2114,"op":97,"gas":"0x9df5b","gasCost":"0x3","memSize":1792,"stack":["0xf5"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2117,"op":83,"gas":"0x9df58","gasCost":"0x3","memSize":1792,"stack":["0xf5","0x6ec"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2118,"op":96,"gas":"0x9df55","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2120,"op":97,"gas":"0x9df52","gasCost":"0x3","memSize":1792,"stack":["0x60"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2123,"op":83,"gas":"0x9df4f","gasCost":"0x3","memSize":1792,"stack":["0x60","0x6ed"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2124,"op":96,"gas":"0x9df4c","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2126,"op":97,"gas":"0x9df49","gasCost":"0x3","memSize":1792,"stack":["0x0"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2129,"op":83,"gas":"0x9df46","gasCost":"0x3","memSize":1792,"stack":["0x0","0x6ee"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2130,"op":96,"gas":"0x9df43","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2132,"op":97,"gas":"0x9df40","gasCost":"0x3","memSize":1792,"stack":["0x60"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2135,"op":83,"gas":"0x9df3d","gasCost":"0x3","memSize":1792,"stack":["0x60","0x6ef"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2136,"op":96,"gas":"0x9df3a","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2138,"op":97,"gas":"0x9df37","gasCost":"0x3","memSize":1792,"stack":["0x0"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2141,"op":83,"gas":"0x9df34","gasCost":"0x3","memSize":1792,"stack":["0x0","0x6f0"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2142,"op":96,"gas":"0x9df31","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2144,"op":97,"gas":"0x9df2e","gasCost":"0x3","memSize":1792,"stack":["0x60"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2147,"op":83,"gas":"0x9df2b","gasCost":"0x3","memSize":1792,"stack":["0x60","0x6f1"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2148,"op":96,"gas":"0x9df28","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2150,"op":97,"gas":"0x9df25","gasCost":"0x3","memSize":1792,"stack":["0x0"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2153,"op":83,"gas":"0x9df22","gasCost":"0x3","memSize":1792,"stack":["0x0","0x6f2"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2154,"op":96,"gas":"0x9df1f","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2156,"op":97,"gas":"0x9df1c","gasCost":"0x3","memSize":1792,"stack":["0x60"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2159,"op":83,"gas":"0x9df19","gasCost":"0x3","memSize":1792,"stack":["0x60","0x6f3"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2160,"op":96,"gas":"0x9df16","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2162,"op":97,"gas":"0x9df13","gasCost":"0x3","memSize":1792,"stack":["0x0"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2165,"op":83,"gas":"0x9df10","gasCost":"0x3","memSize":1792,"stack":["0x0","0x6f4"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2166,"op":96,"gas":"0x9df0d","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2168,"op":97,"gas":"0x9df0a","gasCost":"0x3","memSize":1792,"stack":["0x60"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2171,"op":83,"gas":"0x9df07","gasCost":"0x3","memSize":1792,"stack":["0x60","0x6f5"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2172,"op":96,"gas":"0x9df04","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2174,"op":97,"gas":"0x9df01","gasCost":"0x3","memSize":1792,"stack":["0x0"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2177,"op":83,"gas":"0x9defe","gasCost":"0x3","memSize":1792,"stack":["0x0","0x6f6"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2178,"op":96,"gas":"0x9defb","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2180,"op":97,"gas":"0x9def8","gasCost":"0x3","memSize":1792,"stack":["0x85"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2183,"op":83,"gas":"0x9def5","gasCost":"0x3","memSize":1792,"stack":["0x85","0x6f7"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2184,"op":96,"gas":"0x9def2","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2186,"op":97,"gas":"0x9deef","gasCost":"0x3","memSize":1792,"stack":["0x5a"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2189,"op":83,"gas":"0x9deec","gasCost":"0x3","memSize":1792,"stack":["0x5a","0x6f8"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2190,"op":96,"gas":"0x9dee9","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2192,"op":97,"gas":"0x9dee6","gasCost":"0x3","memSize":1792,"stack":["0xf1"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2195,"op":83,"gas":"0x9dee3","gasCost":"0x3","memSize":1792,"stack":["0xf1","0x6f9"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2196,"op":96,"gas":"0x9dee0","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2198,"op":97,"gas":"0x9dedd","gasCost":"0x3","memSize":1792,"stack":["0x50"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2201,"op":83,"gas":"0x9deda","gasCost":"0x3","memSize":1792,"stack":["0x50","0x6fa"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2202,"op":96,"gas":"0x9ded7","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2204,"op":97,"gas":"0x9ded4","gasCost":"0x3","memSize":1792,"stack":["0x50"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2207,"op":83,"gas":"0x9ded1","gasCost":"0x3","memSize":1792,"stack":["0x50","0x6fb"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":2208,"op":97,"gas":"0x9dece","gasCost":"0x3","memSize":1792,"stack":[],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":2211,"op":96,"gas":"0x9decb","gasCost":"0x3","memSize":1792,"stack":["0x6fc"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2213,"op":243,"gas":"0x9dec8","gasCost":"0x0","memSize":1792,"stack":["0x6fc","0x0"],"depth":2,"refund":0,"opName":"RETURN"}
|
||||||
|
{"output":"7f6008545060006004557f600160045560006004556000600060006000600060f96000527f5af250600060006000606000527e60f45af4506000600060006000600060f55a6020527ff150f001075205846a44a283446020527f8ca2600060006000600060045af4506040527f519930847f3b631c54a49b5f60035450326040527f77306b60006000600060006060527f6000600c5af150600060006000600060f85af450506060527f066001600255606080527f035450600060005560006001556c3394fff4607f7f1684317b6080527f387b9f60a0527f1920700184809d60015450011899016e6009ff60026001556000527f9f60a05260c0527f7f6000527f9981600160045582600eff600060006000600060f65af45060006060e0527f6060c0527f20527e600060006020527f60f75af4501d7f190316666000600060610100527e6000600060e0527f60046040527f5af1506000600060006040527f60006009610120527f5af4503c95138e5b8f610100527f7f605a6000536060527f6031600153606b60610140527f02536010606060527f0353604560610120527f04536060600553600160608052610160527f7e527f60065360606007536002600853606080610140527f527f556009536060610180527f600a53600160a0527f600b536060600c6020527f53600060610160527f0d53606101a0527f55600e60a0527f536060600f536060c0527f01601053606060115360026101806101c0527f527f601253606040527f55601353606060c0527f60145360e0527f60006015536101e0527f60606101a0527f601653600060175360f360185360196060605260006060e052610200527f610100527f7f806101c0527f5360f3608153608260006000f060006000600060610220527e845af450506000600061016101e0527f20527f60610100527e600060006003610240527f5af15060005450c760006002551309f562610200527f66a486610140527f6b00610260527f1d4571610120527f600054501c641d373c7f60045450610220527f6000600155610280527f600554610160527f50600160025560085450610140527f60006002610240527f6102a0527f557fd86000606000527e600060610180527e600060005af150861217145147356102c0527f610260527f610160527f5198a37e127a7efa7c6000526101a0527f606020527f6102e0527f6060205360610280527ff760215360ff60225360610180527fdb602353603760610300527f6101c0527f24536075606102a0527f2553609f606040527f265360fe60275360610320527f8f60286101a0527f53606101e0527f6102c0527f0b6029536060602a53600060610340527f2b536060602c53606052606060805360006061016102e0527f610200527fc052610360527f7f81536060608253602d6083536053608453606060855360fd610300527f6086610380527f536060610220527f6087536101e0527f602e60885360536089536060608a61036103a0527f20527f53602f608b536060608c610240527f536000608d5360f36102005260606103c0527f610220610340527f53608e610221536053610222536060610260527f610223536103e0527f6000610224536060610360527f61022553608f61022653606061022753600061610400527f02610280527f28536060610229610380527f53600061022a5360f561022b5360610420527f6061022c53600061022d536102a0527f60606103a0527f61022e53600061022f610440527f53606061023053600061023153606061023253600061026103c0527fc0527f61610460527f023353606061023453600061023553608561023653605a61023753606103e052610480527f7ff261026102e0526038610300536053610301536060610302536050610303536104a0527f60610400527f61610304536002610305536039610306536053610307536060616104c0527f030853605061610420527f030953606161030a53600261030b53603a61030c536104e0527f605361030d53606161030e610440527f53600261030f53603b61031053606061610500527f03115360006103125360f3610313536161046052600361048053601461048153610520527f60606104825360006104835360606104845360006104855360f0610486536060610540527f61048753600061048853606061048953600061048a53606061048b5360006104610560527f8c53606061048d53600061048e53608461048f53605a6104905360f4610491536105805260606105a05360506105a15360616105a25360046105a35360926105a45360536105a55360606105a65360506105a75360616105a85360046105a95360936105aa5360536105ab5360616105ac5360046105ad5360946105ae5360606105af5360006105b05360f36105b15360006105b260006000f560006000600060006000855af15050","gasUsed":"0x5d717"}
|
||||||
|
{"pc":2605,"op":96,"gas":"0x49392","gasCost":"0x3","memSize":2240,"stack":["0x7dce2faf43218578e3fcf2ad22df9918a89e2fba"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2607,"op":96,"gas":"0x4938f","gasCost":"0x3","memSize":2240,"stack":["0x7dce2faf43218578e3fcf2ad22df9918a89e2fba","0x0"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2609,"op":96,"gas":"0x4938c","gasCost":"0x3","memSize":2240,"stack":["0x7dce2faf43218578e3fcf2ad22df9918a89e2fba","0x0","0x0"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2611,"op":96,"gas":"0x49389","gasCost":"0x3","memSize":2240,"stack":["0x7dce2faf43218578e3fcf2ad22df9918a89e2fba","0x0","0x0","0x0"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2613,"op":96,"gas":"0x49386","gasCost":"0x3","memSize":2240,"stack":["0x7dce2faf43218578e3fcf2ad22df9918a89e2fba","0x0","0x0","0x0","0x0"],"depth":1,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2615,"op":133,"gas":"0x49383","gasCost":"0x3","memSize":2240,"stack":["0x7dce2faf43218578e3fcf2ad22df9918a89e2fba","0x0","0x0","0x0","0x0","0x0"],"depth":1,"refund":0,"opName":"DUP6"}
|
||||||
|
{"pc":2616,"op":90,"gas":"0x49380","gasCost":"0x2","memSize":2240,"stack":["0x7dce2faf43218578e3fcf2ad22df9918a89e2fba","0x0","0x0","0x0","0x0","0x0","0x7dce2faf43218578e3fcf2ad22df9918a89e2fba"],"depth":1,"refund":0,"opName":"GAS"}
|
||||||
|
{"pc":2617,"op":241,"gas":"0x4937e","gasCost":"0x48132","memSize":2240,"stack":["0x7dce2faf43218578e3fcf2ad22df9918a89e2fba","0x0","0x0","0x0","0x0","0x0","0x7dce2faf43218578e3fcf2ad22df9918a89e2fba","0x4937e"],"depth":1,"refund":0,"opName":"CALL"}
|
||||||
|
{"pc":0,"op":127,"gas":"0x480ce","gasCost":"0x3","memSize":0,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":33,"op":96,"gas":"0x480cb","gasCost":"0x3","memSize":0,"stack":["0x6008545060006004557f600160045560006004556000600060006000600060f9"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":35,"op":82,"gas":"0x480c8","gasCost":"0x6","memSize":0,"stack":["0x6008545060006004557f600160045560006004556000600060006000600060f9","0x0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":36,"op":127,"gas":"0x480c2","gasCost":"0x3","memSize":32,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":69,"op":96,"gas":"0x480bf","gasCost":"0x3","memSize":32,"stack":["0x5af250600060006000606000527e60f45af4506000600060006000600060f55a"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":71,"op":82,"gas":"0x480bc","gasCost":"0x6","memSize":32,"stack":["0x5af250600060006000606000527e60f45af4506000600060006000600060f55a","0x20"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":72,"op":127,"gas":"0x480b6","gasCost":"0x3","memSize":64,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":105,"op":96,"gas":"0x480b3","gasCost":"0x3","memSize":64,"stack":["0xf150f001075205846a44a283446020527f8ca2600060006000600060045af450"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":107,"op":82,"gas":"0x480b0","gasCost":"0x6","memSize":64,"stack":["0xf150f001075205846a44a283446020527f8ca2600060006000600060045af450","0x40"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":108,"op":127,"gas":"0x480aa","gasCost":"0x3","memSize":96,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":141,"op":96,"gas":"0x480a7","gasCost":"0x3","memSize":96,"stack":["0x519930847f3b631c54a49b5f60035450326040527f77306b6000600060006000"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":143,"op":82,"gas":"0x480a4","gasCost":"0x6","memSize":96,"stack":["0x519930847f3b631c54a49b5f60035450326040527f77306b6000600060006000","0x60"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":144,"op":127,"gas":"0x4809e","gasCost":"0x3","memSize":128,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":177,"op":96,"gas":"0x4809b","gasCost":"0x3","memSize":128,"stack":["0x6000600c5af150600060006000600060f85af450506060527f06600160025560"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":179,"op":82,"gas":"0x48098","gasCost":"0x6","memSize":128,"stack":["0x6000600c5af150600060006000600060f85af450506060527f06600160025560","0x80"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":180,"op":127,"gas":"0x48092","gasCost":"0x3","memSize":160,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":213,"op":96,"gas":"0x4808f","gasCost":"0x3","memSize":160,"stack":["0x35450600060005560006001556c3394fff4607f7f1684317b6080527f387b9f"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":215,"op":82,"gas":"0x4808c","gasCost":"0x6","memSize":160,"stack":["0x35450600060005560006001556c3394fff4607f7f1684317b6080527f387b9f","0xa0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":216,"op":127,"gas":"0x48086","gasCost":"0x3","memSize":192,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":249,"op":96,"gas":"0x48083","gasCost":"0x3","memSize":192,"stack":["0x1920700184809d60015450011899016e6009ff60026001556000527f9f60a052"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":251,"op":82,"gas":"0x48080","gasCost":"0x6","memSize":192,"stack":["0x1920700184809d60015450011899016e6009ff60026001556000527f9f60a052","0xc0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":252,"op":127,"gas":"0x4807a","gasCost":"0x3","memSize":224,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":285,"op":96,"gas":"0x48077","gasCost":"0x3","memSize":224,"stack":["0x7f6000527f9981600160045582600eff600060006000600060f65af450600060"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":287,"op":82,"gas":"0x48074","gasCost":"0x6","memSize":224,"stack":["0x7f6000527f9981600160045582600eff600060006000600060f65af450600060","0xe0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":288,"op":127,"gas":"0x4806e","gasCost":"0x3","memSize":256,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":321,"op":97,"gas":"0x4806b","gasCost":"0x3","memSize":256,"stack":["0x6060c0527f20527e600060006020527f60f75af4501d7f190316666000600060"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":324,"op":82,"gas":"0x48068","gasCost":"0x6","memSize":256,"stack":["0x6060c0527f20527e600060006020527f60f75af4501d7f190316666000600060","0x100"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":325,"op":126,"gas":"0x48062","gasCost":"0x3","memSize":288,"stack":[],"depth":2,"refund":0,"opName":"PUSH31"}
|
||||||
|
{"pc":357,"op":97,"gas":"0x4805f","gasCost":"0x3","memSize":288,"stack":["0x6000600060e0527f60046040527f5af1506000600060006040527f60006009"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":360,"op":82,"gas":"0x4805c","gasCost":"0x6","memSize":288,"stack":["0x6000600060e0527f60046040527f5af1506000600060006040527f60006009","0x120"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":361,"op":127,"gas":"0x48056","gasCost":"0x3","memSize":320,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":394,"op":97,"gas":"0x48053","gasCost":"0x3","memSize":320,"stack":["0x5af4503c95138e5b8f610100527f7f605a6000536060527f6031600153606b60"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":397,"op":82,"gas":"0x48050","gasCost":"0x6","memSize":320,"stack":["0x5af4503c95138e5b8f610100527f7f605a6000536060527f6031600153606b60","0x140"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":398,"op":127,"gas":"0x4804a","gasCost":"0x3","memSize":352,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":431,"op":97,"gas":"0x48047","gasCost":"0x3","memSize":352,"stack":["0x2536010606060527f0353604560610120527f04536060600553600160608052"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":434,"op":82,"gas":"0x48044","gasCost":"0x6","memSize":352,"stack":["0x2536010606060527f0353604560610120527f04536060600553600160608052","0x160"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":435,"op":127,"gas":"0x4803e","gasCost":"0x3","memSize":384,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":468,"op":97,"gas":"0x4803b","gasCost":"0x3","memSize":384,"stack":["0x7e527f60065360606007536002600853606080610140527f527f556009536060"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":471,"op":82,"gas":"0x48038","gasCost":"0x6","memSize":384,"stack":["0x7e527f60065360606007536002600853606080610140527f527f556009536060","0x180"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":472,"op":127,"gas":"0x48032","gasCost":"0x3","memSize":416,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":505,"op":97,"gas":"0x4802f","gasCost":"0x3","memSize":416,"stack":["0x600a53600160a0527f600b536060600c6020527f53600060610160527f0d5360"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":508,"op":82,"gas":"0x4802c","gasCost":"0x6","memSize":416,"stack":["0x600a53600160a0527f600b536060600c6020527f53600060610160527f0d5360","0x1a0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":509,"op":127,"gas":"0x48026","gasCost":"0x3","memSize":448,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":542,"op":97,"gas":"0x48023","gasCost":"0x3","memSize":448,"stack":["0x55600e60a0527f536060600f536060c0527f0160105360606011536002610180"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":545,"op":82,"gas":"0x48020","gasCost":"0x6","memSize":448,"stack":["0x55600e60a0527f536060600f536060c0527f0160105360606011536002610180","0x1c0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":546,"op":127,"gas":"0x4801a","gasCost":"0x3","memSize":480,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":579,"op":97,"gas":"0x48017","gasCost":"0x3","memSize":480,"stack":["0x527f601253606040527f55601353606060c0527f60145360e0527f6000601553"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":582,"op":82,"gas":"0x48014","gasCost":"0x6","memSize":480,"stack":["0x527f601253606040527f55601353606060c0527f60145360e0527f6000601553","0x1e0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":583,"op":127,"gas":"0x4800e","gasCost":"0x3","memSize":512,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":616,"op":97,"gas":"0x4800b","gasCost":"0x3","memSize":512,"stack":["0x60606101a0527f601653600060175360f360185360196060605260006060e052"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":619,"op":82,"gas":"0x48008","gasCost":"0x6","memSize":512,"stack":["0x60606101a0527f601653600060175360f360185360196060605260006060e052","0x200"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":620,"op":127,"gas":"0x48002","gasCost":"0x3","memSize":544,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":653,"op":97,"gas":"0x47fff","gasCost":"0x3","memSize":544,"stack":["0x610100527f7f806101c0527f5360f3608153608260006000f060006000600060"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":656,"op":82,"gas":"0x47ffc","gasCost":"0x6","memSize":544,"stack":["0x610100527f7f806101c0527f5360f3608153608260006000f060006000600060","0x220"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":657,"op":126,"gas":"0x47ff6","gasCost":"0x3","memSize":576,"stack":[],"depth":2,"refund":0,"opName":"PUSH31"}
|
||||||
|
{"pc":689,"op":97,"gas":"0x47ff3","gasCost":"0x3","memSize":576,"stack":["0x845af450506000600061016101e0527f20527f60610100527e600060006003"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":692,"op":82,"gas":"0x47ff0","gasCost":"0x6","memSize":576,"stack":["0x845af450506000600061016101e0527f20527f60610100527e600060006003","0x240"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":693,"op":127,"gas":"0x47fea","gasCost":"0x3","memSize":608,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":726,"op":97,"gas":"0x47fe7","gasCost":"0x3","memSize":608,"stack":["0x5af15060005450c760006002551309f562610200527f66a486610140527f6b00"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":729,"op":82,"gas":"0x47fe4","gasCost":"0x6","memSize":608,"stack":["0x5af15060005450c760006002551309f562610200527f66a486610140527f6b00","0x260"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":730,"op":127,"gas":"0x47fde","gasCost":"0x3","memSize":640,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":763,"op":97,"gas":"0x47fdb","gasCost":"0x3","memSize":640,"stack":["0x1d4571610120527f600054501c641d373c7f60045450610220527f6000600155"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":766,"op":82,"gas":"0x47fd8","gasCost":"0x6","memSize":640,"stack":["0x1d4571610120527f600054501c641d373c7f60045450610220527f6000600155","0x280"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":767,"op":127,"gas":"0x47fd2","gasCost":"0x3","memSize":672,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":800,"op":97,"gas":"0x47fcf","gasCost":"0x3","memSize":672,"stack":["0x600554610160527f50600160025560085450610140527f60006002610240527f"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":803,"op":82,"gas":"0x47fcc","gasCost":"0x6","memSize":672,"stack":["0x600554610160527f50600160025560085450610140527f60006002610240527f","0x2a0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":804,"op":127,"gas":"0x47fc6","gasCost":"0x3","memSize":704,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":837,"op":97,"gas":"0x47fc3","gasCost":"0x3","memSize":704,"stack":["0x557fd86000606000527e600060610180527e600060005af15086121714514735"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":840,"op":82,"gas":"0x47fc0","gasCost":"0x7","memSize":704,"stack":["0x557fd86000606000527e600060610180527e600060005af15086121714514735","0x2c0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":841,"op":127,"gas":"0x47fb9","gasCost":"0x3","memSize":736,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":874,"op":97,"gas":"0x47fb6","gasCost":"0x3","memSize":736,"stack":["0x610260527f610160527f5198a37e127a7efa7c6000526101a0527f606020527f"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":877,"op":82,"gas":"0x47fb3","gasCost":"0x6","memSize":736,"stack":["0x610260527f610160527f5198a37e127a7efa7c6000526101a0527f606020527f","0x2e0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":878,"op":127,"gas":"0x47fad","gasCost":"0x3","memSize":768,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":911,"op":97,"gas":"0x47faa","gasCost":"0x3","memSize":768,"stack":["0x6060205360610280527ff760215360ff60225360610180527fdb602353603760"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":914,"op":82,"gas":"0x47fa7","gasCost":"0x6","memSize":768,"stack":["0x6060205360610280527ff760215360ff60225360610180527fdb602353603760","0x300"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":915,"op":127,"gas":"0x47fa1","gasCost":"0x3","memSize":800,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":948,"op":97,"gas":"0x47f9e","gasCost":"0x3","memSize":800,"stack":["0x6101c0527f24536075606102a0527f2553609f606040527f265360fe60275360"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":951,"op":82,"gas":"0x47f9b","gasCost":"0x6","memSize":800,"stack":["0x6101c0527f24536075606102a0527f2553609f606040527f265360fe60275360","0x320"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":952,"op":127,"gas":"0x47f95","gasCost":"0x3","memSize":832,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":985,"op":97,"gas":"0x47f92","gasCost":"0x3","memSize":832,"stack":["0x8f60286101a0527f53606101e0527f6102c0527f0b6029536060602a53600060"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":988,"op":82,"gas":"0x47f8f","gasCost":"0x6","memSize":832,"stack":["0x8f60286101a0527f53606101e0527f6102c0527f0b6029536060602a53600060","0x340"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":989,"op":127,"gas":"0x47f89","gasCost":"0x3","memSize":864,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1022,"op":97,"gas":"0x47f86","gasCost":"0x3","memSize":864,"stack":["0x2b536060602c53606052606060805360006061016102e0527f610200527fc052"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1025,"op":82,"gas":"0x47f83","gasCost":"0x6","memSize":864,"stack":["0x2b536060602c53606052606060805360006061016102e0527f610200527fc052","0x360"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1026,"op":127,"gas":"0x47f7d","gasCost":"0x3","memSize":896,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1059,"op":97,"gas":"0x47f7a","gasCost":"0x3","memSize":896,"stack":["0x7f81536060608253602d6083536053608453606060855360fd610300527f6086"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1062,"op":82,"gas":"0x47f77","gasCost":"0x6","memSize":896,"stack":["0x7f81536060608253602d6083536053608453606060855360fd610300527f6086","0x380"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1063,"op":127,"gas":"0x47f71","gasCost":"0x3","memSize":928,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1096,"op":97,"gas":"0x47f6e","gasCost":"0x3","memSize":928,"stack":["0x536060610220527f6087536101e0527f602e60885360536089536060608a6103"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1099,"op":82,"gas":"0x47f6b","gasCost":"0x6","memSize":928,"stack":["0x536060610220527f6087536101e0527f602e60885360536089536060608a6103","0x3a0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1100,"op":127,"gas":"0x47f65","gasCost":"0x3","memSize":960,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1133,"op":97,"gas":"0x47f62","gasCost":"0x3","memSize":960,"stack":["0x20527f53602f608b536060608c610240527f536000608d5360f3610200526060"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1136,"op":82,"gas":"0x47f5f","gasCost":"0x6","memSize":960,"stack":["0x20527f53602f608b536060608c610240527f536000608d5360f3610200526060","0x3c0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1137,"op":127,"gas":"0x47f59","gasCost":"0x3","memSize":992,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1170,"op":97,"gas":"0x47f56","gasCost":"0x3","memSize":992,"stack":["0x610220610340527f53608e610221536053610222536060610260527f61022353"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1173,"op":82,"gas":"0x47f53","gasCost":"0x7","memSize":992,"stack":["0x610220610340527f53608e610221536053610222536060610260527f61022353","0x3e0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1174,"op":127,"gas":"0x47f4c","gasCost":"0x3","memSize":1024,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1207,"op":97,"gas":"0x47f49","gasCost":"0x3","memSize":1024,"stack":["0x6000610224536060610360527f61022553608f61022653606061022753600061"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1210,"op":82,"gas":"0x47f46","gasCost":"0x6","memSize":1024,"stack":["0x6000610224536060610360527f61022553608f61022653606061022753600061","0x400"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1211,"op":127,"gas":"0x47f40","gasCost":"0x3","memSize":1056,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1244,"op":97,"gas":"0x47f3d","gasCost":"0x3","memSize":1056,"stack":["0x2610280527f28536060610229610380527f53600061022a5360f561022b5360"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1247,"op":82,"gas":"0x47f3a","gasCost":"0x6","memSize":1056,"stack":["0x2610280527f28536060610229610380527f53600061022a5360f561022b5360","0x420"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1248,"op":127,"gas":"0x47f34","gasCost":"0x3","memSize":1088,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1281,"op":97,"gas":"0x47f31","gasCost":"0x3","memSize":1088,"stack":["0x6061022c53600061022d536102a0527f60606103a0527f61022e53600061022f"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1284,"op":82,"gas":"0x47f2e","gasCost":"0x6","memSize":1088,"stack":["0x6061022c53600061022d536102a0527f60606103a0527f61022e53600061022f","0x440"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1285,"op":127,"gas":"0x47f28","gasCost":"0x3","memSize":1120,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1318,"op":97,"gas":"0x47f25","gasCost":"0x3","memSize":1120,"stack":["0x53606061023053600061023153606061023253600061026103c0527fc0527f61"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1321,"op":82,"gas":"0x47f22","gasCost":"0x6","memSize":1120,"stack":["0x53606061023053600061023153606061023253600061026103c0527fc0527f61","0x460"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1322,"op":127,"gas":"0x47f1c","gasCost":"0x3","memSize":1152,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1355,"op":97,"gas":"0x47f19","gasCost":"0x3","memSize":1152,"stack":["0x23353606061023453600061023553608561023653605a61023753606103e052"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1358,"op":82,"gas":"0x47f16","gasCost":"0x6","memSize":1152,"stack":["0x23353606061023453600061023553608561023653605a61023753606103e052","0x480"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1359,"op":127,"gas":"0x47f10","gasCost":"0x3","memSize":1184,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1392,"op":97,"gas":"0x47f0d","gasCost":"0x3","memSize":1184,"stack":["0x7ff261026102e052603861030053605361030153606061030253605061030353"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1395,"op":82,"gas":"0x47f0a","gasCost":"0x6","memSize":1184,"stack":["0x7ff261026102e052603861030053605361030153606061030253605061030353","0x4a0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1396,"op":127,"gas":"0x47f04","gasCost":"0x3","memSize":1216,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1429,"op":97,"gas":"0x47f01","gasCost":"0x3","memSize":1216,"stack":["0x60610400527f6161030453600261030553603961030653605361030753606061"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1432,"op":82,"gas":"0x47efe","gasCost":"0x6","memSize":1216,"stack":["0x60610400527f6161030453600261030553603961030653605361030753606061","0x4c0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1433,"op":127,"gas":"0x47ef8","gasCost":"0x3","memSize":1248,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1466,"op":97,"gas":"0x47ef5","gasCost":"0x3","memSize":1248,"stack":["0x30853605061610420527f030953606161030a53600261030b53603a61030c53"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1469,"op":82,"gas":"0x47ef2","gasCost":"0x7","memSize":1248,"stack":["0x30853605061610420527f030953606161030a53600261030b53603a61030c53","0x4e0"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1470,"op":127,"gas":"0x47eeb","gasCost":"0x3","memSize":1280,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1503,"op":97,"gas":"0x47ee8","gasCost":"0x3","memSize":1280,"stack":["0x605361030d53606161030e610440527f53600261030f53603b61031053606061"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1506,"op":82,"gas":"0x47ee5","gasCost":"0x6","memSize":1280,"stack":["0x605361030d53606161030e610440527f53600261030f53603b61031053606061","0x500"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1507,"op":127,"gas":"0x47edf","gasCost":"0x3","memSize":1312,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1540,"op":97,"gas":"0x47edc","gasCost":"0x3","memSize":1312,"stack":["0x3115360006103125360f3610313536161046052600361048053601461048153"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1543,"op":82,"gas":"0x47ed9","gasCost":"0x6","memSize":1312,"stack":["0x3115360006103125360f3610313536161046052600361048053601461048153","0x520"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1544,"op":127,"gas":"0x47ed3","gasCost":"0x3","memSize":1344,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1577,"op":97,"gas":"0x47ed0","gasCost":"0x3","memSize":1344,"stack":["0x60606104825360006104835360606104845360006104855360f0610486536060"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1580,"op":82,"gas":"0x47ecd","gasCost":"0x6","memSize":1344,"stack":["0x60606104825360006104835360606104845360006104855360f0610486536060","0x540"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1581,"op":127,"gas":"0x47ec7","gasCost":"0x3","memSize":1376,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1614,"op":97,"gas":"0x47ec4","gasCost":"0x3","memSize":1376,"stack":["0x61048753600061048853606061048953600061048a53606061048b5360006104"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1617,"op":82,"gas":"0x47ec1","gasCost":"0x6","memSize":1376,"stack":["0x61048753600061048853606061048953600061048a53606061048b5360006104","0x560"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1618,"op":127,"gas":"0x47ebb","gasCost":"0x3","memSize":1408,"stack":[],"depth":2,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1651,"op":97,"gas":"0x47eb8","gasCost":"0x3","memSize":1408,"stack":["0x8c53606061048d53600061048e53608461048f53605a6104905360f461049153"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1654,"op":82,"gas":"0x47eb5","gasCost":"0x6","memSize":1408,"stack":["0x8c53606061048d53600061048e53608461048f53605a6104905360f461049153","0x580"],"depth":2,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1655,"op":96,"gas":"0x47eaf","gasCost":"0x3","memSize":1440,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1657,"op":97,"gas":"0x47eac","gasCost":"0x3","memSize":1440,"stack":["0x60"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1660,"op":83,"gas":"0x47ea9","gasCost":"0x7","memSize":1440,"stack":["0x60","0x5a0"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1661,"op":96,"gas":"0x47ea2","gasCost":"0x3","memSize":1472,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1663,"op":97,"gas":"0x47e9f","gasCost":"0x3","memSize":1472,"stack":["0x50"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1666,"op":83,"gas":"0x47e9c","gasCost":"0x3","memSize":1472,"stack":["0x50","0x5a1"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1667,"op":96,"gas":"0x47e99","gasCost":"0x3","memSize":1472,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1669,"op":97,"gas":"0x47e96","gasCost":"0x3","memSize":1472,"stack":["0x61"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1672,"op":83,"gas":"0x47e93","gasCost":"0x3","memSize":1472,"stack":["0x61","0x5a2"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1673,"op":96,"gas":"0x47e90","gasCost":"0x3","memSize":1472,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1675,"op":97,"gas":"0x47e8d","gasCost":"0x3","memSize":1472,"stack":["0x4"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1678,"op":83,"gas":"0x47e8a","gasCost":"0x3","memSize":1472,"stack":["0x4","0x5a3"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1679,"op":96,"gas":"0x47e87","gasCost":"0x3","memSize":1472,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1681,"op":97,"gas":"0x47e84","gasCost":"0x3","memSize":1472,"stack":["0x92"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1684,"op":83,"gas":"0x47e81","gasCost":"0x3","memSize":1472,"stack":["0x92","0x5a4"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1685,"op":96,"gas":"0x47e7e","gasCost":"0x3","memSize":1472,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1687,"op":97,"gas":"0x47e7b","gasCost":"0x3","memSize":1472,"stack":["0x53"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1690,"op":83,"gas":"0x47e78","gasCost":"0x3","memSize":1472,"stack":["0x53","0x5a5"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1691,"op":96,"gas":"0x47e75","gasCost":"0x3","memSize":1472,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1693,"op":97,"gas":"0x47e72","gasCost":"0x3","memSize":1472,"stack":["0x60"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1696,"op":83,"gas":"0x47e6f","gasCost":"0x3","memSize":1472,"stack":["0x60","0x5a6"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1697,"op":96,"gas":"0x47e6c","gasCost":"0x3","memSize":1472,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1699,"op":97,"gas":"0x47e69","gasCost":"0x3","memSize":1472,"stack":["0x50"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1702,"op":83,"gas":"0x47e66","gasCost":"0x3","memSize":1472,"stack":["0x50","0x5a7"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1703,"op":96,"gas":"0x47e63","gasCost":"0x3","memSize":1472,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1705,"op":97,"gas":"0x47e60","gasCost":"0x3","memSize":1472,"stack":["0x61"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1708,"op":83,"gas":"0x47e5d","gasCost":"0x3","memSize":1472,"stack":["0x61","0x5a8"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1709,"op":96,"gas":"0x47e5a","gasCost":"0x3","memSize":1472,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1711,"op":97,"gas":"0x47e57","gasCost":"0x3","memSize":1472,"stack":["0x4"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1714,"op":83,"gas":"0x47e54","gasCost":"0x3","memSize":1472,"stack":["0x4","0x5a9"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1715,"op":96,"gas":"0x47e51","gasCost":"0x3","memSize":1472,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1717,"op":97,"gas":"0x47e4e","gasCost":"0x3","memSize":1472,"stack":["0x93"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1720,"op":83,"gas":"0x47e4b","gasCost":"0x3","memSize":1472,"stack":["0x93","0x5aa"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1721,"op":96,"gas":"0x47e48","gasCost":"0x3","memSize":1472,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1723,"op":97,"gas":"0x47e45","gasCost":"0x3","memSize":1472,"stack":["0x53"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1726,"op":83,"gas":"0x47e42","gasCost":"0x3","memSize":1472,"stack":["0x53","0x5ab"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1727,"op":96,"gas":"0x47e3f","gasCost":"0x3","memSize":1472,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1729,"op":97,"gas":"0x47e3c","gasCost":"0x3","memSize":1472,"stack":["0x61"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1732,"op":83,"gas":"0x47e39","gasCost":"0x3","memSize":1472,"stack":["0x61","0x5ac"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1733,"op":96,"gas":"0x47e36","gasCost":"0x3","memSize":1472,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1735,"op":97,"gas":"0x47e33","gasCost":"0x3","memSize":1472,"stack":["0x4"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1738,"op":83,"gas":"0x47e30","gasCost":"0x3","memSize":1472,"stack":["0x4","0x5ad"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1739,"op":96,"gas":"0x47e2d","gasCost":"0x3","memSize":1472,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1741,"op":97,"gas":"0x47e2a","gasCost":"0x3","memSize":1472,"stack":["0x94"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1744,"op":83,"gas":"0x47e27","gasCost":"0x3","memSize":1472,"stack":["0x94","0x5ae"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1745,"op":96,"gas":"0x47e24","gasCost":"0x3","memSize":1472,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1747,"op":97,"gas":"0x47e21","gasCost":"0x3","memSize":1472,"stack":["0x60"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1750,"op":83,"gas":"0x47e1e","gasCost":"0x3","memSize":1472,"stack":["0x60","0x5af"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1751,"op":96,"gas":"0x47e1b","gasCost":"0x3","memSize":1472,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1753,"op":97,"gas":"0x47e18","gasCost":"0x3","memSize":1472,"stack":["0x0"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1756,"op":83,"gas":"0x47e15","gasCost":"0x3","memSize":1472,"stack":["0x0","0x5b0"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1757,"op":96,"gas":"0x47e12","gasCost":"0x3","memSize":1472,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1759,"op":97,"gas":"0x47e0f","gasCost":"0x3","memSize":1472,"stack":["0xf3"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1762,"op":83,"gas":"0x47e0c","gasCost":"0x3","memSize":1472,"stack":["0xf3","0x5b1"],"depth":2,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1763,"op":96,"gas":"0x47e09","gasCost":"0x3","memSize":1472,"stack":[],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1765,"op":97,"gas":"0x47e06","gasCost":"0x3","memSize":1472,"stack":["0x0"],"depth":2,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1768,"op":96,"gas":"0x47e03","gasCost":"0x3","memSize":1472,"stack":["0x0","0x5b2"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1770,"op":96,"gas":"0x47e00","gasCost":"0x3","memSize":1472,"stack":["0x0","0x5b2","0x0"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1772,"op":245,"gas":"0x47dfd","gasCost":"0x7e14","memSize":1472,"stack":["0x0","0x5b2","0x0","0x0"],"depth":2,"refund":0,"opName":"CREATE2"}
|
||||||
|
{"pc":0,"op":96,"gas":"0x3efea","gasCost":"0x3","memSize":0,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2,"op":84,"gas":"0x3efe7","gasCost":"0x834","memSize":0,"stack":["0x8"],"depth":3,"refund":0,"opName":"SLOAD"}
|
||||||
|
{"pc":3,"op":80,"gas":"0x3e7b3","gasCost":"0x2","memSize":0,"stack":["0x0"],"depth":3,"refund":0,"opName":"POP"}
|
||||||
|
{"pc":4,"op":96,"gas":"0x3e7b1","gasCost":"0x3","memSize":0,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":6,"op":96,"gas":"0x3e7ae","gasCost":"0x3","memSize":0,"stack":["0x0"],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":8,"op":85,"gas":"0x3e7ab","gasCost":"0x898","memSize":0,"stack":["0x0","0x4"],"depth":3,"refund":0,"opName":"SSTORE"}
|
||||||
|
{"pc":9,"op":127,"gas":"0x3df13","gasCost":"0x3","memSize":0,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":42,"op":96,"gas":"0x3df10","gasCost":"0x3","memSize":0,"stack":["0x600160045560006004556000600060006000600060f95af25060006000600060"],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":44,"op":82,"gas":"0x3df0d","gasCost":"0x6","memSize":0,"stack":["0x600160045560006004556000600060006000600060f95af25060006000600060","0x0"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":45,"op":126,"gas":"0x3df07","gasCost":"0x3","memSize":32,"stack":[],"depth":3,"refund":0,"opName":"PUSH31"}
|
||||||
|
{"pc":77,"op":96,"gas":"0x3df04","gasCost":"0x3","memSize":32,"stack":["0x60f45af4506000600060006000600060f55af150f001075205846a44a28344"],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":79,"op":82,"gas":"0x3df01","gasCost":"0x6","memSize":32,"stack":["0x60f45af4506000600060006000600060f55af150f001075205846a44a28344","0x20"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":80,"op":127,"gas":"0x3defb","gasCost":"0x3","memSize":64,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":113,"op":96,"gas":"0x3def8","gasCost":"0x3","memSize":64,"stack":["0x8ca2600060006000600060045af450519930847f3b631c54a49b5f6003545032"],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":115,"op":82,"gas":"0x3def5","gasCost":"0x6","memSize":64,"stack":["0x8ca2600060006000600060045af450519930847f3b631c54a49b5f6003545032","0x40"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":116,"op":127,"gas":"0x3deef","gasCost":"0x3","memSize":96,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":149,"op":96,"gas":"0x3deec","gasCost":"0x3","memSize":96,"stack":["0x77306b60006000600060006000600c5af150600060006000600060f85af45050"],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":151,"op":82,"gas":"0x3dee9","gasCost":"0x6","memSize":96,"stack":["0x77306b60006000600060006000600c5af150600060006000600060f85af45050","0x60"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":152,"op":127,"gas":"0x3dee3","gasCost":"0x3","memSize":128,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":185,"op":96,"gas":"0x3dee0","gasCost":"0x3","memSize":128,"stack":["0x6600160025560035450600060005560006001556c3394fff4607f7f1684317b"],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":187,"op":82,"gas":"0x3dedd","gasCost":"0x6","memSize":128,"stack":["0x6600160025560035450600060005560006001556c3394fff4607f7f1684317b","0x80"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":188,"op":127,"gas":"0x3ded7","gasCost":"0x3","memSize":160,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":221,"op":96,"gas":"0x3ded4","gasCost":"0x3","memSize":160,"stack":["0x387b9f1920700184809d60015450011899016e6009ff60026001556000527f9f"],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":223,"op":82,"gas":"0x3ded1","gasCost":"0x6","memSize":160,"stack":["0x387b9f1920700184809d60015450011899016e6009ff60026001556000527f9f","0xa0"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":224,"op":127,"gas":"0x3decb","gasCost":"0x3","memSize":192,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":257,"op":96,"gas":"0x3dec8","gasCost":"0x3","memSize":192,"stack":["0x6000527f9981600160045582600eff600060006000600060f65af45060006060"],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":259,"op":82,"gas":"0x3dec5","gasCost":"0x6","memSize":192,"stack":["0x6000527f9981600160045582600eff600060006000600060f65af45060006060","0xc0"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":260,"op":127,"gas":"0x3debf","gasCost":"0x3","memSize":224,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":293,"op":96,"gas":"0x3debc","gasCost":"0x3","memSize":224,"stack":["0x20527e600060006020527f60f75af4501d7f1903166660006000600060006000"],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":295,"op":82,"gas":"0x3deb9","gasCost":"0x6","memSize":224,"stack":["0x20527e600060006020527f60f75af4501d7f1903166660006000600060006000","0xe0"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":296,"op":127,"gas":"0x3deb3","gasCost":"0x3","memSize":256,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":329,"op":97,"gas":"0x3deb0","gasCost":"0x3","memSize":256,"stack":["0x60046040527f5af1506000600060006040527f600060095af4503c95138e5b8f"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":332,"op":82,"gas":"0x3dead","gasCost":"0x6","memSize":256,"stack":["0x60046040527f5af1506000600060006040527f600060095af4503c95138e5b8f","0x100"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":333,"op":127,"gas":"0x3dea7","gasCost":"0x3","memSize":288,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":366,"op":97,"gas":"0x3dea4","gasCost":"0x3","memSize":288,"stack":["0x7f605a6000536060527f6031600153606b6002536010606060527f0353604560"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":369,"op":82,"gas":"0x3dea1","gasCost":"0x6","memSize":288,"stack":["0x7f605a6000536060527f6031600153606b6002536010606060527f0353604560","0x120"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":370,"op":127,"gas":"0x3de9b","gasCost":"0x3","memSize":320,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":403,"op":97,"gas":"0x3de98","gasCost":"0x3","memSize":320,"stack":["0x45360606005536001606080527e527f60065360606007536002600853606080"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":406,"op":82,"gas":"0x3de95","gasCost":"0x6","memSize":320,"stack":["0x45360606005536001606080527e527f60065360606007536002600853606080","0x140"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":407,"op":127,"gas":"0x3de8f","gasCost":"0x3","memSize":352,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":440,"op":97,"gas":"0x3de8c","gasCost":"0x3","memSize":352,"stack":["0x527f556009536060600a53600160a0527f600b536060600c6020527f53600060"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":443,"op":82,"gas":"0x3de89","gasCost":"0x6","memSize":352,"stack":["0x527f556009536060600a53600160a0527f600b536060600c6020527f53600060","0x160"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":444,"op":127,"gas":"0x3de83","gasCost":"0x3","memSize":384,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":477,"op":97,"gas":"0x3de80","gasCost":"0x3","memSize":384,"stack":["0xd536055600e60a0527f536060600f536060c0527f0160105360606011536002"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":480,"op":82,"gas":"0x3de7d","gasCost":"0x6","memSize":384,"stack":["0xd536055600e60a0527f536060600f536060c0527f0160105360606011536002","0x180"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":481,"op":127,"gas":"0x3de77","gasCost":"0x3","memSize":416,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":514,"op":97,"gas":"0x3de74","gasCost":"0x3","memSize":416,"stack":["0x601253606040527f55601353606060c0527f60145360e0527f60006015536060"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":517,"op":82,"gas":"0x3de71","gasCost":"0x6","memSize":416,"stack":["0x601253606040527f55601353606060c0527f60145360e0527f60006015536060","0x1a0"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":518,"op":127,"gas":"0x3de6b","gasCost":"0x3","memSize":448,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":551,"op":97,"gas":"0x3de68","gasCost":"0x3","memSize":448,"stack":["0x601653600060175360f360185360196060605260006060e052610100527f7f80"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":554,"op":82,"gas":"0x3de65","gasCost":"0x6","memSize":448,"stack":["0x601653600060175360f360185360196060605260006060e052610100527f7f80","0x1c0"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":555,"op":127,"gas":"0x3de5f","gasCost":"0x3","memSize":480,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":588,"op":97,"gas":"0x3de5c","gasCost":"0x3","memSize":480,"stack":["0x5360f3608153608260006000f06000600060006000845af45050600060006101"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":591,"op":82,"gas":"0x3de59","gasCost":"0x6","memSize":480,"stack":["0x5360f3608153608260006000f06000600060006000845af45050600060006101","0x1e0"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":592,"op":127,"gas":"0x3de53","gasCost":"0x3","memSize":512,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":625,"op":97,"gas":"0x3de50","gasCost":"0x3","memSize":512,"stack":["0x20527f60610100527e6000600060035af15060005450c760006002551309f562"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":628,"op":82,"gas":"0x3de4d","gasCost":"0x6","memSize":512,"stack":["0x20527f60610100527e6000600060035af15060005450c760006002551309f562","0x200"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":629,"op":127,"gas":"0x3de47","gasCost":"0x3","memSize":544,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":662,"op":97,"gas":"0x3de44","gasCost":"0x3","memSize":544,"stack":["0x66a486610140527f6b001d4571610120527f600054501c641d373c7f60045450"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":665,"op":82,"gas":"0x3de41","gasCost":"0x6","memSize":544,"stack":["0x66a486610140527f6b001d4571610120527f600054501c641d373c7f60045450","0x220"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":666,"op":127,"gas":"0x3de3b","gasCost":"0x3","memSize":576,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":699,"op":97,"gas":"0x3de38","gasCost":"0x3","memSize":576,"stack":["0x6000600155600554610160527f50600160025560085450610140527f60006002"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":702,"op":82,"gas":"0x3de35","gasCost":"0x6","memSize":576,"stack":["0x6000600155600554610160527f50600160025560085450610140527f60006002","0x240"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":703,"op":127,"gas":"0x3de2f","gasCost":"0x3","memSize":608,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":736,"op":97,"gas":"0x3de2c","gasCost":"0x3","memSize":608,"stack":["0x557fd86000606000527e600060610180527e600060005af15086121714514735"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":739,"op":82,"gas":"0x3de29","gasCost":"0x6","memSize":608,"stack":["0x557fd86000606000527e600060610180527e600060005af15086121714514735","0x260"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":740,"op":127,"gas":"0x3de23","gasCost":"0x3","memSize":640,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":773,"op":97,"gas":"0x3de20","gasCost":"0x3","memSize":640,"stack":["0x610160527f5198a37e127a7efa7c6000526101a0527f606020527f6060205360"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":776,"op":82,"gas":"0x3de1d","gasCost":"0x6","memSize":640,"stack":["0x610160527f5198a37e127a7efa7c6000526101a0527f606020527f6060205360","0x280"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":777,"op":127,"gas":"0x3de17","gasCost":"0x3","memSize":672,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":810,"op":97,"gas":"0x3de14","gasCost":"0x3","memSize":672,"stack":["0xf760215360ff60225360610180527fdb6023536037606101c0527f2453607560"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":813,"op":82,"gas":"0x3de11","gasCost":"0x6","memSize":672,"stack":["0xf760215360ff60225360610180527fdb6023536037606101c0527f2453607560","0x2a0"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":814,"op":127,"gas":"0x3de0b","gasCost":"0x3","memSize":704,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":847,"op":97,"gas":"0x3de08","gasCost":"0x3","memSize":704,"stack":["0x2553609f606040527f265360fe602753608f60286101a0527f53606101e0527f"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":850,"op":82,"gas":"0x3de05","gasCost":"0x7","memSize":704,"stack":["0x2553609f606040527f265360fe602753608f60286101a0527f53606101e0527f","0x2c0"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":851,"op":127,"gas":"0x3ddfe","gasCost":"0x3","memSize":736,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":884,"op":97,"gas":"0x3ddfb","gasCost":"0x3","memSize":736,"stack":["0xb6029536060602a536000602b536060602c5360605260606080536000606101"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":887,"op":82,"gas":"0x3ddf8","gasCost":"0x6","memSize":736,"stack":["0xb6029536060602a536000602b536060602c5360605260606080536000606101","0x2e0"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":888,"op":127,"gas":"0x3ddf2","gasCost":"0x3","memSize":768,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":921,"op":97,"gas":"0x3ddef","gasCost":"0x3","memSize":768,"stack":["0x610200527fc0527f81536060608253602d6083536053608453606060855360fd"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":924,"op":82,"gas":"0x3ddec","gasCost":"0x6","memSize":768,"stack":["0x610200527fc0527f81536060608253602d6083536053608453606060855360fd","0x300"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":925,"op":127,"gas":"0x3dde6","gasCost":"0x3","memSize":800,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":958,"op":97,"gas":"0x3dde3","gasCost":"0x3","memSize":800,"stack":["0x6086536060610220527f6087536101e0527f602e60885360536089536060608a"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":961,"op":82,"gas":"0x3dde0","gasCost":"0x6","memSize":800,"stack":["0x6086536060610220527f6087536101e0527f602e60885360536089536060608a","0x320"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":962,"op":127,"gas":"0x3ddda","gasCost":"0x3","memSize":832,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":995,"op":97,"gas":"0x3ddd7","gasCost":"0x3","memSize":832,"stack":["0x53602f608b536060608c610240527f536000608d5360f3610200526060610220"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":998,"op":82,"gas":"0x3ddd4","gasCost":"0x6","memSize":832,"stack":["0x53602f608b536060608c610240527f536000608d5360f3610200526060610220","0x340"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":999,"op":127,"gas":"0x3ddce","gasCost":"0x3","memSize":864,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1032,"op":97,"gas":"0x3ddcb","gasCost":"0x3","memSize":864,"stack":["0x53608e610221536053610222536060610260527f610223536000610224536060"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1035,"op":82,"gas":"0x3ddc8","gasCost":"0x6","memSize":864,"stack":["0x53608e610221536053610222536060610260527f610223536000610224536060","0x360"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1036,"op":127,"gas":"0x3ddc2","gasCost":"0x3","memSize":896,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1069,"op":97,"gas":"0x3ddbf","gasCost":"0x3","memSize":896,"stack":["0x61022553608f6102265360606102275360006102610280527f28536060610229"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1072,"op":82,"gas":"0x3ddbc","gasCost":"0x6","memSize":896,"stack":["0x61022553608f6102265360606102275360006102610280527f28536060610229","0x380"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1073,"op":127,"gas":"0x3ddb6","gasCost":"0x3","memSize":928,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1106,"op":97,"gas":"0x3ddb3","gasCost":"0x3","memSize":928,"stack":["0x53600061022a5360f561022b53606061022c53600061022d536102a0527f6060"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1109,"op":82,"gas":"0x3ddb0","gasCost":"0x6","memSize":928,"stack":["0x53600061022a5360f561022b53606061022c53600061022d536102a0527f6060","0x3a0"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1110,"op":127,"gas":"0x3ddaa","gasCost":"0x3","memSize":960,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1143,"op":97,"gas":"0x3dda7","gasCost":"0x3","memSize":960,"stack":["0x61022e53600061022f5360606102305360006102315360606102325360006102"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1146,"op":82,"gas":"0x3dda4","gasCost":"0x6","memSize":960,"stack":["0x61022e53600061022f5360606102305360006102315360606102325360006102","0x3c0"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1147,"op":127,"gas":"0x3dd9e","gasCost":"0x3","memSize":992,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1180,"op":97,"gas":"0x3dd9b","gasCost":"0x3","memSize":992,"stack":["0xc0527f61023353606061023453600061023553608561023653605a6102375360"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1183,"op":82,"gas":"0x3dd98","gasCost":"0x7","memSize":992,"stack":["0xc0527f61023353606061023453600061023553608561023653605a6102375360","0x3e0"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1184,"op":127,"gas":"0x3dd91","gasCost":"0x3","memSize":1024,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1217,"op":97,"gas":"0x3dd8e","gasCost":"0x3","memSize":1024,"stack":["0xf261026102e05260386103005360536103015360606103025360506103035360"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1220,"op":82,"gas":"0x3dd8b","gasCost":"0x6","memSize":1024,"stack":["0xf261026102e05260386103005360536103015360606103025360506103035360","0x400"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1221,"op":127,"gas":"0x3dd85","gasCost":"0x3","memSize":1056,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1254,"op":97,"gas":"0x3dd82","gasCost":"0x3","memSize":1056,"stack":["0x6161030453600261030553603961030653605361030753606061030853605061"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1257,"op":82,"gas":"0x3dd7f","gasCost":"0x6","memSize":1056,"stack":["0x6161030453600261030553603961030653605361030753606061030853605061","0x420"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1258,"op":127,"gas":"0x3dd79","gasCost":"0x3","memSize":1088,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1291,"op":97,"gas":"0x3dd76","gasCost":"0x3","memSize":1088,"stack":["0x30953606161030a53600261030b53603a61030c53605361030d53606161030e"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1294,"op":82,"gas":"0x3dd73","gasCost":"0x6","memSize":1088,"stack":["0x30953606161030a53600261030b53603a61030c53605361030d53606161030e","0x440"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1295,"op":127,"gas":"0x3dd6d","gasCost":"0x3","memSize":1120,"stack":[],"depth":3,"refund":0,"opName":"PUSH32"}
|
||||||
|
{"pc":1328,"op":97,"gas":"0x3dd6a","gasCost":"0x3","memSize":1120,"stack":["0x53600261030f53603b6103105360606103115360006103125360f36103135361"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1331,"op":82,"gas":"0x3dd67","gasCost":"0x6","memSize":1120,"stack":["0x53600261030f53603b6103105360606103115360006103125360f36103135361","0x460"],"depth":3,"refund":0,"opName":"MSTORE"}
|
||||||
|
{"pc":1332,"op":96,"gas":"0x3dd61","gasCost":"0x3","memSize":1152,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1334,"op":97,"gas":"0x3dd5e","gasCost":"0x3","memSize":1152,"stack":["0x3"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1337,"op":83,"gas":"0x3dd5b","gasCost":"0x6","memSize":1152,"stack":["0x3","0x480"],"depth":3,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1338,"op":96,"gas":"0x3dd55","gasCost":"0x3","memSize":1184,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1340,"op":97,"gas":"0x3dd52","gasCost":"0x3","memSize":1184,"stack":["0x14"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1343,"op":83,"gas":"0x3dd4f","gasCost":"0x3","memSize":1184,"stack":["0x14","0x481"],"depth":3,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1344,"op":96,"gas":"0x3dd4c","gasCost":"0x3","memSize":1184,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1346,"op":97,"gas":"0x3dd49","gasCost":"0x3","memSize":1184,"stack":["0x60"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1349,"op":83,"gas":"0x3dd46","gasCost":"0x3","memSize":1184,"stack":["0x60","0x482"],"depth":3,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1350,"op":96,"gas":"0x3dd43","gasCost":"0x3","memSize":1184,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1352,"op":97,"gas":"0x3dd40","gasCost":"0x3","memSize":1184,"stack":["0x0"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1355,"op":83,"gas":"0x3dd3d","gasCost":"0x3","memSize":1184,"stack":["0x0","0x483"],"depth":3,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1356,"op":96,"gas":"0x3dd3a","gasCost":"0x3","memSize":1184,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1358,"op":97,"gas":"0x3dd37","gasCost":"0x3","memSize":1184,"stack":["0x60"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1361,"op":83,"gas":"0x3dd34","gasCost":"0x3","memSize":1184,"stack":["0x60","0x484"],"depth":3,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1362,"op":96,"gas":"0x3dd31","gasCost":"0x3","memSize":1184,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1364,"op":97,"gas":"0x3dd2e","gasCost":"0x3","memSize":1184,"stack":["0x0"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1367,"op":83,"gas":"0x3dd2b","gasCost":"0x3","memSize":1184,"stack":["0x0","0x485"],"depth":3,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1368,"op":96,"gas":"0x3dd28","gasCost":"0x3","memSize":1184,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1370,"op":97,"gas":"0x3dd25","gasCost":"0x3","memSize":1184,"stack":["0xf0"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1373,"op":83,"gas":"0x3dd22","gasCost":"0x3","memSize":1184,"stack":["0xf0","0x486"],"depth":3,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1374,"op":96,"gas":"0x3dd1f","gasCost":"0x3","memSize":1184,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1376,"op":97,"gas":"0x3dd1c","gasCost":"0x3","memSize":1184,"stack":["0x60"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1379,"op":83,"gas":"0x3dd19","gasCost":"0x3","memSize":1184,"stack":["0x60","0x487"],"depth":3,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1380,"op":96,"gas":"0x3dd16","gasCost":"0x3","memSize":1184,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1382,"op":97,"gas":"0x3dd13","gasCost":"0x3","memSize":1184,"stack":["0x0"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1385,"op":83,"gas":"0x3dd10","gasCost":"0x3","memSize":1184,"stack":["0x0","0x488"],"depth":3,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1386,"op":96,"gas":"0x3dd0d","gasCost":"0x3","memSize":1184,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1388,"op":97,"gas":"0x3dd0a","gasCost":"0x3","memSize":1184,"stack":["0x60"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1391,"op":83,"gas":"0x3dd07","gasCost":"0x3","memSize":1184,"stack":["0x60","0x489"],"depth":3,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1392,"op":96,"gas":"0x3dd04","gasCost":"0x3","memSize":1184,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1394,"op":97,"gas":"0x3dd01","gasCost":"0x3","memSize":1184,"stack":["0x0"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1397,"op":83,"gas":"0x3dcfe","gasCost":"0x3","memSize":1184,"stack":["0x0","0x48a"],"depth":3,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1398,"op":96,"gas":"0x3dcfb","gasCost":"0x3","memSize":1184,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1400,"op":97,"gas":"0x3dcf8","gasCost":"0x3","memSize":1184,"stack":["0x60"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1403,"op":83,"gas":"0x3dcf5","gasCost":"0x3","memSize":1184,"stack":["0x60","0x48b"],"depth":3,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1404,"op":96,"gas":"0x3dcf2","gasCost":"0x3","memSize":1184,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1406,"op":97,"gas":"0x3dcef","gasCost":"0x3","memSize":1184,"stack":["0x0"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1409,"op":83,"gas":"0x3dcec","gasCost":"0x3","memSize":1184,"stack":["0x0","0x48c"],"depth":3,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1410,"op":96,"gas":"0x3dce9","gasCost":"0x3","memSize":1184,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1412,"op":97,"gas":"0x3dce6","gasCost":"0x3","memSize":1184,"stack":["0x60"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1415,"op":83,"gas":"0x3dce3","gasCost":"0x3","memSize":1184,"stack":["0x60","0x48d"],"depth":3,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1416,"op":96,"gas":"0x3dce0","gasCost":"0x3","memSize":1184,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1418,"op":97,"gas":"0x3dcdd","gasCost":"0x3","memSize":1184,"stack":["0x0"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1421,"op":83,"gas":"0x3dcda","gasCost":"0x3","memSize":1184,"stack":["0x0","0x48e"],"depth":3,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1422,"op":96,"gas":"0x3dcd7","gasCost":"0x3","memSize":1184,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1424,"op":97,"gas":"0x3dcd4","gasCost":"0x3","memSize":1184,"stack":["0x84"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1427,"op":83,"gas":"0x3dcd1","gasCost":"0x3","memSize":1184,"stack":["0x84","0x48f"],"depth":3,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1428,"op":96,"gas":"0x3dcce","gasCost":"0x3","memSize":1184,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1430,"op":97,"gas":"0x3dccb","gasCost":"0x3","memSize":1184,"stack":["0x5a"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1433,"op":83,"gas":"0x3dcc8","gasCost":"0x3","memSize":1184,"stack":["0x5a","0x490"],"depth":3,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1434,"op":96,"gas":"0x3dcc5","gasCost":"0x3","memSize":1184,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1436,"op":97,"gas":"0x3dcc2","gasCost":"0x3","memSize":1184,"stack":["0xf4"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1439,"op":83,"gas":"0x3dcbf","gasCost":"0x3","memSize":1184,"stack":["0xf4","0x491"],"depth":3,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1440,"op":96,"gas":"0x3dcbc","gasCost":"0x3","memSize":1184,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1442,"op":97,"gas":"0x3dcb9","gasCost":"0x3","memSize":1184,"stack":["0x50"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1445,"op":83,"gas":"0x3dcb6","gasCost":"0x3","memSize":1184,"stack":["0x50","0x492"],"depth":3,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1446,"op":96,"gas":"0x3dcb3","gasCost":"0x3","memSize":1184,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1448,"op":97,"gas":"0x3dcb0","gasCost":"0x3","memSize":1184,"stack":["0x50"],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1451,"op":83,"gas":"0x3dcad","gasCost":"0x3","memSize":1184,"stack":["0x50","0x493"],"depth":3,"refund":0,"opName":"MSTORE8"}
|
||||||
|
{"pc":1452,"op":97,"gas":"0x3dcaa","gasCost":"0x3","memSize":1184,"stack":[],"depth":3,"refund":0,"opName":"PUSH2"}
|
||||||
|
{"pc":1455,"op":96,"gas":"0x3dca7","gasCost":"0x3","memSize":1184,"stack":["0x494"],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1457,"op":243,"gas":"0x3dca4","gasCost":"0x0","memSize":1184,"stack":["0x494","0x0"],"depth":3,"refund":0,"opName":"RETURN"}
|
||||||
|
{"output":"600160045560006004556000600060006000600060f95af250600060006000600060f45af4506000600060006000600060f55af150f001075205846a44a283448ca2600060006000600060045af450519930847f3b631c54a49b5f600354503277306b60006000600060006000600c5af150600060006000600060f85af4505006600160025560035450600060005560006001556c3394fff4607f7f1684317b387b9f1920700184809d60015450011899016e6009ff60026001556000527f9f6000527f9981600160045582600eff600060006000600060f65af4506000606020527e600060006020527f60f75af4501d7f190316666000600060006000600060046040527f5af1506000600060006040527f600060095af4503c95138e5b8f7f605a6000536060527f6031600153606b6002536010606060527f0353604560045360606005536001606080527e527f60065360606007536002600853606080527f556009536060600a53600160a0527f600b536060600c6020527f536000600d536055600e60a0527f536060600f536060c0527f0160105360606011536002601253606040527f55601353606060c0527f60145360e0527f60006015536060601653600060175360f360185360196060605260006060e052610100527f7f805360f3608153608260006000f06000600060006000845af4505060006000610120527f60610100527e6000600060035af15060005450c760006002551309f56266a486610140527f6b001d4571610120527f600054501c641d373c7f600454506000600155600554610160527f50600160025560085450610140527f60006002557fd86000606000527e600060610180527e600060005af15086121714514735610160527f5198a37e127a7efa7c6000526101a0527f606020527f6060205360f760215360ff60225360610180527fdb6023536037606101c0527f24536075602553609f606040527f265360fe602753608f60286101a0527f53606101e0527f0b6029536060602a536000602b536060602c5360605260606080536000606101610200527fc0527f81536060608253602d6083536053608453606060855360fd6086536060610220527f6087536101e0527f602e60885360536089536060608a53602f608b536060608c610240527f536000608d5360f361020052606061022053608e610221536053610222536060610260527f61022353600061022453606061022553608f6102265360606102275360006102610280527f2853606061022953600061022a5360f561022b53606061022c53600061022d536102a0527f606061022e53600061022f5360606102305360006102315360606102325360006102c0527f61023353606061023453600061023553608561023653605a6102375360f261026102e052603861030053605361030153606061030253605061030353606161030453600261030553603961030653605361030753606061030853605061030953606161030a53600261030b53603a61030c53605361030d53606161030e53600261030f53603b6103105360606103115360006103125360f36103135361031460006000f06000600060006000845af45050","gasUsed":"0x3a6e6"}
|
||||||
|
{"pc":1773,"op":96,"gas":"0x5903","gasCost":"0x3","memSize":1472,"stack":["0x94a843a7335fc63be036fbdecc40b1365f3c5f26"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1775,"op":96,"gas":"0x5900","gasCost":"0x3","memSize":1472,"stack":["0x94a843a7335fc63be036fbdecc40b1365f3c5f26","0x0"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1777,"op":96,"gas":"0x58fd","gasCost":"0x3","memSize":1472,"stack":["0x94a843a7335fc63be036fbdecc40b1365f3c5f26","0x0","0x0"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1779,"op":96,"gas":"0x58fa","gasCost":"0x3","memSize":1472,"stack":["0x94a843a7335fc63be036fbdecc40b1365f3c5f26","0x0","0x0","0x0"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1781,"op":96,"gas":"0x58f7","gasCost":"0x3","memSize":1472,"stack":["0x94a843a7335fc63be036fbdecc40b1365f3c5f26","0x0","0x0","0x0","0x0"],"depth":2,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":1783,"op":133,"gas":"0x58f4","gasCost":"0x3","memSize":1472,"stack":["0x94a843a7335fc63be036fbdecc40b1365f3c5f26","0x0","0x0","0x0","0x0","0x0"],"depth":2,"refund":0,"opName":"DUP6"}
|
||||||
|
{"pc":1784,"op":90,"gas":"0x58f1","gasCost":"0x2","memSize":1472,"stack":["0x94a843a7335fc63be036fbdecc40b1365f3c5f26","0x0","0x0","0x0","0x0","0x0","0x94a843a7335fc63be036fbdecc40b1365f3c5f26"],"depth":2,"refund":0,"opName":"GAS"}
|
||||||
|
{"pc":1785,"op":241,"gas":"0x58ef","gasCost":"0x578d","memSize":1472,"stack":["0x94a843a7335fc63be036fbdecc40b1365f3c5f26","0x0","0x0","0x0","0x0","0x0","0x94a843a7335fc63be036fbdecc40b1365f3c5f26","0x58ef"],"depth":2,"refund":0,"opName":"CALL"}
|
||||||
|
{"pc":0,"op":96,"gas":"0x5729","gasCost":"0x3","memSize":0,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":2,"op":96,"gas":"0x5726","gasCost":"0x3","memSize":0,"stack":["0x1"],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":4,"op":85,"gas":"0x5723","gasCost":"0x4e20","memSize":0,"stack":["0x1","0x4"],"depth":3,"refund":0,"opName":"SSTORE"}
|
||||||
|
{"pc":5,"op":96,"gas":"0x903","gasCost":"0x3","memSize":0,"stack":[],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":7,"op":96,"gas":"0x900","gasCost":"0x3","memSize":0,"stack":["0x0"],"depth":3,"refund":0,"opName":"PUSH1"}
|
||||||
|
{"pc":9,"op":85,"gas":"0x8fd","gasCost":"0x64","memSize":0,"stack":["0x0","0x4"],"depth":3,"refund":19900,"opName":"SSTORE"}
|
||||||
|
{"pc":10,"op":96,"gas":"0x899","gasCost":"0x3","memSize":0,"stack":[],"depth":3,"refund":19900,"opName":"PUSH1"}
|
||||||
|
{"pc":12,"op":96,"gas":"0x896","gasCost":"0x3","memSize":0,"stack":["0x0"],"depth":3,"refund":19900,"opName":"PUSH1"}
|
||||||
|
{"pc":14,"op":96,"gas":"0x893","gasCost":"0x3","memSize":0,"stack":["0x0","0x0"],"depth":3,"refund":19900,"opName":"PUSH1"}
|
||||||
|
{"pc":16,"op":96,"gas":"0x890","gasCost":"0x3","memSize":0,"stack":["0x0","0x0","0x0"],"depth":3,"refund":19900,"opName":"PUSH1"}
|
||||||
|
{"pc":18,"op":96,"gas":"0x88d","gasCost":"0x3","memSize":0,"stack":["0x0","0x0","0x0","0x0"],"depth":3,"refund":19900,"opName":"PUSH1"}
|
||||||
|
{"pc":20,"op":96,"gas":"0x88a","gasCost":"0x3","memSize":0,"stack":["0x0","0x0","0x0","0x0","0x0"],"depth":3,"refund":19900,"opName":"PUSH1"}
|
||||||
|
{"pc":22,"op":90,"gas":"0x887","gasCost":"0x2","memSize":0,"stack":["0x0","0x0","0x0","0x0","0x0","0xf9"],"depth":3,"refund":19900,"opName":"GAS"}
|
||||||
|
{"pc":23,"op":242,"gas":"0x885","gasCost":"0x64","memSize":0,"stack":["0x0","0x0","0x0","0x0","0x0","0xf9","0x885"],"depth":3,"refund":19900,"opName":"CALLCODE","error":"out of gas: out of gas"}
|
||||||
|
{"output":"","gasUsed":"0x5729","error":"out of gas: out of gas"}
|
||||||
|
{"pc":1786,"op":80,"gas":"0x162","gasCost":"0x2","memSize":1472,"stack":["0x94a843a7335fc63be036fbdecc40b1365f3c5f26","0x0"],"depth":2,"refund":0,"opName":"POP"}
|
||||||
|
{"pc":1787,"op":80,"gas":"0x160","gasCost":"0x2","memSize":1472,"stack":["0x94a843a7335fc63be036fbdecc40b1365f3c5f26"],"depth":2,"refund":0,"opName":"POP"}
|
||||||
|
{"pc":1788,"op":0,"gas":"0x15e","gasCost":"0x0","memSize":1472,"stack":[],"depth":2,"refund":0,"opName":"STOP"}
|
||||||
|
{"output":"","gasUsed":"0x47f70"}
|
||||||
|
{"pc":2618,"op":80,"gas":"0x13aa","gasCost":"0x2","memSize":2240,"stack":["0x7dce2faf43218578e3fcf2ad22df9918a89e2fba","0x1"],"depth":1,"refund":0,"opName":"POP"}
|
||||||
|
{"pc":2619,"op":80,"gas":"0x13a8","gasCost":"0x2","memSize":2240,"stack":["0x7dce2faf43218578e3fcf2ad22df9918a89e2fba"],"depth":1,"refund":0,"opName":"POP"}
|
||||||
|
{"pc":2620,"op":0,"gas":"0x13a6","gasCost":"0x0","memSize":2240,"stack":[],"depth":1,"refund":0,"opName":"STOP"}
|
||||||
|
{"output":"","gasUsed":"0xb2e6d"}
|
||||||
|
{"stateRoot": "0xad1024c87b5548e77c937aa50f72b6cb620d278f4dd79bae7f78f71ff75af458"}
|
||||||
0
cmd/evm/testdata/evmrun/9.out.1.txt
vendored
Normal file
0
cmd/evm/testdata/evmrun/9.out.1.txt
vendored
Normal file
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue