diff --git a/cmd/serve.go b/cmd/serve.go index b06f137f..52872c4b 100644 --- a/cmd/serve.go +++ b/cmd/serve.go @@ -30,9 +30,9 @@ import ( log "github.com/sirupsen/logrus" "github.com/spf13/cobra" "github.com/spf13/viper" - "github.com/vulcanize/ipld-eth-server/pkg/eth" - "github.com/vulcanize/gap-filler/pkg/mux" + + "github.com/vulcanize/ipld-eth-server/pkg/eth" "github.com/vulcanize/ipld-eth-server/pkg/graphql" srpc "github.com/vulcanize/ipld-eth-server/pkg/rpc" s "github.com/vulcanize/ipld-eth-server/pkg/serve" @@ -247,7 +247,7 @@ func startGroupCacheService(settings *s.Config) error { func startStateTrieValidator(config *s.Config, server s.Server) { validateEveryNthBlock := config.StateValidationEveryNthBlock - var lastBlockNumber uint64 = 0 + var lastBlockNumber uint64 backend := server.Backend() for { diff --git a/cmd/validate.go b/cmd/validate.go index f23b9412..c91fb918 100644 --- a/cmd/validate.go +++ b/cmd/validate.go @@ -24,6 +24,7 @@ import ( "github.com/spf13/viper" validator "github.com/vulcanize/eth-ipfs-state-validator/pkg" ipfsethdb "github.com/vulcanize/ipfs-ethdb/postgres" + s "github.com/vulcanize/ipld-eth-server/pkg/serve" ) diff --git a/go.mod b/go.mod index 6298a51b..d3275df0 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module github.com/vulcanize/ipld-eth-server go 1.13 require ( + github.com/daixiang0/gci v0.2.9 // indirect github.com/ethereum/go-ethereum v1.10.8 github.com/graph-gophers/graphql-go v0.0.0-20201113091052-beb923fada29 github.com/ipfs/go-block-format v0.0.2 diff --git a/go.sum b/go.sum index 8b842d44..2833af2d 100644 --- a/go.sum +++ b/go.sum @@ -164,6 +164,8 @@ github.com/crackcomm/go-gitignore v0.0.0-20170627025303-887ab5e44cc3/go.mod h1:p github.com/cskr/pubsub v1.0.2 h1:vlOzMhl6PFn60gRlTQQsIfVwaPB/B/8MziK8FhEPt/0= github.com/cskr/pubsub v1.0.2/go.mod h1:/8MzYXk/NJAz782G8RPkFzXTZVu63VotefPnR9TIRis= github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= +github.com/daixiang0/gci v0.2.9 h1:iwJvwQpBZmMg31w+QQ6jsyZ54KEATn6/nfARbBNW294= +github.com/daixiang0/gci v0.2.9/go.mod h1:+4dZ7TISfSmqfAGv59ePaHfNzgGtIkHAhhdKggP1JAc= github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -1644,6 +1646,7 @@ golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200522201501-cb1345f3a375/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20201118003311-bd56c0adb394/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.2 h1:kRBLX7v7Af8W7Gdbbc908OJcdgtK8bOz9Uaj8/F1ACA= diff --git a/pkg/eth/api_test.go b/pkg/eth/api_test.go index 57d571ae..b6be7f5d 100644 --- a/pkg/eth/api_test.go +++ b/pkg/eth/api_test.go @@ -213,7 +213,7 @@ var _ = Describe("API", func() { indexAndPublisher := indexer.NewStateDiffIndexer(chainConfig, db) backend, err := eth.NewEthBackend(db, ð.Config{ ChainConfig: chainConfig, - VmConfig: vm.Config{}, + VMConfig: vm.Config{}, RPCGasCap: big.NewInt(10000000000), // Max gas capacity for a rpc call. GroupCacheConfig: ðServerShared.GroupCacheConfig{ StateDB: ethServerShared.GroupConfig{ diff --git a/pkg/eth/backend.go b/pkg/eth/backend.go index e6b929bd..66cd7bb6 100644 --- a/pkg/eth/backend.go +++ b/pkg/eth/backend.go @@ -45,10 +45,10 @@ import ( ethServerShared "github.com/ethereum/go-ethereum/statediff/indexer/shared" "github.com/ethereum/go-ethereum/trie" log "github.com/sirupsen/logrus" - ipfsethdb "github.com/vulcanize/ipfs-ethdb/postgres" - "github.com/vulcanize/ipld-eth-server/pkg/shared" - validator "github.com/vulcanize/eth-ipfs-state-validator/pkg" + ipfsethdb "github.com/vulcanize/ipfs-ethdb/postgres" + + "github.com/vulcanize/ipld-eth-server/pkg/shared" ) var ( @@ -110,7 +110,7 @@ type Backend struct { type Config struct { ChainConfig *params.ChainConfig - VmConfig vm.Config + VMConfig vm.Config DefaultSender *common.Address RPCGasCap *big.Int GroupCacheConfig *shared.GroupCacheConfig @@ -614,7 +614,7 @@ func (b *Backend) GetEVM(ctx context.Context, msg core.Message, state *state.Sta state.SetBalance(msg.From(), math.MaxBig256) vmctx := core.NewEVMBlockContext(header, b, nil) txContext := core.NewEVMTxContext(msg) - return vm.NewEVM(vmctx, txContext, state, b.Config.ChainConfig, b.Config.VmConfig), nil + return vm.NewEVM(vmctx, txContext, state, b.Config.ChainConfig, b.Config.VMConfig), nil } // GetAccountByNumberOrHash returns the account object for the provided address at the block corresponding to the provided number or hash @@ -862,11 +862,8 @@ func logStateDBStatsOnTimer(ethDB *ipfsethdb.Database, gcc *shared.GroupCacheCon ticker := time.NewTicker(time.Duration(gcc.StateDB.LogStatsIntervalInSecs) * time.Second) go func() { - for { - select { - case <-ticker.C: - log.Infof("%s groupcache stats: %+v", StateDBGroupCacheName, ethDB.GetCacheStats()) - } + for range ticker.C { + log.Infof("%s groupcache stats: %+v", StateDBGroupCacheName, ethDB.GetCacheStats()) } }() } diff --git a/pkg/eth/eth_state_test.go b/pkg/eth/eth_state_test.go index 8e81d7de..8ee4a12f 100644 --- a/pkg/eth/eth_state_test.go +++ b/pkg/eth/eth_state_test.go @@ -79,7 +79,7 @@ var _ = Describe("eth state reading tests", func() { transformer := indexer.NewStateDiffIndexer(chainConfig, db) backend, err = eth.NewEthBackend(db, ð.Config{ ChainConfig: chainConfig, - VmConfig: vm.Config{}, + VMConfig: vm.Config{}, RPCGasCap: big.NewInt(10000000000), // Max gas capacity for a rpc call. GroupCacheConfig: ðServerShared.GroupCacheConfig{ StateDB: ethServerShared.GroupConfig{ diff --git a/pkg/graphql/graphql_test.go b/pkg/graphql/graphql_test.go index 79a48fd3..2e7ce074 100644 --- a/pkg/graphql/graphql_test.go +++ b/pkg/graphql/graphql_test.go @@ -84,7 +84,7 @@ var _ = Describe("GraphQL", func() { transformer := indexer.NewStateDiffIndexer(chainConfig, db) backend, err = eth.NewEthBackend(db, ð.Config{ ChainConfig: chainConfig, - VmConfig: vm.Config{}, + VMConfig: vm.Config{}, RPCGasCap: big.NewInt(10000000000), GroupCacheConfig: ðServerShared.GroupCacheConfig{ StateDB: ethServerShared.GroupConfig{ diff --git a/pkg/serve/config.go b/pkg/serve/config.go index 58f29408..6fb31039 100644 --- a/pkg/serve/config.go +++ b/pkg/serve/config.go @@ -28,9 +28,9 @@ import ( "github.com/ethereum/go-ethereum/rpc" "github.com/ethereum/go-ethereum/statediff/indexer/postgres" "github.com/spf13/viper" - "github.com/vulcanize/ipld-eth-server/pkg/prom" "github.com/vulcanize/ipld-eth-server/pkg/eth" + "github.com/vulcanize/ipld-eth-server/pkg/prom" ethServerShared "github.com/vulcanize/ipld-eth-server/pkg/shared" ) @@ -49,8 +49,8 @@ const ( ethChainConfig = "ETH_CHAIN_CONFIG" ethSupportsStatediff = "ETH_SUPPORTS_STATEDIFF" - VALIDATOR_ENABLED = "VALIDATOR_ENABLED" - VALIDATOR_EVERY_NTH_BLOCK = "VALIDATOR_EVERY_NTH_BLOCK" + ValidatorEnabled = "VALIDATOR_ENABLED" + ValidatorEveryNthBlock = "VALIDATOR_EVERY_NTH_BLOCK" ) // Config struct @@ -232,7 +232,7 @@ func overrideDBConnConfig(con *postgres.ConnectionConfig) { con.MaxLifetime = viper.GetInt("database.server.maxLifetime") } -func (d *Config) dbInit() { +func (c *Config) dbInit() { viper.BindEnv("database.name", databaseName) viper.BindEnv("database.hostname", databaseHostname) viper.BindEnv("database.port", databasePort) @@ -242,23 +242,23 @@ func (d *Config) dbInit() { viper.BindEnv("database.maxOpen", databaseMaxOpenConnections) viper.BindEnv("database.maxLifetime", databaseMaxOpenConnLifetime) - d.DBParams.Name = viper.GetString("database.name") - d.DBParams.Hostname = viper.GetString("database.hostname") - d.DBParams.Port = viper.GetInt("database.port") - d.DBParams.User = viper.GetString("database.user") - d.DBParams.Password = viper.GetString("database.password") - d.DBConfig.MaxIdle = viper.GetInt("database.maxIdle") - d.DBConfig.MaxOpen = viper.GetInt("database.maxOpen") - d.DBConfig.MaxLifetime = viper.GetInt("database.maxLifetime") + c.DBParams.Name = viper.GetString("database.name") + c.DBParams.Hostname = viper.GetString("database.hostname") + c.DBParams.Port = viper.GetInt("database.port") + c.DBParams.User = viper.GetString("database.user") + c.DBParams.Password = viper.GetString("database.password") + c.DBConfig.MaxIdle = viper.GetInt("database.maxIdle") + c.DBConfig.MaxOpen = viper.GetInt("database.maxOpen") + c.DBConfig.MaxLifetime = viper.GetInt("database.maxLifetime") } func (c *Config) loadGroupCacheConfig() { - viper.BindEnv("groupcache.pool.enabled", ethServerShared.GCACHE_POOL_ENABLED) - viper.BindEnv("groupcache.pool.httpEndpoint", ethServerShared.GCACHE_POOL_HTTP_PATH) - viper.BindEnv("groupcache.pool.peerHttpEndpoints", ethServerShared.GCACHE_POOL_HTTP_PEERS) - viper.BindEnv("groupcache.statedb.cacheSizeInMB", ethServerShared.GCACHE_STATEDB_CACHE_SIZE) - viper.BindEnv("groupcache.statedb.cacheExpiryInMins", ethServerShared.GCACHE_STATEDB_CACHE_EXPIRY) - viper.BindEnv("groupcache.statedb.logStatsIntervalInSecs", ethServerShared.GCACHE_STATEDB_LOG_STATS_INTERVAL) + viper.BindEnv("groupcache.pool.enabled", ethServerShared.GcachePoolEnabled) + viper.BindEnv("groupcache.pool.httpEndpoint", ethServerShared.GcachePoolHttpPath) + viper.BindEnv("groupcache.pool.peerHttpEndpoints", ethServerShared.GcachePoolHttpPeers) + viper.BindEnv("groupcache.statedb.cacheSizeInMB", ethServerShared.GcacheStatedbCacheSize) + viper.BindEnv("groupcache.statedb.cacheExpiryInMins", ethServerShared.GcacheStatedbCacheExpiry) + viper.BindEnv("groupcache.statedb.logStatsIntervalInSecs", ethServerShared.GcacheStatedbLogStatsInterval) gcc := ethServerShared.GroupCacheConfig{} gcc.Pool.Enabled = viper.GetBool("groupcache.pool.enabled") @@ -276,8 +276,8 @@ func (c *Config) loadGroupCacheConfig() { } func (c *Config) loadValidatorConfig() { - viper.BindEnv("validator.enabled", VALIDATOR_ENABLED) - viper.BindEnv("validator.everyNthBlock", VALIDATOR_EVERY_NTH_BLOCK) + viper.BindEnv("validator.enabled", ValidatorEnabled) + viper.BindEnv("validator.everyNthBlock", ValidatorEveryNthBlock) c.StateValidationEnabled = viper.GetBool("validator.enabled") c.StateValidationEveryNthBlock = viper.GetUint64("validator.everyNthBlock") diff --git a/pkg/serve/service.go b/pkg/serve/service.go index 45e1c7fa..6776d712 100644 --- a/pkg/serve/service.go +++ b/pkg/serve/service.go @@ -30,6 +30,7 @@ import ( "github.com/ethereum/go-ethereum/rpc" "github.com/ethereum/go-ethereum/statediff/indexer/postgres" log "github.com/sirupsen/logrus" + "github.com/vulcanize/ipld-eth-server/pkg/eth" "github.com/vulcanize/ipld-eth-server/pkg/net" ) @@ -99,7 +100,7 @@ func NewServer(settings *Config) (Server, error) { var err error sap.backend, err = eth.NewEthBackend(sap.db, ð.Config{ ChainConfig: settings.ChainConfig, - VmConfig: vm.Config{}, + VMConfig: vm.Config{}, DefaultSender: settings.DefaultSender, RPCGasCap: settings.RPCGasCap, GroupCacheConfig: settings.GroupCache, diff --git a/pkg/shared/constants.go b/pkg/shared/constants.go index 4d253d51..95ba36f5 100644 --- a/pkg/shared/constants.go +++ b/pkg/shared/constants.go @@ -20,10 +20,10 @@ const ( DefaultMaxBatchSize uint64 = 100 DefaultMaxBatchNumber int64 = 50 - GCACHE_POOL_ENABLED = "GCACHE_POOL_ENABLED" - GCACHE_POOL_HTTP_PATH = "GCACHE_POOL_HTTP_PATH" - GCACHE_POOL_HTTP_PEERS = "GCACHE_POOL_HTTP_PEERS" - GCACHE_STATEDB_CACHE_SIZE = "GCACHE_STATEDB_CACHE_SIZE" - GCACHE_STATEDB_CACHE_EXPIRY = "GCACHE_STATEDB_CACHE_EXPIRY" - GCACHE_STATEDB_LOG_STATS_INTERVAL = "GCACHE_STATEDB_LOG_STATS_INTERVAL" + GcachePoolEnabled = "GCACHE_POOL_ENABLED" + GcachePoolHttpPath = "GCACHE_POOL_HTTP_PATH" + GcachePoolHttpPeers = "GCACHE_POOL_HTTP_PEERS" + GcacheStatedbCacheSize = "GCACHE_STATEDB_CACHE_SIZE" + GcacheStatedbCacheExpiry = "GCACHE_STATEDB_CACHE_EXPIRY" + GcacheStatedbLogStatsInterval = "GCACHE_STATEDB_LOG_STATS_INTERVAL" )