diff --git a/go.mod b/go.mod index b2147495..a8042477 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ toolchain go1.24.1 require ( github.com/dsnet/golib/unitconv v1.0.2 github.com/ethereum/evmc/v11 v11.0.0 - github.com/ethereum/go-ethereum v1.14.8 + github.com/ethereum/go-ethereum v1.16.5 github.com/hashicorp/golang-lru/v2 v2.0.7 github.com/holiman/uint256 v1.3.2 github.com/stretchr/testify v1.10.0 @@ -31,23 +31,24 @@ require ( require ( github.com/StackExchange/wmi v1.2.1 // indirect - github.com/VictoriaMetrics/fastcache v1.12.2 // indirect + github.com/VictoriaMetrics/fastcache v1.13.0 // indirect github.com/bits-and-blooms/bitset v1.20.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/consensys/gnark-crypto v0.18.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect - github.com/crate-crypto/go-eth-kzg v1.3.0 // indirect + github.com/crate-crypto/go-eth-kzg v1.4.0 // indirect github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/deckarep/golang-set/v2 v2.6.0 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect github.com/emicklei/dot v1.6.2 // indirect - github.com/ethereum/c-kzg-4844/v2 v2.1.0 // indirect + github.com/ethereum/c-kzg-4844/v2 v2.1.3 // indirect + github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab // indirect github.com/ethereum/go-verkle v0.2.2 // indirect github.com/ferranbt/fastssz v0.1.4 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/gofrs/flock v0.12.1 // indirect - github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect + github.com/golang/snappy v1.0.0 // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/holiman/bloomfilter/v2 v2.0.3 // indirect github.com/klauspost/cpuid/v2 v2.0.9 // indirect @@ -59,15 +60,15 @@ require ( github.com/rivo/uniseg v0.2.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect - github.com/supranational/blst v0.3.14 // indirect + github.com/supranational/blst v0.3.16-0.20250831170142-f48500c1fdbe // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect - golang.org/x/sys v0.31.0 // indirect + golang.org/x/sys v0.36.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) -replace github.com/ethereum/go-ethereum => github.com/0xsoniclabs/go-ethereum v0.0.0-20250827114033-a49cee8740d2 +replace github.com/ethereum/go-ethereum => github.com/0xsoniclabs/go-ethereum v0.0.0-20251022155730-949ae6d396a5 replace github.com/ethereum/evmc/v11 => ./third_party/evmc diff --git a/go.sum b/go.sum index 8b0d7523..d4128588 100644 --- a/go.sum +++ b/go.sum @@ -1,18 +1,17 @@ -github.com/0xsoniclabs/go-ethereum v0.0.0-20250827114033-a49cee8740d2 h1:OHaJBUO/R6SOHCDNMskfnakEz59bo1fl7Tmz73GCUnA= -github.com/0xsoniclabs/go-ethereum v0.0.0-20250827114033-a49cee8740d2/go.mod h1:pm9P/VM1zE+1AQPGpoCEaA/0sbu7GFNex/nyjjPRcrU= +github.com/0xsoniclabs/go-ethereum v0.0.0-20251022155730-949ae6d396a5 h1:rNYy8OCRBKxRJNZO77zz1DPlkEgBX2BuN6tlI/qaqNU= +github.com/0xsoniclabs/go-ethereum v0.0.0-20251022155730-949ae6d396a5/go.mod h1:DIzKEbqD4o6KXM9nTaELFXyScXzZPRblv+6L3X01ck4= github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= -github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= -github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= +github.com/VictoriaMetrics/fastcache v1.13.0 h1:AW4mheMR5Vd9FkAPUv+NH6Nhw+fmbTMGMsNAoA/+4G0= +github.com/VictoriaMetrics/fastcache v1.13.0/go.mod h1:hHXhl4DA2fTL2HTZDJFXWgW0LNjo6B+4aj2Wmng3TjU= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bits-and-blooms/bitset v1.20.0 h1:2F+rfL86jE2d/bmw7OhqUg2Sj/1rURkBn3MdfoPyRVU= github.com/bits-and-blooms/bitset v1.20.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= @@ -31,11 +30,10 @@ github.com/consensys/gnark-crypto v0.18.0 h1:vIye/FqI50VeAr0B3dx+YjeIvmc3LWz4yEf github.com/consensys/gnark-crypto v0.18.0/go.mod h1:L3mXGFTe1ZN+RSJ+CLjUt9x7PNdx8ubaYfDROyp2Z8c= github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc= github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/crate-crypto/go-eth-kzg v1.3.0 h1:05GrhASN9kDAidaFJOda6A4BEvgvuXbazXg/0E3OOdI= -github.com/crate-crypto/go-eth-kzg v1.3.0/go.mod h1:J9/u5sWfznSObptgfa92Jq8rTswn6ahQWEuiLHOjCUI= +github.com/crate-crypto/go-eth-kzg v1.4.0 h1:WzDGjHk4gFg6YzV0rJOAsTK4z3Qkz5jd4RE3DAvPFkg= +github.com/crate-crypto/go-eth-kzg v1.4.0/go.mod h1:J9/u5sWfznSObptgfa92Jq8rTswn6ahQWEuiLHOjCUI= github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a h1:W8mUrRp6NOVl3J+MYp5kPMoUZPp7aOYHtaua31lwRHg= github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a/go.mod h1:sTwzHBvIzm2RfVCGNEBZgRyjwK40bVoun3ZnGOCafNM= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= @@ -48,8 +46,10 @@ github.com/dsnet/golib/unitconv v1.0.2 h1:45gXng3Op1vTrnX1PdM9Bla4mEpBFYA5aC8dlq github.com/dsnet/golib/unitconv v1.0.2/go.mod h1:86KTUtTJFLreKjc4sS9xE0rhj4lR44Ox0rEQSEXSWwM= github.com/emicklei/dot v1.6.2 h1:08GN+DD79cy/tzN6uLCT84+2Wk9u+wvqP+Hkx/dIR8A= github.com/emicklei/dot v1.6.2/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= -github.com/ethereum/c-kzg-4844/v2 v2.1.0 h1:gQropX9YFBhl3g4HYhwE70zq3IHFRgbbNPw0Shwzf5w= -github.com/ethereum/c-kzg-4844/v2 v2.1.0/go.mod h1:TC48kOKjJKPbN7C++qIgt0TJzZ70QznYR7Ob+WXl57E= +github.com/ethereum/c-kzg-4844/v2 v2.1.3 h1:DQ21UU0VSsuGy8+pcMJHDS0CV1bKmJmxsJYK8l3MiLU= +github.com/ethereum/c-kzg-4844/v2 v2.1.3/go.mod h1:fyNcYI/yAuLWJxf4uzVtS8VDKeoAaRM8G/+ADz/pRdA= +github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab h1:rvv6MJhy07IMfEKuARQ9TKojGqLVNxQajaXEp/BoqSk= +github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab/go.mod h1:IuLm4IsPipXKF7CW5Lzf68PIbZ5yl7FFd74l/E0o9A8= github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= github.com/ferranbt/fastssz v0.1.4 h1:OCDB+dYDEQDvAgtAGnTSidK1Pe2tW3nFV40XyMkTeDY= @@ -65,9 +65,8 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= -github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= +github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -125,12 +124,10 @@ github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/supranational/blst v0.3.14 h1:xNMoHRJOTwMn63ip6qoWJ2Ymgvj7E2b9jY2FAwY+qRo= -github.com/supranational/blst v0.3.14/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= +github.com/supranational/blst v0.3.16-0.20250831170142-f48500c1fdbe h1:nbdqkIGOGfUAD54q1s2YBcBz/WcsxCO9HUQ4aGV5hUw= +github.com/supranational/blst v0.3.16-0.20250831170142-f48500c1fdbe/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= @@ -153,9 +150,8 @@ golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= -golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= diff --git a/go/geth_adapter/adapter.go b/go/geth_adapter/adapter.go index 73af82bf..dd7e33b9 100644 --- a/go/geth_adapter/adapter.go +++ b/go/geth_adapter/adapter.go @@ -45,7 +45,7 @@ type gethInterpreterAdapter struct { evm *geth.EVM } -func (a *gethInterpreterAdapter) Run(contract *geth.Contract, input []byte, readOnly bool) (ret []byte, err error) { +func (a *gethInterpreterAdapter) Interpret(contract *geth.Contract, input []byte, readOnly bool) (ret []byte, err error) { var result tosca.Result // Tosca EVM implementations update the refund in the StateDB only at the @@ -461,7 +461,7 @@ func (a *runContextAdapter) GetCode(addr tosca.Address) tosca.Code { } func (a *runContextAdapter) SetCode(addr tosca.Address, code tosca.Code) { - a.evm.StateDB.SetCode(common.Address(addr), code) + a.evm.StateDB.SetCode(common.Address(addr), code, tracing.CodeChangeUnspecified) } func (a *runContextAdapter) GetBlockHash(number int64) tosca.Hash { diff --git a/go/geth_adapter/adapter_test.go b/go/geth_adapter/adapter_test.go index ec13ef4c..52604683 100644 --- a/go/geth_adapter/adapter_test.go +++ b/go/geth_adapter/adapter_test.go @@ -131,7 +131,7 @@ func TestRunContextAdapter_SetAndGetCode(t *testing.T) { address := tosca.Address{0x42} code := []byte{1, 2, 3} - stateDb.EXPECT().SetCode(common.Address(address), code) + stateDb.EXPECT().SetCode(common.Address(address), code, gomock.Any()) adapter.SetCode(address, code) stateDb.EXPECT().GetCode(common.Address(address)).Return(code) @@ -470,7 +470,7 @@ func TestRunContextAdapter_SettersForwardTheCorrectStateDbValues(t *testing.T) { }, "code": { primingMock: func(stateDb *MockStateDb) { - stateDb.EXPECT().SetCode(common.Address{0x42}, []byte{1, 2, 3}) + stateDb.EXPECT().SetCode(common.Address{0x42}, []byte{1, 2, 3}, gomock.Any()) }, functionCall: func(adapter *runContextAdapter) { adapter.SetCode(tosca.Address{0x42}, []byte{1, 2, 3}) @@ -812,7 +812,7 @@ func TestRunContextAdapter_getPrevRandaoErrorIfDifficultyCanNotBeConverted(t *te } } -func TestRunContextAdapter_Run(t *testing.T) { +func TestRunContextAdapter_Interpret(t *testing.T) { tests := map[string]bool{ "success": true, "failure": false, @@ -905,7 +905,7 @@ func TestRunContextAdapter_Run(t *testing.T) { contract := geth.NewContract(common.Address(address), common.Address(address), nil, 0, nil) contract.CodeHash = common.Hash(codeHash) - _, err := adapter.Run(contract, []byte{}, false) + _, err := adapter.Interpret(contract, []byte{}, false) if success && err != nil { t.Errorf("Unexpected error: %v", err) } @@ -950,7 +950,7 @@ func TestRunContextAdapter_MaximumCallDepthIsEnforced(t *testing.T) { interpreter: interpreter, } contract := geth.NewContract(common.Address{}, common.Address{}, nil, 0, nil) - _, err := adapter.Run(contract, []byte{}, false) + _, err := adapter.Interpret(contract, []byte{}, false) if depth <= int(params.CallCreateDepth) { require.NoError(t, err, "expected no error for depth %d", depth) } else { @@ -1023,7 +1023,7 @@ func TestGethAdapter_CorruptValuesReturnErrors(t *testing.T) { address := tosca.Address{0x42} contract := geth.NewContract(common.Address(address), common.Address(address), nil, 0, nil) - ret, err := adapter.Run(contract, nil, false) + ret, err := adapter.Interpret(contract, nil, false) require.Error(t, err, "could not convert"+name) require.Nil(t, ret, "expected nil return value") }) @@ -1640,7 +1640,7 @@ func TestGethAdapter_InterpreterReturnsAreHandledCorrectly(t *testing.T) { address := tosca.Address{0x42} contract := geth.NewContract(common.Address(address), common.Address(address), nil, uint64(contractGas), nil) - result, err := adapter.Run(contract, []byte{}, false) + result, err := adapter.Interpret(contract, []byte{}, false) require.Equal(t, test.expectedOutput, result, "Output should match expected output") if test.expectedError == nil { @@ -1728,7 +1728,7 @@ func TestGethAdapter_RefundShiftIsAlwaysUndone(t *testing.T) { contract := geth.NewContract(common.Address(address), common.Address(address), nil, 0, nil) interpreter.EXPECT().Run(gomock.Any()).Return(tosca.Result{Success: test.success, GasRefund: test.gasRefund}, nil) - _, err := adapter.Run(contract, []byte{}, false) + _, err := adapter.Interpret(contract, []byte{}, false) if test.success && err != nil { t.Errorf("Unexpected error: %v", err) } diff --git a/go/geth_adapter/adapter_test_mocks.go b/go/geth_adapter/adapter_test_mocks.go index 3ac8ed41..c4cc307d 100644 --- a/go/geth_adapter/adapter_test_mocks.go +++ b/go/geth_adapter/adapter_test_mocks.go @@ -569,17 +569,17 @@ func (mr *MockStateDbMockRecorder) SelfDestruct6780(arg0 any) *gomock.Call { } // SetCode mocks base method. -func (m *MockStateDb) SetCode(arg0 common.Address, arg1 []byte) []byte { +func (m *MockStateDb) SetCode(arg0 common.Address, arg1 []byte, arg2 tracing.CodeChangeReason) []byte { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "SetCode", arg0, arg1) + ret := m.ctrl.Call(m, "SetCode", arg0, arg1, arg2) ret0, _ := ret[0].([]byte) return ret0 } // SetCode indicates an expected call of SetCode. -func (mr *MockStateDbMockRecorder) SetCode(arg0, arg1 any) *gomock.Call { +func (mr *MockStateDbMockRecorder) SetCode(arg0, arg1, arg2 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetCode", reflect.TypeOf((*MockStateDb)(nil).SetCode), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetCode", reflect.TypeOf((*MockStateDb)(nil).SetCode), arg0, arg1, arg2) } // SetNonce mocks base method. diff --git a/go/geth_adapter/state_db.go b/go/geth_adapter/state_db.go index b8624d86..98124a0b 100644 --- a/go/geth_adapter/state_db.go +++ b/go/geth_adapter/state_db.go @@ -123,7 +123,7 @@ func (s *StateDB) GetCode(address common.Address) []byte { return s.context.GetCode(tosca.Address(address)) } -func (s *StateDB) SetCode(address common.Address, code []byte) []byte { +func (s *StateDB) SetCode(address common.Address, code []byte, _ tracing.CodeChangeReason) []byte { oldCode := s.context.GetCode(tosca.Address(address)) s.context.SetCode(tosca.Address(address), code) return oldCode diff --git a/go/interpreter/geth/ct.go b/go/interpreter/geth/ct.go index 4704b41a..7faefe84 100644 --- a/go/interpreter/geth/ct.go +++ b/go/interpreter/geth/ct.go @@ -62,9 +62,8 @@ func (a ctAdapter) StepN(state *st.State, numSteps int) (*st.State, error) { LastCallReturnData: state.LastCallReturnData.ToBytes(), } - interpreter := evm.Interpreter() for i := 0; i < numSteps && interpreterState.Status == geth_vm.Running; i++ { - interpreter.(*geth_vm.EVMInterpreter).Step(&interpreterState) + evm.Step(&interpreterState) } // Update the resulting state. diff --git a/go/interpreter/geth/geth.go b/go/interpreter/geth/geth.go index dafe70f7..507c6b5b 100644 --- a/go/interpreter/geth/geth.go +++ b/go/interpreter/geth/geth.go @@ -43,7 +43,7 @@ func (m *gethVm) Run(parameters tosca.Parameters) (tosca.Result, error) { } evm, contract, stateDb := createGethInterpreterContext(parameters) - output, err := evm.Interpreter().Run(contract, parameters.Input, false) + output, err := evm.Run(contract, parameters.Input, false) result := tosca.Result{ Output: output, diff --git a/go/processor/geth/state_contract.go b/go/processor/geth/state_contract.go index 1d946893..c087ece3 100644 --- a/go/processor/geth/state_contract.go +++ b/go/processor/geth/state_contract.go @@ -130,7 +130,7 @@ func (PreCompiledContract) Run(stateDB vm.StateDB, _ vm.BlockContext, txCtx vm.T } suppliedGas -= cost if accTo != accFrom { - stateDB.SetCode(accTo, code) + stateDB.SetCode(accTo, code, tracing.CodeChangeUnspecified) } } else if bytes.Equal(input[:4], swapCodeMethodID) { input = input[4:] @@ -163,8 +163,8 @@ func (PreCompiledContract) Run(stateDB vm.StateDB, _ vm.BlockContext, txCtx vm.T } suppliedGas -= cost if acc0 != acc1 { - stateDB.SetCode(acc0, code1) - stateDB.SetCode(acc1, code0) + stateDB.SetCode(acc0, code1, tracing.CodeChangeUnspecified) + stateDB.SetCode(acc1, code0, tracing.CodeChangeUnspecified) } } else if bytes.Equal(input[:4], setStorageMethodID) { input = input[4:] diff --git a/go/processor/opera/processor.go b/go/processor/opera/processor.go index be4dc2b5..b967b5b1 100644 --- a/go/processor/opera/processor.go +++ b/go/processor/opera/processor.go @@ -540,7 +540,7 @@ func (preCompiledStateContract) Run( } suppliedGas -= cost if accTo != accFrom { - stateDB.SetCode(accTo, code) + stateDB.SetCode(accTo, code, tracing.CodeChangeUnspecified) } } else if bytes.Equal(input[:4], swapCodeMethodID) { input = input[4:] @@ -573,8 +573,8 @@ func (preCompiledStateContract) Run( } suppliedGas -= cost if acc0 != acc1 { - stateDB.SetCode(acc0, code1) - stateDB.SetCode(acc1, code0) + stateDB.SetCode(acc0, code1, tracing.CodeChangeUnspecified) + stateDB.SetCode(acc1, code0, tracing.CodeChangeUnspecified) } } else if bytes.Equal(input[:4], setStorageMethodID) { input = input[4:]