Skip to content

Commit 2f66cfb

Browse files
authored
refactor(hook): Move blackhole op to libevm (#5682)
1 parent 16fc9c3 commit 2f66cfb

16 files changed

Lines changed: 37 additions & 42 deletions

File tree

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ require (
2626
github.com/arr4n/shed v0.0.0-20260217105731-4cd15adfa100
2727
github.com/ava-labs/avalanchego/graft/coreth v1.14.2
2828
github.com/ava-labs/avalanchego/graft/subnet-evm v1.14.2
29-
github.com/ava-labs/libevm v1.13.15-0.20260716180230-f887fa4393ca
29+
github.com/ava-labs/libevm v1.13.15-0.20260720163803-90e9e9d2a1f5
3030
github.com/btcsuite/btcd/btcutil v1.1.3
3131
github.com/cespare/xxhash/v2 v2.3.0
3232
github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -335,8 +335,8 @@ github.com/arr4n/shed v0.0.0-20260217105731-4cd15adfa100 h1:j0Pj/Gq5XTbJEyzoSX82
335335
github.com/arr4n/shed v0.0.0-20260217105731-4cd15adfa100/go.mod h1:eD5UkxiWTdbkqM7mg2Xf981SAeWQ/Q80js/1rFcKpfg=
336336
github.com/ava-labs/firewood-go-ethhash/ffi v0.8.0 h1:EDhwnUb6Fy/88cqUCcuj0R5u8isB+Vv++v/r2mawp2g=
337337
github.com/ava-labs/firewood-go-ethhash/ffi v0.8.0/go.mod h1:3pf8KGfCmqegWoY5/pZ1NHUcyuRkfl/vHQuOjsdUtbI=
338-
github.com/ava-labs/libevm v1.13.15-0.20260716180230-f887fa4393ca h1:VEjyvhWTn6FR/tr3wzHnAgAMpVIAu4P5kDQKycbWGWQ=
339-
github.com/ava-labs/libevm v1.13.15-0.20260716180230-f887fa4393ca/go.mod h1:6NxGoR1aLABnfLy+fncXRj0W6rUoUrXghnAWZ+Rhr4o=
338+
github.com/ava-labs/libevm v1.13.15-0.20260720163803-90e9e9d2a1f5 h1:1gyMFsVSsCdoBYUwaw5KJmax/2ANuXH200IlayVNAJM=
339+
github.com/ava-labs/libevm v1.13.15-0.20260720163803-90e9e9d2a1f5/go.mod h1:6NxGoR1aLABnfLy+fncXRj0W6rUoUrXghnAWZ+Rhr4o=
340340
github.com/ava-labs/simplex v0.0.0-20260429081342-03ce910391ad h1:P5IRndHUinfIZ73jdxl3M6jdcnKkQOLYvhGvE3VDiSU=
341341
github.com/ava-labs/simplex v0.0.0-20260429081342-03ce910391ad/go.mod h1:DADqV3zJ+ij8GqliStJ+aj9l/cPtb5ZUhNy5KxlDEsQ=
342342
github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g=

go.work.sum

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -338,8 +338,6 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26
338338
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA=
339339
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
340340
github.com/ava-labs/firewood-go-ethhash/ffi v0.3.0/go.mod h1:71C76bo47zlDX9gWnn3p/0QZQXkTQ/GNqUNI6fchvjs=
341-
github.com/ava-labs/libevm v1.13.15-0.20260716180230-f887fa4393ca h1:VEjyvhWTn6FR/tr3wzHnAgAMpVIAu4P5kDQKycbWGWQ=
342-
github.com/ava-labs/libevm v1.13.15-0.20260716180230-f887fa4393ca/go.mod h1:6NxGoR1aLABnfLy+fncXRj0W6rUoUrXghnAWZ+Rhr4o=
343341
github.com/ava-labs/simplex v0.0.0-20260320130759-afe09323fdd1 h1:Y9UdRQj28/t+GNzVSlP6nvoNLtzNRo3fNXLUc/NscVM=
344342
github.com/ava-labs/simplex v0.0.0-20260320130759-afe09323fdd1/go.mod h1:GVzumIo3zR23/qGRN2AdnVkIPHcKMq/D89EGWZfMGQ0=
345343
github.com/aws/aws-sdk-go-v2 v1.21.2 h1:+LXZ0sgo8quN9UOKXXzAWRT3FWd4NxeXWOZom9pE7GA=
@@ -1009,6 +1007,7 @@ golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
10091007
golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
10101008
golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
10111009
golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
1010+
golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
10121011
golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
10131012
golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 h1:LvzTn0GQhWuvKH/kVRS3R3bVAsdQWI7hvfLHGgh9+lU=
10141013
golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8/go.mod h1:Pi4ztBfryZoJEkyFTI5/Ocsu2jXyDr6iSdgJiYE/uwE=

graft/coreth/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ require (
1111
github.com/ava-labs/avalanchego v1.14.2
1212
github.com/ava-labs/avalanchego/graft/evm v1.14.2
1313
github.com/ava-labs/firewood-go-ethhash/ffi v0.8.0
14-
github.com/ava-labs/libevm v1.13.15-0.20260716180230-f887fa4393ca
14+
github.com/ava-labs/libevm v1.13.15-0.20260720163803-90e9e9d2a1f5
1515
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
1616
github.com/go-cmd/cmd v1.4.3
1717
github.com/google/go-cmp v0.7.0

graft/coreth/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ github.com/arr4n/shed v0.0.0-20260217105731-4cd15adfa100 h1:j0Pj/Gq5XTbJEyzoSX82
3030
github.com/arr4n/shed v0.0.0-20260217105731-4cd15adfa100/go.mod h1:eD5UkxiWTdbkqM7mg2Xf981SAeWQ/Q80js/1rFcKpfg=
3131
github.com/ava-labs/firewood-go-ethhash/ffi v0.8.0 h1:EDhwnUb6Fy/88cqUCcuj0R5u8isB+Vv++v/r2mawp2g=
3232
github.com/ava-labs/firewood-go-ethhash/ffi v0.8.0/go.mod h1:3pf8KGfCmqegWoY5/pZ1NHUcyuRkfl/vHQuOjsdUtbI=
33-
github.com/ava-labs/libevm v1.13.15-0.20260716180230-f887fa4393ca h1:VEjyvhWTn6FR/tr3wzHnAgAMpVIAu4P5kDQKycbWGWQ=
34-
github.com/ava-labs/libevm v1.13.15-0.20260716180230-f887fa4393ca/go.mod h1:6NxGoR1aLABnfLy+fncXRj0W6rUoUrXghnAWZ+Rhr4o=
33+
github.com/ava-labs/libevm v1.13.15-0.20260720163803-90e9e9d2a1f5 h1:1gyMFsVSsCdoBYUwaw5KJmax/2ANuXH200IlayVNAJM=
34+
github.com/ava-labs/libevm v1.13.15-0.20260720163803-90e9e9d2a1f5/go.mod h1:6NxGoR1aLABnfLy+fncXRj0W6rUoUrXghnAWZ+Rhr4o=
3535
github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g=
3636
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
3737
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=

graft/coreth/params/BUILD.bazel

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ go_library(
2424
"//graft/coreth/precompile/contract",
2525
"//graft/coreth/precompile/modules",
2626
"//graft/coreth/precompile/precompileconfig",
27+
"//graft/evm/constants",
2728
"//graft/evm/precompileconfig",
2829
"//snow",
2930
"//upgrade",
@@ -36,6 +37,7 @@ go_library(
3637
"@com_github_ava_labs_libevm//libevm",
3738
"@com_github_ava_labs_libevm//libevm/legacy",
3839
"@com_github_ava_labs_libevm//params",
40+
"@com_github_holiman_uint256//:uint256",
3941
],
4042
)
4143

graft/coreth/params/hooks_libevm.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,15 @@ import (
1313
"github.com/ava-labs/libevm/core/vm"
1414
"github.com/ava-labs/libevm/libevm"
1515
"github.com/ava-labs/libevm/libevm/legacy"
16+
"github.com/holiman/uint256"
1617

1718
"github.com/ava-labs/avalanchego/graft/coreth/nativeasset"
1819
"github.com/ava-labs/avalanchego/graft/coreth/params/extras"
1920
"github.com/ava-labs/avalanchego/graft/coreth/plugin/evm/customheader"
2021
"github.com/ava-labs/avalanchego/graft/coreth/precompile/contract"
2122
"github.com/ava-labs/avalanchego/graft/coreth/precompile/modules"
2223
"github.com/ava-labs/avalanchego/graft/coreth/precompile/precompileconfig"
24+
"github.com/ava-labs/avalanchego/graft/evm/constants"
2325
"github.com/ava-labs/avalanchego/snow"
2426
"github.com/ava-labs/avalanchego/utils/set"
2527
"github.com/ava-labs/avalanchego/vms/evm/predicate"
@@ -63,6 +65,20 @@ func (r RulesExtra) MinimumGasConsumption(limit uint64) uint64 {
6365
return (ethparams.NOOPHooks{}).MinimumGasConsumption(limit)
6466
}
6567

68+
// AfterExecutingTransaction credits the base fee to [constants.BlackholeAddr].
69+
// The C-Chain has historically credited the full fee (base + priority) to the
70+
// blackhole address, but libevm's state transition only credits the priority
71+
// fee to the coinbase (the blackhole address) and discards the base fee.
72+
func (RulesExtra) AfterExecutingTransaction(sdb libevm.StateDB, baseFee *big.Int, gasUsed uint64) {
73+
if baseFee == nil {
74+
return
75+
}
76+
burned := new(uint256.Int).SetUint64(gasUsed)
77+
bf := uint256.MustFromBig(baseFee)
78+
burned.Mul(burned, bf)
79+
sdb.AddBalance(constants.BlackholeAddr, burned)
80+
}
81+
6682
// AccessListGas computes the intrinsic gas for an access list.
6783
// When predicaters exist, it calculates gas per-tuple, delegating to predicate
6884
// contracts for addresses that have them. Otherwise, it returns override=false

graft/evm/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ require (
77
github.com/VictoriaMetrics/fastcache v1.12.1
88
github.com/ava-labs/avalanchego v1.14.2
99
github.com/ava-labs/firewood-go-ethhash/ffi v0.8.0
10-
github.com/ava-labs/libevm v1.13.15-0.20260716180230-f887fa4393ca
10+
github.com/ava-labs/libevm v1.13.15-0.20260720163803-90e9e9d2a1f5
1111
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
1212
github.com/deckarep/golang-set/v2 v2.1.0
1313
github.com/gorilla/rpc v1.2.0

graft/evm/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax
2121
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
2222
github.com/ava-labs/firewood-go-ethhash/ffi v0.8.0 h1:EDhwnUb6Fy/88cqUCcuj0R5u8isB+Vv++v/r2mawp2g=
2323
github.com/ava-labs/firewood-go-ethhash/ffi v0.8.0/go.mod h1:3pf8KGfCmqegWoY5/pZ1NHUcyuRkfl/vHQuOjsdUtbI=
24-
github.com/ava-labs/libevm v1.13.15-0.20260716180230-f887fa4393ca h1:VEjyvhWTn6FR/tr3wzHnAgAMpVIAu4P5kDQKycbWGWQ=
25-
github.com/ava-labs/libevm v1.13.15-0.20260716180230-f887fa4393ca/go.mod h1:6NxGoR1aLABnfLy+fncXRj0W6rUoUrXghnAWZ+Rhr4o=
24+
github.com/ava-labs/libevm v1.13.15-0.20260720163803-90e9e9d2a1f5 h1:1gyMFsVSsCdoBYUwaw5KJmax/2ANuXH200IlayVNAJM=
25+
github.com/ava-labs/libevm v1.13.15-0.20260720163803-90e9e9d2a1f5/go.mod h1:6NxGoR1aLABnfLy+fncXRj0W6rUoUrXghnAWZ+Rhr4o=
2626
github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g=
2727
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
2828
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=

graft/subnet-evm/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ require (
1212
github.com/ava-labs/avalanchego v1.14.2
1313
github.com/ava-labs/avalanchego/graft/evm v1.14.2
1414
github.com/ava-labs/firewood-go-ethhash/ffi v0.8.0
15-
github.com/ava-labs/libevm v1.13.15-0.20260716180230-f887fa4393ca
15+
github.com/ava-labs/libevm v1.13.15-0.20260720163803-90e9e9d2a1f5
1616
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
1717
github.com/go-cmd/cmd v1.4.3
1818
github.com/gorilla/rpc v1.2.0

0 commit comments

Comments
 (0)