diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index f3f88a1ae..a7291e90b 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -8,7 +8,7 @@ jobs: steps: - uses: actions/setup-go@v3 with: - go-version: "1.18" + go-version: "1.19" check-latest: true - uses: actions/checkout@v2 - name: Run linter diff --git a/Makefile b/Makefile index b4eaf8d3a..807d7d8b8 100644 --- a/Makefile +++ b/Makefile @@ -38,7 +38,7 @@ all: $(GORUN) build/ci.go install test: all - $(GORUN) build/ci.go test -v + $(GORUN) build/ci.go test lint: ## Run linters. $(GORUN) build/ci.go lint diff --git a/core/blockchain.go b/core/blockchain.go index 6b7c61f83..5651ef95b 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -29,8 +29,6 @@ import ( "sync/atomic" "time" - lru "github.com/hashicorp/golang-lru" - "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/lru" "github.com/ethereum/go-ethereum/common/mclock" @@ -141,7 +139,7 @@ type CacheConfig struct { SnapshotNoBuild bool // Whether the background generation is allowed SnapshotWait bool // Wait for snapshot construction on startup. TODO(karalabe): This is a dirty hack for testing, nuke it - StateDiffing bool // Whether or not the statediffing service is running + StateDiffing bool // Whether the statediffing service is running } // defaultCacheConfig are the default caching values if none are specified by the @@ -984,8 +982,7 @@ func (bc *BlockChain) Stop() { } } for !bc.triegc.Empty() { - pruneRootV := bc.triegc.PopItem() - pruneRoot := (common.Hash)(pruneRootV) + pruneRoot := bc.triegc.PopItem() if !bc.TrieLocked(pruneRoot) { triedb.Dereference(pruneRoot) } @@ -1421,10 +1418,9 @@ func (bc *BlockChain) writeBlockWithState(block *types.Block, receipts []*types. bc.triegc.Push(root, number) break } - pruneRoot := (common.Hash)(root) - if !bc.TrieLocked(pruneRoot) { - log.Debug("Dereferencing", "root", (common.Hash)(root).Hex()) - bc.triedb.Dereference(pruneRoot) + if !bc.TrieLocked(root) { + log.Debug("Dereferencing", "root", root.Hex()) + bc.triedb.Dereference(root) } } return nil @@ -2516,7 +2512,7 @@ func (bc *BlockChain) SetTrieFlushInterval(interval time.Duration) { atomic.StoreInt64(&bc.flushInterval, int64(interval)) } - // TrieLocked returns whether the trie associated with the provided root is locked for use +// TrieLocked returns whether the trie associated with the provided root is locked for use func (bc *BlockChain) TrieLocked(root common.Hash) bool { bc.trieLock.Lock() locked, ok := bc.lockedRoots[root] diff --git a/eth/protocols/snap/sync.go b/eth/protocols/snap/sync.go index 1a94e32ec..13279fd96 100644 --- a/eth/protocols/snap/sync.go +++ b/eth/protocols/snap/sync.go @@ -2220,50 +2220,6 @@ func (s *Syncer) commitHealer(force bool) { log.Crit("Failed to persist healing data", "err", err) } log.Debug("Persisted set of healing data", "type", "trienodes", "bytes", common.StorageSize(batch.ValueSize())) - - // Calculate the processing rate of one filled trie node - rate := float64(fills) / (float64(time.Since(start)) / float64(time.Second)) - - // Update the currently measured trienode queueing and processing throughput. - // - // The processing rate needs to be updated uniformly independent if we've - // processed 1x100 trie nodes or 100x1 to keep the rate consistent even in - // the face of varying network packets. As such, we cannot just measure the - // time it took to process N trie nodes and update once, we need one update - // per trie node. - // - // Naively, that would be: - // - // for i:=0; i time.Second { - // Periodically adjust the trie node throttler - if float64(pending) > 2*s.trienodeHealRate { - s.trienodeHealThrottle *= trienodeHealThrottleIncrease - } else { - s.trienodeHealThrottle /= trienodeHealThrottleDecrease - } - if s.trienodeHealThrottle > maxTrienodeHealThrottle { - s.trienodeHealThrottle = maxTrienodeHealThrottle - } else if s.trienodeHealThrottle < minTrienodeHealThrottle { - s.trienodeHealThrottle = minTrienodeHealThrottle - } - s.trienodeHealThrottled = time.Now() - - log.Debug("Updated trie node heal throttler", "rate", s.trienodeHealRate, "pending", pending, "throttle", s.trienodeHealThrottle) - } } // processBytecodeHealResponse integrates an already validated bytecode response diff --git a/go.mod b/go.mod index f76305268..2e2c1df97 100644 --- a/go.mod +++ b/go.mod @@ -47,7 +47,7 @@ require ( github.com/jackc/pgconn v1.10.0 github.com/jackc/pgx/v4 v4.13.0 github.com/jackpal/go-nat-pmp v1.0.2 - github.com/jedisct1/go-minisign v0.0.0-20211028175153-1c139d1cc84b + github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e github.com/jmoiron/sqlx v1.2.0 github.com/julienschmidt/httprouter v1.3.0 github.com/karalabe/usb v0.0.2 @@ -62,10 +62,10 @@ require ( github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7 github.com/pganalyze/pg_query_go/v2 v2.1.0 github.com/rs/cors v1.7.0 - github.com/shirou/gopsutil v3.21.11+incompatible + github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible github.com/status-im/keycard-go v0.2.0 github.com/stretchr/testify v1.8.0 - github.com/supranational/blst v0.3.8 + github.com/supranational/blst v0.3.8-0.20220526154634-513d2456b344 github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 github.com/thoas/go-funk v0.9.2 github.com/tklauser/go-sysconf v0.3.5 // indirect @@ -81,12 +81,11 @@ require ( gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce ) -require github.com/hashicorp/golang-lru v0.5.1 - require ( github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3 // indirect github.com/DataDog/zstd v1.5.2 // indirect + github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.1.1 // indirect @@ -144,7 +143,6 @@ require ( github.com/stretchr/objx v0.4.0 // indirect github.com/tklauser/numcpus v0.2.2 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect - github.com/yusufpapurcu/wmi v1.2.2 // indirect golang.org/x/mod v0.6.0 // indirect golang.org/x/net v0.4.0 // indirect golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df // indirect diff --git a/go.sum b/go.sum index 330808e92..2e50c64a0 100644 --- a/go.sum +++ b/go.sum @@ -36,6 +36,8 @@ github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKz github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= +github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8= +github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/VictoriaMetrics/fastcache v1.6.0 h1:C/3Oi3EiBCqufydp1neRZkqcwmEiuRT9c3fqvvgKm5o= github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= @@ -311,7 +313,6 @@ github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpx github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= @@ -418,8 +419,8 @@ github.com/jackc/puddle v1.1.3 h1:JnPg/5Q9xVJGfjsO5CPUOjnJps1JaRUm8I9FXVCFK94= github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= -github.com/jedisct1/go-minisign v0.0.0-20211028175153-1c139d1cc84b h1:ZGiXF8sz7PDk6RgkP+A/SFfUD0ZR/AgG6SpRNEDKZy8= -github.com/jedisct1/go-minisign v0.0.0-20211028175153-1c139d1cc84b/go.mod h1:hQmNrgofl+IY/8L+n20H6E6PWBBTokdsv+q49j0QhsU= +github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e h1:UvSe12bq+Uj2hWd8aOlwPmoZ+CITRFrdit+sDGfAg8U= +github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= github.com/jinzhu/gorm v1.9.12/go.mod h1:vhTjlKSJUTWNtcbQtrMBFCxy7eXTzeCAzfL5fBZT/Qs= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= @@ -641,8 +642,8 @@ github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtm github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= -github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +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/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v0.0.0-20200419222939-1884f454f8ea/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= @@ -680,8 +681,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/supranational/blst v0.3.8 h1:glwLF4oBRSJOTr05lRBgNwGQST0ndP2wg29fSeTRKCY= -github.com/supranational/blst v0.3.8/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= +github.com/supranational/blst v0.3.8-0.20220526154634-513d2456b344 h1:m+8fKfQwCAy1QjzINvKe/pYtLjo2dl59x2w9YSEJxuY= +github.com/supranational/blst v0.3.8-0.20220526154634-513d2456b344/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/thoas/go-funk v0.9.2 h1:oKlNYv0AY5nyf9g+/GhMgS/UO2ces0QRdPKwkhY3VCk= @@ -721,8 +722,6 @@ github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= -github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= @@ -747,6 +746,7 @@ golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= diff --git a/params/version.go b/params/version.go index e2d8bc3d8..f34a6c331 100644 --- a/params/version.go +++ b/params/version.go @@ -24,7 +24,7 @@ const ( VersionMajor = 1 // Major version component of the current release VersionMinor = 11 // Minor version component of the current release VersionPatch = 5 // Patch version component of the current release - VersionMeta = "statediff-4.3.9-alpha" // Version metadata to append to the version string + VersionMeta = "statediff-5.0.0-alpha" // Version metadata to append to the version string ) // Version holds the textual version string. diff --git a/statediff/helpers.go b/statediff/helpers.go index 1557eb227..c4ffdee95 100644 --- a/statediff/helpers.go +++ b/statediff/helpers.go @@ -53,8 +53,6 @@ func ChainConfig(chainID uint64) (*params.ChainConfig, error) { switch chainID { case 1: return params.MainnetChainConfig, nil - case 3: - return params.RopstenChainConfig, nil case 4: return params.RinkebyChainConfig, nil case 5: diff --git a/statediff/indexer/database/dump/indexer.go b/statediff/indexer/database/dump/indexer.go index 307e95b9c..0e0db9156 100644 --- a/statediff/indexer/database/dump/indexer.go +++ b/statediff/indexer/database/dump/indexer.go @@ -68,7 +68,7 @@ func (sdi *StateDiffIndexer) PushBlock(block *types.Block, receipts types.Receip traceMsg := fmt.Sprintf("indexer stats for statediff at %d with hash %s:\r\n", height, blockHashStr) transactions := block.Transactions() // Derive any missing fields - if err := receipts.DeriveFields(sdi.chainConfig, blockHash, height, transactions); err != nil { + if err := receipts.DeriveFields(sdi.chainConfig, blockHash, height, block.BaseFee(), transactions); err != nil { return nil, err } diff --git a/statediff/indexer/database/file/indexer.go b/statediff/indexer/database/file/indexer.go index ae9d8694a..d4f6a8f4b 100644 --- a/statediff/indexer/database/file/indexer.go +++ b/statediff/indexer/database/file/indexer.go @@ -140,7 +140,7 @@ func (sdi *StateDiffIndexer) PushBlock(block *types.Block, receipts types.Receip traceMsg := fmt.Sprintf("indexer stats for statediff at %d with hash %s:\r\n", height, blockHashStr) transactions := block.Transactions() // Derive any missing fields - if err := receipts.DeriveFields(sdi.chainConfig, blockHash, height, transactions); err != nil { + if err := receipts.DeriveFields(sdi.chainConfig, blockHash, height, block.BaseFee(), transactions); err != nil { return nil, err } diff --git a/statediff/indexer/database/sql/indexer.go b/statediff/indexer/database/sql/indexer.go index a41e1631a..8a6228fa5 100644 --- a/statediff/indexer/database/sql/indexer.go +++ b/statediff/indexer/database/sql/indexer.go @@ -90,7 +90,7 @@ func (sdi *StateDiffIndexer) PushBlock(block *types.Block, receipts types.Receip traceMsg := fmt.Sprintf("indexer stats for statediff at %d with hash %s:\r\n", height, blockHashStr) transactions := block.Transactions() // Derive any missing fields - if err := receipts.DeriveFields(sdi.chainConfig, blockHash, height, transactions); err != nil { + if err := receipts.DeriveFields(sdi.chainConfig, blockHash, height, block.BaseFee(), transactions); err != nil { return nil, err } diff --git a/statediff/indexer/ipld/eth_parser_test.go b/statediff/indexer/ipld/eth_parser_test.go index 946f175ea..fd44058cd 100644 --- a/statediff/indexer/ipld/eth_parser_test.go +++ b/statediff/indexer/ipld/eth_parser_test.go @@ -17,7 +17,7 @@ package ipld import ( - "io/ioutil" + "os" "path/filepath" "testing" @@ -63,7 +63,7 @@ func loadBlockData(t *testing.T) []testCase { fileDir := "./eip2930_test_data" testCases := make([]testCase, len(blockFileNames)) for i, blockFileName := range blockFileNames { - blockRLP, err := ioutil.ReadFile(filepath.Join(fileDir, blockFileName)) + blockRLP, err := os.ReadFile(filepath.Join(fileDir, blockFileName)) if err != nil { t.Fatalf("failed to load blockRLP from file, err %v", err) } @@ -72,7 +72,7 @@ func loadBlockData(t *testing.T) []testCase { t.Fatalf("failed to decode blockRLP, err %v", err) } receiptsFileName := receiptsFileNames[i] - receiptsRLP, err := ioutil.ReadFile(filepath.Join(fileDir, receiptsFileName)) + receiptsRLP, err := os.ReadFile(filepath.Join(fileDir, receiptsFileName)) if err != nil { t.Fatalf("failed to load receiptsRLP from file, err %s", err) } diff --git a/statediff/indexer/mocks/test_data.go b/statediff/indexer/mocks/test_data.go index 2bba1803d..438490713 100644 --- a/statediff/indexer/mocks/test_data.go +++ b/statediff/indexer/mocks/test_data.go @@ -56,7 +56,7 @@ var ( Coinbase: common.HexToAddress("0xaE9BEa628c4Ce503DcFD7E305CaB4e29E7476777"), } MockTransactions, MockReceipts, SenderAddr = createTransactionsAndReceipts(TestConfig, BlockNumber) - MockBlock = types.NewBlock(&MockHeader, MockTransactions, nil, MockReceipts, new(trie.Trie)) + MockBlock = types.NewBlock(&MockHeader, MockTransactions, nil, MockReceipts, trie.NewEmpty(nil)) MockHeaderRlp, _ = rlp.EncodeToBytes(MockBlock.Header()) // non-canonical block at London height @@ -64,7 +64,7 @@ var ( MockNonCanonicalHeader = MockHeader MockNonCanonicalBlockTransactions = types.Transactions{MockTransactions[1], MockTransactions[4]} MockNonCanonicalBlockReceipts = createNonCanonicalBlockReceipts(TestConfig, BlockNumber, MockNonCanonicalBlockTransactions) - MockNonCanonicalBlock = types.NewBlock(&MockNonCanonicalHeader, MockNonCanonicalBlockTransactions, nil, MockNonCanonicalBlockReceipts, new(trie.Trie)) + MockNonCanonicalBlock = types.NewBlock(&MockNonCanonicalHeader, MockNonCanonicalBlockTransactions, nil, MockNonCanonicalBlockReceipts, trie.NewEmpty(nil)) MockNonCanonicalHeaderRlp, _ = rlp.EncodeToBytes(MockNonCanonicalBlock.Header()) // non-canonical block at London height + 1 @@ -83,7 +83,7 @@ var ( } MockNonCanonicalBlock2Transactions = types.Transactions{MockTransactions[2], MockTransactions[4]} MockNonCanonicalBlock2Receipts = createNonCanonicalBlockReceipts(TestConfig, Block2Number, MockNonCanonicalBlock2Transactions) - MockNonCanonicalBlock2 = types.NewBlock(&MockNonCanonicalHeader2, MockNonCanonicalBlock2Transactions, nil, MockNonCanonicalBlock2Receipts, new(trie.Trie)) + MockNonCanonicalBlock2 = types.NewBlock(&MockNonCanonicalHeader2, MockNonCanonicalBlock2Transactions, nil, MockNonCanonicalBlock2Receipts, trie.NewEmpty(nil)) MockNonCanonicalHeader2Rlp, _ = rlp.EncodeToBytes(MockNonCanonicalBlock2.Header()) Address = common.HexToAddress("0xaE9BEa628c4Ce503DcFD7E305CaB4e29E7476592") @@ -343,7 +343,7 @@ func NewLegacyData(config *params.ChainConfig) *LegacyData { } mockTransactions, mockReceipts, senderAddr := createLegacyTransactionsAndReceipts(config, blockNumber) - mockBlock := types.NewBlock(&mockHeader, mockTransactions, nil, mockReceipts, new(trie.Trie)) + mockBlock := types.NewBlock(&mockHeader, mockTransactions, nil, mockReceipts, trie.NewEmpty(nil)) mockHeaderRlp, _ := rlp.EncodeToBytes(mockBlock.Header()) contractAddress := crypto.CreateAddress(senderAddr, mockTransactions[2].Nonce()) diff --git a/statediff/mainnet_tests/builder_test.go b/statediff/mainnet_tests/builder_test.go index 31da23c01..14c255dfa 100644 --- a/statediff/mainnet_tests/builder_test.go +++ b/statediff/mainnet_tests/builder_test.go @@ -20,15 +20,13 @@ import ( "bytes" "encoding/json" "fmt" - "io/ioutil" + "io" "log" "math/big" "os" "sort" "testing" - ipld2 "github.com/ethereum/go-ethereum/statediff/indexer/ipld" - "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/consensus/ethash" "github.com/ethereum/go-ethereum/core" @@ -37,9 +35,9 @@ import ( "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/statediff" + ipld2 "github.com/ethereum/go-ethereum/statediff/indexer/ipld" "github.com/ethereum/go-ethereum/statediff/test_helpers" sdtypes "github.com/ethereum/go-ethereum/statediff/types" ) @@ -467,7 +465,7 @@ func loadBlockFromRLPFile(filename string) (*types.Block, []byte, error) { return nil, nil, err } defer f.Close() - blockRLP, err := ioutil.ReadAll(f) + blockRLP, err := io.ReadAll(f) if err != nil { return nil, nil, err } @@ -476,7 +474,7 @@ func loadBlockFromRLPFile(filename string) (*types.Block, []byte, error) { } func TestBuilderOnMainnetBlocks(t *testing.T) { - chain, _ := core.NewBlockChain(db, nil, params.MainnetChainConfig, ethash.NewFaker(), vm.Config{}, nil, nil) + chain, _ := core.NewBlockChain(db, nil, nil, nil, ethash.NewFaker(), vm.Config{}, nil, nil) _, err := chain.InsertChain([]*types.Block{block1, block2, block3}) if err != nil { t.Error(err) diff --git a/statediff/service.go b/statediff/service.go index 7325971c1..5aaff6adf 100644 --- a/statediff/service.go +++ b/statediff/service.go @@ -69,7 +69,7 @@ var writeLoopParams = ParamsWithMutex{ type blockChain interface { SubscribeChainEvent(ch chan<- core.ChainEvent) event.Subscription - CurrentBlock() *types.Block + CurrentBlock() *types.Header GetBlockByHash(hash common.Hash) *types.Block GetBlockByNumber(number uint64) *types.Block GetReceiptsByHash(hash common.Hash) types.Receipts @@ -913,7 +913,7 @@ func (sds *Service) WatchAddress(operation types2.OperationType, args []types2.W defer writeLoopParams.Unlock() // get the current block number - currentBlockNumber := sds.BlockChain.CurrentBlock().Number() + currentBlockNumber := sds.BlockChain.CurrentBlock().Number switch operation { case types2.Add: diff --git a/statediff/test_helpers/helpers.go b/statediff/test_helpers/helpers.go index 5fd6c861a..e5ec0c176 100644 --- a/statediff/test_helpers/helpers.go +++ b/statediff/test_helpers/helpers.go @@ -30,8 +30,10 @@ import ( ) func GenesisBlockForTesting(db ethdb.Database, addr common.Address, balance, baseFee *big.Int, initialGasLimit uint64) *types.Block { + alloc := map[common.Address]core.GenesisAccount{ + addr: core.GenesisAccount{Balance: balance}} g := core.Genesis{ - Alloc: core.GenesisAlloc{addr: {Balance: balance}}, + Alloc: alloc, BaseFee: baseFee, } if initialGasLimit != 0 { @@ -45,7 +47,7 @@ func GenesisBlockForTesting(db ethdb.Database, addr common.Address, balance, bas func MakeChain(n int, parent *types.Block, chainGen func(int, *core.BlockGen)) ([]*types.Block, *core.BlockChain) { config := params.TestChainConfig blocks, _ := core.GenerateChain(config, parent, ethash.NewFaker(), Testdb, n, chainGen) - chain, _ := core.NewBlockChain(Testdb, nil, params.TestChainConfig, ethash.NewFaker(), vm.Config{}, nil, nil) + chain, _ := core.NewBlockChain(Testdb, nil, nil, nil, ethash.NewFaker(), vm.Config{}, nil, nil) return blocks, chain } diff --git a/statediff/test_helpers/mocks/backend.go b/statediff/test_helpers/mocks/backend.go index d3f6dc302..82939818a 100644 --- a/statediff/test_helpers/mocks/backend.go +++ b/statediff/test_helpers/mocks/backend.go @@ -134,7 +134,7 @@ func (backend *Backend) CurrentHeader() *types.Header { panic("not implemented") // TODO: Implement } -func (backend *Backend) CurrentBlock() *types.Block { +func (backend *Backend) CurrentBlock() *types.Header { panic("not implemented") // TODO: Implement } @@ -162,11 +162,15 @@ func (backend *Backend) GetReceipts(ctx context.Context, hash common.Hash) (type panic("not implemented") // TODO: Implement } +func (backend *Backend) GetBody(ctx context.Context, hash common.Hash, number rpc.BlockNumber) (*types.Body, error) { + panic("not implemented") // TODO: Implement +} + func (backend *Backend) GetTd(ctx context.Context, hash common.Hash) *big.Int { panic("not implemented") // TODO: Implement } -func (backend *Backend) GetEVM(ctx context.Context, msg core.Message, state *state.StateDB, header *types.Header, vmConfig *vm.Config) (*vm.EVM, func() error, error) { +func (backend *Backend) GetEVM(ctx context.Context, msg *core.Message, state *state.StateDB, header *types.Header, vmConfig *vm.Config) (*vm.EVM, func() error, error) { panic("not implemented") // TODO: Implement } diff --git a/statediff/test_helpers/mocks/blockchain.go b/statediff/test_helpers/mocks/blockchain.go index 0c6ff9424..5e62c5add 100644 --- a/statediff/test_helpers/mocks/blockchain.go +++ b/statediff/test_helpers/mocks/blockchain.go @@ -134,8 +134,8 @@ func (bc *BlockChain) SetCurrentBlock(block *types.Block) { } // CurrentBlock mock method -func (bc *BlockChain) CurrentBlock() *types.Block { - return bc.currentBlock +func (bc *BlockChain) CurrentBlock() *types.Header { + return bc.currentBlock.Header() } func (bc *BlockChain) SetTd(hash common.Hash, blockNum uint64, td *big.Int) { diff --git a/statediff/test_helpers/mocks/service.go b/statediff/test_helpers/mocks/service.go index 69e403484..911ad3077 100644 --- a/statediff/test_helpers/mocks/service.go +++ b/statediff/test_helpers/mocks/service.go @@ -333,7 +333,7 @@ func (sds *MockStateDiffService) WatchAddress(operation sdtypes.OperationType, a defer sds.writeLoopParams.Unlock() // get the current block number - currentBlockNumber := sds.BlockChain.CurrentBlock().Number() + currentBlockNumber := sds.BlockChain.CurrentBlock().Number switch operation { case sdtypes.Add: diff --git a/trie/concurrent_iterator/iterator.go b/trie/concurrent_iterator/iterator.go index 83c9e951c..de015ad87 100644 --- a/trie/concurrent_iterator/iterator.go +++ b/trie/concurrent_iterator/iterator.go @@ -104,7 +104,7 @@ func (gen *prefixGenerator) Next() { // MakePaths generates paths that cut trie domain into `nbins` uniform conterminous bins (w/ opt. prefix) // eg. MakePaths([], 2) => [[0] [8]] -// MakePaths([4], 32) => [[4 0 0] [4 0 8] [4 1 0]... [4 f 8]] +// MakePaths([4], 32) => [[4 0 0] [4 0 8] [4 1 0]... [4 f 8]] func MakePaths(prefix []byte, nbins uint) [][]byte { var res [][]byte for it := newPrefixGenerator(nbins); it.HasNext(); it.Next() { diff --git a/trie/concurrent_iterator/iterator_test.go b/trie/concurrent_iterator/iterator_test.go index 5ac8a0226..de3080ff8 100644 --- a/trie/concurrent_iterator/iterator_test.go +++ b/trie/concurrent_iterator/iterator_test.go @@ -24,10 +24,14 @@ func TestMakePaths(t *testing.T) { } func TestIterator(t *testing.T) { - edb, err := rawdb.NewLevelDBDatabaseWithFreezer( - fixt.ChainDataPath, 1024, 256, fixt.AncientDataPath, - "eth-pg-ipfs-state-snapshot", false, - ) + kvdb, ldberr := rawdb.NewLevelDBDatabase(fixt.ChainDataPath, 1024, 256, "vdb-geth", false) + if ldberr != nil { + t.Fatal(ldberr) + } + edb, err := rawdb.NewDatabaseWithFreezer(kvdb, fixt.AncientDataPath, "vdb-geth", false) + if err != nil { + t.Fatal(err) + } if err != nil { t.Fatal(err) } diff --git a/trie/sync.go b/trie/sync.go index c3ea6234d..d43aae748 100644 --- a/trie/sync.go +++ b/trie/sync.go @@ -555,7 +555,7 @@ func (s *Sync) commitCodeRequest(req *codeRequest) error { func ResolvePath(path []byte) (common.Hash, []byte) { var owner common.Hash if len(path) >= 2*common.HashLength { - owner = common.BytesToHash(hexToKeybytes(path[:2*common.HashLength])) + owner = common.BytesToHash(hexToKeyBytes(path[:2*common.HashLength])) path = path[2*common.HashLength:] } return owner, path