Skip to content

Commit 0ebeaeb

Browse files
authored
feat: add wasm contract query gas limit (#1830)
* feat: add wasm contract query gas limit add a wasm contract query gas limit to prevent infinite gas attacks * test: update unit tests - add and update unit tests * fix: assign new queryCtx instead of overwriting current tx --------- Co-authored-by: blindchaser <zengyiren@hotmail.com>
1 parent a8ea0f9 commit 0ebeaeb

File tree

12 files changed

+171
-77
lines changed

12 files changed

+171
-77
lines changed

app/receipt.go

+15-4
Original file line numberDiff line numberDiff line change
@@ -37,26 +37,31 @@ func (app *App) AddCosmosEventsToEVMReceiptIfApplicable(ctx sdk.Context, tx sdk.
3737
return
3838
}
3939
wasmEvents := GetEventsOfType(response, wasmtypes.WasmModuleEventType)
40+
if len(wasmEvents) == 0 {
41+
return
42+
}
4043
logs := []*ethtypes.Log{}
44+
wasmGasLimit := app.EvmKeeper.GetDeliverTxHookWasmGasLimit(ctx)
45+
queryCtx := ctx.WithGasMeter(sdk.NewGasMeterWithMultiplier(ctx, wasmGasLimit))
4146
for _, wasmEvent := range wasmEvents {
4247
contractAddr, found := GetAttributeValue(wasmEvent, wasmtypes.AttributeKeyContractAddr)
4348
if !found {
4449
continue
4550
}
4651
// check if there is a ERC20 pointer to contractAddr
47-
pointerAddr, _, exists := app.EvmKeeper.GetERC20CW20Pointer(ctx, contractAddr)
52+
pointerAddr, _, exists := app.EvmKeeper.GetERC20CW20Pointer(queryCtx, contractAddr)
4853
if exists {
49-
log, eligible := app.translateCW20Event(ctx, wasmEvent, pointerAddr, contractAddr)
54+
log, eligible := app.translateCW20Event(queryCtx, wasmEvent, pointerAddr, contractAddr)
5055
if eligible {
5156
log.Index = uint(len(logs))
5257
logs = append(logs, log)
5358
}
5459
continue
5560
}
5661
// check if there is a ERC721 pointer to contract Addr
57-
pointerAddr, _, exists = app.EvmKeeper.GetERC721CW721Pointer(ctx, contractAddr)
62+
pointerAddr, _, exists = app.EvmKeeper.GetERC721CW721Pointer(queryCtx, contractAddr)
5863
if exists {
59-
log, eligible := app.translateCW721Event(ctx, wasmEvent, pointerAddr, contractAddr)
64+
log, eligible := app.translateCW721Event(queryCtx, wasmEvent, pointerAddr, contractAddr)
6065
if eligible {
6166
log.Index = uint(len(logs))
6267
logs = append(logs, log)
@@ -107,6 +112,12 @@ func (app *App) AddCosmosEventsToEVMReceiptIfApplicable(ctx sdk.Context, tx sdk.
107112
}
108113

109114
func (app *App) translateCW20Event(ctx sdk.Context, wasmEvent abci.Event, pointerAddr common.Address, contractAddr string) (*ethtypes.Log, bool) {
115+
defer func() {
116+
if r := recover(); r != nil {
117+
fmt.Printf("[Error] Panic caught during translateCW20Event: type=%T, value=%+v\n", r, r)
118+
}
119+
}()
120+
110121
action, found := GetAttributeValue(wasmEvent, "action")
111122
if !found {
112123
return nil, false

go.mod

+11-11
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,11 @@ require (
4141
go.opentelemetry.io/otel v1.9.0
4242
go.opentelemetry.io/otel/trace v1.9.0
4343
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa
44-
golang.org/x/sync v0.7.0
44+
golang.org/x/sync v0.8.0
4545
golang.org/x/time v0.3.0
46-
google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8
47-
google.golang.org/grpc v1.64.0
48-
google.golang.org/protobuf v1.34.1
46+
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142
47+
google.golang.org/grpc v1.64.1
48+
google.golang.org/protobuf v1.34.2
4949
gopkg.in/yaml.v2 v2.4.0
5050
gopkg.in/yaml.v3 v3.0.1
5151
)
@@ -312,16 +312,16 @@ require (
312312
go.opencensus.io v0.23.0 // indirect
313313
go.opentelemetry.io/otel/exporters/jaeger v1.9.0 // indirect
314314
go.opentelemetry.io/otel/sdk v1.9.0 // indirect
315-
golang.org/x/crypto v0.23.0 // indirect
315+
golang.org/x/crypto v0.24.0 // indirect
316316
golang.org/x/exp/typeparams v0.0.0-20220218215828-6cf2b201936e // indirect
317317
golang.org/x/mod v0.17.0 // indirect
318-
golang.org/x/net v0.25.0 // indirect
319-
golang.org/x/sys v0.20.0 // indirect
320-
golang.org/x/term v0.20.0 // indirect
321-
golang.org/x/text v0.15.0 // indirect
322-
golang.org/x/tools v0.21.0 // indirect
318+
golang.org/x/net v0.26.0 // indirect
319+
golang.org/x/sys v0.21.0 // indirect
320+
golang.org/x/term v0.21.0 // indirect
321+
golang.org/x/text v0.17.0 // indirect
322+
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
323323
google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac // indirect
324-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 // indirect
324+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect
325325
gopkg.in/ini.v1 v1.67.0 // indirect
326326
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
327327
honnef.co/go/tools v0.3.1 // indirect

go.sum

+20-20
Original file line numberDiff line numberDiff line change
@@ -1647,8 +1647,8 @@ golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98y
16471647
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
16481648
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
16491649
golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g=
1650-
golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
1651-
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
1650+
golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI=
1651+
golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
16521652
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
16531653
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
16541654
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -1788,8 +1788,8 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
17881788
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
17891789
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
17901790
golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ=
1791-
golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
1792-
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
1791+
golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
1792+
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
17931793
golang.org/x/oauth2 v0.0.0-20170207211851-4464e7848382/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
17941794
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
17951795
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -1828,8 +1828,8 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ
18281828
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
18291829
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
18301830
golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
1831-
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
1832-
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
1831+
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
1832+
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
18331833
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
18341834
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
18351835
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1956,8 +1956,8 @@ golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
19561956
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
19571957
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
19581958
golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
1959-
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
1960-
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
1959+
golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
1960+
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
19611961
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
19621962
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
19631963
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
@@ -1970,8 +1970,8 @@ golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
19701970
golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
19711971
golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=
19721972
golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww=
1973-
golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw=
1974-
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
1973+
golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA=
1974+
golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=
19751975
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
19761976
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
19771977
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1990,8 +1990,8 @@ golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
19901990
golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
19911991
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
19921992
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
1993-
golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
1994-
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
1993+
golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc=
1994+
golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
19951995
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
19961996
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
19971997
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -2109,8 +2109,8 @@ golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA=
21092109
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
21102110
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
21112111
golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk=
2112-
golang.org/x/tools v0.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw=
2113-
golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
2112+
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
2113+
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
21142114
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
21152115
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
21162116
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -2255,10 +2255,10 @@ google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2I
22552255
google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
22562256
google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac h1:ZL/Teoy/ZGnzyrqK/Optxxp2pmVh+fmJ97slxSRyzUg=
22572257
google.golang.org/genproto v0.0.0-20240116215550-a9fa1716bcac/go.mod h1:+Rvu7ElI+aLzyDQhpHMFMMltsD6m7nqpuWDd2CwJw3k=
2258-
google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8 h1:W5Xj/70xIA4x60O/IFyXivR5MGqblAb8R3w26pnD6No=
2259-
google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8/go.mod h1:vPrPUTsDCYxXWjP7clS81mZ6/803D8K4iM9Ma27VKas=
2260-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 h1:mxSlqyb8ZAHsYDCfiXN1EDdNTdvjUJSLY+OnAUtYNYA=
2261-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8/go.mod h1:I7Y+G38R2bu5j1aLzfFmQfTcU/WnFuqDwLZAbvKTKpM=
2258+
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8=
2259+
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo=
2260+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs=
2261+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
22622262
google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o=
22632263
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
22642264
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
@@ -2276,8 +2276,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0
22762276
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
22772277
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
22782278
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
2279-
google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
2280-
google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
2279+
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
2280+
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
22812281
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
22822282
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
22832283
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

precompiles/distribution/distribution_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ func TestWithdraw(t *testing.T) {
148148
res, err = msgServer.EVMTransaction(sdk.WrapSDKContext(ctx), req)
149149
require.Nil(t, err)
150150
require.Empty(t, res.VmError)
151-
require.Equal(t, uint64(68688), res.GasUsed)
151+
require.Equal(t, uint64(69808), res.GasUsed)
152152

153153
// reinitialized
154154
d, found = testApp.StakingKeeper.GetDelegation(ctx, seiAddr, val)
@@ -301,7 +301,7 @@ func setWithdrawAddressAndWithdraw(
301301
res, err = msgServer.EVMTransaction(sdk.WrapSDKContext(ctx), r)
302302
require.Nil(t, err)
303303
require.Empty(t, res.VmError)
304-
require.Equal(t, uint64(152854), res.GasUsed)
304+
require.Equal(t, uint64(153974), res.GasUsed)
305305

306306
// reinitialized
307307
for _, val := range vals {
@@ -1051,7 +1051,7 @@ func TestPrecompile_RunAndCalculateGas_Rewards(t *testing.T) {
10511051
suppliedGas: uint64(1000000),
10521052
},
10531053
wantRet: emptyCasePackedOutput,
1054-
wantRemainingGas: 994313,
1054+
wantRemainingGas: 993193,
10551055
wantErr: false,
10561056
},
10571057
{
@@ -1067,7 +1067,7 @@ func TestPrecompile_RunAndCalculateGas_Rewards(t *testing.T) {
10671067
suppliedGas: uint64(1000000),
10681068
},
10691069
wantRet: happyPathPackedOutput,
1070-
wantRemainingGas: 994313,
1070+
wantRemainingGas: 993193,
10711071
wantErr: false,
10721072
},
10731073
}

precompiles/ibc/ibc_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ func TestPrecompile_Run(t *testing.T) {
106106
fields: fields{transferKeeper: &MockTransferKeeper{}},
107107
args: commonArgs,
108108
wantBz: packedTrue,
109-
wantRemainingGas: 994313,
109+
wantRemainingGas: 993193,
110110
wantErr: false,
111111
},
112112
{
@@ -235,7 +235,7 @@ func TestPrecompile_Run(t *testing.T) {
235235
value: nil,
236236
},
237237
wantBz: packedTrue,
238-
wantRemainingGas: 994313,
238+
wantRemainingGas: 993193,
239239
wantErr: false,
240240
},
241241
{
@@ -255,7 +255,7 @@ func TestPrecompile_Run(t *testing.T) {
255255
value: nil,
256256
},
257257
wantBz: packedTrue,
258-
wantRemainingGas: 994313,
258+
wantRemainingGas: 993193,
259259
wantErr: false,
260260
},
261261
}

proto/evm/params.proto

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ string minimum_fee_per_gas = 4 [
3232
(gogoproto.nullable) = false,
3333
(gogoproto.jsontag) = "minimum_fee_per_gas"
3434
];
35+
uint64 deliver_tx_hook_wasm_gas_limit = 5;
3536
// ChainConfig chain_config = 5 [(gogoproto.moretags) = "yaml:\"chain_config\"", (gogoproto.nullable) = false];
3637
// string chain_id = 6 [
3738
// (gogoproto.moretags) = "yaml:\"chain_id\"",

x/evm/keeper/params.go

+4
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ func (k *Keeper) GetMinimumFeePerGas(ctx sdk.Context) sdk.Dec {
3737
return k.GetParams(ctx).MinimumFeePerGas
3838
}
3939

40+
func (k *Keeper) GetDeliverTxHookWasmGasLimit(ctx sdk.Context) uint64 {
41+
return k.GetParams(ctx).DeliverTxHookWasmGasLimit
42+
}
43+
4044
func (k *Keeper) ChainID(ctx sdk.Context) *big.Int {
4145
if k.EthReplayConfig.Enabled || k.EthBlockTestConfig.Enabled {
4246
// replay is for eth mainnet so always return 1

x/evm/keeper/params_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ func TestParams(t *testing.T) {
1616
require.Equal(t, types.DefaultPriorityNormalizer, k.GetPriorityNormalizer(ctx))
1717
require.Equal(t, types.DefaultBaseFeePerGas, k.GetBaseFeePerGas(ctx))
1818
require.Equal(t, types.DefaultMinFeePerGas, k.GetMinimumFeePerGas(ctx))
19+
require.Equal(t, types.DefaultDeliverTxHookWasmGasLimit, k.GetDeliverTxHookWasmGasLimit(ctx))
1920

2021
require.Nil(t, k.GetParams(ctx).Validate())
2122
}

x/evm/module_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ func TestModuleExportGenesis(t *testing.T) {
5353
module := evm.NewAppModule(nil, k)
5454
jsonMsg := module.ExportGenesis(ctx, types.ModuleCdc)
5555
jsonStr := string(jsonMsg)
56-
assert.Equal(t, "{\"params\":{\"priority_normalizer\":\"1.000000000000000000\",\"base_fee_per_gas\":\"0.000000000000000000\",\"minimum_fee_per_gas\":\"100000000000.000000000000000000\",\"whitelisted_cw_code_hashes_for_delegate_call\":[]},\"address_associations\":[{\"sei_address\":\"sei17xpfvakm2amg962yls6f84z3kell8c5la4jkdu\",\"eth_address\":\"0x27F7B8B8B5A4e71E8E9aA671f4e4031E3773303F\"}],\"codes\":[],\"states\":[],\"nonces\":[],\"serialized\":[{\"prefix\":\"Fg==\",\"key\":\"AwAC\",\"value\":\"AAAAAAAAAAM=\"},{\"prefix\":\"Fg==\",\"key\":\"BAAG\",\"value\":\"AAAAAAAAAAQ=\"}]}", jsonStr)
56+
assert.Equal(t, "{\"params\":{\"priority_normalizer\":\"1.000000000000000000\",\"base_fee_per_gas\":\"0.000000000000000000\",\"minimum_fee_per_gas\":\"100000000000.000000000000000000\",\"deliver_tx_hook_wasm_gas_limit\":\"300000\",\"whitelisted_cw_code_hashes_for_delegate_call\":[]},\"address_associations\":[{\"sei_address\":\"sei17xpfvakm2amg962yls6f84z3kell8c5la4jkdu\",\"eth_address\":\"0x27F7B8B8B5A4e71E8E9aA671f4e4031E3773303F\"}],\"codes\":[],\"states\":[],\"nonces\":[],\"serialized\":[{\"prefix\":\"Fg==\",\"key\":\"AwAC\",\"value\":\"AAAAAAAAAAM=\"},{\"prefix\":\"Fg==\",\"key\":\"BAAG\",\"value\":\"AAAAAAAAAAQ=\"}]}", jsonStr)
5757
}
5858

5959
func TestConsensusVersion(t *testing.T) {

0 commit comments

Comments
 (0)