diff --git a/evm/CHANGELOG.md b/evm/CHANGELOG.md index 21e96dbb..19ffefc5 100644 --- a/evm/CHANGELOG.md +++ b/evm/CHANGELOG.md @@ -1,5 +1,10 @@ # EVM App Changelog +## [`v0.2.0](https://github.com/ignite/apps/releases/tag/evm/v0.2.0) + +- [#256](https://github.com/ignite/apps/pull/256) Upgrade `cosmos/evm` to v0.6.0. + - Follow those instructions if you scaffolded your chain with Ignite EVM App `v0.1.x`. + ## [`v0.1.2`](https://github.com/ignite/apps/releases/tag/evm/v0.1.2) - [#239](https://github.com/ignite/apps/pull/239) Set default token decimal to 18 as recommended. diff --git a/evm/go.mod b/evm/go.mod index aa1afe3e..6a510e92 100644 --- a/evm/go.mod +++ b/evm/go.mod @@ -8,7 +8,7 @@ require ( github.com/gobuffalo/genny/v2 v2.1.0 github.com/gobuffalo/plush/v4 v4.1.22 github.com/hashicorp/go-plugin v1.6.3 - github.com/ignite/cli/v29 v29.8.0 + github.com/ignite/cli/v29 v29.9.2 github.com/stretchr/testify v1.11.1 ) @@ -23,7 +23,7 @@ require ( cosmossdk.io/store v1.1.2 // indirect cosmossdk.io/x/tx v0.14.0 // indirect dario.cat/mergo v1.0.1 // indirect - filippo.io/edwards25519 v1.1.0 // indirect + filippo.io/edwards25519 v1.1.1 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.2 // indirect github.com/DataDog/datadog-go v3.2.0+incompatible // indirect @@ -50,7 +50,7 @@ require ( github.com/charmbracelet/x/ansi v0.8.0 // indirect github.com/charmbracelet/x/cellbuf v0.0.13 // indirect github.com/charmbracelet/x/term v0.2.1 // indirect - github.com/cloudflare/circl v1.6.1 // indirect + github.com/cloudflare/circl v1.6.3 // indirect github.com/cloudwego/base64x v0.1.6 // indirect github.com/cockroachdb/errors v1.12.0 // indirect github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect @@ -136,6 +136,7 @@ require ( github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-metrics v0.5.4 // indirect + github.com/hashicorp/go-uuid v1.0.2 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/yamux v0.1.2 // indirect github.com/hdevalence/ed25519consensus v0.2.0 // indirect @@ -208,6 +209,7 @@ require ( github.com/tendermint/go-amino v0.16.0 // indirect github.com/tidwall/btree v1.7.0 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/ugorji/go/codec v1.2.11 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect github.com/zondax/golem v0.27.0 // indirect @@ -221,19 +223,19 @@ require ( go.yaml.in/yaml/v2 v2.4.2 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/arch v0.17.0 // indirect - golang.org/x/crypto v0.45.0 // indirect + golang.org/x/crypto v0.46.0 // indirect golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 // indirect - golang.org/x/mod v0.29.0 // indirect - golang.org/x/net v0.47.0 // indirect - golang.org/x/sync v0.18.0 // indirect - golang.org/x/sys v0.38.0 // indirect - golang.org/x/term v0.37.0 // indirect - golang.org/x/text v0.31.0 // indirect - golang.org/x/tools v0.38.0 // indirect + golang.org/x/mod v0.30.0 // indirect + golang.org/x/net v0.48.0 // indirect + golang.org/x/sync v0.19.0 // indirect + golang.org/x/sys v0.39.0 // indirect + golang.org/x/term v0.38.0 // indirect + golang.org/x/text v0.32.0 // indirect + golang.org/x/tools v0.39.0 // indirect google.golang.org/genproto v0.0.0-20250603155806-513f23925822 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect - google.golang.org/grpc v1.75.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect + google.golang.org/grpc v1.79.3 // indirect google.golang.org/protobuf v1.36.10 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/evm/go.sum b/evm/go.sum index 14fac222..17149e09 100644 --- a/evm/go.sum +++ b/evm/go.sum @@ -23,8 +23,8 @@ cosmossdk.io/x/tx v0.14.0/go.mod h1:Tn30rSRA1PRfdGB3Yz55W4Sn6EIutr9xtMKSHij+9PM= dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= -filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +filippo.io/edwards25519 v1.1.1 h1:YpjwWWlNmGIDyXOn8zLzqiD+9TyIlPhGFG96P39uBpw= +filippo.io/edwards25519 v1.1.1/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= @@ -129,8 +129,8 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0= -github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= +github.com/cloudflare/circl v1.6.3 h1:9GPOhQGF9MCYUeXyMYlqTR6a5gTrgR/fBLXvUgtVcg8= +github.com/cloudflare/circl v1.6.3/go.mod h1:2eXP6Qfat4O/Yhh8BznvKnJ+uzEoTQ6jVKJRn81BiS4= github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M= github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= @@ -482,8 +482,9 @@ github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -509,8 +510,8 @@ github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmK github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ignite/cli/v29 v29.8.0 h1:tyHM492WsoN8dbWbuq7JlWJkxVEuSe0YlIbe0wec92o= -github.com/ignite/cli/v29 v29.8.0/go.mod h1:P3Ro7OXe740MdUTEAk4A1dCThtfP9BxP2fPK6+rDPjo= +github.com/ignite/cli/v29 v29.9.2 h1:bjNxl1uNT5SJt7iHez+lcsfnRnFLzy97c4JrPWo3mUM= +github.com/ignite/cli/v29 v29.9.2/go.mod h1:6KW4nlxd8Fqh0EJX22vw5e6T4/ea58orccK62jpkBGw= github.com/ignite/web v1.0.8 h1:St3L6UJj70+h16+No5em8Vn2Hx93tS2G1MyWO/Kt1cc= github.com/ignite/web v1.0.8/go.mod h1:WZWBaBYF8RazN7dE462BLpvXDY8ScacxcJ07BKwX/jY= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= @@ -859,10 +860,10 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1 github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= -github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= +github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= @@ -890,18 +891,18 @@ go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -939,8 +940,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= -golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= +golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= +golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= @@ -960,8 +961,8 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA= -golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= +golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -996,8 +997,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221002022538-bcab6841153b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1012,8 +1013,8 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= -golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1070,14 +1071,14 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= -golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= +golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q= +golang.org/x/term v0.38.0/go.mod h1:bSEAKrOT1W+VSu9TSCMtoGEOUcKxOKgl3LE5QEF/xVg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -1085,8 +1086,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1110,8 +1111,8 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1136,10 +1137,10 @@ google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= google.golang.org/genproto v0.0.0-20250603155806-513f23925822 h1:rHWScKit0gvAPuOnu87KpaYtjK5zBMLcULh7gxkCXu4= google.golang.org/genproto v0.0.0-20250603155806-513f23925822/go.mod h1:HubltRL7rMh0LfnQPkMH4NPDFEWp0jw3vixw7jEM53s= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0 h1:0UOBWO4dC+e51ui0NFKSPbkHHiQ4TmrEfEZMLDyRmY8= -google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls= +google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1158,8 +1159,8 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= +google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/evm/template/constants.go b/evm/template/constants.go index 1895dbb3..c93a82c1 100644 --- a/evm/template/constants.go +++ b/evm/template/constants.go @@ -6,6 +6,5 @@ const ( CosmosGoEthereumVersion = "v1.16.2-cosmos-1" CosmosEVMPackage = "github.com/cosmos/evm" - // Using a pseudo version because v0.4.1 was broken... - CosmosEVMVersion = "v1.0.0-rc2.0.20250822211227-2d3df2ba510c" + CosmosEVMVersion = "v0.6.0" ) diff --git a/evm/template/files/app/ante.go.plush b/evm/template/files/app/ante.go.plush index bc729207..5019b2fc 100644 --- a/evm/template/files/app/ante.go.plush +++ b/evm/template/files/app/ante.go.plush @@ -4,11 +4,11 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/evm/ante" evmante "github.com/cosmos/evm/ante" + antetypes "github.com/cosmos/evm/ante/types" cosmosevmante "github.com/cosmos/evm/ante/evm" - cosmosevmtypes "github.com/cosmos/evm/types" "github.com/ethereum/go-ethereum/common" - appante "<%= ModulePath %>/app/ante" + ) // setAnteHandler sets the ante handler for the application. @@ -17,7 +17,7 @@ func (app *App) setAnteHandler(txConfig client.TxConfig, maxGasWanted uint64) { Cdc: app.appCodec, AccountKeeper: app.AuthKeeper, BankKeeper: app.BankKeeper, - ExtensionOptionChecker: cosmosevmtypes.HasDynamicFeeExtensionOption, + ExtensionOptionChecker: antetypes.HasDynamicFeeExtensionOption, EvmKeeper: app.EVMKeeper, FeegrantKeeper: app.FeeGrantKeeper, IBCKeeper: app.IBCKeeper, @@ -25,7 +25,6 @@ func (app *App) setAnteHandler(txConfig client.TxConfig, maxGasWanted uint64) { SignModeHandler: txConfig.SignModeHandler(), SigGasConsumer: evmante.SigVerificationGasConsumer, MaxTxGasWanted: maxGasWanted, - TxFeeChecker: cosmosevmante.NewDynamicFeeChecker(app.FeeMarketKeeper), PendingTxListener: func(hash common.Hash) { for _, listener := range app.pendingTxListeners { listener(hash) @@ -36,5 +35,5 @@ func (app *App) setAnteHandler(txConfig client.TxConfig, maxGasWanted uint64) { panic(err) } - app.SetAnteHandler(appante.NewAnteHandler(options)) + app.SetAnteHandler(evmante.NewAnteHandler(options)) } diff --git a/evm/template/files/app/ante/ante.go.plush b/evm/template/files/app/ante/ante.go.plush deleted file mode 100644 index 4f78145f..00000000 --- a/evm/template/files/app/ante/ante.go.plush +++ /dev/null @@ -1,54 +0,0 @@ -package ante - -import ( - errorsmod "cosmossdk.io/errors" - "github.com/cosmos/evm/ante" - - sdk "github.com/cosmos/cosmos-sdk/types" - errortypes "github.com/cosmos/cosmos-sdk/types/errors" - authante "github.com/cosmos/cosmos-sdk/x/auth/ante" -) - -// NewAnteHandler returns an ante handler responsible for attempting to route an -// Ethereum or SDK transaction to an internal ante handler for performing -// transaction-level processing (e.g. fee payment, signature verification) before -// being passed onto it's respective handler. -func NewAnteHandler(options ante.HandlerOptions) sdk.AnteHandler { - return func( - ctx sdk.Context, tx sdk.Tx, sim bool, - ) (newCtx sdk.Context, err error) { - var anteHandler sdk.AnteHandler - - txWithExtensions, ok := tx.(authante.HasExtensionOptionsTx) - if ok { - opts := txWithExtensions.GetExtensionOptions() - if len(opts) > 0 { - switch typeURL := opts[0].GetTypeUrl(); typeURL { - case "/cosmos.evm.vm.v1.ExtensionOptionsEthereumTx": - // handle as *evmtypes.MsgEthereumTx - anteHandler = newMonoEVMAnteHandler(options) - case "/cosmos.evm.types.v1.ExtensionOptionDynamicFeeTx": - // cosmos-sdk tx with dynamic fee extension - anteHandler = newCosmosAnteHandler(options) - default: - return ctx, errorsmod.Wrapf( - errortypes.ErrUnknownExtensionOptions, - "rejecting tx with unsupported extension option: %s", typeURL, - ) - } - - return anteHandler(ctx, tx, sim) - } - } - - // handle as totally normal Cosmos SDK tx - switch tx.(type) { - case sdk.Tx: - anteHandler = newCosmosAnteHandler(options) - default: - return ctx, errorsmod.Wrapf(errortypes.ErrUnknownRequest, "invalid transaction type: %T", tx) - } - - return anteHandler(ctx, tx, sim) - } -} diff --git a/evm/template/files/app/ante/cosmos_handler.go.plush b/evm/template/files/app/ante/cosmos_handler.go.plush deleted file mode 100644 index 32d5fee6..00000000 --- a/evm/template/files/app/ante/cosmos_handler.go.plush +++ /dev/null @@ -1,40 +0,0 @@ -package ante - -import ( - baseevmante "github.com/cosmos/evm/ante" - cosmosante "github.com/cosmos/evm/ante/cosmos" - evmante "github.com/cosmos/evm/ante/evm" - evmtypes "github.com/cosmos/evm/x/vm/types" - ibcante "github.com/cosmos/ibc-go/v10/modules/core/ante" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/x/auth/ante" - sdkvesting "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" -) - -// newCosmosAnteHandler creates the default ante handler for Cosmos transactions -func newCosmosAnteHandler(options baseevmante.HandlerOptions) sdk.AnteHandler { - return sdk.ChainAnteDecorators( - cosmosante.NewRejectMessagesDecorator(), // reject MsgEthereumTxs - cosmosante.NewAuthzLimiterDecorator( // disable the Msg types that cannot be included on an authz.MsgExec msgs field - sdk.MsgTypeURL(&evmtypes.MsgEthereumTx{}), - sdk.MsgTypeURL(&sdkvesting.MsgCreateVestingAccount{}), - ), - ante.NewSetUpContextDecorator(), - ante.NewExtensionOptionsDecorator(options.ExtensionOptionChecker), - ante.NewValidateBasicDecorator(), - ante.NewTxTimeoutHeightDecorator(), - ante.NewValidateMemoDecorator(options.AccountKeeper), - cosmosante.NewMinGasPriceDecorator(options.FeeMarketKeeper, options.EvmKeeper), - ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), - ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TxFeeChecker), - // SetPubKeyDecorator must be called before all signature verification decorators - ante.NewSetPubKeyDecorator(options.AccountKeeper), - ante.NewValidateSigCountDecorator(options.AccountKeeper), - ante.NewSigGasConsumeDecorator(options.AccountKeeper, options.SigGasConsumer), - ante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler), - ante.NewIncrementSequenceDecorator(options.AccountKeeper), - ibcante.NewRedundantRelayDecorator(options.IBCKeeper), - evmante.NewGasWantedDecorator(options.EvmKeeper, options.FeeMarketKeeper), - ) -} diff --git a/evm/template/files/app/ante/evm_handler.go.plush b/evm/template/files/app/ante/evm_handler.go.plush deleted file mode 100644 index bd87f9f3..00000000 --- a/evm/template/files/app/ante/evm_handler.go.plush +++ /dev/null @@ -1,23 +0,0 @@ -package ante - -import ( - "github.com/cosmos/evm/ante" - evmante "github.com/cosmos/evm/ante/evm" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// newMonoEVMAnteHandler creates the sdk.AnteHandler implementation for the EVM transactions. -func newMonoEVMAnteHandler(options ante.HandlerOptions) sdk.AnteHandler { - decorators := []sdk.AnteDecorator{ - evmante.NewEVMMonoDecorator( - options.AccountKeeper, - options.FeeMarketKeeper, - options.EvmKeeper, - options.MaxTxGasWanted, - ), - ante.NewTxListenerDecorator(options.PendingTxListener), - } - - return sdk.ChainAnteDecorators(decorators...) -} diff --git a/evm/template/files/app/evm.go.plush b/evm/template/files/app/evm.go.plush index 05e590f1..98e27144 100644 --- a/evm/template/files/app/evm.go.plush +++ b/evm/template/files/app/evm.go.plush @@ -25,11 +25,12 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/spf13/cast" - evmconfig "github.com/cosmos/evm/config" + evmencoding "github.com/cosmos/evm/encoding" + evmaddress "github.com/cosmos/evm/encoding/address" evmmempool "github.com/cosmos/evm/mempool" - "github.com/cosmos/evm/precompiles/bech32" - "github.com/cosmos/evm/precompiles/p256" + precompiletypes "github.com/cosmos/evm/precompiles/types" srvflags "github.com/cosmos/evm/server/flags" + "github.com/cosmos/evm/utils" erc20 "github.com/cosmos/evm/x/erc20" erc20keeper "github.com/cosmos/evm/x/erc20/keeper" erc20types "github.com/cosmos/evm/x/erc20/types" @@ -41,29 +42,20 @@ import ( evmtypes "github.com/cosmos/evm/x/vm/types" "github.com/ethereum/go-ethereum/common" gethvm "github.com/ethereum/go-ethereum/core/vm" + + eips "github.com/cosmos/evm/eips" ) +func init() { + // manually update the power reduction by replacing micro (u) -> atto (a) evmos + sdk.DefaultPowerReduction = utils.AttoPowerReduction +} + + // registerEVMModules register EVM keepers and non dependency inject modules. func (app *App) registerEVMModules(appOpts servertypes.AppOptions) error { // chain config chainID := getEVMChainID(appOpts) - coinInfoMap := map[uint64]evmtypes.EvmCoinInfo{ - chainID: evmtypes.EvmCoinInfo{ - Denom: sdk.DefaultBondDenom, - ExtendedDenom: sdk.DefaultBondDenom, - DisplayDenom: sdk.DefaultBondDenom, - Decimals: evmtypes.SixDecimals, // in line with Cosmos SDK default decimals - }, - } - - // configure evm modules - if err := evmconfig.EvmAppOptionsWithConfig( - chainID, - coinInfoMap, - getCustomEVMActivators(), - ); err != nil { - return err - } // set up non depinject support modules store keys if err := app.RegisterStores( @@ -86,7 +78,6 @@ func (app *App) registerEVMModules(appOpts servertypes.AppOptions) error { app.UnsafeFindStoreKey(feemarkettypes.TransientKey), ) - // NOTE: it's required to set up the EVM keeper before the ERC-20 keeper, because it is used in its instantiation. app.EVMKeeper = evmkeeper.NewKeeper( app.appCodec, app.GetKey(evmtypes.StoreKey), @@ -99,8 +90,26 @@ func (app *App) registerEVMModules(appOpts servertypes.AppOptions) error { app.FeeMarketKeeper, &app.ConsensusParamsKeeper, &app.Erc20Keeper, + chainID, tracer, - ) + ).WithStaticPrecompiles( + precompiletypes.DefaultStaticPrecompiles( + *app.StakingKeeper, + app.DistrKeeper, + app.BankKeeper, + &app.Erc20Keeper, + &app.TransferKeeper, + app.IBCKeeper.ChannelKeeper, + *app.GovKeeper, + app.SlashingKeeper, + app.appCodec, + ), + ).WithDefaultEvmCoinInfo(evmtypes.EvmCoinInfo{ + Denom: sdk.DefaultBondDenom, + ExtendedDenom: sdk.DefaultBondDenom, + DisplayDenom: sdk.DefaultBondDenom, + Decimals: evmtypes.SixDecimals.Uint32(), + }) app.Erc20Keeper = erc20keeper.NewKeeper( app.GetKey(erc20types.StoreKey), @@ -115,7 +124,7 @@ func (app *App) registerEVMModules(appOpts servertypes.AppOptions) error { // register evm modules if err := app.RegisterModules( - vm.NewAppModule(app.EVMKeeper, app.AuthKeeper, app.AuthKeeper.AddressCodec()), + vm.NewAppModule(app.EVMKeeper, app.AuthKeeper, app.BankKeeper, app.AuthKeeper.AddressCodec()), feemarket.NewAppModule(app.FeeMarketKeeper), erc20.NewAppModule(app.Erc20Keeper, app.AuthKeeper), ); err != nil { @@ -125,28 +134,6 @@ func (app *App) registerEVMModules(appOpts servertypes.AppOptions) error { return nil } -func (app *App) postRegisterEVMModules() error { - // register precompiles on EVMKeeper - const bech32PrecompileBaseGas = 6_000 - - // secp256r1 precompile as per EIP-7212 - p256Precompile := &p256.Precompile{} - - bech32Precompile, err := bech32.NewPrecompile(bech32PrecompileBaseGas) - if err != nil { - return fmt.Errorf("failed to instantiate bech32 precompile: %w", err) - } - - precompiles := maps.Clone(gethvm.PrecompiledContractsPrague) // clone from latest vm fork. - precompiles[bech32Precompile.Address()] = bech32Precompile - precompiles[p256Precompile.Address()] = p256Precompile - - // add more stateful precompiles here, if needed. - - _ = app.EVMKeeper.WithStaticPrecompiles(precompiles) - return nil -} - // setEVMMempool sets the EVM priority nonce mempool // it is required for the ethereum json rpc server to work func (app *App) setEVMMempool() { @@ -156,7 +143,7 @@ func (app *App) setEVMMempool() { BlockGasLimit: 100_000_000, } - evmMempool := evmmempool.NewExperimentalEVMMempool(app.CreateQueryContext, app.Logger(), app.EVMKeeper, app.FeeMarketKeeper, app.txConfig, app.clientCtx, mempoolConfig) + evmMempool := evmmempool.NewExperimentalEVMMempool(app.CreateQueryContext, app.Logger(), app.EVMKeeper, app.FeeMarketKeeper, app.txConfig, app.clientCtx, mempoolConfig, 4096) app.EVMMempool = evmMempool app.SetMempool(evmMempool) @@ -183,40 +170,7 @@ func (app *App) SetClientCtx(ctx client.Context) { // It is required by the EVM application interface. func (app *App) GetMempool() sdkmempool.ExtMempool { return app.EVMMempool -} - -// getCustomEVMActivators defines a map of opcode modifiers associated -// with a key defining the corresponding EIP. -func getCustomEVMActivators() map[int]func(*gethvm.JumpTable) { - var ( - multiplier = uint64(10) - sstoreConstantGas = uint64(500) - ) - - return map[int]func(*gethvm.JumpTable){ - 0o000: func(jt *gethvm.JumpTable) { - // enable0000 contains the logic to modify the CREATE and CREATE2 opcodes - // constant gas value. - currentValCreate := jt[gethvm.CREATE].GetConstantGas() - jt[gethvm.CREATE].SetConstantGas(currentValCreate * multiplier) - - currentValCreate2 := jt[gethvm.CREATE2].GetConstantGas() - jt[gethvm.CREATE2].SetConstantGas(currentValCreate2 * multiplier) - }, - 0o001: func(jt *gethvm.JumpTable) { - // enable0001 contains the logic to modify the CALL opcode - // constant gas value. - currentVal := jt[gethvm.CALL].GetConstantGas() - jt[gethvm.CALL].SetConstantGas(currentVal * multiplier) - }, - 0o002: func(jt *gethvm.JumpTable) { - // enable0002 contains the logic to modify the SSTORE opcode - // constant gas value. - jt[gethvm.SSTORE].SetConstantGas(sstoreConstantGas) - }, } -} - // getEVMChainID returns the EVM chain ID from the app options. func getEVMChainID(appOpts servertypes.AppOptions) uint64 { chainID := cast.ToString(appOpts.Get(flags.FlagChainID)) @@ -256,7 +210,7 @@ func cosmosChainIDToEVMChainID(chainID string) uint64 { // This needs to be removed after EVM supports App Wiring. func RegisterEVM(cdc codec.Codec, interfaceRegistry codectypes.InterfaceRegistry) map[string]appmodule.AppModule { modules := map[string]appmodule.AppModule{ - evmtypes.ModuleName: vm.NewAppModule(nil, authkeeper.AccountKeeper{}, interfaceRegistry.SigningContext().AddressCodec()), + evmtypes.ModuleName: vm.NewAppModule(nil, authkeeper.AccountKeeper{}, nil, interfaceRegistry.SigningContext().AddressCodec()), erc20types.ModuleName: erc20.NewAppModule(erc20keeper.Keeper{}, authkeeper.AccountKeeper{}), feemarkettypes.ModuleName: feemarket.NewAppModule(feemarketkeeper.Keeper{}), } diff --git a/evm/template/generator.go b/evm/template/generator.go index 19f5ea66..f6b1e3f4 100644 --- a/evm/template/generator.go +++ b/evm/template/generator.go @@ -22,7 +22,7 @@ import ( "github.com/ignite/cli/v29/ignite/templates/field/plushhelpers" ) -//go:embed files/* files/**/* +//go:embed files/* var fsAppEvm embed.FS // NewEVMGenerator returns the generator to scaffold a evm integration inside an app. @@ -66,7 +66,6 @@ func NewEVMGenerator(chain *chain.Chain) (*genny.Generator, error) { g.RunFn(rootModify(appPath, binaryName)) g.RunFn(appModify(appPath)) g.RunFn(appConfigModify(appPath)) - g.RunFn(ibcModify(appPath)) return g, nil } diff --git a/evm/template/generator_app.go b/evm/template/generator_app.go index 8b8fa053..281e23bc 100644 --- a/evm/template/generator_app.go +++ b/evm/template/generator_app.go @@ -30,7 +30,7 @@ func appModify(appPath string) genny.RunFn { xast.WithNamedImport("evmsrvflags", "github.com/cosmos/evm/server/flags"), xast.WithNamedImport("erc20keeper", "github.com/cosmos/evm/x/erc20/keeper"), xast.WithNamedImport("feemarketkeeper", "github.com/cosmos/evm/x/feemarket/keeper"), - xast.WithNamedImport("ibctransferkeeper", "github.com/cosmos/evm/x/ibc/transfer/keeper"), + xast.WithNamedImport("ibctransferkeeper", "github.com/cosmos/ibc-go/v10/modules/apps/transfer/keeper"), xast.WithNamedImport("evmkeeper", "github.com/cosmos/evm/x/vm/keeper"), xast.WithNamedImport("evmante", "github.com/cosmos/evm/ante"), xast.WithNamedImport("evmmempool", "github.com/cosmos/evm/mempool"), @@ -62,15 +62,6 @@ func appModify(appPath string) genny.RunFn { xast.WithGlobal("BaseDenomUnit", "int64", "18"), ) - content, err = xast.ModifyFunction( - content, - "init", - xast.AppendFuncCode(`// Update power reduction for 18-decimal base unit - sdk.DefaultPowerReduction = math.NewIntFromBigInt( - new(big.Int).Exp(big.NewInt(10), big.NewInt(BaseDenomUnit), nil), - )`), - ) - // append modules content, err = xast.ModifyStruct( content, @@ -113,16 +104,10 @@ func appModify(appPath string) genny.RunFn { content, "New", xast.AppendFuncCodeAtLine( - `// evm must be instantiated before IBC modules + `// evm must be instantiated after IBC modules if err := app.registerEVMModules(appOpts); err != nil { panic(err) }`, - 5, - ), - xast.AppendFuncCodeAtLine( - `if err := app.postRegisterEVMModules(); err != nil { - panic(err) - }`, 7, ), xast.AppendInsideFuncCall( @@ -137,11 +122,12 @@ func appModify(appPath string) genny.RunFn { ), xast.AppendFuncCodeAtLine( `// set ante handlers + maxGasWanted := cast.ToUint64(appOpts.Get(evmsrvflags.EVMMaxTxGasWanted)) app.setAnteHandler(app.txConfig, maxGasWanted) // set evm mempool app.setEVMMempool()`, - 12, + 9, ), ) if err != nil { diff --git a/evm/template/generator_app_config.go b/evm/template/generator_app_config.go index 0e5f32ce..0661fe85 100644 --- a/evm/template/generator_app_config.go +++ b/evm/template/generator_app_config.go @@ -1,14 +1,13 @@ package template import ( - "fmt" "path/filepath" "strings" "github.com/gobuffalo/genny/v2" - "github.com/ignite/cli/v29/ignite/pkg/placeholder" "github.com/ignite/cli/v29/ignite/pkg/xast" "github.com/ignite/cli/v29/ignite/templates/module" + modulecreate "github.com/ignite/cli/v29/ignite/templates/module/create" ) // appConfigModify modifies the application app_config.go to use EVM. @@ -22,9 +21,9 @@ func appConfigModify(appPath string) genny.RunFn { // change imports content, err := xast.AppendImports(f.String(), - xast.WithNamedImport("erc20types", "github.com/cosmos/evm/x/erc20/types"), - xast.WithNamedImport("feemarkettypes", "github.com/cosmos/evm/x/feemarket/types"), - xast.WithNamedImport("evmtypes", "github.com/cosmos/evm/x/vm/types"), + xast.WithNamedImport("erc20moduletypes", "github.com/cosmos/evm/x/erc20/types"), + xast.WithNamedImport("feemarketmoduletypes", "github.com/cosmos/evm/x/feemarket/types"), + xast.WithNamedImport("evmmoduletypes", "github.com/cosmos/evm/x/vm/types"), ) if err != nil { return err @@ -34,46 +33,38 @@ func appConfigModify(appPath string) genny.RunFn { content, err = xast.ModifyGlobalArrayVar( content, "moduleAccPerms", - xast.AppendGlobalArrayValue(`{Account: evmtypes.ModuleName, Permissions: []string{authtypes.Minter, authtypes.Burner}}`), - xast.AppendGlobalArrayValue(`{Account: erc20types.ModuleName, Permissions: []string{authtypes.Minter, authtypes.Burner}}`), - xast.AppendGlobalArrayValue(`{Account: feemarkettypes.ModuleName}`), + xast.AppendGlobalArrayValue(`{Account: evmmoduletypes.ModuleName, Permissions: []string{authtypes.Minter, authtypes.Burner}}`), + xast.AppendGlobalArrayValue(`{Account: erc20moduletypes.ModuleName, Permissions: []string{authtypes.Minter, authtypes.Burner}}`), + xast.AppendGlobalArrayValue(`{Account: feemarketmoduletypes.ModuleName}`), ) if err != nil { return err } - replacer := placeholder.New() - - // begin block / end block configuration - template := `// cosmos evm modules - erc20types.ModuleName, - feemarkettypes.ModuleName, - evmtypes.ModuleName, -%[1]v` - replacement := fmt.Sprintf(template, module.PlaceholderSgAppBeginBlockers) - content = replacer.Replace(content, module.PlaceholderSgAppBeginBlockers, replacement) - - replacement = fmt.Sprintf(template, module.PlaceholderSgAppEndBlockers) - content = replacer.Replace(content, module.PlaceholderSgAppEndBlockers, replacement) + content, err = modulecreate.AddModuleToAppConfig(content, "erc20", modulecreate.SkipConfigEntry()) + if err != nil { + return err + } - // init genesis configuration - content = strings.Replace(content, "genutiltypes.ModuleName,", "", 1) // delete genutil current position + content, err = modulecreate.AddModuleToAppConfig(content, "feemarket", modulecreate.SkipConfigEntry()) + if err != nil { + return err + } - template = `// cosmos evm modules - erc20types.ModuleName, - feemarkettypes.ModuleName, - evmtypes.ModuleName, - // moved down because of evm modules - genutiltypes.ModuleName, -%[1]v` - replacement = fmt.Sprintf(template, module.PlaceholderSgAppInitGenesis) - content = replacer.Replace(content, module.PlaceholderSgAppInitGenesis, replacement) + content, err = modulecreate.AddModuleToAppConfig(content, + "evm", + modulecreate.SkipConfigEntry(), + modulecreate.SpecifyModuleEntry("PreBlockers", "InitGenesis", "BeginBlockers", "EndBlockers"), + ) + if err != nil { + return err + } // Add new function content, err = xast.AppendFunction(content, `// getBlockAccAddrs returns the list of block accounts addresses. // it appends the addresses of the static precompiles to the blockAccAddrs slice. func getBlockAccAddrs() []string { - for _, precompile := range evmtypes.AvailableStaticPrecompiles { + for _, precompile := range evmmoduletypes.AvailableStaticPrecompiles { blockAccAddrs = append(blockAccAddrs, precompile) } diff --git a/evm/template/generator_cmd.go b/evm/template/generator_cmd.go index 280805f6..200ccfcd 100644 --- a/evm/template/generator_cmd.go +++ b/evm/template/generator_cmd.go @@ -21,6 +21,7 @@ func commandsModify(appPath, binaryName string) genny.RunFn { f.String(), xast.WithNamedImport("cosmosevmcmd", "github.com/cosmos/evm/client"), xast.WithNamedImport("cosmosevmserver", "github.com/cosmos/evm/server"), + xast.WithNamedImport("cosmosevmkeyring", "github.com/cosmos/evm/crypto/keyring"), ) if err != nil { return err @@ -77,9 +78,6 @@ func rootModify(appPath, binaryName string) genny.RunFn { content, err := xast.AppendImports( f.String(), xast.WithNamedImport("cosmosevmkeyring", "github.com/cosmos/evm/crypto/keyring"), - xast.WithNamedImport("ibctransferevm", "github.com/cosmos/evm/x/ibc/transfer"), - xast.WithNamedImport("ibctransfer", "github.com/cosmos/ibc-go/v10/modules/apps/transfer"), - xast.WithNamedImport("ibctransfertypes", "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types"), ) if err != nil { return err @@ -100,10 +98,6 @@ func rootModify(appPath, binaryName string) genny.RunFn { for name, mod := range evmModules { moduleBasicManager[name] = module.CoreAppModuleBasicAdaptor(name, mod) autoCliOpts.Modules[name] = mod - } - // Fix basic manager transfer wrapping - moduleBasicManager[ibctransfertypes.ModuleName] = ibctransferevm.AppModuleBasic{ - AppModuleBasic: &ibctransfer.AppModuleBasic{}, }`, 5), ) diff --git a/evm/template/generator_ibc.go b/evm/template/generator_ibc.go deleted file mode 100644 index da2775d0..00000000 --- a/evm/template/generator_ibc.go +++ /dev/null @@ -1,125 +0,0 @@ -package template - -import ( - "path/filepath" - "strings" - - "github.com/gobuffalo/genny/v2" - "github.com/ignite/cli/v29/ignite/pkg/xast" -) - -// ibcModify modifies the application ibc.go to use EVM. -func ibcModify(appPath string) genny.RunFn { - return func(r *genny.Runner) error { - ibcPath := filepath.Join(appPath, "app", "ibc.go") - f, err := r.Disk.Find(ibcPath) - if err != nil { - return err - } - - // remove imports that are replaced by EVM wrappers - content, err := xast.RemoveImports(f.String(), - xast.WithNamedImport("ibctransferkeeper", "github.com/cosmos/ibc-go/v10/modules/apps/transfer/keeper"), - xast.WithNamedImport("ibctransferv2", "github.com/cosmos/ibc-go/v10/modules/apps/transfer/v2"), - ) - if err != nil { - return err - } - - // add EVM imports - content, err = xast.AppendImports(content, - xast.WithNamedImport("ibctransferevm", "github.com/cosmos/evm/x/ibc/transfer"), - xast.WithNamedImport("ibctransferkeeper", "github.com/cosmos/evm/x/ibc/transfer/keeper"), - xast.WithNamedImport("ibctransferv2evm", "github.com/cosmos/evm/x/ibc/transfer/v2"), - xast.WithNamedImport("erc20", "github.com/cosmos/evm/x/erc20"), - xast.WithNamedImport("erc20v2", "github.com/cosmos/evm/x/erc20/v2"), - ) - if err != nil { - return err - } - - // Modify registerIBCModules function - content, err = modifyRegisterIBCModules(content) - if err != nil { - return err - } - - // Modify RegisterIBC function - content, err = xast.ModifyFunction(content, "RegisterIBC", - xast.ReplaceFuncBody(`modules := map[string]appmodule.AppModule{ - ibcexported.ModuleName: ibc.NewAppModule(&ibckeeper.Keeper{}), - icatypes.ModuleName: icamodule.NewAppModule(&icacontrollerkeeper.Keeper{}, &icahostkeeper.Keeper{}), - ibctm.ModuleName: ibctm.NewAppModule(ibctm.NewLightClientModule(cdc, ibcclienttypes.StoreProvider{})), - solomachine.ModuleName: solomachine.NewAppModule(solomachine.NewLightClientModule(cdc, ibcclienttypes.StoreProvider{})), - } - - for _, m := range modules { - if mr, ok := m.(module.AppModuleBasic); ok { - mr.RegisterInterfaces(cdc.InterfaceRegistry()) - } - } - - // manually register for ibctransfer, as instantiation requires a keeper - ibcTransferModuleBasic := ibctransferevm.AppModuleBasic{ - AppModuleBasic: &ibctransfer.AppModuleBasic{}, - } - ibcTransferModuleBasic.RegisterInterfaces(cdc.InterfaceRegistry()) - - return modules`), - ) - if err != nil { - return err - } - - return r.File(genny.NewFileS(ibcPath, content)) - } -} - -// modifyRegisterIBCModules modifies the registerIBCModules function to add EVM integration. -func modifyRegisterIBCModules(content string) (string, error) { - // add app.Erc20Keeper parameter to TransferKeeper initialization - content, err := xast.ModifyFunction(content, "registerIBCModules", - xast.AppendInsideFuncCall("ibctransferkeeper.NewKeeper", "app.Erc20Keeper", 8), - ) - if err != nil { - return "", err - } - - // Replace ibctransfer.NewIBCModule with ibctransferevm.NewIBCModule in var declarations - // Using string replacement for variable initialization as xast doesn't have direct support - content = strings.ReplaceAll( - content, - "ibctransfer.NewIBCModule(app.TransferKeeper)", - "ibctransferevm.NewIBCModule(app.TransferKeeper)", - ) - - // Replace ibctransferv2.NewIBCModule with ibctransferv2evm.NewIBCModule - content = strings.ReplaceAll( - content, - "ibctransferv2.NewIBCModule(app.TransferKeeper)", - "ibctransferv2evm.NewIBCModule(app.TransferKeeper)", - ) - - // Add ERC20 middleware wrapping after the var declaration block - // Find the line after the var block and insert the middleware code - varBlockEnd := `icaHostStack porttypes.IBCModule = icahost.NewIBCModule(app.ICAHostKeeper) - )` - - middlewareCode := `icaHostStack porttypes.IBCModule = icahost.NewIBCModule(app.ICAHostKeeper) - ) - - // add evm capabilities - transferStack = erc20.NewIBCMiddleware(app.Erc20Keeper, transferStack) - transferStackV2 = erc20v2.NewIBCMiddleware(transferStackV2, app.Erc20Keeper)` - - content = strings.Replace(content, varBlockEnd, middlewareCode, 1) - - // Replace ibctransfer.NewAppModule with ibctransferevm.NewAppModule - content = strings.ReplaceAll( - content, - "ibctransfer.NewAppModule(app.TransferKeeper),", - "ibctransferevm.NewAppModule(app.TransferKeeper), // ibc transfer evm compatible", - ) - - return content, nil -}